diff --git a/.dockerignore b/.dockerignore index c795b054e..8b83c831c 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1 +1,2 @@ -build \ No newline at end of file +* +!firmware/tools/docker-entrypoint.sh \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/01_bug_report.yml b/.github/ISSUE_TEMPLATE/01_bug_report.yml index 9b8f418da..7bd5436bf 100644 --- a/.github/ISSUE_TEMPLATE/01_bug_report.yml +++ b/.github/ISSUE_TEMPLATE/01_bug_report.yml @@ -8,6 +8,12 @@ body: value: | Thank you for taking the time to fill out an issue, this template is meant for any issues related to the Mayhem firmware. Please try the latest nightly release before submitting this. You can find the latest nightly version here: https://github.com/portapack-mayhem/mayhem-firmware/releases + > [!NOTE] + For hardware related issue, please open as a hardware issue instead. + For feature requests, please open as a feature request instead. + If you have questions, please join our Discord server to ask. + For your information, they are options you can choose when you open an issue. + Unrelated issues will be closed without notice. - type: textarea id: description attributes: diff --git a/.github/ISSUE_TEMPLATE/04_hardware_related.yml b/.github/ISSUE_TEMPLATE/04_hardware_related.yml new file mode 100644 index 000000000..ebd51287b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/04_hardware_related.yml @@ -0,0 +1,38 @@ +name: Hardware / QC / QA / selling +description: Issues that related with hardware, quality control, quality assurance, selling, etc. +labels: + - question + - hardware problem +body: +- type: markdown + attributes: + value: | + Thank you for taking the time to fill out an issue. + + We would like to inform you that we can't provide much help regarding hardware/QC/QA/selling issues because we are not controlling various vendors/manufacturers, and also we are not profiting from you buying your device. + + You are still welcome to ask, but please be aware that for this kind of issue, ask the seller would be the best option. +- type: textarea + id: description + attributes: + label: Describe the problem + description: "A clear and concise description of what the problem is." + validations: + required: true +- type: textarea + id: hardware-info + attributes: + label: Hardware information + description: "Please provide the hardware information here." + placeholder: | + 1. HackrfRF revision + 2. Portapack revision + 3. (if it's audio/mic/display/touchscreen/buttons related) audio chip/ CPLD/ screen info... + 4. (if hardware is visually damaged) please provide a photo + validations: + required: true +- type: textarea + id: anything-else + attributes: + label: Anything else? + description: Let us know if you have anything else to share. diff --git a/.github/workflows/hardware_issue_warning.yml b/.github/workflows/hardware_issue_warning.yml new file mode 100644 index 000000000..7099730ce --- /dev/null +++ b/.github/workflows/hardware_issue_warning.yml @@ -0,0 +1,20 @@ +name: Hardware Issue Warning + +on: + issues: + types: [labeled] + +jobs: + add-comment: + if: github.event.label.name == 'hardware problem' + runs-on: ubuntu-latest + permissions: + issues: write + steps: + - name: Add warning comment + uses: peter-evans/create-or-update-comment@v3 + with: + issue-number: ${{ github.event.issue.number }} + body: | + > [!IMPORTANT] + If you are a seller/vendor and your customer has directed you to this page as a reference/evidence of a "broken device" or similar issue, please be aware that we are not providing any "official guarantee of a faulty device." We are only offering suggestions based on what the submitter has stated. We do not guarantee that the device is broken or anything else. \ No newline at end of file diff --git a/.github/workflows/past_version.txt b/.github/workflows/past_version.txt index f3b15f3f8..1defe531b 100644 --- a/.github/workflows/past_version.txt +++ b/.github/workflows/past_version.txt @@ -1 +1 @@ -v2.0.2 +v2.1.0 diff --git a/.github/workflows/version.txt b/.github/workflows/version.txt index 1defe531b..a4b6ac3de 100644 --- a/.github/workflows/version.txt +++ b/.github/workflows/version.txt @@ -1 +1 @@ -v2.1.0 +v2.2.0 diff --git a/.gitignore b/.gitignore index d7ab86ca3..559d5257f 100644 --- a/.gitignore +++ b/.gitignore @@ -61,6 +61,7 @@ cmake-build-debug/ *.sublime-workspace .vscode .idea +*.swp # VSCodium extensions .history diff --git a/CMakeLists.txt b/CMakeLists.txt index 3aff31c87..0fbd8a82f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ # Boston, MA 02110-1301, USA. # -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.16) cmake_policy(SET CMP0005 NEW) set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_LIST_DIR}/firmware/toolchain-arm-cortex-m.cmake) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..415e5c8e6 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +https://github.com/portapack-mayhem/mayhem-firmware/issues/new/. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..07a6de6d1 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1 @@ +Please see [How-to-collaborate](https://github.com/portapack-mayhem/mayhem-firmware/wiki/How-to-collaborate) diff --git a/README.md b/README.md index 367aa36e9..f53ba77f8 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,13 @@ > The only legitimate link to our repositories is the [portapack-mayhem](https://github.com/portapack-mayhem/mayhem-firmware) organization on GitHub.---> # PortaPack Mayhem -[![Nightly Release](https://github.com/portapack-mayhem/mayhem-firmware/actions/workflows/create_nightly_release.yml/badge.svg?branch=next)](https://github.com/portapack-mayhem/mayhem-firmware/actions/workflows/create_nightly_release.yml) [![CodeScene Code Health](https://codescene.io/projects/8381/status-badges/code-health)](https://codescene.io/projects/8381) [![GitHub All Releases](https://img.shields.io/github/downloads/portapack-mayhem/mayhem-firmware/total)](https://github.com/portapack-mayhem/mayhem-firmware/releases) [![GitHub Releases](https://img.shields.io/github/downloads/portapack-mayhem/mayhem-firmware/latest/total)](https://github.com/portapack-mayhem/mayhem-firmware/releases/latest) [![Docker Hub Pulls](https://img.shields.io/docker/pulls/eried/portapack.svg)](https://hub.docker.com/r/eried/portapack) [![Discord Chat](https://dcbadge.vercel.app/api/server/tuwVMv3?style=flat)](https://discord.gg/tuwVMv3) +[![Nightly Release](https://github.com/portapack-mayhem/mayhem-firmware/actions/workflows/create_nightly_release.yml/badge.svg?branch=next)](https://github.com/portapack-mayhem/mayhem-firmware/actions/workflows/create_nightly_release.yml) [![CodeScene Code Health](https://codescene.io/projects/8381/status-badges/code-health)](https://codescene.io/projects/8381) [![GitHub All Releases](https://img.shields.io/github/downloads/portapack-mayhem/mayhem-firmware/total)](https://github.com/portapack-mayhem/mayhem-firmware/releases) [![GitHub Releases](https://img.shields.io/github/downloads/portapack-mayhem/mayhem-firmware/latest/total)](https://github.com/portapack-mayhem/mayhem-firmware/releases/latest) [![Docker Hub Pulls](https://img.shields.io/docker/pulls/eried/portapack.svg)](https://hub.docker.com/r/eried/portapack) [![Discord Chat](https://img.shields.io/discord/719669764804444213?label=Discord)](https://discord.gg/tuwVMv3) This is a fork of the [Havoc](https://github.com/furrtek/portapack-havoc/) firmware, which itself was a fork of the [PortaPack](https://github.com/sharebrained/portapack-hackrf) firmware, an add-on for the [HackRF](http://greatscottgadgets.com/hackrf/). A fork is a derivate, in this case one that has extra features and fixes when compared to the older versions. -[](https://github.com/portapack-mayhem/mayhem-firmware/wiki/PortaPack-Versions#new-h4m-mayhem-edition) [](https://github.com/portapack-mayhem/mayhem-firmware/wiki/PortaPack-Versions#h2m-mayhem-edition) +[](https://github.com/portapack-mayhem/mayhem-firmware/wiki/PortaPack-Versions#new-h4m-mayhem-edition) +[](https://github.com/portapack-mayhem/mayhem-firmware/wiki/PortaPack-Versions#h2m-mayhem-edition) +[]([https://github.com/portapack-mayhem/mayhem-firmware/wiki/PortaPack-Versions#h2m-mayhem-edition](https://github.com/portapack-mayhem/mayhem-firmware/wiki/PortaPack-Versions#h1r1r2)) # What is this? @@ -26,11 +28,11 @@ This repository expands upon the previous work by many people and aims to consta ## What to buy? -:heavy_check_mark: ![Static Badge](https://img.shields.io/badge/NEW-yellow) The fabulous H4M [complete](https://share.hackrf.app/TUOLYI) or [upgrade](https://share.hackrf.app/FPLM1H), featuring numerous improvements and accessories. Sold by our friends at [OpenSourceSDRLab](https://share.hackrf.app/99SAMT). Join their giveaways on discord (check the badge on top). +:heavy_check_mark: ![Static Badge](https://img.shields.io/badge/NEW-yellow) The fabulous H4M [complete](https://share.hackrf.app/9UMBN5) or [upgrade](https://share.hackrf.app/30CQ55), featuring numerous improvements and accessories. Sold by our friends at [OpenSourceSDRLab](https://share.hackrf.app/99SAMT). Join their giveaways on discord (check the badge on top). _EU customers_ can purchase via [Lab401](https://share.hackrf.app/0CI2CR). :heavy_check_mark: A recommended one is this [PortaPack H2](https://www.ebay.com/itm/116382397447), that includes everything you need with the plastic case "inspired" on [this](https://github.com/portapack-mayhem/mayhem-firmware/wiki/3d-printed-enclosure). -:heavy_check_mark: Some individuals lean towards the [H2 with a metal enclosure](https://share.hackrf.app/LZPBH9), but its advantages remain debated. Share your insights on our [wiki](https://github.com/portapack-mayhem/mayhem-firmware/wiki/Hardware-overview). +:heavy_check_mark: Some individuals lean towards the [H2 with a metal enclosure](https://share.hackrf.app/24T3TO), but its advantages remain debated. Share your insights on our [wiki](https://github.com/portapack-mayhem/mayhem-firmware/wiki/Hardware-overview). :warning: Be cautious , *ask* the seller about compatibility with the latest releases. Look out for the description of the item, if they provide the firmware files for an older version or they have custom setup instructions, this means it might be **NOT compatible**, for example: diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000..3fd5e0ced --- /dev/null +++ b/SECURITY.md @@ -0,0 +1 @@ +Please check [Intended-Use-and-Legality](https://github.com/portapack-mayhem/mayhem-firmware/wiki/) diff --git a/dockerfile-nogit b/dockerfile-nogit index 916e510c7..79801a39e 100644 --- a/dockerfile-nogit +++ b/dockerfile-nogit @@ -3,7 +3,7 @@ FROM ubuntu:noble # Set location to download ARM toolkit from. # This will need to be changed over time or replaced with a static link to the latest release. ENV ARMBINURL=https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2?revision=108bd959-44bd-4619-9c19-26187abf5225&la=en&hash=E788CE92E5DFD64B2A8C246BBA91A249CB8E2D2D \ - PATH=$HOME/bin:$PATH:/opt/build/armbin/bin + PATH=$PATH:/opt/build/armbin/bin #Create volume /havoc/bin for compiled firmware binaries VOLUME /havoc @@ -15,8 +15,8 @@ RUN apt-get update \ && apt-get -qy autoremove \ && rm -rf /var/lib/apt/lists/* -ENV LANG C.UTF-8 -ENV LC_ALL C.UTF-8 +ENV LANG=C.UTF-8 +ENV LC_ALL=C.UTF-8 # Grab the GNU ARM toolchain from arm.com # Then extract contents to /opt/build/armbin/ diff --git a/dockerize.sh b/dockerize.sh new file mode 100755 index 000000000..9f25d558e --- /dev/null +++ b/dockerize.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +################################################# +# This script aids building mayhem inside docker +# +# Basic usage: +# - Build dev container: ./dockerize.sh build +# - Build mayhem: ./dockerize.sh +# +# The image will be automatically build if it +# does not exist, but if the dockerfile changes +# it need to be rebuilt manually. +# +# Advanced parameters: +# - Get a shell inside the build image to +# inspect problems: ./dockerize.sh shell +# - Give additional parameters to the container: +# ./dockerize.sh -j10 +# ./dockerize.sh ninja -j10 +# - Use a different dockerfile: +# ./dockerize.sh build dockerfile-other +# - Use a different cpu architecture: +# ./dockerize.sh build dockerfile-nogit-arm arm64 +# +# Environment variables: +# - It is possible to override the default image +# name that is being used to build and run the +# build container using an environment variable. +# The default is 'portapack-dev' +# Override by setting the following environment +# variable: MAYHEM_DEV_DOCKER_IMAGE +# + +# +# Copyright (C) 2024 u-foka +# +# This file is part of PortaPack. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# + +set -e # exit immediatelly on any failure + +DIR="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" + +IMAGE="${MAYHEM_DEV_DOCKER_IMAGE:-portapack-dev}" + +build_image() { + DOCKERFILE=${1:-dockerfile-nogit} + PLATFORM=${2:-amd64} + docker build --platform "linux/${PLATFORM}" -t "${IMAGE}" -f "${DOCKERFILE}" . +} + +start_docker() { + if [ -z "$(docker images -q ${IMAGE} 2> /dev/null)" ]; then + build_image + fi + + exec docker run -v "${DIR}:/havoc" -u "$(id -u):$(id -g)" -ti --rm "${IMAGE}" "$@" +} + +if [ "$1" = 'shell' ]; then # open a shell into the container + start_docker "bash -li" +elif [ "$1" = 'build' ]; then # build the default (or specified) target with ninja + shift # remove the first item from $@ as we consumed it, we can then pass the rest on to make + build_image "$@" + exit $? +fi + +start_docker "$@" diff --git a/firmware/CMakeLists.txt b/firmware/CMakeLists.txt index bc613db18..161be343b 100644 --- a/firmware/CMakeLists.txt +++ b/firmware/CMakeLists.txt @@ -18,7 +18,7 @@ # Boston, MA 02110-1301, USA. # -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.16) project(firmware) diff --git a/firmware/application/CMakeLists.txt b/firmware/application/CMakeLists.txt index 8b4ce16c9..65b3bdf34 100644 --- a/firmware/application/CMakeLists.txt +++ b/firmware/application/CMakeLists.txt @@ -191,7 +191,7 @@ set(CPPSRC clock_manager.cpp core_control.cpp database.cpp - de_bruijn.cpp + gradient.cpp rfm69.cpp event_m0.cpp file_reader.cpp @@ -294,7 +294,6 @@ set(CPPSRC apps/ui_flash_utility.cpp apps/ui_freqman.cpp apps/ui_iq_trim.cpp - apps/ui_level.cpp apps/ui_looking_glass_app.cpp apps/ui_mictx.cpp apps/ui_modemsetup.cpp @@ -303,9 +302,7 @@ set(CPPSRC apps/ui_rds.cpp apps/ui_recon_settings.cpp apps/ui_recon.cpp - apps/ui_scanner.cpp apps/ui_sd_over_usb.cpp - apps/ui_sd_wipe.cpp apps/ui_search.cpp apps/ui_settings.cpp apps/ui_siggen.cpp @@ -317,9 +314,7 @@ set(CPPSRC apps/ui_text_editor.cpp apps/ui_touch_calibration.cpp apps/ui_touchtunes.cpp - apps/ui_view_wav.cpp apps/ui_weatherstation.cpp - apps/ui_whipcalc.cpp protocols/aprs.cpp protocols/ax25.cpp protocols/bht.cpp @@ -377,7 +372,7 @@ set(INCDIR ${CMAKE_CURRENT_BINARY_DIR} ${COMMON} ${PORTINC} ${KERNINC} ${TESTINC hw apps protocols - bitmaps + bmps ) # diff --git a/firmware/application/app_settings.cpp b/firmware/application/app_settings.cpp index 505ed456c..acf93b0ff 100644 --- a/firmware/application/app_settings.cpp +++ b/firmware/application/app_settings.cpp @@ -188,6 +188,7 @@ void copy_to_radio_model(const AppSettings& settings) { settings.am_config_index, settings.nbfm_config_index, settings.wfm_config_index, + settings.wfmam_config_index, settings.squelch); } @@ -218,6 +219,7 @@ void copy_from_radio_model(AppSettings& settings) { settings.am_config_index = receiver_model.am_configuration(); settings.nbfm_config_index = receiver_model.nbfm_configuration(); settings.wfm_config_index = receiver_model.wfm_configuration(); + settings.wfmam_config_index = receiver_model.wfmam_configuration(); } settings.step = receiver_model.frequency_step(); @@ -271,6 +273,7 @@ SettingsManager::SettingsManager( bindings_.emplace_back("am_config_index"sv, &settings_.am_config_index); bindings_.emplace_back("nbfm_config_index"sv, &settings_.nbfm_config_index); bindings_.emplace_back("wfm_config_index"sv, &settings_.wfm_config_index); + bindings_.emplace_back("wfmam_config_index"sv, &settings_.wfmam_config_index); bindings_.emplace_back("squelch"sv, &settings_.squelch); } diff --git a/firmware/application/app_settings.hpp b/firmware/application/app_settings.hpp index dd83c405e..d0c30d5a3 100644 --- a/firmware/application/app_settings.hpp +++ b/firmware/application/app_settings.hpp @@ -139,6 +139,7 @@ struct AppSettings { uint8_t am_config_index = 0; uint8_t nbfm_config_index = 0; uint8_t wfm_config_index = 0; + uint8_t wfmam_config_index = 0; uint8_t squelch = 80; uint8_t volume; // NOTE: update COMMON_APP_SETTINGS_COUNT when adding to this diff --git a/firmware/application/apps/ais_app.cpp b/firmware/application/apps/ais_app.cpp index 3e28fb4e8..07f2045cb 100644 --- a/firmware/application/apps/ais_app.cpp +++ b/firmware/application/apps/ais_app.cpp @@ -301,7 +301,7 @@ AISRecentEntryDetailView::AISRecentEntryDetailView(NavigationView& nav) { ais::format::text(entry_.name), 0, GeoPos::alt_unit::METERS, - GeoPos::spd_unit::NONE, + GeoPos::spd_unit::KNOTS, ais::format::latlon_float(entry_.last_position.latitude.normalized()), ais::format::latlon_float(entry_.last_position.longitude.normalized()), entry_.last_position.true_heading, @@ -324,7 +324,31 @@ AISRecentEntryDetailView& AISRecentEntryDetailView::operator=(const AISRecentEnt void AISRecentEntryDetailView::update_position() { if (send_updates) - geomap_view->update_position(ais::format::latlon_float(entry_.last_position.latitude.normalized()), ais::format::latlon_float(entry_.last_position.longitude.normalized()), (float)entry_.last_position.true_heading, 0, entry_.last_position.speed_over_ground); + geomap_view->update_position(ais::format::latlon_float(entry_.last_position.latitude.normalized()), ais::format::latlon_float(entry_.last_position.longitude.normalized()), (float)entry_.last_position.true_heading, 0, entry_.last_position.speed_over_ground > 1022 ? 0 : entry_.last_position.speed_over_ground); +} + +bool AISRecentEntryDetailView::add_map_marker(const AISRecentEntry& entry) { + if (geomap_view && send_updates) { + GeoMarker marker{}; + marker.lon = ais::format::latlon_float(entry.last_position.longitude.normalized()); + marker.lat = ais::format::latlon_float(entry.last_position.latitude.normalized()); + marker.angle = entry.last_position.true_heading; + marker.tag = entry.call_sign.empty() ? to_string_dec_uint(entry.mmsi) : entry.call_sign; + auto markerStored = geomap_view->store_marker(marker); + return markerStored == MARKER_STORED; + } + return false; +} +void AISRecentEntryDetailView::update_map_markers(AISRecentEntries& entries) { + if (geomap_view && send_updates) { + geomap_view->clear_markers(); + for (const auto& entry : entries) { + // if (entry.last_position.latitude.is_valid() && entry.last_position.longitude.is_valid()) { + add_map_marker(entry); + // } + } + update_position(); // to update view + } } void AISRecentEntryDetailView::focus() { @@ -415,14 +439,27 @@ AISAppView::AISAppView(NavigationView& nav) audio::set_rate(audio::Rate::Hz_24000); audio::output::start(); } + + signal_token_tick_second = rtc_time::signal_tick_second += [this]() { + on_tick_second(); + }; } AISAppView::~AISAppView() { + rtc_time::signal_tick_second -= signal_token_tick_second; audio::output::stop(); receiver_model.disable(); baseband::shutdown(); } +void AISAppView::on_tick_second() { + ++timer_seconds; + if (timer_seconds % 10 == 0) { + if (recent_entry_detail_view.hidden()) return; + recent_entry_detail_view.update_map_markers(recent); + } +} + void AISAppView::focus() { options_channel.focus(); } @@ -461,6 +498,7 @@ void AISAppView::on_show_detail(const AISRecentEntry& entry) { recent_entry_detail_view.hidden(false); recent_entry_detail_view.set_entry(entry); recent_entry_detail_view.focus(); + recent_entry_detail_view.update_map_markers(recent); } } /* namespace ui */ diff --git a/firmware/application/apps/ais_app.hpp b/firmware/application/apps/ais_app.hpp index 17aa700d5..20bb3a67c 100644 --- a/firmware/application/apps/ais_app.hpp +++ b/firmware/application/apps/ais_app.hpp @@ -125,10 +125,14 @@ class AISRecentEntryDetailView : public View { void update_position(); void focus() override; void paint(Painter&) override; + bool add_map_marker(const AISRecentEntry& entry); + void update_map_markers(AISRecentEntries& entries); AISRecentEntryDetailView(const AISRecentEntryDetailView& Entry); AISRecentEntryDetailView& operator=(const AISRecentEntryDetailView& Entry); + GeoMapView* get_geomap_view() { return geomap_view; } + private: AISRecentEntry entry_{}; @@ -210,11 +214,13 @@ class AISAppView : public View { }; AudioVolumeField field_volume{ - {28 * 8, 0 * 16}}; + {screen_width - 2 * 8, 0 * 16}}; Channel channel{ {21 * 8, 5, 6 * 8, 4}, }; + SignalToken signal_token_tick_second{}; + uint8_t timer_seconds = 0; MessageHandlerRegistration message_handler_packet{ Message::ID::AISPacket, @@ -229,6 +235,7 @@ class AISAppView : public View { void on_packet(const ais::Packet& packet); void on_show_list(); void on_show_detail(const AISRecentEntry& entry); + void on_tick_second(); }; } /* namespace ui */ diff --git a/firmware/application/apps/analog_audio_app.cpp b/firmware/application/apps/analog_audio_app.cpp index 4726f44b5..a5c51f4a5 100644 --- a/firmware/application/apps/analog_audio_app.cpp +++ b/firmware/application/apps/analog_audio_app.cpp @@ -40,6 +40,7 @@ namespace ui { /* AMOptionsView *********************************************************/ AMOptionsView::AMOptionsView( + AnalogAudioView* view, Rect parent_rect, const Style* style) : View{parent_rect} { @@ -48,12 +49,23 @@ AMOptionsView::AMOptionsView( add_children({ &label_config, &options_config, + &zoom_config, }); - freqman_set_bandwidth_option(AM_MODULATION, options_config); // adding the common message from freqman.cpp to the options_config - options_config.set_by_value(receiver_model.am_configuration()); - options_config.on_change = [this](size_t, OptionsField::value_t n) { - receiver_model.set_am_configuration(n); + zoom_config.on_change = [this, view](size_t, OptionsField::value_t n) { // n , has two option values. when GUI =zoom+1 => (0), when GUI=zoom+2 (6) + receiver_model.set_am_configuration(view->get_previous_AM_mode_option() + n); // n (0 or 6) + view->set_zoom_factor(AM_MODULATION, n); + view->set_previous_zoom_option(n); + }; + + // restore zoom selection + zoom_config.set_by_value(view->get_zoom_factor(AM_MODULATION)); + + freqman_set_bandwidth_option(AM_MODULATION, options_config); // freqman.cpp to the options_config, only allowing 5 modes freqman_bandwidths[AM] {"DSB 9k", 0}, {"DSB 6k", 1}, {"USB+3k", 2}, {"LSB-3k", 3}, {"CW", 4}, + options_config.set_by_value(receiver_model.am_configuration() - view->get_previous_zoom_option()); // restore AM GUI option mode , AM FIR index filters (0..11) values , am_configs has 12 fir index elements. + options_config.on_change = [this, view](size_t, OptionsField::value_t n) { + receiver_model.set_am_configuration(n + view->get_previous_zoom_option()); // we select proper FIR AM filter (0..11), = 0..4 GUI AM modes + offset +6 (if zoom+2) + view->set_previous_AM_mode_option(n); // (0..4) allowing 5 AM modes (DSB9K, DSB6K, USB,LSB, CW) }; } @@ -102,6 +114,54 @@ WFMOptionsView::WFMOptionsView( }; } +/* WFMAMAptOptionsView *******************************************************/ + +WFMAMAptOptionsView::WFMAMAptOptionsView( + Rect parent_rect, + const Style* style) + : View{parent_rect} { + set_style(style); + + add_children({ + &label_config, + &options_config, + }); + + freqman_set_bandwidth_option(WFMAM_MODULATION, options_config); // adding the common message from freqman.cpp to the options_config + options_config.set_by_value(receiver_model.wfmam_configuration()); + options_config.on_change = [this](size_t, OptionsField::value_t n) { + receiver_model.set_wfmam_configuration(n); + }; +} + +/* AMFMAptOptionsView *********************************************************/ + +AMFMAptOptionsView::AMFMAptOptionsView( + AnalogAudioView* view, + Rect parent_rect, + const Style* style) + : View{parent_rect} { + set_style(style); + + add_children({ + &label_config, + &options_config, + &zoom_config, + }); + + freqman_set_bandwidth_option(AMFM_MODULATION, options_config); // adding the common message from freqman.cpp to the options_config + receiver_model.set_amfm_configuration(5); // Fix index 5 manually, not from freqman: set to RX AM (USB+FM) mode to demod audio tone, and get Wefax_APT signal. + options_config.set_by_value(receiver_model.amfm_configuration()); + + zoom_config.on_change = [this, view](size_t, OptionsField::value_t n) { + receiver_model.set_amfm_configuration(5 + n); + view->set_zoom_factor(AMFM_MODULATION, n); + }; + + // restore zoom selection + zoom_config.set_by_value(view->get_zoom_factor(AMFM_MODULATION)); +} + /* SPECOptionsView *******************************************************/ SPECOptionsView::SPECOptionsView( @@ -175,8 +235,9 @@ AnalogAudioView::AnalogAudioView( }; auto modulation = receiver_model.modulation(); + // This app doesn't handle "Capture" mode. - if (modulation > ReceiverModel::Mode::SpectrumAnalysis) + if (modulation == ReceiverModel::Mode::Capture) modulation = ReceiverModel::Mode::SpectrumAnalysis; options_modulation.set_by_value(toUType(modulation)); @@ -226,11 +287,42 @@ void AnalogAudioView::set_spec_bw(size_t index, uint32_t bw) { receiver_model.set_baseband_bandwidth(bw / 2); } -uint8_t AnalogAudioView::get_spec_iq_phase_calibration_value() { // define accessor functions inside AnalogAudioView to read & write real iq_phase_calibration_value +uint8_t AnalogAudioView::get_zoom_factor(uint8_t mode) { // define accessor functions inside AnalogAudioView to read zoom value + if (mode == AM_MODULATION) + return zoom_factor_am; + else if (mode == AMFM_MODULATION) + return zoom_factor_amfm; + return 0; // default if unsupported mode +} + +void AnalogAudioView::set_zoom_factor(uint8_t mode, uint8_t zoom) { // define accessor functions inside AnalogAudioView to write zoom value + if (mode == AM_MODULATION) + zoom_factor_am = zoom; + else if (mode == AMFM_MODULATION) + zoom_factor_amfm = zoom; +} + +uint8_t AnalogAudioView::get_previous_AM_mode_option() { + return previous_AM_mode_option; +} + +void AnalogAudioView::set_previous_AM_mode_option(uint8_t mode) { + previous_AM_mode_option = mode; +} + +uint8_t AnalogAudioView::get_previous_zoom_option() { + return previous_zoom; +} + +void AnalogAudioView::set_previous_zoom_option(uint8_t zoom) { + previous_zoom = zoom; +} + +uint8_t AnalogAudioView::get_spec_iq_phase_calibration_value() { // define accessor functions inside AnalogAudioView to read iq_phase_calibration_value return iq_phase_calibration_value; } -void AnalogAudioView::set_spec_iq_phase_calibration_value(uint8_t cal_value) { // define accessor functions +void AnalogAudioView::set_spec_iq_phase_calibration_value(uint8_t cal_value) { // define accessor functions inside AnalogAudioView to write iq_phase_calibration_value iq_phase_calibration_value = cal_value; radio::set_rx_max283x_iq_phase_calibration(iq_phase_calibration_value); } @@ -246,6 +338,7 @@ void AnalogAudioView::set_spec_trigger(uint16_t trigger) { } AnalogAudioView::~AnalogAudioView() { + receiver_model.set_hidden_offset(0); audio::output::stop(); receiver_model.disable(); baseband::shutdown(); @@ -267,10 +360,6 @@ void AnalogAudioView::on_baseband_bandwidth_changed(uint32_t bandwidth_hz) { } void AnalogAudioView::on_modulation_changed(ReceiverModel::Mode modulation) { - // This app doesn't know what to do with "Capture" mode. - if (modulation > ReceiverModel::Mode::SpectrumAnalysis) - modulation = ReceiverModel::Mode::SpectrumAnalysis; - baseband::spectrum_streaming_stop(); update_modulation(modulation); on_show_options_modulation(); @@ -329,7 +418,7 @@ void AnalogAudioView::on_show_options_modulation() { const auto modulation = receiver_model.modulation(); switch (modulation) { case ReceiverModel::Mode::AMAudio: - widget = std::make_unique(options_view_rect, Theme::getInstance()->option_active); + widget = std::make_unique(this, options_view_rect, Theme::getInstance()->option_active); waterfall.show_audio_spectrum_view(false); text_ctcss.hidden(true); break; @@ -346,6 +435,18 @@ void AnalogAudioView::on_show_options_modulation() { text_ctcss.hidden(true); break; + case ReceiverModel::Mode::WFMAudioAMApt: + widget = std::make_unique(options_view_rect, Theme::getInstance()->option_active); + waterfall.show_audio_spectrum_view(true); + text_ctcss.hidden(true); + break; + + case ReceiverModel::Mode::AMAudioFMApt: + widget = std::make_unique(this, options_view_rect, Theme::getInstance()->option_active); + waterfall.show_audio_spectrum_view(false); + text_ctcss.hidden(true); + break; + case ReceiverModel::Mode::SpectrumAnalysis: widget = std::make_unique(this, nbfm_view_rect, Theme::getInstance()->option_active); waterfall.show_audio_spectrum_view(false); @@ -387,6 +488,12 @@ void AnalogAudioView::update_modulation(ReceiverModel::Mode modulation) { case ReceiverModel::Mode::WidebandFMAudio: image_tag = portapack::spi_flash::image_tag_wfm_audio; break; + case ReceiverModel::Mode::WFMAudioAMApt: + image_tag = portapack::spi_flash::image_tag_wfm_audio; + break; + case ReceiverModel::Mode::AMAudioFMApt: + image_tag = portapack::spi_flash::image_tag_am_audio; + break; case ReceiverModel::Mode::SpectrumAnalysis: image_tag = portapack::spi_flash::image_tag_wideband_spectrum; break; @@ -407,6 +514,8 @@ void AnalogAudioView::update_modulation(ReceiverModel::Mode modulation) { receiver_model.set_sampling_rate(is_wideband_spectrum_mode ? spec_bw : 3072000); receiver_model.set_baseband_bandwidth(is_wideband_spectrum_mode ? spec_bw / 2 : 1750000); + receiver_model.set_hidden_offset(modulation == ReceiverModel::Mode::AMAudioFMApt ? -2200 : 0); // wefax needs to be shifted, see wefax rx app. + receiver_model.enable(); // TODO: This doesn't belong here! There's a better way. @@ -421,6 +530,12 @@ void AnalogAudioView::update_modulation(ReceiverModel::Mode modulation) { case ReceiverModel::Mode::WidebandFMAudio: sampling_rate = 48000; break; + case ReceiverModel::Mode::WFMAudioAMApt: + sampling_rate = 12000; + break; + case ReceiverModel::Mode::AMAudioFMApt: + sampling_rate = 12000; + break; default: break; } diff --git a/firmware/application/apps/analog_audio_app.hpp b/firmware/application/apps/analog_audio_app.hpp index 33153376a..5979aecc0 100644 --- a/firmware/application/apps/analog_audio_app.hpp +++ b/firmware/application/apps/analog_audio_app.hpp @@ -35,9 +35,11 @@ namespace ui { +class AnalogAudioView; + class AMOptionsView : public View { public: - AMOptionsView(Rect parent_rect, const Style* style); + AMOptionsView(AnalogAudioView* view, Rect parent_rect, const Style* style); private: Text label_config{ @@ -51,6 +53,38 @@ class AMOptionsView : public View { { // Using common messages from freqman_ui.cpp }}; + + OptionsField zoom_config{ + {23 * 8, 0 * 16}, + 7, + {{"ZOOM x1", 0}, + {"ZOOM x2", 6}} // offset index AM modes array FIR filters. + }; +}; + +class AMFMAptOptionsView : public View { + public: + AMFMAptOptionsView(AnalogAudioView* view, Rect parent_rect, const Style* style); + + private: + Text label_config{ + {0 * 8, 0 * 16, 2 * 8, 1 * 16}, + "BW", + }; + + OptionsField options_config{ + {3 * 8, 0 * 16}, + 17, // Max option length chars "USB+FM(Wefax Apt)" + { + // Using common messages from freqman_ui.cpp In HF USB , Here we only need USB Audio demod, + post-FM demod fsubcarrier FM tone to get APT signal. + }}; + + OptionsField zoom_config{ + {23 * 8, 0 * 16}, + 7, + {{"ZOOM x1", 0}, + {"ZOOM x2", 6}} // offset index array filters. + }; }; class NBFMOptionsView : public View { @@ -98,7 +132,22 @@ class WFMOptionsView : public View { }}; }; -class AnalogAudioView; +class WFMAMAptOptionsView : public View { + public: + WFMAMAptOptionsView(Rect parent_rect, const Style* style); + + private: + Text label_config{ + {0 * 8, 0 * 16, 2 * 8, 1 * 16}, + "BW", + }; + OptionsField options_config{ + {3 * 8, 0 * 16}, + 16, // Max option char length "80k-NOAA Apt LPF" , example. + { + // Using common messages from freqman_ui.cpp + }}; +}; class SPECOptionsView : public View { public: @@ -136,7 +185,7 @@ class SPECOptionsView : public View { {19 * 8, 0 * 16, 11 * 8, 1 * 16}, // 18 (x col.) x char_size, 12 (length) x 8 blanking space to delete previous chars. "Rx_IQ_CAL "}; NumberField field_rx_iq_phase_cal{ - {28 * 8, 0 * 16}, + {screen_width - 2 * 8, 0 * 16}, 2, {0, 63}, // 5 or 6 bits IQ CAL phase adjustment (range updated later) 1, @@ -164,20 +213,38 @@ class AnalogAudioView : public View { uint8_t get_spec_iq_phase_calibration_value(); void set_spec_iq_phase_calibration_value(uint8_t cal_value); + uint8_t get_zoom_factor(uint8_t mode); + void set_zoom_factor(uint8_t mode, uint8_t zoom); + + uint8_t get_previous_AM_mode_option(); + void set_previous_AM_mode_option(uint8_t mode); + + uint8_t get_previous_zoom_option(); + void set_previous_zoom_option(uint8_t zoom); + private: static constexpr ui::Dim header_height = 3 * 16; NavigationView& nav_; RxRadioState radio_state_{}; uint8_t iq_phase_calibration_value{15}; // initial default RX IQ phase calibration value , used for both max2837 & max2839 + uint8_t zoom_factor_am{0}; // initial zoom factor in AM mode + uint8_t zoom_factor_amfm{0}; // initial zoom factor in AMFM mode + uint8_t previous_AM_mode_option{0}; // GUI 5 AM modes : (0..4 ) (DSB9K, DSB6K, USB,LSB, CW). Used to select proper FIR filter (0..11) AM mode + offset 0 (zoom+1) or +6 (if zoom+2) + uint8_t previous_zoom{0}; // GUI ZOOM+1, ZOOM+2 , equivalent to two values offset 0 (zoom+1) or +6 (if zoom+2) + app_settings::SettingsManager settings_{ "rx_audio", app_settings::Mode::RX, { {"iq_phase_calibration"sv, &iq_phase_calibration_value}, // we are saving and restoring that CAL from Settings. + {"zoom_factor_am"sv, &zoom_factor_am}, // we are saving and restoring AM ZOOM factor from Settings. + {"zoom_factor_amfm"sv, &zoom_factor_amfm}, // we are saving and restoring AMFM ZOOM factor from Settings. + {"previous_AM_mode_option"sv, &previous_AM_mode_option}, // we are saving and restoring AMFM ZOOM factor from Settings. + {"previous_zoom"sv, &previous_zoom}, // we are saving and restoring AMFM ZOOM factor from Settings. }}; - const Rect options_view_rect{0 * 8, 1 * 16, 30 * 8, 1 * 16}; + const Rect options_view_rect{0 * 8, 1 * 16, screen_width, 1 * 16}; const Rect nbfm_view_rect{0 * 8, 1 * 16, 18 * 8, 1 * 16}; size_t spec_bw_index = 0; @@ -211,10 +278,12 @@ class AnalogAudioView : public View { {"NFM ", toUType(ReceiverModel::Mode::NarrowbandFMAudio)}, {"WFM ", toUType(ReceiverModel::Mode::WidebandFMAudio)}, {"SPEC", toUType(ReceiverModel::Mode::SpectrumAnalysis)}, + {"AMFM", toUType(ReceiverModel::Mode::AMAudioFMApt)}, // Added to handle HF WeatherFax , SSB (USB demod) + Tone_Subcarrier FM demod + {"FMAM", toUType(ReceiverModel::Mode::WFMAudioAMApt)} // Added to handle SAT NOAA APT }}; AudioVolumeField field_volume{ - {28 * 8, 0 * 16}}; + {screen_width - 2 * 8, 0 * 16}}; Text text_ctcss{ {16 * 8, 1 * 16, 14 * 8, 1 * 16}, @@ -223,7 +292,7 @@ class AnalogAudioView : public View { std::unique_ptr options_widget{}; RecordView record_view{ - {0 * 8, 2 * 16, 30 * 8, 1 * 16}, + {0 * 8, 2 * 16, screen_width, 1 * 16}, u"AUD", u"AUDIO", RecordView::FileType::WAV, diff --git a/firmware/application/apps/ble_comm_app.hpp b/firmware/application/apps/ble_comm_app.hpp index 246d08c08..43b07b4be 100644 --- a/firmware/application/apps/ble_comm_app.hpp +++ b/firmware/application/apps/ble_comm_app.hpp @@ -170,7 +170,7 @@ class BLECommView : public View { "-"}; Console console{ - {0, 4 * 16, 240, 240}}; + {0, 4 * 16, ui::screen_width, ui::screen_height - 80}}; std::string str_log{""}; bool logging{false}; diff --git a/firmware/application/apps/ble_rx_app.cpp b/firmware/application/apps/ble_rx_app.cpp index 16af4f85f..136e0dd52 100644 --- a/firmware/application/apps/ble_rx_app.cpp +++ b/firmware/application/apps/ble_rx_app.cpp @@ -2,6 +2,7 @@ * Copyright (C) 2014 Jared Boone, ShareBrained Technology, Inc. * Copyright (C) 2017 Furrtek * Copyright (C) 2023 TJ Baginski + * Copyright (C) 2025 Tommaso Ventafridda * * This file is part of PortaPack. * @@ -21,7 +22,6 @@ * Boston, MA 02110-1301, USA. */ -#include "ble_rx_app.hpp" #include "ble_rx_app.hpp" #include "ui_modemsetup.hpp" @@ -34,11 +34,20 @@ #include "portapack_persistent_memory.hpp" #include "ui_fileman.hpp" #include "ui_textentry.hpp" +#include "usb_serial_asyncmsg.hpp" using namespace portapack; using namespace modems; namespace fs = std::filesystem; +#define BLE_RX_NO_ERROR 0 +#define BLE_RX_LIST_FILENAME_EMPTY_ERROR 1 +#define BLE_RX_ENTRY_FILENAME_EMPTY_ERROR 2 +#define BLE_RX_LIST_SAVE_ERROR 3 +#define BLE_RX_ENTRY_SAVE_ERROR 4 + +static uint8_t ble_rx_error = BLE_RX_NO_ERROR; + void BLELogger::log_raw_data(const std::string& data) { log_file.write_entry(data); } @@ -59,6 +68,50 @@ uint64_t copy_mac_address_to_uint64(const uint8_t* macAddress) { return result; } +MAC_VENDOR_STATUS lookup_mac_vendor_status(const uint8_t* mac_address, std::string& vendor_name) { + static bool db_checked = false; + static bool db_exists = false; + + if (!db_checked) { + database db; + database::MacAddressDBRecord dummy_record; + int test_result = db.retrieve_macaddress_record(&dummy_record, "000000"); + db_exists = (test_result != DATABASE_NOT_FOUND); + db_checked = true; + } + + if (!db_exists) { + vendor_name = "macaddress.db not found"; + return MAC_DB_NOT_FOUND; + } + + database db; + database::MacAddressDBRecord record; + + // Convert MAC address to hex string + std::string mac_hex = ""; + for (int i = 0; i < 3; i++) { + // Only need first 3 bytes for OUI + mac_hex += to_string_hex(mac_address[i], 2); + } + + int result = db.retrieve_macaddress_record(&record, mac_hex); + + if (result == DATABASE_RECORD_FOUND) { + vendor_name = std::string(record.vendor_name); + return MAC_VENDOR_FOUND; + } else { + vendor_name = "Unknown"; + return MAC_VENDOR_NOT_FOUND; + } +} + +std::string lookup_mac_vendor(const uint8_t* mac_address) { + std::string vendor_name; + lookup_mac_vendor_status(mac_address, vendor_name); + return vendor_name; +} + void reverse_byte_array(uint8_t* arr, int length) { int start = 0; int end = length - 1; @@ -142,8 +195,15 @@ void RecentEntriesTable::draw( line = to_string_mac_address(entry.packetData.macAddress, 6, false); } + std::string hitsStr; + + if (!entry.informationString.empty()) { + hitsStr = entry.informationString; + } else { + hitsStr = to_string_dec_int(entry.numHits); + } + // Pushing single digit values down right justified. - std::string hitsStr = to_string_dec_int(entry.numHits); int hitsDigits = hitsStr.length(); uint8_t hits_spacing = 8 - hitsDigits; @@ -157,7 +217,10 @@ void RecentEntriesTable::draw( line += pad_string_with_spaces(db_spacing) + dbStr; line.resize(target_rect.width() / 8, ' '); - painter.draw_string(target_rect.location(), style, line); + + Style row_style = (entry.vendor_status == MAC_VENDOR_FOUND) ? style : Style{style.font, style.background, Color::grey()}; + + painter.draw_string(target_rect.location(), row_style, line); } BleRecentEntryDetailView::BleRecentEntryDetailView(NavigationView& nav, const BleRecentEntry& entry) @@ -170,10 +233,14 @@ BleRecentEntryDetailView::BleRecentEntryDetailView(NavigationView& nav, const Bl &text_mac_address, &label_pdu_type, &text_pdu_type, + &label_vendor, + &text_vendor, &labels}); text_mac_address.set(to_string_mac_address(entry.packetData.macAddress, 6, false)); text_pdu_type.set(pdu_type_to_string(entry.pduType)); + std::string vendor_name = lookup_mac_vendor(entry.packetData.macAddress); + text_vendor.set(vendor_name); button_done.on_select = [&nav](const ui::Button&) { nav.pop(); @@ -195,6 +262,7 @@ BleRecentEntryDetailView::BleRecentEntryDetailView(NavigationView& nav, const Bl nav, packetFileBuffer, 64, + ENTER_KEYBOARD_MODE_ALPHA, [this, packetToSave](std::string& buffer) { on_save_file(buffer, packetToSave); }); @@ -202,19 +270,23 @@ BleRecentEntryDetailView::BleRecentEntryDetailView(NavigationView& nav, const Bl } void BleRecentEntryDetailView::on_save_file(const std::string value, BLETxPacket packetToSave) { - ensure_directory(packet_save_path); - auto folder = packet_save_path.parent_path(); - auto ext = packet_save_path.extension(); - auto new_path = folder / value + ext; - - saveFile(new_path, packetToSave); + if (value.length() > 0) { + ensure_directory(packet_save_path); + auto folder = packet_save_path.parent_path(); + auto ext = packet_save_path.extension(); + auto new_path = folder / value + ext; + ble_rx_error = saveFile(new_path, packetToSave); + } else { + nav_.pop(); + ble_rx_error = BLE_RX_ENTRY_FILENAME_EMPTY_ERROR; + } } bool BleRecentEntryDetailView::saveFile(const std::filesystem::path& path, BLETxPacket packetToSave) { File f; auto error = f.create(path); if (error) - return false; + return BLE_RX_ENTRY_SAVE_ERROR; std::string macAddressStr = packetToSave.macAddress; std::string advertisementDataStr = packetToSave.advertisementData; @@ -224,7 +296,7 @@ bool BleRecentEntryDetailView::saveFile(const std::filesystem::path& path, BLETx f.write(packetString.c_str(), packetString.length()); - return true; + return BLE_RX_NO_ERROR; } void BleRecentEntryDetailView::update_data() { @@ -357,6 +429,10 @@ void BleRecentEntryDetailView::paint(Painter& painter) { void BleRecentEntryDetailView::set_entry(const BleRecentEntry& entry) { entry_ = entry; + text_mac_address.set(to_string_mac_address(entry.packetData.macAddress, 6, false)); + text_pdu_type.set(pdu_type_to_string(entry.pduType)); + std::string vendor_name = lookup_mac_vendor(entry.packetData.macAddress); + text_vendor.set(vendor_name); set_dirty(); } @@ -434,6 +510,8 @@ BLERxView::BLERxView(NavigationView& nav) &button_switch, &recent_entries_view}); + async_tx_states_when_entered = portapack::async_tx_enabled; + recent_entries_view.on_select = [this](const BleRecentEntry& entry) { nav_.push(entry); }; @@ -441,9 +519,9 @@ BLERxView::BLERxView(NavigationView& nav) check_serial_log.on_select = [this](Checkbox&, bool v) { serial_logging = v; if (v) { - usb_serial_thread = std::make_unique(); + portapack::async_tx_enabled = true; } else { - usb_serial_thread.reset(); + portapack::async_tx_enabled = false; } }; check_serial_log.set_value(serial_logging); @@ -459,6 +537,7 @@ BLERxView::BLERxView(NavigationView& nav) nav_, filterBuffer, 64, + ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& buffer) { on_filter_change(buffer); }); @@ -467,7 +546,6 @@ BLERxView::BLERxView(NavigationView& nav) logger = std::make_unique(); check_log.on_select = [this](Checkbox&, bool v) { - str_log = ""; logging = v; if (logger && logging) @@ -481,6 +559,7 @@ BLERxView::BLERxView(NavigationView& nav) nav, listFileBuffer, 64, + ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& buffer) { on_save_file(buffer); }); @@ -488,6 +567,7 @@ BLERxView::BLERxView(NavigationView& nav) button_clear_list.on_select = [this](Button&) { recent.clear(); + recent_entries_view.set_dirty(); }; button_switch.on_select = [&nav](Button&) { @@ -529,7 +609,10 @@ BLERxView::BLERxView(NavigationView& nav) options_filter.on_change = [this](size_t index, int32_t v) { filter_index = (uint8_t)index; + recent.clear(); handle_filter_options(v); + uniqueParsing = filter_index == 2 ? true : false; + recent_entries_view.set_dirty(); }; options_channel.set_selected_index(channel_index, true); @@ -568,11 +651,14 @@ std::string BLERxView::build_line_str(BleRecentEntry entry) { } void BLERxView::on_save_file(const std::string value) { - auto folder = packet_save_path.parent_path(); - auto ext = packet_save_path.extension(); - auto new_path = folder / value + ext; - - saveFile(new_path); + if (value.length() > 0) { + auto folder = packet_save_path.parent_path(); + auto ext = packet_save_path.extension(); + auto new_path = folder / value + ext; + ble_rx_error = saveFile(new_path); + } else { + ble_rx_error = BLE_RX_LIST_FILENAME_EMPTY_ERROR; + } } bool BLERxView::saveFile(const std::filesystem::path& path) { @@ -584,7 +670,7 @@ bool BLERxView::saveFile(const std::filesystem::path& path) { auto error = src->open(path, false, true); if (error) { - return false; + return BLE_RX_LIST_SAVE_ERROR; } for (const auto& entry : recent) { @@ -615,7 +701,7 @@ bool BLERxView::saveFile(const std::filesystem::path& path) { auto error = dst->open(tempFilePath, false, true); if (error) { - return false; + return BLE_RX_LIST_SAVE_ERROR; } dst->write_line(headerStr.c_str()); @@ -695,14 +781,65 @@ bool BLERxView::saveFile(const std::filesystem::path& path) { tempList.clear(); - return true; + return BLE_RX_NO_ERROR; } void BLERxView::on_data(BlePacketData* packet) { - if (!logging) { - str_log = ""; + uint64_t macAddressEncoded = copy_mac_address_to_uint64(packet->macAddress); + + // Start of Packet stuffing. + // Masking off the top 2 bytes to avoid invalid keys. + + uint64_t key = macAddressEncoded & 0xFFFFFFFFFFFF; + bool packetExists = false; + + // If found store into tempEntry to modify. + auto it = find(recent, key); + if (it != recent.end()) { + recent.push_front(*it); + recent.erase(it); + updateEntry(packet, recent.front(), (ADV_PDU_TYPE)packet->type); + packetExists = true; + } else { + recent.emplace_front(key); + truncate_entries(recent); + + packetExists = updateEntry(packet, recent.front(), (ADV_PDU_TYPE)packet->type); + + // If parsing failed, remove entry. + if (!packetExists) { + recent.erase(recent.begin()); + } } + if (packetExists) { + handle_filter_options(options_filter.selected_index()); + handle_entries_sort(options_sort.selected_index()); + + if (!searchList.empty()) { + auto it = searchList.begin(); + + while (it != searchList.end()) { + std::string searchStr = (std::string)*it; + + if (recent.front().dataString.find(searchStr) != std::string::npos) { + searchList.erase(it); + found_count++; + break; + } + + it++; + } + + text_found_count.set(to_string_dec_uint(found_count) + "/" + to_string_dec_uint(total_count)); + } + } + + log_ble_packet(packet); +} + +void BLERxView::log_ble_packet(BlePacketData* packet) { + str_console = ""; str_console += pdu_type_to_string((ADV_PDU_TYPE)packet->type); str_console += " Len:"; str_console += to_string_dec_uint(packet->size); @@ -716,49 +853,13 @@ void BLERxView::on_data(BlePacketData* packet) { str_console += to_string_hex(packet->data[i], 2); } - uint64_t macAddressEncoded = copy_mac_address_to_uint64(packet->macAddress); - - // Start of Packet stuffing. - // Masking off the top 2 bytes to avoid invalid keys. - auto& entry = ::on_packet(recent, macAddressEncoded & 0xFFFFFFFFFFFF); - updateEntry(packet, entry, (ADV_PDU_TYPE)packet->type); - - // Add entries if they meet the criteria. - // auto value = filter; - // resetFilteredEntries(recent, [&value](const BleRecentEntry& entry) { - // return (entry.dataString.find(value) == std::string::npos) && (entry.nameString.find(value) == std::string::npos); - // }); - handle_filter_options(options_filter.selected_index()); - - handle_entries_sort(options_sort.selected_index()); - // Log at End of Packet. if (logger && logging) { - logger->log_raw_data(str_console + "\r\n"); + logger->log_raw_data(str_console); } if (serial_logging) { - usb_serial_thread->serial_str = str_console + "\r\n"; - usb_serial_thread->str_ready = true; - } - str_console = ""; - - if (!searchList.empty()) { - auto it = searchList.begin(); - - while (it != searchList.end()) { - std::string searchStr = (std::string)*it; - - if (entry.dataString.find(searchStr) != std::string::npos) { - searchList.erase(it); - found_count++; - break; - } - - it++; - } - - text_found_count.set(to_string_dec_uint(found_count) + "/" + to_string_dec_uint(total_count)); + UsbSerialAsyncmsg::asyncmsg(str_console); // new line handled there, no need here. } } @@ -822,15 +923,24 @@ void BLERxView::on_timer() { timer_count = 0; if (auto_channel) { - int min = 37; - int max = 39; + field_frequency.set_value(get_freq_by_channel_number(channel_number)); + baseband::set_btlerx(channel_number); - int randomChannel = min + std::rand() % (max - min + 1); - - field_frequency.set_value(get_freq_by_channel_number(randomChannel)); - baseband::set_btlerx(randomChannel); + channel_number = (channel_number < 39) ? channel_number + 1 : 37; } } + if (ble_rx_error != BLE_RX_NO_ERROR) { + if (ble_rx_error == BLE_RX_LIST_FILENAME_EMPTY_ERROR) { + nav_.display_modal("Error", "List filename is empty !"); + } else if (ble_rx_error == BLE_RX_ENTRY_FILENAME_EMPTY_ERROR) { + nav_.display_modal("Error", "Entry filename is empty !"); + } else if (ble_rx_error == BLE_RX_LIST_SAVE_ERROR) { + nav_.display_modal("Error", "Couldn't save list !"); + } else if (ble_rx_error == BLE_RX_ENTRY_SAVE_ERROR) { + nav_.display_modal("Error", "Couldn't save entry !"); + } + ble_rx_error = BLE_RX_NO_ERROR; + } } void BLERxView::handle_entries_sort(uint8_t index) { @@ -887,20 +997,23 @@ void BLERxView::set_parent_rect(const Rect new_parent_rect) { } BLERxView::~BLERxView() { + portapack::async_tx_enabled = async_tx_states_when_entered; receiver_model.disable(); baseband::shutdown(); } -void BLERxView::updateEntry(const BlePacketData* packet, BleRecentEntry& entry, ADV_PDU_TYPE pdu_type) { +bool BLERxView::updateEntry(const BlePacketData* packet, BleRecentEntry& entry, ADV_PDU_TYPE pdu_type) { std::string data_string; + bool success = false; + int i; for (i = 0; i < packet->dataLen; i++) { data_string += to_string_hex(packet->data[i], 2); } - entry.dbValue = packet->max_dB; + entry.dbValue = packet->max_dB - (receiver_model.lna() + receiver_model.vga() + (receiver_model.rf_amp() ? 14 : 0)); entry.timestamp = to_string_timestamp(rtc_time::now()); entry.dataString = data_string; @@ -916,9 +1029,14 @@ void BLERxView::updateEntry(const BlePacketData* packet, BleRecentEntry& entry, entry.packetData.macAddress[4] = packet->macAddress[4]; entry.packetData.macAddress[5] = packet->macAddress[5]; - entry.numHits++; entry.pduType = pdu_type; entry.channelNumber = channel_number; + entry.numHits++; + + if (entry.vendor_status == MAC_VENDOR_UNKNOWN) { + std::string vendor_name; + entry.vendor_status = lookup_mac_vendor_status(entry.packetData.macAddress, vendor_name); + } // Parse Data Section into buffer to be interpretted later. for (int i = 0; i < packet->dataLen; i++) { @@ -928,35 +1046,55 @@ void BLERxView::updateEntry(const BlePacketData* packet, BleRecentEntry& entry, entry.include_name = check_name.value(); // Only parse name for advertisment packets and empty name entries - if ((pdu_type == ADV_IND || pdu_type == ADV_NONCONN_IND || pdu_type == SCAN_RSP || pdu_type == ADV_SCAN_IND) && entry.nameString.empty()) { - ADV_PDU_PAYLOAD_TYPE_0_2_4_6* advertiseData = (ADV_PDU_PAYLOAD_TYPE_0_2_4_6*)entry.packetData.data; - - uint8_t currentByte = 0; - uint8_t length = 0; - uint8_t type = 0; - - std::string decoded_data; - for (currentByte = 0; (currentByte < entry.packetData.dataLen);) { - length = advertiseData->Data[currentByte++]; - type = advertiseData->Data[currentByte++]; - - // Subtract 1 because type is part of the length. - for (int i = 0; i < length - 1; i++) { - // parse the name of bluetooth device: 0x08->Shortened Local Name; 0x09->Complete Local Name - if (type == 0x08 || type == 0x09) { - decoded_data += (char)advertiseData->Data[currentByte]; - } - currentByte++; - } - if (!decoded_data.empty()) { - entry.nameString = std::move(decoded_data); - break; - } + if (pdu_type == ADV_IND || pdu_type == ADV_NONCONN_IND || pdu_type == SCAN_RSP || pdu_type == ADV_SCAN_IND) { + if (uniqueParsing) { + // Add your unique beacon parsing function here. } + + if (!success && !uniqueParsing) { + success = parse_beacon_data(packet->data, packet->dataLen, entry.nameString, entry.informationString); + } + } else if (pdu_type == ADV_DIRECT_IND || pdu_type == SCAN_REQ) { ADV_PDU_PAYLOAD_TYPE_1_3* directed_mac_data = (ADV_PDU_PAYLOAD_TYPE_1_3*)entry.packetData.data; reverse_byte_array(directed_mac_data->A1, 6); } + + return success; +} + +bool BLERxView::parse_beacon_data(const uint8_t* data, uint8_t length, std::string& nameString, std::string& informationString) { + uint8_t currentByte, currentLength, currentType = 0; + std::string tempName = ""; + + for (currentByte = 0; currentByte < length;) { + currentLength = data[currentByte++]; + currentType = data[currentByte++]; + + // Subtract 1 because type is part of the length. + for (int i = 0; ((i < currentLength - 1) && (currentByte < length)); i++) { + // parse the name of bluetooth device: 0x08->Shortened Local Name; 0x09->Complete Local Name + if (currentType == 0x08 || currentType == 0x09) { + tempName += (char)data[currentByte]; + } + currentByte++; + } + + if (!tempName.empty()) { + nameString = tempName; + break; + } + } + + informationString = ""; + + if (!informationString.empty()) { + // Option to change title of Hits Column. + // Setting to default for now. + columns.set(1, "Hits", 7); + } + + return true; } } /* namespace ui */ diff --git a/firmware/application/apps/ble_rx_app.hpp b/firmware/application/apps/ble_rx_app.hpp index 6befa2828..a1654e950 100644 --- a/firmware/application/apps/ble_rx_app.hpp +++ b/firmware/application/apps/ble_rx_app.hpp @@ -2,6 +2,7 @@ * Copyright (C) 2014 Jared Boone, ShareBrained Technology, Inc. * Copyright (C) 2017 Furrtek * Copyright (C) 2023 TJ Baginski + * Copyright (C) 2025 Tommaso Ventafridda * * This file is part of PortaPack. * @@ -33,6 +34,7 @@ #include "ui_record_view.hpp" #include "app_settings.hpp" #include "radio_state.hpp" +#include "database.hpp" #include "log_file.hpp" #include "utility.hpp" #include "usb_serial_thread.hpp" @@ -72,10 +74,17 @@ typedef enum { RESERVED8 = 15 } ADV_PDU_TYPE; +typedef enum { + MAC_VENDOR_UNKNOWN = 0, + MAC_VENDOR_FOUND = 1, + MAC_VENDOR_NOT_FOUND = 2, + MAC_DB_NOT_FOUND = 3 +} MAC_VENDOR_STATUS; + struct BleRecentEntry { using Key = uint64_t; - static constexpr Key invalid_key = 0xffffffff; + static constexpr Key invalid_key = 0xFFFFFFFFFFFF; uint64_t macAddress; int dbValue; @@ -83,10 +92,12 @@ struct BleRecentEntry { std::string timestamp; std::string dataString; std::string nameString; + std::string informationString; bool include_name; uint16_t numHits; ADV_PDU_TYPE pduType; uint8_t channelNumber; + MAC_VENDOR_STATUS vendor_status; bool entryFound; BleRecentEntry() @@ -101,10 +112,12 @@ struct BleRecentEntry { timestamp{}, dataString{}, nameString{}, + informationString{}, include_name{}, numHits{}, pduType{}, channelNumber{}, + vendor_status{MAC_VENDOR_UNKNOWN}, entryFound{} { } @@ -152,6 +165,13 @@ class BleRecentEntryDetailView : public View { {9 * 8, 1 * 16, 17 * 8, 16}, "-"}; + Labels label_vendor{ + {{0 * 8, 2 * 16}, "Vendor:", Theme::getInstance()->fg_light->foreground}}; + + Text text_vendor{ + {7 * 8, 2 * 16, 23 * 8, 16}, + "-"}; + Labels labels{ {{0 * 8, 3 * 16}, "Len", Theme::getInstance()->fg_light->foreground}, {{5 * 8, 3 * 16}, "Type", Theme::getInstance()->fg_light->foreground}, @@ -198,15 +218,18 @@ class BLERxView : public View { bool saveFile(const std::filesystem::path& path); std::unique_ptr usb_serial_thread{}; void on_data(BlePacketData* packetData); + void log_ble_packet(BlePacketData* packet); void on_filter_change(std::string value); void on_file_changed(const std::filesystem::path& new_file_path); void file_error(); void on_timer(); void handle_entries_sort(uint8_t index); void handle_filter_options(uint8_t index); - void updateEntry(const BlePacketData* packet, BleRecentEntry& entry, ADV_PDU_TYPE pdu_type); + bool updateEntry(const BlePacketData* packet, BleRecentEntry& entry, ADV_PDU_TYPE pdu_type); + bool parse_beacon_data(const uint8_t* data, uint8_t length, std::string& nameString, std::string& informationString); NavigationView& nav_; + RxRadioState radio_state_{ 2402000000 /* frequency */, 4000000 /* bandwidth */, @@ -216,9 +239,11 @@ class BLERxView : public View { uint8_t channel_index{0}; uint8_t sort_index{0}; uint8_t filter_index{0}; + bool uniqueParsing = false; std::string filter{}; bool logging{false}; bool serial_logging{false}; + bool async_tx_states_when_entered{false}; bool name_enable{true}; app_settings::SettingsManager settings_{ @@ -242,7 +267,7 @@ class BLERxView : public View { bool auto_channel = false; int16_t timer_count{0}; - int16_t timer_period{6}; // 100ms + int16_t timer_period{2}; // 25ms std::string filterBuffer{}; std::string listFileBuffer{}; @@ -306,9 +331,10 @@ class BLERxView : public View { OptionsField options_filter{ {18 * 8 + 2, 2 * 8}, - 4, + 7, {{"Data", 0}, - {"MAC", 1}}}; + {"MAC", 1}, + {"Unique", 2}}}; Checkbox check_log{ {10 * 8, 4 * 8 + 2}, @@ -340,18 +366,18 @@ class BLERxView : public View { true}; // Console console{ - // {0, 10 * 8, 240, 240}}; + // {0, 10 * 8, screen_height, screen_height-80}}; Button button_clear_list{ - {2 * 8, 320 - (16 + 32), 7 * 8, 32}, + {2 * 8, screen_height - (16 + 32), 7 * 8, 32}, "Clear"}; Button button_save_list{ - {11 * 8, 320 - (16 + 32), 11 * 8, 32}, + {11 * 8, screen_height - (16 + 32), 11 * 8, 32}, "Export CSV"}; Button button_switch{ - {240 - 6 * 8, 320 - (16 + 32), 4 * 8, 32}, + {screen_width - 6 * 8, screen_height - (16 + 32), 4 * 8, 32}, "Tx"}; std::string str_log{""}; @@ -360,10 +386,10 @@ class BLERxView : public View { BleRecentEntries recent{}; BleRecentEntries tempList{}; - const RecentEntriesColumns columns{{ - {"Mac Address", 17}, + RecentEntriesColumns columns{{ + {"Name", 17}, {"Hits", 7}, - {"dB", 4}, + {"dBm", 4}, }}; BleRecentEntriesView recent_entries_view{columns, recent}; diff --git a/firmware/application/apps/ble_tx_app.cpp b/firmware/application/apps/ble_tx_app.cpp index d9680c4d4..b0ade7b1a 100644 --- a/firmware/application/apps/ble_tx_app.cpp +++ b/firmware/application/apps/ble_tx_app.cpp @@ -319,7 +319,8 @@ void BLETxView::on_tx_progress(const bool done) { BLETxView::BLETxView(NavigationView& nav) : nav_{nav} { - add_children({&button_open, + add_children({&dataEditView, + &button_open, &text_filename, &progressbar, &check_rand_mac, @@ -340,7 +341,6 @@ BLETxView::BLETxView(NavigationView& nav) &label_mac_address, &text_mac_address, &label_data_packet, - &dataEditView, &button_clear_marked, &button_save_packet, &button_switch}); @@ -399,6 +399,7 @@ BLETxView::BLETxView(NavigationView& nav) nav, packetFileBuffer, 64, + ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& buffer) { on_save_file(buffer); }); @@ -429,6 +430,23 @@ BLETxView::BLETxView(NavigationView& nav) } }; + dataEditView.on_change = [this](uint8_t value) { + // Reject setting newline at index 29. + if (cursor_pos.col != 29) { + uint16_t dataBytePos = (cursor_pos.line * 29) + cursor_pos.col; + + packets[current_packet].advertisementData[dataBytePos] = uint_to_char(value, 16); + + update_current_packet(packets[current_packet], current_packet); + } + }; + + dataEditView.on_cursor_moved = [this]() { + // Save last selected cursor. + cursor_pos.line = dataEditView.line(); + cursor_pos.col = dataEditView.col(); + }; + button_clear_marked.on_select = [this](Button&) { marked_counter = 0; markedBytes.clear(); @@ -530,7 +548,6 @@ void BLETxView::update_current_packet(BLETxPacket packet, uint32_t currentIndex) for (const std::string& str : strings) { dataFile.write(str.c_str(), str.size()); dataFile.write("\n", 1); - ; } dataFile.~File(); @@ -545,6 +562,7 @@ void BLETxView::update_current_packet(BLETxPacket packet, uint32_t currentIndex) dataEditView.set_font_zoom(true); dataEditView.set_file(*dataFileWrapper); dataEditView.redraw(true, true); + dataEditView.cursor_set(cursor_pos.line, cursor_pos.col); } void BLETxView::set_parent_rect(const Rect new_parent_rect) { diff --git a/firmware/application/apps/ble_tx_app.hpp b/firmware/application/apps/ble_tx_app.hpp index 534201b71..0d8c34bc0 100644 --- a/firmware/application/apps/ble_tx_app.hpp +++ b/firmware/application/apps/ble_tx_app.hpp @@ -216,7 +216,7 @@ class BLETxView : public View { true}; ImageButton button_play{ - {28 * 8, 2 * 16, 2 * 8, 1 * 16}, + {screen_width - 2 * 8, 2 * 16, 2 * 8, 1 * 16}, &bitmap_play, Theme::getInstance()->fg_green->foreground, Theme::getInstance()->fg_green->background}; @@ -287,11 +287,8 @@ class BLETxView : public View { Labels label_data_packet{ {{0 * 8, 9 * 16}, "Packet Data:", Theme::getInstance()->fg_light->foreground}}; - Console console{ - {0, 9 * 18, 240, 240}}; - TextViewer dataEditView{ - {0, 9 * 18, 240, 240}}; + {0, 9 * 18, screen_width, screen_height - 80}}; Button button_clear_marked{ {1 * 8, 14 * 16, 13 * 8, 3 * 8}, diff --git a/firmware/application/apps/capture_app.cpp b/firmware/application/apps/capture_app.cpp index ca5c5477b..53249e094 100644 --- a/firmware/application/apps/capture_app.cpp +++ b/firmware/application/apps/capture_app.cpp @@ -55,22 +55,24 @@ CaptureAppView::CaptureAppView(NavigationView& nav) this->field_frequency.set_step(v); }; - option_format.set_selected_index(0); // Default to C16 + option_format.set_selected_index(file_format); option_format.on_change = [this](size_t, uint32_t file_type) { + file_format = file_type; record_view.set_file_type((RecordView::FileType)file_type); }; + check_trim.set_value(trim); check_trim.on_select = [this](Checkbox&, bool v) { + trim = v; record_view.set_auto_trim(v); }; freqman_set_bandwidth_option(SPEC_MODULATION, option_bandwidth); - option_bandwidth.on_change = [this](size_t, uint32_t bandwidth) { + option_bandwidth.on_change = [this](size_t, uint32_t new_capture_rate) { /* Nyquist would imply a sample rate of 2x bandwidth, but because the ADC * provides 2 values (I,Q), the sample_rate is equal to bandwidth here. */ - auto sample_rate = bandwidth; - /* base_rate (bandwidth) is used for FFT calculation and display LCD, and also in recording writing SD Card rate. */ + /* capture_rate (bandwidth) is used for FFT calculation and display LCD, and also in recording writing SD Card rate. */ /* ex. sampling_rate values, 4Mhz, when recording 500 kHz (BW) and fs 8 Mhz, when selected 1 Mhz BW ... */ /* ex. recording 500kHz BW to .C16 file, base_rate clock 500kHz x2(I,Q) x 2 bytes (int signed) =2MB/sec rate SD Card. */ @@ -78,7 +80,7 @@ CaptureAppView::CaptureAppView(NavigationView& nav) // record_view determines the correct oversampling to apply and returns the actual sample rate. // NB: record_view is what actually updates proc_capture baseband settings. - auto actual_sample_rate = record_view.set_sampling_rate(sample_rate); + auto actual_sample_rate = record_view.set_sampling_rate(new_capture_rate); // Update the radio model with the actual sampling rate. receiver_model.set_sampling_rate(actual_sample_rate); @@ -88,19 +90,19 @@ CaptureAppView::CaptureAppView(NavigationView& nav) receiver_model.set_baseband_bandwidth(anti_alias_filter_bandwidth); // Automatically switch default capture format to C8 when bandwidth setting is increased to >=1.5MHz anb back to C16 for <=1,25Mhz - if ((bandwidth >= 1500000) && (previous_bandwidth < 1500000)) { + if ((new_capture_rate >= 1500000) && (capture_rate < 1500000)) { option_format.set_selected_index(1); // Default C8 format for REC, 1500K ... 5500k } - if ((bandwidth <= 1250000) && (previous_bandwidth > 1250000)) { + if ((new_capture_rate <= 1250000) && (capture_rate > 1250000)) { option_format.set_selected_index(0); // Default C16 format for REC , 12k5 ... 1250K } - previous_bandwidth = bandwidth; + capture_rate = new_capture_rate; waterfall.start(); }; receiver_model.enable(); - option_bandwidth.set_by_value(500000); + option_bandwidth.set_by_value(capture_rate); record_view.on_error = [&nav](std::string message) { nav.display_modal("Error", message); diff --git a/firmware/application/apps/capture_app.hpp b/firmware/application/apps/capture_app.hpp index d86f9c14f..12ae2854e 100644 --- a/firmware/application/apps/capture_app.hpp +++ b/firmware/application/apps/capture_app.hpp @@ -48,12 +48,21 @@ class CaptureAppView : public View { private: static constexpr ui::Dim header_height = 3 * 16; - uint32_t previous_bandwidth{500000}; + + uint32_t capture_rate{500000}; + uint32_t file_format{0}; + bool trim{false}; NavigationView& nav_; RxRadioState radio_state_{ReceiverModel::Mode::Capture}; app_settings::SettingsManager settings_{ - "rx_capture", app_settings::Mode::RX}; + "rx_capture", + app_settings::Mode::RX, + { + {"capture_rate"sv, &capture_rate}, + {"file_format"sv, &file_format}, + {"trim"sv, &trim}, + }}; Labels labels{ {{0 * 8, 1 * 16}, "Rate:", Theme::getInstance()->fg_light->foreground}, @@ -100,7 +109,7 @@ class CaptureAppView : public View { /*small*/ true}; RecordView record_view{ - {0 * 8, 2 * 16, 30 * 8, 1 * 16}, + {0 * 8, 2 * 16, screen_width, 1 * 16}, u"BBD_????.*", captures_dir, RecordView::FileType::RawS16, diff --git a/firmware/application/apps/ert_app.hpp b/firmware/application/apps/ert_app.hpp index 9172ca8ed..9e12fe917 100644 --- a/firmware/application/apps/ert_app.hpp +++ b/firmware/application/apps/ert_app.hpp @@ -166,7 +166,7 @@ class ERTAppView : public View { }; AudioVolumeField field_volume{ - {28 * 8, 0 * 16}}; + {screen_width - 2 * 8, 0 * 16}}; MessageHandlerRegistration message_handler_packet{ Message::ID::ERTPacket, diff --git a/firmware/application/apps/pocsag_app.hpp b/firmware/application/apps/pocsag_app.hpp index fb7a5cd37..45a01f3aa 100644 --- a/firmware/application/apps/pocsag_app.hpp +++ b/firmware/application/apps/pocsag_app.hpp @@ -259,7 +259,7 @@ class POCSAGAppView : public View { ' ', true /*wrap*/}; AudioVolumeField field_volume{ - {28 * 8, 0 * 16}}; + {screen_width - 2 * 8, 0 * 16}}; Image image_status{ {0 * 8 + 4, 1 * 16 + 2, 16, 16}, diff --git a/firmware/application/apps/soundboard_app.cpp b/firmware/application/apps/soundboard_app.cpp index b8af1d0f1..e8159a4a0 100644 --- a/firmware/application/apps/soundboard_app.cpp +++ b/firmware/application/apps/soundboard_app.cpp @@ -91,10 +91,6 @@ void SoundBoardView::start_tx(const uint32_t id) { auto reader = std::make_unique(); - uint32_t tone_key_index = options_tone_key.selected_index(); - uint32_t sample_rate; - uint8_t bits_per_sample; - stop(); if (!reader->open(u"/WAV/" + file_list[id].native())) { @@ -108,7 +104,9 @@ void SoundBoardView::start_tx(const uint32_t id) { // button_play.set_bitmap(&bitmap_stop); - sample_rate = reader->sample_rate(); + uint32_t sample_rate = reader->sample_rate(); + + tone_key_index = options_tone_key.selected_index(); bits_per_sample = reader->bits_per_sample(); replay_thread = std::make_unique( @@ -155,6 +153,23 @@ void SoundBoardView::on_tx_progress(const uint32_t progress) { progressbar.set_value(progress); } +void SoundBoardView::update_config() { + // NB: this were called by the on_bandwidth_changed() callback, + // so other val would be updated too when bw changed. currently it's safe but be careful. + baseband::set_audiotx_config( + 1536000 / 20, // Update vu-meter at 20Hz + transmitter_model.channel_bandwidth(), + 0, // Gain is unused + 8, // shift_bits_s16, default 8 bits, but also unused + bits_per_sample, + TONES_F2D(tone_key_frequency(tone_key_index), TONES_SAMPLERATE), + false, // AM + false, // DSB + false, // USB + false // LSB + ); +} + void SoundBoardView::on_select_entry() { tx_view.focus(); } @@ -175,7 +190,8 @@ void SoundBoardView::refresh_list() { for (auto& c : entry_extension) c = toupper(c); - if (entry_extension == ".WAV") { + if (entry_extension == ".WAV" && entry.path().string().find("shopping_cart") == std::string::npos) { + /* ^ because the shopping cart lock app using the speaker to send the LF signal, it's meaningless to be here */ if (reader->open(wav_dir / entry.path())) { if ((reader->channels() == 1) && ((reader->bits_per_sample() == 8) || (reader->bits_per_sample() == 16))) { // sounds[c].ms_duration = reader->ms_duration(); @@ -288,6 +304,10 @@ SoundBoardView::SoundBoardView( }; }; + tx_view.on_bandwidth_changed = [this]() { + update_config(); + }; + tx_view.on_start = [this]() { start_tx(menu_view.highlighted_index()); }; diff --git a/firmware/application/apps/soundboard_app.hpp b/firmware/application/apps/soundboard_app.hpp index 04aeb5405..72b9fd063 100644 --- a/firmware/application/apps/soundboard_app.hpp +++ b/firmware/application/apps/soundboard_app.hpp @@ -70,6 +70,8 @@ class SoundBoardView : public View { uint32_t playing_id{}; uint32_t page = 1; uint32_t c_page = 1; + uint32_t tone_key_index = 1; + uint8_t bits_per_sample = 1; std::vector file_list{}; @@ -90,6 +92,7 @@ class SoundBoardView : public View { void on_tx_progress(const uint32_t progress); void refresh_list(); void on_select_entry(); + void update_config(); Labels labels{ {{24 * 8, 180}, "Vol:", Theme::getInstance()->fg_light->foreground}, @@ -104,10 +107,10 @@ class SoundBoardView : public View { "<="}; Text page_info{ - {0, 29 * 8, 30 * 8, 16}}; + {0, 29 * 8, screen_width, 16}}; MenuView menu_view{ - {0, 0, 240, 175}, + {0, 0, screen_width, 175}, true}; Text text_empty{ {7 * 8, 12 * 8, 16 * 8, 16}, @@ -128,9 +131,9 @@ class SoundBoardView : public View { {}}; AudioVolumeField field_volume{ - {28 * 8, 180}}; + {screen_width - 2 * 8, 180}}; Text text_volume_disabled{ - {28 * 8, 180, 3 * 8, 16}, + {screen_width - 2 * 8, 180, 3 * 8, 16}, "--"}; Checkbox check_loop{ @@ -144,7 +147,7 @@ class SoundBoardView : public View { "Random"}; ProgressBar progressbar{ - {0 * 8, 31 * 8 + 2, 30 * 8, 4}}; + {0 * 8, 31 * 8 + 2, screen_width, 4}}; TransmitterView tx_view{ 16 * 16, diff --git a/firmware/application/apps/ui_about_simple.cpp b/firmware/application/apps/ui_about_simple.cpp index 1e78e5e93..953999bbc 100644 --- a/firmware/application/apps/ui_about_simple.cpp +++ b/firmware/application/apps/ui_about_simple.cpp @@ -7,30 +7,34 @@ namespace ui { // Information: a line starting with a '#' will be yellow coloured -constexpr std::string_view authors_list[] = { - "# * List of contributors * ", +constexpr std::string_view mayhem_information_list[] = { + "#****** Mayhem Community ******", + " ", + " https://discord.mayhem.app", + " ", + "#**** List of contributors ****", " ", "#Mayhem-Firmware:", "jboone,eried,furrtek,", "NotherNgineer,gullradriel,", "jLynx,kallanreed,Brumi-2021,", - "htotoo,bernd-herzog,zxkmm,", + "htotoo,zxkmm,bernd-herzog,", "ArjanOnwezen,euquiq,u-foka,", "iNetro,heurist1,dqs105,", "teixeluis,jwetzell,", "jimilinuxguy,gregoryfenton,", "notpike,strijar,BehleZebub,", - "arneluehrs,rascafr,joyel24,", - "ImDroided,zigad,johnelder,", - "klockee,nnesetto,LupusE,", - "argilo,dc2dc,formtapez,", + "arneluehrs,mcules,rascafr,", + "joyel24,ImDroided,zigad,", + "johnelder,klockee,nnesetto,", + "LupusE,argilo,dc2dc,formtapez,", "RocketGod-git,mrmookie,", "ITAxReal,F33RNI,F4GEV,", "rusty-labs,mjwaxios,andrej-mk,", "RedFox-Fr,nemanjan00,", "MichalLeonBorsuk,", - "MatiasFernandez,Giorgiofox,", - "ckuethe", + "MatiasFernandez,Giorgiofox", + "TommasoVentafridda", " ", "#Havoc:", "jboone,furrtek,eried,argilo,", @@ -72,7 +76,7 @@ AboutView::AboutView(NavigationView& nav) { button_ok.focus(); }; - for (auto& authors_line : authors_list) { + for (auto& authors_line : mayhem_information_list) { // if it's starting with #, it's a title and we have to substract the '#' and paint yellow if (authors_line.size() > 0) { if (authors_line[0] == '#') { @@ -103,15 +107,13 @@ void AboutView::on_frame_sync() { menu_view.set_highlighted(current + 1); } else { menu_view.set_highlighted(0); - // ^ to go back to the REAL top instead of make the 2 at the top to make the title disappeares - menu_view.set_highlighted(2); // the first line that has human name } } } void AboutView::focus() { button_ok.focus(); - menu_view.set_highlighted(2); // the first line that has human name + menu_view.set_highlighted(3); // contributors block starting line } bool AboutView::on_touch(const TouchEvent) { diff --git a/firmware/application/apps/ui_about_simple.hpp b/firmware/application/apps/ui_about_simple.hpp index 637a03127..3c0a349d0 100644 --- a/firmware/application/apps/ui_about_simple.hpp +++ b/firmware/application/apps/ui_about_simple.hpp @@ -6,6 +6,10 @@ #include +/* + TODO: Now it is dyn width. There should be an algorithm to fill the menu based on it's size. +*/ + namespace ui { class AboutView : public View { public: @@ -22,11 +26,11 @@ class AboutView : public View { uint16_t frame_sync_count{0}; void on_frame_sync(); MenuView menu_view{ - {0, 0, 240, 264}, + {0, 0, screen_width, screen_height - 56}, true}; Button button_ok{ - {240 / 3, 270, 240 / 3, 24}, + {screen_width / 3, screen_height - 50, screen_width / 3, 24}, "OK", }; diff --git a/firmware/application/apps/ui_adsb_rx.cpp b/firmware/application/apps/ui_adsb_rx.cpp index 8ec63ec02..83a60eedc 100644 --- a/firmware/application/apps/ui_adsb_rx.cpp +++ b/firmware/application/apps/ui_adsb_rx.cpp @@ -40,6 +40,8 @@ namespace pmem = portapack::persistent_memory; namespace ui { +static const char speed_type_msg[][6] = {" Spd:", " IAS:", " TAS:"}; + static std::string get_map_tag(const AircraftRecentEntry& entry) { return trimr(entry.callsign.empty() ? entry.icao_str : entry.callsign); } @@ -70,18 +72,34 @@ void RecentEntriesTable::draw( entry_string += (entry.callsign.empty() ? entry.icao_str + " " : entry.callsign + " ") + - to_string_dec_uint((unsigned int)(entry.pos.altitude / 100), 4) + - to_string_dec_uint((unsigned int)entry.velo.speed, 4) + - to_string_dec_uint((unsigned int)(entry.amp >> 9), 4) + " " + - (entry.hits <= 999 ? to_string_dec_uint(entry.hits, 3) + " " : "1k+ ") + - to_string_dec_uint(entry.age, 4); + to_string_dec_uint((unsigned int)(entry.pos.altitude / 100), 4); + + if (entry.velo.type == SPD_IAS && entry.pos.alt_valid) { // IAS can be converted to TAS + // It is generally accepted that for every thousand feet of altitude, + // true airspeed is approximately 2% higher than indicated airspeed. + // Since the application CPU has no floating point unit, we avoid floating point here + // tas = entry.velo.speed + (float)entry.pos.altitude / 1000.0 * 0.02 * entry.velo.speed; + unsigned int tas = entry.velo.speed + entry.pos.altitude * 2 * entry.velo.speed / 100000; + + entry_string += + to_string_dec_uint(tas, 4) + '*' + + to_string_dec_uint((unsigned int)(entry.amp >> 9), 3); + } else { + entry_string += + to_string_dec_uint((unsigned int)entry.velo.speed, 4) + + to_string_dec_uint((unsigned int)(entry.amp >> 9), 4); + } + + entry_string += " " + + (entry.hits <= 999 ? to_string_dec_uint(entry.hits, 3) + " " : "1k+ ") + + to_string_dec_uint(entry.age, 4); painter.draw_string( target_rect.location(), style, entry_string); - if (entry.pos.valid) + if (entry.pos.pos_valid) painter.draw_bitmap(target_rect.location() + Point(8 * 8, 0), bitmap_target, target_color, style.background); } @@ -93,22 +111,31 @@ void ADSBLogger::log(const ADSBLogEntry& log_entry) { log_line.reserve(100); log_line = log_entry.raw_data; - log_line += "ICAO:" + log_entry.icao; + log_line += " ICAO:" + log_entry.icao; + + if (log_entry.sqwk) + log_line += " Squawk:" + to_string_dec_uint(log_entry.sqwk, 4, '0'); if (!log_entry.callsign.empty()) log_line += " " + log_entry.callsign; - if (log_entry.pos.valid) - log_line += " Alt:" + to_string_dec_int(log_entry.pos.altitude) + - " Lat:" + to_string_decimal(log_entry.pos.latitude, 7) + + if (log_entry.pos.alt_valid) + log_line += " Alt:" + to_string_dec_int(log_entry.pos.altitude); + + if (log_entry.pos.pos_valid) + log_line += " Lat:" + to_string_decimal(log_entry.pos.latitude, 7) + " Lon:" + to_string_decimal(log_entry.pos.longitude, 7); if (log_entry.vel.valid) log_line += " Type:" + to_string_dec_uint(log_entry.vel_type) + " Hdg:" + to_string_dec_uint(log_entry.vel.heading) + - " Spd: " + to_string_dec_int(log_entry.vel.speed); + speed_type_msg[log_entry.vel.type] + + to_string_dec_int(log_entry.vel.speed) + + " Vrate:" + to_string_dec_int(log_entry.vel.v_rate); + if (log_entry.sil != 0) log_line += " Sil:" + to_string_dec_uint(log_entry.sil); + log_file.write_entry(log_line); } @@ -258,7 +285,7 @@ ADSBRxDetailsView::ADSBRxDetailsView( get_map_tag(entry_), entry_.pos.altitude, GeoPos::alt_unit::FEET, - GeoPos::spd_unit::MPH, + GeoPos::spd_unit::HIDDEN, entry_.pos.latitude, entry_.pos.longitude, entry_.velo.heading); @@ -356,11 +383,12 @@ void ADSBRxDetailsView::refresh_ui() { text_callsign.set(entry_.callsign); text_infos.set(entry_.info_string); std::string str_sil = (entry_.sil > 0) ? " Sil:" + to_string_dec_uint(entry_.sil) : ""; + std::string str_sqw = (entry_.sqwk > 0) ? " Sqw:" + to_string_dec_uint(entry_.sqwk) : ""; if (entry_.velo.heading < 360 && entry_.velo.speed >= 0) text_info2.set("Hdg:" + to_string_dec_uint(entry_.velo.heading) + - " Spd:" + to_string_dec_int(entry_.velo.speed) + str_sil); + speed_type_msg[entry_.velo.type] + to_string_dec_int(entry_.velo.speed) + str_sil + str_sqw); else - text_info2.set(str_sil); + text_info2.set(str_sil + str_sqw); text_frame_pos_even.set(to_string_hex_array(entry_.frame_pos_even.get_raw_data(), 14)); text_frame_pos_odd.set(to_string_hex_array(entry_.frame_pos_odd.get_raw_data(), 14)); @@ -381,7 +409,7 @@ ADSBRxView::ADSBRxView(NavigationView& nav) { &status_good_frame, &field_volume}); - recent_entries_view.set_parent_rect({0, 16, 240, 272}); + recent_entries_view.set_parent_rect({0, 16, screen_width, 272}); recent_entries_view.on_select = [this, &nav](const AircraftRecentEntry& entry) { detail_key = entry.key(); details_view = nav.push(entry); @@ -421,14 +449,22 @@ void ADSBRxView::focus() { void ADSBRxView::on_frame(const ADSBFrameMessage* message) { auto frame = message->frame; - uint32_t ICAO_address = frame.get_ICAO_address(); status_frame.toggle(); - // Bad frame, skip it. - if (!frame.check_CRC() || ICAO_address == 0) - return; + uint32_t ICAO_address; + uint32_t crc = frame.check_CRC(); + + if (crc != 0) { + if (find(recent, crc) != recent.end()) + ICAO_address = crc; + else + return; // Bad frame, skip it. + } else { + ICAO_address = frame.get_ICAO_address(); + if (ICAO_address == 0) + return; // Bad frame, skip it. + } - ADSBLogEntry log_entry; status_good_frame.toggle(); rtc::RTC datetime; @@ -440,42 +476,68 @@ void ADSBRxView::on_frame(const ADSBFrameMessage* message) { entry.inc_hit(); entry.reset_age(); + if (pmem::beep_on_packets()) { + baseband::request_audio_beep(1000, 24000, 60); + } + // Store smoothed amplitude on updates. entry.amp = entry.hits == 0 ? message->amp : ((entry.amp * 15) + message->amp) >> 4; - log_entry.raw_data = to_string_hex_array(frame.get_raw_data(), 14); + uint8_t df = frame.get_DF(); + + if (df == 11) // do not log DF11, because messages arrive too frequently + return; + + ADSBLogEntry log_entry; + uint8_t* raw_data = frame.get_raw_data(); + + if (df & 0x10) // 112 bits + log_entry.raw_data = to_string_hex_array(raw_data, 14); + else { // 56 bits + log_entry.raw_data = to_string_hex_array(raw_data, 7); + log_entry.raw_data.append(14, ' '); + } + log_entry.icao = entry.icao_str; - if (frame.get_DF() == DF_ADSB) { + // 17: // Extended squitter + // 18: // Extended squitter/non-transponder + if (df == DF_ADSB) { uint8_t msg_type = frame.get_msg_type(); uint8_t msg_sub = frame.get_msg_sub(); - uint8_t* raw_data = frame.get_raw_data(); - // 4: // surveillance, altitude reply - if ((msg_type >= AIRCRAFT_ID_L) && (msg_type <= AIRCRAFT_ID_H)) { + // transmitted when horizontal position information is not available but altitude information is available + if (msg_type == 0) { + // Q-bit must be present + if (raw_data[5] & 1) { + int altitude = ((((raw_data[5] & 0xFE) << 3) | ((raw_data[6] & 0xF0) >> 4)) * 25) - 1000; + + log_entry.pos.altitude = entry.pos.altitude = altitude; + log_entry.pos.alt_valid = entry.pos.alt_valid = true; + } + } + // 1-4: Aircraft identification + else if ((msg_type >= AIRCRAFT_ID_L) && (msg_type <= AIRCRAFT_ID_H)) { entry.set_callsign(decode_frame_id(frame)); log_entry.callsign = entry.callsign; } - - // 9: - // 18: // Extended squitter/non-transponder - // 21: // Comm-B, identity reply - // 20: // Comm-B, altitude reply + // 9-18: Airborne position (w/Baro Altitude) + // 20-22: Airborne position (w/GNSS Height) else if (((msg_type >= AIRBORNE_POS_BARO_L) && (msg_type <= AIRBORNE_POS_BARO_H)) || ((msg_type >= AIRBORNE_POS_GPS_L) && (msg_type <= AIRBORNE_POS_GPS_H))) { entry.set_frame_pos(frame, raw_data[6] & 4); log_entry.pos = entry.pos; - if (entry.pos.valid) { + if (entry.pos.pos_valid) { std::string str_info = "Alt:" + to_string_dec_int(entry.pos.altitude) + " Lat:" + to_string_decimal(entry.pos.latitude, 2) + " Lon:" + to_string_decimal(entry.pos.longitude, 2); entry.set_info_string(std::move(str_info)); } - + // 19: Airborne velocities } else if (msg_type == AIRBORNE_VEL && msg_sub >= VEL_GND_SUBSONIC && msg_sub <= VEL_AIR_SUPERSONIC) { entry.set_frame_velo(frame); log_entry.vel = entry.velo; @@ -485,11 +547,59 @@ void ADSBRxView::on_frame(const ADSBFrameMessage* message) { } } - logger->log(log_entry); + // 4: // surveillance, altitude reply + // 20: // Comm-B, altitude reply + // 21: // Comm-B, identity reply + if (df == 0 || df == 4 || df == 20) { // Decode the 13 bit AC altitude field + uint8_t m_bit = raw_data[3] & (1 << 6); + uint8_t q_bit = raw_data[3] & (1 << 4); + int altitude = 0; - if (pmem::beep_on_packets()) { - baseband::request_audio_beep(1000, 24000, 60); + if (!m_bit) { // units -> FEET + if (q_bit) { // N is the 11 bit integer resulting from the removal of bit Q and M + int n = ((raw_data[2] & 31) << 6) | + ((raw_data[3] & 0x80) >> 2) | + ((raw_data[3] & 0x20) >> 1) | + (raw_data[3] & 15); + + // The final altitude is due to the resulting number multiplied by 25, minus 1000. + altitude = 25 * n - 1000; + if (altitude < 0) + altitude = 0; + } // else N is an 11 bit Gillham coded altitude + } + + log_entry.pos.altitude = entry.pos.altitude = altitude; + log_entry.pos.alt_valid = entry.pos.alt_valid = true; } + + if (df == 5 || df == 21 || + (df == 17 && frame.get_msg_type() == 28 && frame.get_msg_sub() == 1)) { // Decode the squawk code + uint8_t* s = (df == 17) ? raw_data + 5 : raw_data + 2; // calc start of the code + uint16_t sqwk{0}; + + sqwk = ((s[1] & 0x80) >> 5) | ((s[0] & 0x02) >> 0) | ((s[0] & 0x08) >> 3); // A + sqwk *= 10; + sqwk += ((s[1] & 0x02) << 1) | ((s[1] & 0x08) >> 2) | ((s[1] & 0x20) >> 5); // B + sqwk *= 10; + sqwk += ((s[0] & 0x01) << 2) | ((s[0] & 0x04) >> 1) | ((s[0] & 0x10) >> 4); // C + sqwk *= 10; + sqwk += ((s[1] & 0x01) << 2) | ((s[1] & 0x04) >> 1) | ((s[1] & 0x10) >> 4); // D + + log_entry.sqwk = entry.sqwk = sqwk; + } + + if (df == 20 || df == 21) { + if (raw_data[4] == 0x20) { // try decode as BDS20 + std::string callsign = decode_frame_id(frame); + if (callsign.find('#') == std::string::npos) { // all chars OK + entry.set_callsign(callsign); + log_entry.callsign = callsign; + } + } + } + + logger->log(log_entry); } void ADSBRxView::on_tick_second() { @@ -544,7 +654,7 @@ void ADSBRxView::refresh_ui() { } // NB: current entry also gets a marker so it shows up if map is panned. - if (map_needs_update && entry.pos.valid && entry.state <= ADSBAgeState::Recent) { + if (map_needs_update && entry.pos.pos_valid && entry.state <= ADSBAgeState::Recent) { map_needs_update = details_view->add_map_marker(entry); } diff --git a/firmware/application/apps/ui_adsb_rx.hpp b/firmware/application/apps/ui_adsb_rx.hpp index 9ef42718a..039135f5d 100644 --- a/firmware/application/apps/ui_adsb_rx.hpp +++ b/firmware/application/apps/ui_adsb_rx.hpp @@ -95,8 +95,8 @@ struct AircraftRecentEntry { ADSBAgeState state{ADSBAgeState::Invalid}; uint32_t age{0}; // In seconds uint32_t amp{0}; - adsb_pos pos{false, 0, 0, 0}; - adsb_vel velo{false, 0, 999, 0}; + adsb_pos pos{false, false, 0, 0, 0}; + adsb_vel velo{false, SPD_GND, 0, 999, 0}; ADSBFrame frame_pos_even{}; ADSBFrame frame_pos_odd{}; @@ -105,6 +105,7 @@ struct AircraftRecentEntry { std::string info_string{}; uint8_t sil{0}; // Surveillance integrity level + uint16_t sqwk{0}; AircraftRecentEntry(const uint32_t ICAO_address) : ICAO_address{ICAO_address} { @@ -152,8 +153,8 @@ struct AircraftRecentEntry { age += delta; if (age < ADSBAgeLimit::Current) - state = pos.valid ? ADSBAgeState::Invalid - : ADSBAgeState::Current; + state = pos.pos_valid ? ADSBAgeState::Current + : ADSBAgeState::Invalid; else if (age < ADSBAgeLimit::Recent) state = ADSBAgeState::Recent; @@ -178,6 +179,7 @@ struct ADSBLogEntry { adsb_vel vel{}; uint8_t vel_type{}; uint8_t sil{}; + uint16_t sqwk{}; }; // TODO: Make logging optional. @@ -228,7 +230,7 @@ class ADSBRxAircraftDetailsView : public View { "-"}; Text text_model{ - {0 * 8, 6 * 16, 30 * 8, 16}, + {0 * 8, 6 * 16, screen_width, 16}, "-"}; Text text_type{ @@ -236,19 +238,19 @@ class ADSBRxAircraftDetailsView : public View { "-"}; Text text_number_of_engines{ - {18 * 8, 8 * 16, 30 * 8, 16}, + {18 * 8, 8 * 16, screen_width, 16}, "-"}; Text text_engine_type{ - {0 * 8, 10 * 16, 30 * 8, 16}, + {0 * 8, 10 * 16, screen_width, 16}, "-"}; Text text_owner{ - {0 * 8, 12 * 16, 30 * 8, 16}, + {0 * 8, 12 * 16, screen_width, 16}, "-"}; Text text_operator{ - {0 * 8, 14 * 16, 30 * 8, 16}, + {0 * 8, 14 * 16, screen_width, 16}, "-"}; Button button_close{ @@ -310,7 +312,7 @@ class ADSBRxDetailsView : public View { "-"}; Text text_airline{ - {0 * 8, 4 * 16, 30 * 8, 16}, + {0 * 8, 4 * 16, screen_width, 16}, "-"}; Text text_country{ @@ -318,18 +320,18 @@ class ADSBRxDetailsView : public View { "-"}; Text text_infos{ - {0 * 8, 6 * 16, 30 * 8, 16}, + {0 * 8, 6 * 16, screen_width, 16}, "-"}; Text text_info2{ - {0 * 8, 7 * 16, 30 * 8, 16}, + {0 * 8, 7 * 16, screen_width, 16}, "-"}; Text text_frame_pos_even{ - {0 * 8, 14 * 16, 30 * 8, 16}, + {0 * 8, 14 * 16, screen_width, 16}, "-"}; Text text_frame_pos_odd{ - {0 * 8, 16 * 16, 30 * 8, 16}, + {0 * 8, 16 * 16, screen_width, 16}, "-"}; Button button_aircraft_details{ @@ -440,7 +442,7 @@ class ADSBRxView : public View { }; AudioVolumeField field_volume{ - {28 * 8, 0 * 16}}; + {screen_width - 2 * 8, 0 * 16}}; MessageHandlerRegistration message_handler_frame{ Message::ID::ADSBFrame, diff --git a/firmware/application/apps/ui_aprs_rx.cpp b/firmware/application/apps/ui_aprs_rx.cpp index d5ff4f238..e24fdcdc3 100644 --- a/firmware/application/apps/ui_aprs_rx.cpp +++ b/firmware/application/apps/ui_aprs_rx.cpp @@ -99,13 +99,21 @@ APRSRxView::APRSRxView(NavigationView& nav, Rect parent_rect) field_frequency.set_value(aprs_rx_freq); } else if (i == 1) { // NA - North America - is also the default field_frequency.set_value(144390000); - } else if (i == 2) { // EUR - field_frequency.set_value(144800000); - } else if (i == 3) { // AUS - field_frequency.set_value(145175000); - } else if (i == 4) { // NZ + } else if (i == 2) { // NZ field_frequency.set_value(144575000); - } else if (i == 5) { // ISS + } else if (i == 3) { // JAP + field_frequency.set_value(144640000); + } else if (i == 4) { // PHI + field_frequency.set_value(144740000); + } else if (i == 5) { // EUR + field_frequency.set_value(144800000); + } else if (i == 6) { // THA + field_frequency.set_value(144900000); + } else if (i == 7) { // AUS + field_frequency.set_value(145175000); + } else if (i == 8) { // BR + field_frequency.set_value(145570000); + } else if (i == 9) { // ISS field_frequency.set_value(145825000); } options_region_id = i; @@ -239,8 +247,8 @@ APRSTableView::APRSTableView(NavigationView& nav, Rect parent_rec) details_view.hidden(true); - recent_entries_view.set_parent_rect({0, 0, 240, 280}); - details_view.set_parent_rect({0, 0, 240, 280}); + recent_entries_view.set_parent_rect({0, 0, screen_width, screen_width - 40}); + details_view.set_parent_rect({0, 0, screen_width, screen_width - 40}); recent_entries_view.on_select = [this](const APRSRecentEntry& entry) { this->on_show_detail(entry); diff --git a/firmware/application/apps/ui_aprs_rx.hpp b/firmware/application/apps/ui_aprs_rx.hpp index 6761842d9..41a55f2cf 100644 --- a/firmware/application/apps/ui_aprs_rx.hpp +++ b/firmware/application/apps/ui_aprs_rx.hpp @@ -134,7 +134,7 @@ class APRSDetailsView : public View { bool send_updates{false}; Console console{ - {0, 0 * 16, 240, 224}}; + {0, 0 * 16, screen_width, 224}}; Button button_done{ {160, 14 * 16, 8 * 8, 3 * 16}, @@ -220,24 +220,28 @@ class APRSRxView : public View { {21 * 8, 5, 6 * 8, 4}}; AudioVolumeField field_volume{ - {28 * 8, 0 * 16}}; + {screen_width - 2 * 8, 0 * 16}}; OptionsField options_region{ {0 * 8, 0 * 8}, 3, {{"MAN", 0}, {"NA ", 1}, - {"EUR", 2}, - {"AUS", 3}, - {"NZ ", 4}, - {"ISS", 5}}}; + {"NZ ", 2}, + {"JAP", 3}, + {"PHI", 4}, + {"EUR", 5}, + {"THA", 6}, + {"AUS", 7}, + {"BR ", 8}, + {"ISS", 9}}}; FrequencyField field_frequency{ {3 * 8, 0 * 16}}; // DEBUG RecordView record_view{ - {0 * 8, 1 * 16, 30 * 8, 1 * 16}, + {0 * 8, 1 * 16, screen_width, 1 * 16}, u"AFS_????.WAV", aprs_dir, RecordView::FileType::WAV, @@ -245,7 +249,7 @@ class APRSRxView : public View { 4}; Console console{ - {0, 2 * 16, 240, 240}}; + {0, 2 * 16, screen_width, screen_height - 80}}; std::unique_ptr logger{}; }; @@ -261,7 +265,7 @@ class APRSRXView : public View { private: NavigationView& nav_; - Rect view_rect = {0, 3 * 8, 240, 280}; + Rect view_rect = {0, 3 * 8, screen_width, screen_height - 40}; APRSRxView view_stream{nav_, view_rect}; APRSTableView view_table{nav_, view_rect}; diff --git a/firmware/application/apps/ui_aprs_tx.cpp b/firmware/application/apps/ui_aprs_tx.cpp index e5c6c79ed..021104437 100644 --- a/firmware/application/apps/ui_aprs_tx.cpp +++ b/firmware/application/apps/ui_aprs_tx.cpp @@ -94,6 +94,7 @@ APRSTXView::APRSTXView(NavigationView& nav) { nav, payload, 30, + ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& s) { text_payload.set(s); }); diff --git a/firmware/application/apps/ui_aprs_tx.hpp b/firmware/application/apps/ui_aprs_tx.hpp index 1cf123101..014c3b9cd 100644 --- a/firmware/application/apps/ui_aprs_tx.hpp +++ b/firmware/application/apps/ui_aprs_tx.hpp @@ -91,7 +91,7 @@ class APRSTXView : public View { ' '}; Text text_payload{ - {0 * 8, 5 * 16, 30 * 8, 16}, + {0 * 8, 5 * 16, screen_width, 16}, "-"}; Button button_set{ {0 * 8, 6 * 16, 80, 32}, diff --git a/firmware/application/apps/ui_battinfo.hpp b/firmware/application/apps/ui_battinfo.hpp index 45960c2e4..4628f6b3b 100644 --- a/firmware/application/apps/ui_battinfo.hpp +++ b/firmware/application/apps/ui_battinfo.hpp @@ -90,7 +90,7 @@ class BattinfoView : public View { "-"}; Text text_warn{ - {1 * 8, 8 * 16, 30 * 8, 2 * 16}, + {1 * 8, 8 * 16, screen_width, 2 * 16}, ""}; */ Button button_mode{ diff --git a/firmware/application/apps/ui_bht_tx.hpp b/firmware/application/apps/ui_bht_tx.hpp index 0aecd2915..71008bf31 100644 --- a/firmware/application/apps/ui_bht_tx.hpp +++ b/firmware/application/apps/ui_bht_tx.hpp @@ -189,7 +189,7 @@ class BHTView : public View { tx_modes tx_mode = IDLE; - Rect view_rect = {0, 3 * 8, 240, 176}; + Rect view_rect = {0, 3 * 8, screen_width, 176}; XylosView view_xylos{view_rect}; EPARView view_EPAR{view_rect}; @@ -218,7 +218,7 @@ class BHTView : public View { ' '}; ProgressBar progressbar{ - {0 * 8, 29 * 8, 30 * 8, 16}, + {0 * 8, 29 * 8, screen_width, 16}, }; TransmitterView tx_view{ diff --git a/firmware/application/apps/ui_bmp_file_viewer.hpp b/firmware/application/apps/ui_bmp_file_viewer.hpp index c9bd57c41..9afc6bbe3 100644 --- a/firmware/application/apps/ui_bmp_file_viewer.hpp +++ b/firmware/application/apps/ui_bmp_file_viewer.hpp @@ -42,7 +42,7 @@ class BMPFileViewer : public View { private: NavigationView& nav_; std::filesystem::path path_{}; - BMPViewer bmp{{0, 0, 240, 320}}; + BMPViewer bmp{{0, 0, screen_width, screen_height}}; }; } // namespace ui diff --git a/firmware/application/apps/ui_btle_rx.hpp b/firmware/application/apps/ui_btle_rx.hpp index 963bfa1bf..70f4edc93 100644 --- a/firmware/application/apps/ui_btle_rx.hpp +++ b/firmware/application/apps/ui_btle_rx.hpp @@ -78,11 +78,11 @@ class BTLERxView : public View { nav_}; Button button_modem_setup{ - {240 - 12 * 8, 1 * 16, 96, 24}, + {screen_width - 12 * 8, 1 * 16, 96, 24}, "Modem setup"}; Console console{ - {0, 4 * 16, 240, 240}}; + {0, 4 * 16, screen_width, screen_height - 80}}; MessageHandlerRegistration message_handler_packet{ Message::ID::AFSKData, diff --git a/firmware/application/apps/ui_debug.cpp b/firmware/application/apps/ui_debug.cpp index daa986f43..b12ce79f0 100644 --- a/firmware/application/apps/ui_debug.cpp +++ b/firmware/application/apps/ui_debug.cpp @@ -202,10 +202,10 @@ RegistersView::RegistersView( }; button_done.on_select = [&nav](Button&) { nav.pop(); }; - registers_widget.set_parent_rect({0, 48, 240, 192}); + registers_widget.set_parent_rect({0, 48, screen_width, 192}); registers_widget.set_page(0); - text_title.set_parent_rect({(240 - static_cast(title.size()) * 8) / 2, 16, + text_title.set_parent_rect({(screen_width - static_cast(title.size()) * 8) / 2, 16, static_cast(title.size()) * 8, 16}); text_title.set(title); @@ -419,7 +419,6 @@ void DebugMenuView::on_populate() { } add_items({ {"Buttons Test", ui::Theme::getInstance()->fg_darkcyan->foreground, &bitmap_icon_controls, [this]() { nav_.push(); }}, - {"Debug Dump", ui::Theme::getInstance()->fg_darkcyan->foreground, &bitmap_icon_memory, [this]() { portapack::persistent_memory::debug_dump(); }}, {"M0 Stack Dump", ui::Theme::getInstance()->fg_darkcyan->foreground, &bitmap_icon_memory, [this]() { stack_dump(); }}, {"Memory Dump", ui::Theme::getInstance()->fg_darkcyan->foreground, &bitmap_icon_memory, [this]() { nav_.push(); }}, {"Peripherals", ui::Theme::getInstance()->fg_darkcyan->foreground, &bitmap_icon_peripherals, [this]() { nav_.push(); }}, @@ -483,7 +482,7 @@ DebugPmemView::DebugPmemView(NavigationView& nav) : registers_widget(RegistersWidgetConfig{CT_PMEM, PMEM_SIZE_BYTES, page_size, 8}) { add_children({®isters_widget, &text_checksum, &text_checksum2, &button_ok}); - registers_widget.set_parent_rect({0, 32, 240, 192}); + registers_widget.set_parent_rect({0, 32, screen_width, 192}); text_checksum.set("Size: " + to_string_dec_uint(portapack::persistent_memory::data_size(), 3) + " CRC: " + to_string_hex(portapack::persistent_memory::pmem_stored_checksum(), 8)); text_checksum2.set("Calculated CRC: " + to_string_hex(portapack::persistent_memory::pmem_calculated_checksum(), 8)); diff --git a/firmware/application/apps/ui_debug.hpp b/firmware/application/apps/ui_debug.hpp index 6c7b0c43b..519d94f2f 100644 --- a/firmware/application/apps/ui_debug.hpp +++ b/firmware/application/apps/ui_debug.hpp @@ -283,7 +283,7 @@ class DebugMemoryDumpView : public View { "Write"}; Button button_done{ - {128, 240, 96, 24}, + {128, screen_height - 80, 96, 24}, "Done"}; Labels labels{ @@ -332,7 +332,7 @@ class DebugPmemView : public View { Text text_checksum2{{16, 248, 208, 16}}; Button button_ok{ - {240 / 3, 270, 240 / 3, 24}, + {screen_width / 3, 270, screen_width / 3, 24}, "OK", }; @@ -364,7 +364,7 @@ public: private: Console console { - { 8, 16, 224, 240 } + { 8, 16, 224, screen_height-80 } }; Button button_exit { diff --git a/firmware/application/apps/ui_encoders.hpp b/firmware/application/apps/ui_encoders.hpp index 39879d490..7c32584aa 100644 --- a/firmware/application/apps/ui_encoders.hpp +++ b/firmware/application/apps/ui_encoders.hpp @@ -25,7 +25,6 @@ #include "ui_transmitter.hpp" #include "transmitter_model.hpp" #include "encoders.hpp" -#include "de_bruijn.hpp" #include "app_settings.hpp" #include "radio_state.hpp" @@ -125,7 +124,7 @@ class EncodersConfigView : public View { ""}; Waveform waveform{ - {0, 17 * 8, 240, 32}, + {0, 17 * 8, screen_width, 32}, waveform_buffer, 0, 0, @@ -202,7 +201,7 @@ class EncodersView : public View { void start_tx(const bool scan); void on_tx_progress(const uint32_t progress, const bool done); - Rect view_rect = {0, 4 * 8, 240, 168}; + Rect view_rect = {0, 4 * 8, screen_width, 168}; EncodersConfigView view_config{nav_, view_rect}; EncodersScanView view_scan{nav_, view_rect}; diff --git a/firmware/application/apps/ui_external_module_view.cpp b/firmware/application/apps/ui_external_module_view.cpp index 5e376981b..b3c0e0559 100644 --- a/firmware/application/apps/ui_external_module_view.cpp +++ b/firmware/application/apps/ui_external_module_view.cpp @@ -92,12 +92,21 @@ void ExternalModuleView::on_tick_second() { case app_location_t::TX: btnText += " (TX)"; break; + case app_location_t::TRX: + btnText += " (TRX)"; + break; + case app_location_t::SETTINGS: + btnText += " (Settings)"; + break; case app_location_t::DEBUG: btnText += " (Debug)"; break; case app_location_t::HOME: btnText += " (Home)"; break; + case app_location_t::GAMES: + btnText += " (Games)"; + break; } switch (i) { @@ -119,4 +128,5 @@ void ExternalModuleView::on_tick_second() { } } } + } // namespace ui diff --git a/firmware/application/apps/ui_external_module_view.hpp b/firmware/application/apps/ui_external_module_view.hpp index f09cf2f28..f91cd4541 100644 --- a/firmware/application/apps/ui_external_module_view.hpp +++ b/firmware/application/apps/ui_external_module_view.hpp @@ -84,7 +84,7 @@ class ExternalModuleView : public View { Text text_app5_name{{24, 160, 200, 16}}; Button dummy{ - {240, 0, 0, 0}, + {screen_width, 0, 0, 0}, ""}; SignalToken signal_token_tick_second{}; diff --git a/firmware/application/apps/ui_fileman.cpp b/firmware/application/apps/ui_fileman.cpp index bcc80fd8d..af156f8d6 100644 --- a/firmware/application/apps/ui_fileman.cpp +++ b/firmware/application/apps/ui_fileman.cpp @@ -228,6 +228,8 @@ void FileManBaseView::load_directory_contents(const fs::path& dir_path) { text_current.set(dir_path.empty() ? "(sd root)" : truncate(dir_path, 24)); + // Collect all entries first + std::list all_entries; for (const auto& entry : fs::directory_iterator(dir_path, u"*")) { // Hide files starting with '.' (hidden / tmp). if (!show_hidden_files && is_hidden_file(entry.path())) @@ -235,36 +237,40 @@ void FileManBaseView::load_directory_contents(const fs::path& dir_path) { if (fs::is_regular_file(entry.status())) { if (!filtering || path_iequal(entry.path().extension(), extension_filter) || (cxx_file && is_cxx_capture_file(entry.path()))) - insert_sorted(entry_list, {entry.path().string(), (uint32_t)entry.size(), false}); + insert_sorted(all_entries, {entry.path().string(), (uint32_t)entry.size(), false}); } else if (fs::is_directory(entry.status())) { - insert_sorted(entry_list, {entry.path().string(), 0, true}); + insert_sorted(all_entries, {entry.path().string(), 0, true}); } } - // paginating - auto list_size = entry_list.size(); - nb_pages = 1 + (list_size / items_per_page); - size_t start = pagination * items_per_page; - size_t stop = start + items_per_page; - if (list_size > start) { - if (list_size < stop) - stop = list_size; - entry_list.erase(std::next(entry_list.begin(), stop), entry_list.end()); - entry_list.erase(entry_list.begin(), std::next(entry_list.begin(), start)); + // Calculate pagination + nb_pages = (all_entries.size() + items_per_page - 1) / items_per_page; + if (nb_pages == 0) nb_pages = 1; + + size_t start_idx = pagination * items_per_page; + size_t end_idx = std::min(start_idx + items_per_page, all_entries.size()); + + // Add "parent" directory if not at the root and on first page + if (!dir_path.empty() && pagination == 0) { + entry_list.push_back({parent_dir_path.string(), 0, true}); } - // Add "parent" directory if not at the root. - if (!dir_path.empty() && pagination == 0) - entry_list.insert(entry_list.begin(), {parent_dir_path.string(), 0, true}); - - // add next page - if (list_size > start + items_per_page) { - entry_list.push_back({str_next, (uint32_t)pagination + 1, true}); - } - - // add prev page + // Add prev page navigation if not on first page if (pagination > 0) { - entry_list.insert(entry_list.begin(), {str_back, (uint32_t)pagination - 1, true}); + entry_list.push_back({str_back, (uint32_t)pagination - 1, true}); + } + + // Add entries for current page + auto it = all_entries.begin(); + std::advance(it, start_idx); + + for (size_t i = start_idx; i < end_idx && it != all_entries.end(); i++, ++it) { + entry_list.push_back(*it); + } + + // Add next page navigation if not on last page + if (end_idx < all_entries.size()) { + entry_list.push_back({str_next, (uint32_t)pagination + 1, true}); } } @@ -320,30 +326,49 @@ void FileManBaseView::focus() { } else { menu_view.focus(); } + + // Set menu to the correct page and select the correct item + menu_view.set_highlighted(prev_highlight % items_per_page); } +// Push directory - store the global index (page * items_per_page + local_index) void FileManBaseView::push_dir(const fs::path& path) { if (path == parent_dir_path) { pop_dir(); } else { + // Save global index (combines page number and item position) + saved_index_stack.push_back(menu_view.highlighted_index() + (pagination * items_per_page)); + current_path /= path; - saved_index_stack.push_back(menu_view.highlighted_index()); - menu_view.set_highlighted(0); - reload_current(true); + reload_current(true); // Reset pagination when entering new directory } } void FileManBaseView::pop_dir() { - if (saved_index_stack.empty()) + if (current_path.empty()) { return; + } + // Move to parent directory current_path = current_path.parent_path(); - reload_current(true); - menu_view.set_highlighted(saved_index_stack.back()); - saved_index_stack.pop_back(); + + // Restore the previous global index if available + if (!saved_index_stack.empty()) { + uint32_t global_index = saved_index_stack.back(); + saved_index_stack.pop_back(); + + // Calculate pagination from global index + pagination = global_index / items_per_page; + + // Calculate local index within the page + prev_highlight = global_index % items_per_page; + restoring_navigation = true; + } + + reload_current(false); // Important: don't reset pagination } -std::string get_extension(std::string t) { +std::string FileManBaseView::get_extension(const std::string& t) const { const auto index = t.find_last_of(u'.'); if (index == t.npos) { return {}; @@ -372,7 +397,9 @@ void FileManBaseView::refresh_list() { if (on_refresh_widgets) on_refresh_widgets(false); - prev_highlight = menu_view.highlighted_index(); + if (!restoring_navigation) { + prev_highlight = menu_view.highlighted_index(); + } menu_view.clear(); for (const auto& entry : entry_list) { @@ -411,14 +438,29 @@ void FileManBaseView::refresh_list() { } menu_view.set_highlighted(prev_highlight); + restoring_navigation = false; } void FileManBaseView::reload_current(bool reset_pagination) { - if (reset_pagination) pagination = 0; + // Only reset pagination if explicitly requested + if (reset_pagination) { + pagination = 0; + } load_directory_contents(current_path); refresh_list(); } +void FileManBaseView::copy_waterfall(std::filesystem::path path) { + nav_.push( + "Install", " Use this gradient file\n for all waterfalls?", YESNO, + [this, path](bool choice) { + if (choice) { + delete_file(default_gradient_file); + copy_file(path, default_gradient_file); + } + }); +} + const FileManBaseView::file_assoc_t& FileManBaseView::get_assoc( const fs::path& ext) const { size_t index = 0; @@ -444,7 +486,7 @@ FileLoadView::FileLoadView( add_children({&menu_view}); // Resize menu view to fill screen - menu_view.set_parent_rect({0, 3 * 8, 240, 29 * 8}); + menu_view.set_parent_rect({0, 3 * 8, screen_width, 29 * 8}); refresh_list(); @@ -478,63 +520,6 @@ void FileLoadView::refresh_widgets(const bool) { set_dirty(); } -/* FileSaveView **************************************************************/ -/* -FileSaveView::FileSaveView( - NavigationView& nav, - const fs::path& path, - const fs::path& file -) : nav_{ nav }, - path_{ path }, - file_{ file } -{ - add_children({ - &text_path, - &button_edit_path, - &text_name, - &button_edit_name, - &button_save, - &button_cancel, - }); - - button_edit_path.on_select = [this](Button&) { - buffer_ = path_.string(); - text_prompt(nav_, buffer_, max_filename_length, - [this](std::string&) { - path_ = buffer_; - refresh_widgets(); - }); - }; - - button_edit_name.on_select = [this](Button&) { - buffer_ = file_.string(); - text_prompt(nav_, buffer_, max_filename_length, - [this](std::string&) { - file_ = buffer_; - refresh_widgets(); - }); - }; - - button_save.on_select = [this](Button&) { - if (on_save) - on_save(path_ / file_); - else - nav_.pop(); - }; - - button_cancel.on_select = [this](Button&) { - nav_.pop(); - }; - - refresh_widgets(); -} - -void FileSaveView::refresh_widgets() { - text_path.set(truncate(path_, 30)); - text_name.set(truncate(file_, 30)); - set_dirty(); -} -*/ /* FileManagerView ***********************************************************/ void FileManagerView::refresh_widgets(const bool v) { @@ -566,7 +551,7 @@ void FileManagerView::on_rename(std::string_view hint) { cursor_pos = pos; text_prompt( - nav_, name_buffer, cursor_pos, max_filename_length, + nav_, name_buffer, cursor_pos, max_filename_length, ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& renamed) { auto renamed_path = fs::path{renamed}; rename_file(get_selected_full_path(), current_path / renamed_path); @@ -640,7 +625,7 @@ void FileManagerView::on_clean() { void FileManagerView::on_new_dir() { name_buffer = ""; - text_prompt(nav_, name_buffer, max_filename_length, [this](std::string& dir_name) { + text_prompt(nav_, name_buffer, max_filename_length, ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& dir_name) { make_new_directory(current_path / dir_name); reload_current(true); }); @@ -671,7 +656,7 @@ void FileManagerView::on_paste() { void FileManagerView::on_new_file() { name_buffer = ""; - text_prompt(nav_, name_buffer, max_filename_length, [this](std::string& file_name) { + text_prompt(nav_, name_buffer, max_filename_length, ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& file_name) { make_new_file(current_path / file_name); reload_current(true); }); @@ -685,7 +670,11 @@ bool FileManagerView::handle_file_open() { auto ext = path.extension(); if (path_iequal(txt_ext, ext)) { - nav_.push(path); + if (path_iequal(current_path, u"/" + waterfalls_dir)) { + copy_waterfall(path); + } else { + nav_.push(path); + } return true; } else if (is_cxx_capture_file(path) || path_iequal(ppl_ext, ext)) { // TODO: Enough memory to push? diff --git a/firmware/application/apps/ui_fileman.hpp b/firmware/application/apps/ui_fileman.hpp index e044e53ec..892fe0914 100644 --- a/firmware/application/apps/ui_fileman.hpp +++ b/firmware/application/apps/ui_fileman.hpp @@ -64,6 +64,7 @@ class FileManBaseView : public View { uint32_t prev_highlight = 0; uint8_t pagination = 0; uint8_t nb_pages = 1; + bool restoring_navigation = false; static constexpr size_t max_filename_length = 20; static constexpr size_t max_items_loaded = 75; // too memory hungry, so won't sort it static constexpr size_t items_per_page = 20; @@ -96,6 +97,8 @@ class FileManBaseView : public View { void load_directory_contents(const std::filesystem::path& dir_path); void load_directory_contents_unordered(const std::filesystem::path& dir_path, size_t file_cnt); const file_assoc_t& get_assoc(const std::filesystem::path& ext) const; + std::string get_extension(const std::string& t) const; + void copy_waterfall(std::filesystem::path path); NavigationView& nav_; @@ -124,7 +127,7 @@ class FileManBaseView : public View { }; MenuView menu_view{ - {0, 2 * 8, 240, 26 * 8}, + {0, 2 * 8, screen_width, 26 * 8}, true}; Button button_exit{ @@ -171,7 +174,7 @@ private: }; Text text_path { - { 0 * 8, 2 * 16, 30 * 8, 16 }, + { 0 * 8, 2 * 16, screen_width, 16 }, "", }; @@ -181,7 +184,7 @@ private: }; Text text_name { - { 0 * 8, 7 * 16, 30 * 8, 16 }, + { 0 * 8, 7 * 16, screen_width, 16 }, "", }; diff --git a/firmware/application/apps/ui_flash_utility.cpp b/firmware/application/apps/ui_flash_utility.cpp index 55d5a23bd..64c10f618 100644 --- a/firmware/application/apps/ui_flash_utility.cpp +++ b/firmware/application/apps/ui_flash_utility.cpp @@ -80,7 +80,7 @@ FlashUtilityView::FlashUtilityView(NavigationView& nav) add_children({&labels, &menu_view}); - menu_view.set_parent_rect({0, 3 * 8, 240, 33 * 8}); + menu_view.set_parent_rect({0, 3 * 8, screen_width, 33 * 8}); ensure_directory(apps_dir); ensure_directory(firmware_dir); @@ -177,4 +177,4 @@ void FlashUtilityView::focus() { menu_view.focus(); } -} /* namespace ui */ \ No newline at end of file +} /* namespace ui */ diff --git a/firmware/application/apps/ui_flash_utility.hpp b/firmware/application/apps/ui_flash_utility.hpp index 626a4ff40..6b623bc34 100644 --- a/firmware/application/apps/ui_flash_utility.hpp +++ b/firmware/application/apps/ui_flash_utility.hpp @@ -60,7 +60,7 @@ class FlashUtilityView : public View { {{4, 4}, "Select firmware to flash:", Theme::getInstance()->bg_darkest->foreground}}; MenuView menu_view{ - {0, 2 * 8, 240, 26 * 8}, + {0, 2 * 8, screen_width, 26 * 8}, true}; std::filesystem::path extract_tar(std::filesystem::path::string_type path, ui::Painter& painter); // extracts the tar file, and returns the firmware.bin path from it. empty string if no fw diff --git a/firmware/application/apps/ui_freqman.cpp b/firmware/application/apps/ui_freqman.cpp index 7e230dc60..e543fa00e 100644 --- a/firmware/application/apps/ui_freqman.cpp +++ b/firmware/application/apps/ui_freqman.cpp @@ -45,8 +45,8 @@ using option_db_t = std::pair; using options_db_t = std::vector; extern options_db_t freqman_modulations; -extern options_db_t freqman_bandwidths[4]; -extern options_db_t freqman_steps; +extern options_db_t freqman_bandwidths[6]; +// extern options_db_t freqman_steps; // now included via ui_receiver.hpp extern options_db_t freqman_steps_short; options_t dboptions_to_options(const options_db_t& dboptions) { @@ -240,7 +240,7 @@ void FrequencyManagerView::on_edit_freq() { void FrequencyManagerView::on_edit_desc() { temp_buffer_ = current_entry().description; - text_prompt(nav_, temp_buffer_, freqman_max_desc_size, [this](std::string& new_desc) { + text_prompt(nav_, temp_buffer_, freqman_max_desc_size, ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& new_desc) { auto entry = current_entry(); entry.description = std::move(new_desc); db_.replace_entry(current_index(), entry); @@ -250,7 +250,7 @@ void FrequencyManagerView::on_edit_desc() { void FrequencyManagerView::on_add_category() { temp_buffer_.clear(); - text_prompt(nav_, temp_buffer_, 20, [this](std::string& new_name) { + text_prompt(nav_, temp_buffer_, 20, ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& new_name) { if (!new_name.empty()) { create_freqman_file(new_name); refresh_categories(); diff --git a/firmware/application/apps/ui_freqman.hpp b/firmware/application/apps/ui_freqman.hpp index 5392819df..8877a30a3 100644 --- a/firmware/application/apps/ui_freqman.hpp +++ b/firmware/application/apps/ui_freqman.hpp @@ -100,7 +100,7 @@ class FrequencySaveView : public FreqManBaseView { {{0 * 8, 6 * 16}, "Description:", Theme::getInstance()->bg_darkest->foreground}}; TextField field_description{ - {0 * 8, 7 * 16, 30 * 8, 1 * 16}, + {0 * 8, 7 * 16, screen_width, 1 * 16}, ""}; Button button_save{ diff --git a/firmware/application/apps/ui_iq_trim.cpp b/firmware/application/apps/ui_iq_trim.cpp index 44583d650..d5cbffd4d 100644 --- a/firmware/application/apps/ui_iq_trim.cpp +++ b/firmware/application/apps/ui_iq_trim.cpp @@ -34,6 +34,7 @@ namespace ui { IQTrimView::IQTrimView(NavigationView& nav) : nav_{nav} { + power_buckets_.resize(screen_width); add_children({ &labels, &field_path, diff --git a/firmware/application/apps/ui_iq_trim.hpp b/firmware/application/apps/ui_iq_trim.hpp index dd990f4a0..03d33a5e9 100644 --- a/firmware/application/apps/ui_iq_trim.hpp +++ b/firmware/application/apps/ui_iq_trim.hpp @@ -96,7 +96,7 @@ class IQTrimView : public View { std::filesystem::path path_{}; Optional info_{}; - std::array power_buckets_{}; + std::vector power_buckets_{}; TrimProgressUI progress_ui{}; Labels labels{ @@ -112,7 +112,7 @@ class IQTrimView : public View { }; TextField field_path{ - {0 * 8, 1 * 16, 30 * 8, 1 * 16}, + {0 * 8, 1 * 16, screen_width, 1 * 16}, "Open File..."}; Point pos_lines{0 * 8, 4 * 16}; diff --git a/firmware/application/apps/ui_looking_glass_app.cpp b/firmware/application/apps/ui_looking_glass_app.cpp index 5e412c420..187c5f75c 100644 --- a/firmware/application/apps/ui_looking_glass_app.cpp +++ b/firmware/application/apps/ui_looking_glass_app.cpp @@ -94,10 +94,10 @@ void GlassView::get_max_power(const ChannelSpectrum& spectrum, uint8_t bin, uint rf::Frequency GlassView::get_freq_from_bin_pos(uint8_t pos) { rf::Frequency freq_at_pos = 0; if (mode == LOOKING_GLASS_SINGLEPASS) { - // starting from the middle, minus 8 ignored bin on each side. Since pos is [-120,120] after the (pos - 120), it's divided by SCREEN_W(240)/2 => 120 - freq_at_pos = f_center_ini + ((pos - 120) * ((looking_glass_range - ((16 * looking_glass_range) / SPEC_NB_BINS)) / 2)) / (SCREEN_W / 2); + // starting from the middle, minus 8 ignored bin on each side. Since pos is [-120,120] after the (pos - 120), it's divided by screen_width(240)/2 => 120 + freq_at_pos = f_center_ini + ((pos - 120) * ((looking_glass_range - ((16 * looking_glass_range) / SPEC_NB_BINS)) / 2)) / (screen_width / 2); } else - freq_at_pos = f_min + (2 * offset * each_bin_size) + (pos * looking_glass_range) / SCREEN_W; + freq_at_pos = f_min + (2 * offset * each_bin_size) + (pos * looking_glass_range) / screen_width; return freq_at_pos; } @@ -122,15 +122,15 @@ void GlassView::reset_live_view() { // Clear screen in peak mode. if (live_frequency_view == 2) - display.fill_rectangle({{0, 108 + 16}, {SCREEN_W, SCREEN_H - (108 + 16)}}, {0, 0, 0}); + display.fill_rectangle({{0, 108 + 16}, {screen_width, screen_height - (108 + 16)}}, {0, 0, 0}); } void GlassView::add_spectrum_pixel(uint8_t power) { - spectrum_row[pixel_index] = spectrum_rgb3_lut[power]; // row of colors + spectrum_row[pixel_index] = gradient.lut[power]; // row of colors spectrum_data[pixel_index] = (live_frequency_integrate * spectrum_data[pixel_index] + power) / (live_frequency_integrate + 1); // smoothing pixel_index++; - if (pixel_index == SCREEN_W) // got an entire waterfall line + if (pixel_index == screen_width) // got an entire waterfall line { if (live_frequency_view > 0) { constexpr int rssi_sample_range = SPEC_NB_BINS; @@ -140,22 +140,22 @@ void GlassView::add_spectrum_pixel(uint8_t power) { constexpr int raw_min = rssi_sample_range * rssi_voltage_min / adc_voltage_max; constexpr int raw_max = rssi_sample_range * rssi_voltage_max / adc_voltage_max; constexpr int raw_delta = raw_max - raw_min; - const range_t y_max_range{0, 320 - (108 + 16)}; + const range_t y_max_range{0, screen_height - (108 + 16)}; // drawing and keeping track of max freq - for (uint16_t xpos = 0; xpos < SCREEN_W; xpos++) { + for (uint16_t xpos = 0; xpos < screen_width; xpos++) { // save max powerwull freq if (spectrum_data[xpos] > max_freq_power) { max_freq_power = spectrum_data[xpos]; max_freq_hold = get_freq_from_bin_pos(xpos); } - int16_t point = y_max_range.clip(((spectrum_data[xpos] - raw_min) * (320 - (108 + 16))) / raw_delta); + int16_t point = y_max_range.clip(((spectrum_data[xpos] - raw_min) * (screen_height - (108 + 16))) / raw_delta); uint8_t color_gradient = (point * 255) / 212; // clear if not in peak view if (live_frequency_view != 2) { - display.fill_rectangle({{xpos, 108 + 16}, {1, SCREEN_H - point}}, {0, 0, 0}); + display.fill_rectangle({{xpos, 108 + 16}, {1, screen_height - point}}, {0, 0, 0}); } - display.fill_rectangle({{xpos, SCREEN_H - point}, {1, point}}, {color_gradient, 0, uint8_t(255 - color_gradient)}); + display.fill_rectangle({{xpos, screen_height - point}, {1, point}}, {color_gradient, 0, uint8_t(255 - color_gradient)}); } if (last_max_freq != max_freq_hold) { last_max_freq = max_freq_hold; @@ -163,7 +163,7 @@ void GlassView::add_spectrum_pixel(uint8_t power) { } plot_marker(marker_pixel_index); } else { - display.draw_pixels({{0, display.scroll(1)}, {SCREEN_W, 1}}, spectrum_row); // new line at top, one less var, speedier + display.draw_pixels({{0, display.scroll(1)}, {screen_width, 1}}, spectrum_row); // new line at top, one less var, speedier } pixel_index = 0; // Start New cascade line } @@ -199,7 +199,7 @@ bool GlassView::process_bins(uint8_t* powerlevel) { void GlassView::on_channel_spectrum(const ChannelSpectrum& spectrum) { baseband::spectrum_streaming_stop(); // Convert bins of this spectrum slice into a representative max_power and when enough, into pixels - // we actually need SCREEN_W (240) of those bins + // we actually need screen_width (240) of those bins for (uint8_t bin = 0; bin < bin_length; bin++) { get_max_power(spectrum, bin, max_power); if (max_power > range_max_power) @@ -238,7 +238,7 @@ void GlassView::on_hide() { } void GlassView::on_show() { - display.scroll_set_area(109, 319); // Restart scroll on the correct coordinates + display.scroll_set_area(109, screen_height - 1); // Restart scroll on the correct coordinates baseband::spectrum_streaming_start(); } @@ -253,11 +253,11 @@ void GlassView::on_range_changed() { // if the view is done in one pass, show it like in analog_audio_app mode = LOOKING_GLASS_SINGLEPASS; offset = 2; - bin_length = SCREEN_W; + bin_length = screen_width; ignore_dc = 0; looking_glass_bandwidth = looking_glass_range; looking_glass_sampling_rate = looking_glass_range; - each_bin_size = looking_glass_bandwidth / SCREEN_W; + each_bin_size = looking_glass_bandwidth / screen_width; looking_glass_step = looking_glass_bandwidth; f_center_ini = f_min + (looking_glass_bandwidth / 2); // Initial center frequency for sweep } else { @@ -269,7 +269,7 @@ void GlassView::on_range_changed() { if (mode == LOOKING_GLASS_FASTSCAN) { offset = 2; ignore_dc = 4; - bin_length = SCREEN_W; + bin_length = screen_width; } else { // if( mode == LOOKING_GLASS_SLOWSCAN ) offset = 2; bin_length = 80; @@ -279,7 +279,7 @@ void GlassView::on_range_changed() { f_center_ini = f_min - (offset * each_bin_size) + (looking_glass_bandwidth / 2); // Initial center frequency for sweep } search_span = looking_glass_range / MHZ_DIV; - marker_pixel_step = looking_glass_range / SCREEN_W; // Each pixel value in Hz + marker_pixel_step = looking_glass_range / screen_width; // Each pixel value in Hz pixel_index = 0; max_power = 0; @@ -304,10 +304,10 @@ void GlassView::plot_marker(uint8_t pos) { { shift_y = 16; } - portapack::display.fill_rectangle({0, 100 + shift_y, SCREEN_W, 8}, Theme::getInstance()->bg_darkest->background); // Clear old marker and whole marker rectangle btw - portapack::display.fill_rectangle({pos - 2, 100 + shift_y, 5, 3}, Theme::getInstance()->fg_red->foreground); // Red marker top - portapack::display.fill_rectangle({pos - 1, 103 + shift_y, 3, 3}, Theme::getInstance()->fg_red->foreground); // Red marker middle - portapack::display.fill_rectangle({pos, 106 + shift_y, 1, 2}, Theme::getInstance()->fg_red->foreground); // Red marker bottom + portapack::display.fill_rectangle({0, 100 + shift_y, screen_width, 8}, Theme::getInstance()->bg_darkest->background); // Clear old marker and whole marker rectangle btw + portapack::display.fill_rectangle({pos - 2, 100 + shift_y, 5, 3}, Theme::getInstance()->fg_red->foreground); // Red marker top + portapack::display.fill_rectangle({pos - 1, 103 + shift_y, 3, 3}, Theme::getInstance()->fg_red->foreground); // Red marker middle + portapack::display.fill_rectangle({pos, 106 + shift_y, 1, 2}, Theme::getInstance()->fg_red->foreground); // Red marker bottom } void GlassView::update_min(int32_t v) { @@ -358,6 +358,11 @@ GlassView::GlassView( NavigationView& nav) : nav_(nav) { baseband::run_image(portapack::spi_flash::image_tag_wideband_spectrum); + spectrum_row.resize(screen_width); + spectrum_data.resize(screen_width); + if (!gradient.load_file(default_gradient_file)) { + gradient.set_default(); + } add_children({&labels, &field_frequency_min, @@ -433,11 +438,11 @@ GlassView::GlassView( freq_stats.hidden(true); button_jump.hidden(true); button_rst.hidden(true); - display.scroll_set_area(109, 319); // Restart scroll on the correct coordinates. + display.scroll_set_area(109, screen_height - 1); // Restart scroll on the correct coordinates. break; case 1: // LEVEL - display.fill_rectangle({{0, 108}, {SCREEN_W, 24}}, {0, 0, 0}); + display.fill_rectangle({{0, 108}, {screen_width, 24}}, {0, 0, 0}); display.scroll_disable(); level_integration.hidden(false); freq_stats.hidden(false); @@ -447,7 +452,7 @@ GlassView::GlassView( case 2: // PEAK default: - display.fill_rectangle({{0, 108}, {SCREEN_W, 24}}, {0, 0, 0}); + display.fill_rectangle({{0, 108}, {screen_width, 24}}, {0, 0, 0}); display.scroll_disable(); level_integration.hidden(false); freq_stats.hidden(false); @@ -487,9 +492,9 @@ GlassView::GlassView( field_marker.on_encoder_change = [this](TextField&, EncoderEvent delta) { if ((marker_pixel_index + delta) < 0) - marker_pixel_index = marker_pixel_index + delta + SCREEN_W; - else if ((marker_pixel_index + delta) > SCREEN_W) - marker_pixel_index = marker_pixel_index + delta - SCREEN_W; + marker_pixel_index = marker_pixel_index + delta + screen_width; + else if ((marker_pixel_index + delta) > screen_width) + marker_pixel_index = marker_pixel_index + delta - screen_width; else marker_pixel_index = marker_pixel_index + delta; on_marker_change(); @@ -527,7 +532,7 @@ GlassView::GlassView( }; set_spec_iq_phase_calibration_value(get_spec_iq_phase_calibration_value()); // initialize iq_phase_calibration in radio - display.scroll_set_area(109, 319); + display.scroll_set_area(109, screen_height - 1); // Restart scroll on the correct coordinates // trigger: // Discord User jteich: WidebandSpectrum::on_message to set the trigger value. In WidebandSpectrum::execute, @@ -535,7 +540,7 @@ GlassView::GlassView( // at which time it pushes the buffer up with channel_spectrum.feed baseband::set_spectrum(looking_glass_bandwidth, trigger); - marker_pixel_index = SCREEN_W / 2; + marker_pixel_index = screen_width / 2; on_range_changed(); // Force a UI update. receiver_model.set_sampling_rate(looking_glass_sampling_rate); // 20mhz diff --git a/firmware/application/apps/ui_looking_glass_app.hpp b/firmware/application/apps/ui_looking_glass_app.hpp index d02803b9e..9ddfd18fc 100644 --- a/firmware/application/apps/ui_looking_glass_app.hpp +++ b/firmware/application/apps/ui_looking_glass_app.hpp @@ -35,7 +35,7 @@ #include "ui_receiver.hpp" #include "string_format.hpp" #include "analog_audio_app.hpp" -#include "spectrum_color_lut.hpp" +#include "gradient.hpp" namespace ui { @@ -51,9 +51,6 @@ namespace ui { #define LOOKING_GLASS_SINGLEPASS 2 // one spectrum line number of bins #define SPEC_NB_BINS 256 -// screen dimensions -#define SCREEN_W 240 -#define SCREEN_H 320 class GlassView : public View { public: @@ -74,6 +71,7 @@ class GlassView : public View { private: NavigationView& nav_; + Gradient gradient{}; RxRadioState radio_state_{ReceiverModel::Mode::SpectrumAnalysis}; // Settings rf::Frequency f_min = 260 * MHZ_DIV; // Default to 315/433 remote range. @@ -154,8 +152,8 @@ class GlassView : public View { uint8_t min_color_power{0}; // Filter cutoff level. uint32_t pixel_index{0}; - std::array spectrum_row{}; - std::array spectrum_data{}; + std::vector spectrum_row{}; + std::vector spectrum_data{}; ChannelSpectrumFIFO* fifo{}; int32_t steps = 1; @@ -167,7 +165,7 @@ class GlassView : public View { rf::Frequency max_freq_hold = 0; rf::Frequency last_max_freq = 0; int16_t max_freq_power = -1000; - uint8_t bin_length = SCREEN_W; + uint8_t bin_length = screen_width; uint8_t offset = 0; uint8_t ignore_dc = 0; @@ -221,7 +219,7 @@ class GlassView : public View { {}}; ButtonWithEncoder button_beep_squelch{ - {240 - 8 * 8, 2 * 16 + 4, 8 * 8, 1 * 8}, + {screen_width - 8 * 8, 2 * 16 + 4, 8 * 8, 1 * 8}, ""}; TextField field_marker{ @@ -292,15 +290,15 @@ class GlassView : public View { }}; Button button_jump{ - {SCREEN_W - 4 * 8, 5 * 16, 4 * 8, 16}, + {screen_width - 4 * 8, 5 * 16, 4 * 8, 16}, "JMP"}; Button button_rst{ - {SCREEN_W - 9 * 8, 5 * 16, 4 * 8, 16}, + {screen_width - 9 * 8, 5 * 16, 4 * 8, 16}, "RST"}; Text freq_stats{ - {0 * 8, 5 * 16, SCREEN_W - 10 * 8, 8}, + {0 * 8, 5 * 16, screen_width - 10 * 8, 8}, ""}; MessageHandlerRegistration message_handler_spectrum_config{ diff --git a/firmware/application/apps/ui_mictx.cpp b/firmware/application/apps/ui_mictx.cpp index dfa80a65a..62455e63d 100644 --- a/firmware/application/apps/ui_mictx.cpp +++ b/firmware/application/apps/ui_mictx.cpp @@ -202,7 +202,7 @@ void MicTXView::rxaudio(bool enable) { receiver_model.set_modulation(ReceiverModel::Mode::NarrowbandFMAudio); // receiver_model.set_nbfm_configuration(n); is called above, depending user's selection (8k5, 11k, 16k). break; - case MIC_MOD_WFM: // WFM, BW 200Khz aprox, or the two new addional BW filters (180k, 40k) + case MIC_MOD_WFM: // WFM, BW 200Khz aprox, or the two new addional BW filters (180k, 80k) baseband::run_image(portapack::spi_flash::image_tag_wfm_audio); receiver_model.set_modulation(ReceiverModel::Mode::WidebandFMAudio); // receiver_model.set_wfm_configuration(n); is called above, depending user's selection (200k, 180k, 0k). @@ -300,7 +300,7 @@ void MicTXView::update_receiver_rxbw(void) { receiver_model.set_nbfm_configuration(rxbw_index); // we are in NFM/FM case, we need to select proper NFM/FM RX channel filter, NFM BW 8K5(0), NFM BW 11K(1), FM BW 16K (2) break; case MIC_MOD_WFM: - receiver_model.set_wfm_configuration(rxbw_index); // we are in WFM case, we need to select proper WFB RX BW filter, WFM BW 200K(0), WFM BW 180K(1), WFM BW 40K(2) + receiver_model.set_wfm_configuration(rxbw_index); // we are in WFM case, we need to select proper WFB RX BW filter, WFM BW 200K(0), WFM BW 180K(1), WFM BW 80K(2) break; case MIC_MOD_AM: receiver_model.set_am_configuration(rxbw_index); // we are in AM TX mode, we need to select proper AM full path config AM-9K filter. 0+0 =>AM-9K(0), 0+1=1 =>AM-6K(1), diff --git a/firmware/application/apps/ui_mictx.hpp b/firmware/application/apps/ui_mictx.hpp index 6b61a8f0b..87c8610f4 100644 --- a/firmware/application/apps/ui_mictx.hpp +++ b/firmware/application/apps/ui_mictx.hpp @@ -350,7 +350,7 @@ class MicTXView : public View { }; Button tx_button{ - {10 * 8, 30 * 8, 10 * 8, 5 * 8}, + {10 * 8, screen_width, 10 * 8, 5 * 8}, "PTT TX", true}; diff --git a/firmware/application/apps/ui_playlist.hpp b/firmware/application/apps/ui_playlist.hpp index 72b50d7b3..cf98e6c24 100644 --- a/firmware/application/apps/ui_playlist.hpp +++ b/firmware/application/apps/ui_playlist.hpp @@ -107,7 +107,7 @@ class PlaylistView : public View { void handle_replay_thread_done(uint32_t return_code); Text text_filename{ - {0 * 8, 0 * 16, 30 * 8, 16}}; + {0 * 8, 0 * 16, screen_width, 16}}; FrequencyField field_frequency{ {0 * 8, 1 * 16}}; @@ -139,13 +139,13 @@ class PlaylistView : public View { true}; ImageButton button_play{ - {28 * 8, 2 * 16, 2 * 8, 1 * 16}, + {screen_width - 2 * 8, 2 * 16, 2 * 8, 1 * 16}, &bitmap_play, Theme::getInstance()->fg_green->foreground, Theme::getInstance()->fg_green->background}; Text text_track{ - {0 * 8, 3 * 16, 30 * 8, 16}}; + {0 * 8, 3 * 16, screen_width, 16}}; NewButton button_prev{ {2 * 8, 4 * 16, 4 * 8, 2 * 16}, diff --git a/firmware/application/apps/ui_pocsag_tx.cpp b/firmware/application/apps/ui_pocsag_tx.cpp index 2efed2653..b71aca63f 100644 --- a/firmware/application/apps/ui_pocsag_tx.cpp +++ b/firmware/application/apps/ui_pocsag_tx.cpp @@ -153,7 +153,7 @@ void POCSAGTXView::paint(Painter&) { } void POCSAGTXView::on_set_text(NavigationView& nav) { - text_prompt(nav, buffer, MAX_POCSAG_LENGTH); + text_prompt(nav, buffer, MAX_POCSAG_LENGTH, ENTER_KEYBOARD_MODE_ALPHA); } POCSAGTXView::POCSAGTXView( diff --git a/firmware/application/apps/ui_pocsag_tx.hpp b/firmware/application/apps/ui_pocsag_tx.hpp index f4eb242ca..b23e27dd8 100644 --- a/firmware/application/apps/ui_pocsag_tx.hpp +++ b/firmware/application/apps/ui_pocsag_tx.hpp @@ -122,10 +122,10 @@ class POCSAGTXView : public View { }}; Text text_message{ - {0 * 8, 16 * 8, 30 * 8, 16}, + {0 * 8, 16 * 8, screen_width, 16}, ""}; Text text_message_l2{ - {0 * 8, 18 * 8, 30 * 8, 16}, + {0 * 8, 18 * 8, screen_width, 16}, ""}; Button button_message{ diff --git a/firmware/application/apps/ui_rds.cpp b/firmware/application/apps/ui_rds.cpp index a17e7a59a..121023e2d 100644 --- a/firmware/application/apps/ui_rds.cpp +++ b/firmware/application/apps/ui_rds.cpp @@ -65,6 +65,7 @@ RDSPSNView::RDSPSNView( nav, PSN, 8, + ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& s) { text_psn.set(s); }); @@ -86,6 +87,7 @@ RDSRadioTextView::RDSRadioTextView( nav, radiotext, 28, + ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& s) { text_radiotext.set(s); }); diff --git a/firmware/application/apps/ui_rds.hpp b/firmware/application/apps/ui_rds.hpp index aebd8deb4..40e9d285f 100644 --- a/firmware/application/apps/ui_rds.hpp +++ b/firmware/application/apps/ui_rds.hpp @@ -160,7 +160,7 @@ class RDSView : public View { void start_tx(); - Rect view_rect = {0, 8 * 8, 240, 192}; + Rect view_rect = {0, 8 * 8, screen_width, 192}; RDSPSNView view_PSN{nav_, view_rect}; RDSRadioTextView view_radiotext{nav_, view_rect}; diff --git a/firmware/application/apps/ui_recon.cpp b/firmware/application/apps/ui_recon.cpp index 977f9cbbb..3126c9a29 100644 --- a/firmware/application/apps/ui_recon.cpp +++ b/firmware/application/apps/ui_recon.cpp @@ -335,7 +335,7 @@ ReconView::ReconView(NavigationView& nav) tx_view.hidden(true); // set record View - record_view = std::make_unique(Rect{0, 0, 30 * 8, 1 * 16}, + record_view = std::make_unique(Rect{0, 0, screen_width, 1 * 16}, u"AUTO_AUDIO", audio_dir, RecordView::FileType::WAV, 4096, 4); record_view->set_filename_date_frequency(true); @@ -517,11 +517,7 @@ ReconView::ReconView(NavigationView& nav) }; set_loop_config(continuous); - rssi.set_focusable(true); rssi.set_peak(true, 500); - rssi.on_select = [this](RSSI&) { - nav_.replace(); - }; // TODO: *BUG* Both transmitter_model and receiver_model share the same pmem setting for target_frequency. button_mic_app.on_select = [this](Button&) { @@ -1168,18 +1164,18 @@ size_t ReconView::change_mode(freqman_index_t new_mod) { } if (new_mod == SPEC_MODULATION) { if (persistent_memory::recon_repeat_recorded()) { - record_view = std::make_unique(Rect{0, 0, 30 * 8, 1 * 16}, + record_view = std::make_unique(Rect{0, 0, screen_width, 1 * 16}, u"RECON_REPEAT.C16", captures_dir, RecordView::FileType::RawS16, 16384, 3); record_view->set_filename_as_is(true); } else { - record_view = std::make_unique(Rect{0, 0, 30 * 8, 1 * 16}, + record_view = std::make_unique(Rect{0, 0, screen_width, 1 * 16}, u"AUTO_RAW", captures_dir, RecordView::FileType::RawS16, 16384, 3); record_view->set_filename_date_frequency(true); } } else { - record_view = std::make_unique(Rect{0, 0, 30 * 8, 1 * 16}, + record_view = std::make_unique(Rect{0, 0, screen_width, 1 * 16}, u"AUTO_AUDIO", audio_dir, RecordView::FileType::WAV, 4096, 4); record_view->set_filename_date_frequency(true); @@ -1257,9 +1253,17 @@ size_t ReconView::change_mode(freqman_index_t new_mod) { field_mode.set_selected_index(new_mod); field_mode.on_change = [this](size_t, OptionsField::value_t v) { - if (v != -1) { - change_mode(v); + // initialize to a value under SPEC + static freqman_index_t last_mode = WFM_MODULATION; + if (v > SPEC_MODULATION) { + if (last_mode == SPEC_MODULATION) + v = AM_MODULATION; + else + v = SPEC_MODULATION; + field_mode.set_selected_index(v); } + last_mode = v; + change_mode(v); }; // for some motive, audio output gets stopped. if (!recon && field_mode.selected_index_value() != SPEC_MODULATION) @@ -1400,8 +1404,8 @@ void ReconView::start_repeat() { std::string delay_message = "TX DELAY: " + to_string_dec_uint(delay) + "s"; // update display information - p.fill_rectangle({0, (SCREEN_H / 2) - 16, SCREEN_W, 64}, Theme::getInstance()->fg_light->foreground); - p.draw_string({(SCREEN_W / 2) - 7 * 8, SCREEN_H / 2}, *Theme::getInstance()->fg_red, delay_message); + p.fill_rectangle({0, (screen_height / 2) - 16, screen_width, 64}, Theme::getInstance()->fg_light->foreground); + p.draw_string({(screen_width / 2) - 7 * 8, screen_height / 2}, *Theme::getInstance()->fg_red, delay_message); // sleep 1 second chThdSleepMilliseconds(1000); diff --git a/firmware/application/apps/ui_recon.hpp b/firmware/application/apps/ui_recon.hpp index fa310770f..e610b2438 100644 --- a/firmware/application/apps/ui_recon.hpp +++ b/firmware/application/apps/ui_recon.hpp @@ -31,7 +31,6 @@ #include "analog_audio_app.hpp" #include "audio.hpp" #include "ui_mictx.hpp" -#include "ui_level.hpp" #include "ui_looking_glass_app.hpp" #include "portapack_persistent_memory.hpp" #include "baseband_api.hpp" @@ -238,15 +237,15 @@ class ReconView : public View { Text file_name{ // show file used - {0, 1 * 16, SCREEN_W, 16}, + {0, 1 * 16, screen_width, 16}, }; Text desc_cycle{ - {0, 2 * 16, SCREEN_W, 16}, + {0, 2 * 16, screen_width, 16}, }; RSSI rssi{ - {0 * 16, 3 * 16 + 2, SCREEN_W - 8 * 8 + 4, 12}, + {0 * 16, 3 * 16 + 2, screen_width - 8 * 8 + 4, 12}, }; ButtonWithEncoder text_cycle{ @@ -286,15 +285,15 @@ class ReconView : public View { // Button can be RECON or SCANNER Button button_scanner_mode{ - {SCREEN_W - 7 * 8, 3 * 16, 7 * 8, 28}, + {screen_width - 7 * 8, 3 * 16, 7 * 8, 28}, "RECON"}; Button button_loop_config{ - {SCREEN_W - 7 * 8, 5 * 16, 7 * 8, 28}, + {screen_width - 7 * 8, 5 * 16, 7 * 8, 28}, "[LOOP]"}; Button button_config{ - {SCREEN_W - 7 * 8, 7 * 16, 7 * 8, 28}, + {screen_width - 7 * 8, 7 * 16, 7 * 8, 28}, "CONFIG"}; ButtonWithEncoder button_manual_start{ @@ -392,7 +391,7 @@ class ReconView : public View { ""}; ProgressBar progressbar{ - {0 * 8, SCREEN_H / 2 - 16, SCREEN_W, 32}}; + {0 * 8, screen_height / 2 - 16, screen_width, 32}}; TransmitterView2 tx_view{ {11 * 8, 2 * 16}, diff --git a/firmware/application/apps/ui_recon_settings.cpp b/firmware/application/apps/ui_recon_settings.cpp index 520e1b4a4..83a3853cf 100644 --- a/firmware/application/apps/ui_recon_settings.cpp +++ b/firmware/application/apps/ui_recon_settings.cpp @@ -82,7 +82,7 @@ ReconSetupViewMain::ReconSetupViewMain(NavigationView& nav, Rect parent_rect, st }; button_choose_output_name.on_select = [this, &nav](Button&) { - text_prompt(nav, _output_file, 28, [this](std::string& buffer) { + text_prompt(nav, _output_file, 28, ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& buffer) { _output_file = buffer; button_choose_output_name.set_text(_output_file); }); diff --git a/firmware/application/apps/ui_recon_settings.hpp b/firmware/application/apps/ui_recon_settings.hpp index eb5d257ec..fe4393369 100644 --- a/firmware/application/apps/ui_recon_settings.hpp +++ b/firmware/application/apps/ui_recon_settings.hpp @@ -57,10 +57,6 @@ #define RECON_MIN_LOCK_DURATION 100 // have to be >= and a multiple of STATS_UPDATE_INTERVAL #define RECON_DEF_WAIT_DURATION 1000 // will be incremented/decremented by STATS_UPDATE_INTERVAL steps -// screen size helper -#define SCREEN_W 240 -// #define SCREEN_H 320 - // recon settings nb params #define RECON_SETTINGS_NB_PARAMS 7 @@ -219,7 +215,7 @@ class ReconSetupView : public View { std::string input_file{"RECON"}; std::string output_file{"RECON_RESULTS"}; - Rect view_rect{0, 3 * 8, SCREEN_W, 230}; + Rect view_rect{0, 3 * 8, screen_width, 230}; ReconSetupViewMain viewMain{nav_, view_rect, input_file, output_file}; ReconSetupViewMore viewMore{nav_, view_rect}; diff --git a/firmware/application/apps/ui_search.cpp b/firmware/application/apps/ui_search.cpp index 73fb5737f..86e041ac1 100644 --- a/firmware/application/apps/ui_search.cpp +++ b/firmware/application/apps/ui_search.cpp @@ -56,6 +56,10 @@ SearchView::SearchView( : nav_(nav) { baseband::run_image(portapack::spi_flash::image_tag_wideband_spectrum); + if (!gradient.load_file(default_gradient_file)) { + gradient.set_default(); + } + add_children({&labels, &field_frequency_min, &field_frequency_max, @@ -290,7 +294,7 @@ void SearchView::on_channel_spectrum(const ChannelSpectrum& spectrum) { power = spectrum.db[bin - 128]; } - add_spectrum_pixel(spectrum_rgb3_lut[power]); + add_spectrum_pixel(gradient.lut[power]); mean_acc += power; if (power > max_power) { diff --git a/firmware/application/apps/ui_search.hpp b/firmware/application/apps/ui_search.hpp index c7663e28a..6d7c3afd1 100644 --- a/firmware/application/apps/ui_search.hpp +++ b/firmware/application/apps/ui_search.hpp @@ -24,7 +24,7 @@ #include "receiver_model.hpp" #include "recent_entries.hpp" #include "radio_state.hpp" -#include "spectrum_color_lut.hpp" +#include "gradient.hpp" #include "ui_receiver.hpp" namespace ui { @@ -88,6 +88,7 @@ class SearchView : public View { private: NavigationView& nav_; + Gradient gradient{}; RxRadioState radio_state_{ 100'000'000 /* frequency */, 2500000 /* bandwidth */, diff --git a/firmware/application/apps/ui_settings.cpp b/firmware/application/apps/ui_settings.cpp index 3af587dca..295e83478 100644 --- a/firmware/application/apps/ui_settings.cpp +++ b/firmware/application/apps/ui_settings.cpp @@ -53,6 +53,8 @@ namespace fs = std::filesystem; #include "i2cdevmanager.hpp" #include "i2cdev_max17055.hpp" +#include "file_reader.hpp" + extern ui::SystemView* system_view_ptr; namespace pmem = portapack::persistent_memory; @@ -324,6 +326,7 @@ SetUIView::SetUIView(NavigationView& nav) { &toggle_bias_tee, &toggle_clock, &toggle_mute, + &toggle_fake_brightness, &toggle_sd_card, &button_save, &button_cancel}); @@ -361,6 +364,7 @@ SetUIView::SetUIView(NavigationView& nav) { toggle_clock.set_value(!pmem::ui_hide_clock()); toggle_speaker.set_value(!pmem::ui_hide_speaker()); toggle_mute.set_value(!pmem::ui_hide_mute()); + toggle_fake_brightness.set_value(!pmem::ui_hide_fake_brightness()); toggle_battery_icon.set_value(!pmem::ui_hide_battery_icon()); toggle_battery_text.set_value(!pmem::ui_hide_numeric_battery()); toggle_sd_card.set_value(!pmem::ui_hide_sd_card()); @@ -389,6 +393,7 @@ SetUIView::SetUIView(NavigationView& nav) { pmem::set_ui_hide_clock(!toggle_clock.value()); pmem::set_ui_hide_speaker(!toggle_speaker.value()); pmem::set_ui_hide_mute(!toggle_mute.value()); + pmem::set_ui_hide_fake_brightness(!toggle_fake_brightness.value()); pmem::set_ui_hide_battery_icon(!toggle_battery_icon.value()); pmem::set_ui_hide_numeric_battery(!toggle_battery_text.value()); pmem::set_ui_hide_sd_card(!toggle_sd_card.value()); @@ -669,32 +674,6 @@ void SetAudioView::focus() { button_save.focus(); } -/* SetQRCodeView *****************************************/ - -SetQRCodeView::SetQRCodeView(NavigationView& nav) { - add_children({ - &labels, - &checkbox_bigger_qr, - &button_save, - &button_cancel, - }); - - checkbox_bigger_qr.set_value(pmem::show_bigger_qr_code()); - - button_save.on_select = [&nav, this](Button&) { - pmem::set_show_bigger_qr_code(checkbox_bigger_qr.value()); - nav.pop(); - }; - - button_cancel.on_select = [&nav, this](Button&) { - nav.pop(); - }; -} - -void SetQRCodeView::focus() { - button_save.focus(); -} - /* SetEncoderDialView ************************************/ SetEncoderDialView::SetEncoderDialView(NavigationView& nav) { @@ -702,14 +681,34 @@ SetEncoderDialView::SetEncoderDialView(NavigationView& nav) { &field_encoder_dial_sensitivity, &field_encoder_rate_multiplier, &button_save, - &button_cancel}); + &button_cancel, + &button_dial_sensitivity_plus, + &button_dial_sensitivity_minus, + &button_rate_multiplier_plus, + &button_rate_multiplier_minus, + &field_encoder_dial_direction}); field_encoder_dial_sensitivity.set_by_value(pmem::encoder_dial_sensitivity()); field_encoder_rate_multiplier.set_value(pmem::encoder_rate_multiplier()); + field_encoder_dial_direction.set_by_value(pmem::encoder_dial_direction()); + + button_dial_sensitivity_plus.on_select = [this](Button&) { + field_encoder_dial_sensitivity.on_encoder(1); + }; + button_dial_sensitivity_minus.on_select = [this](Button&) { + field_encoder_dial_sensitivity.on_encoder(-1); + }; + button_rate_multiplier_plus.on_select = [this](Button&) { + field_encoder_rate_multiplier.on_encoder(1); + }; + button_rate_multiplier_minus.on_select = [this](Button&) { + field_encoder_rate_multiplier.on_encoder(-1); + }; button_save.on_select = [&nav, this](Button&) { pmem::set_encoder_dial_sensitivity(field_encoder_dial_sensitivity.selected_index_value()); pmem::set_encoder_rate_multiplier(field_encoder_rate_multiplier.value()); + pmem::set_encoder_dial_direction(field_encoder_dial_direction.selected_index_value()); nav.pop(); }; @@ -722,6 +721,36 @@ void SetEncoderDialView::focus() { button_save.focus(); } +/* SetButtonsView ************************************/ + +SetButtonsView::SetButtonsView(NavigationView& nav) { + add_children({&labels, + &button_save, + &button_cancel, + &field_repeat_delay, + &field_repeat_speed, + &field_long_press_delay}); + + field_repeat_delay.set_by_value(pmem::ui_button_repeat_delay()); + field_repeat_speed.set_by_value(pmem::ui_button_repeat_speed()); + field_long_press_delay.set_by_value(pmem::ui_button_long_press_delay()); + + button_save.on_select = [&nav, this](Button&) { + pmem::set_ui_button_repeat_delay(field_repeat_delay.selected_index_value()); + pmem::set_ui_button_repeat_speed(field_repeat_speed.selected_index_value()); + pmem::set_ui_button_long_press_delay(field_long_press_delay.selected_index_value()); + nav.pop(); + }; + + button_cancel.on_select = [&nav, this](Button&) { + nav.pop(); + }; +} + +void SetButtonsView::focus() { + button_save.focus(); +} + /* AppSettingsView ************************************/ AppSettingsView::AppSettingsView( @@ -730,7 +759,7 @@ AppSettingsView::AppSettingsView( add_children({&labels, &menu_view}); - menu_view.set_parent_rect({0, 3 * 8, 240, 33 * 8}); + menu_view.set_parent_rect({0, 3 * 8, screen_width, 33 * 8}); ensure_directory(settings_dir); @@ -777,21 +806,35 @@ void SetConfigModeView::focus() { /* SetDisplayView ************************************/ SetDisplayView::SetDisplayView(NavigationView& nav) { - add_children({&button_save, + add_children({&labels, + &field_fake_brightness, + &button_save, &button_cancel, - &checkbox_invert_switch}); + &checkbox_ips_screen_switch, + &checkbox_brightness_switch}); - checkbox_invert_switch.set_value(pmem::config_lcd_inverted_mode()); + field_fake_brightness.set_by_value(pmem::fake_brightness_level()); + checkbox_brightness_switch.set_value(pmem::apply_fake_brightness()); + checkbox_ips_screen_switch.set_value(pmem::config_lcd_normally_black()); button_save.on_select = [&nav, this](Button&) { - if (checkbox_invert_switch.value() != pmem::config_lcd_inverted_mode()) { - display.set_inverted(checkbox_invert_switch.value()); - pmem::set_lcd_inverted_mode(checkbox_invert_switch.value()); + pmem::set_apply_fake_brightness(checkbox_brightness_switch.value()); + pmem::set_fake_brightness_level(field_fake_brightness.selected_index_value()); + if (checkbox_ips_screen_switch.value() != pmem::config_lcd_normally_black()) { + pmem::set_lcd_normally_black(checkbox_ips_screen_switch.value()); } send_system_refresh(); nav.pop(); }; + // only enable invert OR fake brightness + checkbox_ips_screen_switch.on_select = [this](Checkbox&, bool v) { + if (v) checkbox_brightness_switch.set_value(false); + }; + checkbox_brightness_switch.on_select = [this](Checkbox&, bool v) { + if (v) checkbox_ips_screen_switch.set_value(false); + }; + button_cancel.on_select = [&nav, this](Button&) { nav.pop(); }; @@ -957,67 +1000,6 @@ void SetMenuColorView::focus() { button_save.focus(); } -/* SetAutoStartView ************************************/ - -SetAutostartView::SetAutostartView(NavigationView& nav) { - add_children({&labels, - &button_save, - &button_cancel, - &button_reset, - &options}); - - button_save.on_select = [&nav, this](Button&) { - autostart_app = ""; - if (selected != 0) { - auto it = full_app_list.find(selected); - if (it != full_app_list.end()) - autostart_app = it->second; - } - nav.pop(); - }; - - button_cancel.on_select = [&nav, this](Button&) { - nav.pop(); - }; - - button_reset.on_select = [this](Button&) { - selected = 0; - options.set_selected_index(0); - autostart_app = ""; - }; - - // options - i = 0; - OptionsField::option_t o{"-none-", i}; - opts.emplace_back(o); - for (auto& app : NavigationView::appList) { - if (app.id == nullptr) continue; - i++; - o = {app.displayName, i}; - opts.emplace_back(o); - full_app_list.emplace(i, app.id); - if (autostart_app == app.id) selected = i; - } - ExternalItemsMenuLoader::load_all_external_items_callback([this](ui::AppInfoConsole& app) { - if (app.appCallName == nullptr) return; - i++; - OptionsField::option_t o = {app.appFriendlyName, i}; - opts.emplace_back(o); - full_app_list.emplace(i, app.appCallName); - if (autostart_app == app.appCallName) selected = i; - }); - - options.set_options(opts); - options.on_change = [this](size_t, OptionsField::value_t v) { - selected = v; - }; - options.set_selected_index(selected); -} - -void SetAutostartView::focus() { - options.focus(); -} - /* SetThemeView ************************************/ SetThemeView::SetThemeView(NavigationView& nav) { @@ -1061,12 +1043,14 @@ SetBatteryView::SetBatteryView(NavigationView& nav) { add_children({&labels, &button_save, &button_cancel, - &checkbox_overridebatt}); + &checkbox_overridebatt, + &checkbox_battery_charge_hint}); if (i2cdev::I2CDevManager::get_dev_by_model(I2C_DEVMDL::I2CDEVMDL_MAX17055)) add_children({&button_reset, &labels2}); button_save.on_select = [&nav, this](Button&) { pmem::set_ui_override_batt_calc(checkbox_overridebatt.value()); + pmem::set_ui_battery_charge_hint(checkbox_battery_charge_hint.value()); battery::BatteryManagement::set_calc_override(checkbox_overridebatt.value()); send_system_refresh(); nav.pop(); @@ -1081,6 +1065,7 @@ SetBatteryView::SetBatteryView(NavigationView& nav) { }; checkbox_overridebatt.set_value(pmem::ui_override_batt_calc()); + checkbox_battery_charge_hint.set_value(pmem::ui_battery_charge_hint()); button_cancel.on_select = [&nav, this](Button&) { nav.pop(); @@ -1099,9 +1084,12 @@ SettingsMenuView::SettingsMenuView(NavigationView& nav) } void SettingsMenuView::on_populate() { - if (pmem::show_gui_return_icon()) { + const bool return_icon = pmem::show_gui_return_icon(); + + if (return_icon) { add_items({{"..", ui::Color::light_grey(), &bitmap_icon_previous, [this]() { nav_.pop(); }}}); } + add_items({ {"App Settings", ui::Color::dark_cyan(), &bitmap_icon_notepad, [this]() { nav_.push(); }}, {"Audio", ui::Color::dark_cyan(), &bitmap_icon_speaker, [this]() { nav_.push(); }}, @@ -1111,18 +1099,20 @@ void SettingsMenuView::on_populate() { {"Converter", ui::Color::dark_cyan(), &bitmap_icon_options_radio, [this]() { nav_.push(); }}, {"Date/Time", ui::Color::dark_cyan(), &bitmap_icon_options_datetime, [this]() { nav_.push(); }}, {"Encoder Dial", ui::Color::dark_cyan(), &bitmap_icon_setup, [this]() { nav_.push(); }}, + {"Button Speed", ui::Color::dark_cyan(), &bitmap_icon_controls, [this]() { nav_.push(); }}, {"Freq. Correct", ui::Color::dark_cyan(), &bitmap_icon_options_radio, [this]() { nav_.push(); }}, {"P.Memory Mgmt", ui::Color::dark_cyan(), &bitmap_icon_memory, [this]() { nav_.push(); }}, {"Radio", ui::Color::dark_cyan(), &bitmap_icon_options_radio, [this]() { nav_.push(); }}, {"SD Card", ui::Color::dark_cyan(), &bitmap_icon_sdcard, [this]() { nav_.push(); }}, {"User Interface", ui::Color::dark_cyan(), &bitmap_icon_options_ui, [this]() { nav_.push(); }}, - //{"QR Code", ui::Color::dark_cyan(), &bitmap_icon_qr_code, [this]() { nav_.push(); }}, {"Display", ui::Color::dark_cyan(), &bitmap_icon_brightness, [this]() { nav_.push(); }}, {"Menu Color", ui::Color::dark_cyan(), &bitmap_icon_brightness, [this]() { nav_.push(); }}, {"Theme", ui::Color::dark_cyan(), &bitmap_icon_setup, [this]() { nav_.push(); }}, - {"Autostart", ui::Color::dark_cyan(), &bitmap_icon_setup, [this]() { nav_.push(); }}, }); + if (battery::BatteryManagement::isDetected()) add_item({"Battery", ui::Color::dark_cyan(), &bitmap_icon_batt_icon, [this]() { nav_.push(); }}); + + add_external_items(nav_, app_location_t::SETTINGS, *this, return_icon ? 1 : 0); } } /* namespace ui */ diff --git a/firmware/application/apps/ui_settings.hpp b/firmware/application/apps/ui_settings.hpp index 9d31429d3..dcab27d5e 100644 --- a/firmware/application/apps/ui_settings.hpp +++ b/firmware/application/apps/ui_settings.hpp @@ -363,8 +363,12 @@ class SetUIView : public View { {19 * 8, 14 * 16 + 2, 16, 16}, &bitmap_icon_batt_text}; - ImageToggle toggle_sd_card{ + ImageToggle toggle_fake_brightness{ {21 * 8, 14 * 16 + 2, 16, 16}, + &bitmap_icon_brightness}; + + ImageToggle toggle_sd_card{ + {23 * 8, 14 * 16 + 2, 16, 16}, &bitmap_sd_card_ok}; Button button_save{ @@ -541,35 +545,7 @@ class SetAudioView : public View { }; }; -class SetQRCodeView : public View { - public: - SetQRCodeView(NavigationView& nav); - - void focus() override; - - std::string title() const override { return "QR Code"; }; - - private: - Labels labels{ - {{1 * 8, 1 * 16}, "Change the size of the QR", Theme::getInstance()->fg_light->foreground}, - {{1 * 8, 2 * 16}, "code shown in Radiosonde.", Theme::getInstance()->fg_light->foreground}, - }; - - Checkbox checkbox_bigger_qr{ - {3 * 8, 4 * 16}, - 20, - "Show large QR code"}; - - Button button_save{ - {2 * 8, 16 * 16, 12 * 8, 32}, - "Save"}; - - Button button_cancel{ - {16 * 8, 16 * 16, 12 * 8, 32}, - "Cancel", - }; -}; - +using portapack::persistent_memory::encoder_dial_direction; using portapack::persistent_memory::encoder_dial_sensitivity; using portapack::persistent_memory::encoder_rate_multiplier; @@ -583,30 +559,95 @@ class SetEncoderDialView : public View { private: Labels labels{ - {{1 * 8, 1 * 16}, "Adjusts sensitivity to dial", Theme::getInstance()->fg_light->foreground}, - {{1 * 8, 2 * 16}, "rotation position (number of", Theme::getInstance()->fg_light->foreground}, - {{1 * 8, 3 * 16}, "steps per full rotation):", Theme::getInstance()->fg_light->foreground}, - {{2 * 8, 5 * 16}, "Dial sensitivity:", Theme::getInstance()->fg_light->foreground}, - {{1 * 8, 8 * 16}, "Adjusts sensitivity to dial", Theme::getInstance()->fg_light->foreground}, - {{1 * 8, 9 * 16}, "rotation rate (default 1", Theme::getInstance()->fg_light->foreground}, - {{1 * 8, 10 * 16}, "means no rate dependency):", Theme::getInstance()->fg_light->foreground}, - {{3 * 8, 12 * 16}, "Rate multiplier:", Theme::getInstance()->fg_light->foreground}, + {{0 * 8, 0 * 16}, "Sensitivity to dial rotation", Theme::getInstance()->fg_light->foreground}, + {{0 * 8, 1 * 16}, "position (x steps per 360):", Theme::getInstance()->fg_light->foreground}, + {{1 * 8, 3 * 16}, "Sensitivity:", Theme::getInstance()->fg_light->foreground}, + {{0 * 8, 7 * 16}, "Rotation rate (default 1", Theme::getInstance()->fg_light->foreground}, + {{0 * 8, 8 * 16}, "means no rate dependency):", Theme::getInstance()->fg_light->foreground}, + {{2 * 8, 10 * 16}, "Rate multiplier:", Theme::getInstance()->fg_light->foreground}, + {{4 * 8, 14 * 16}, "Direction:", Theme::getInstance()->fg_light->foreground}, + }; OptionsField field_encoder_dial_sensitivity{ - {20 * 8, 5 * 16}, + {20 * 8, 3 * 16}, 6, {{"LOW", encoder_dial_sensitivity::DIAL_SENSITIVITY_LOW}, {"NORMAL", encoder_dial_sensitivity::DIAL_SENSITIVITY_NORMAL}, {"HIGH", encoder_dial_sensitivity::DIAL_SENSITIVITY_HIGH}}}; NumberField field_encoder_rate_multiplier{ - {20 * 8, 12 * 16}, + {20 * 8, 10 * 16}, 2, {1, 15}, 1, ' '}; + OptionsField field_encoder_dial_direction{ + {18 * 8, 14 * 16}, + 7, + {{"NORMAL", false}, + {"REVERSE", true}}}; + + Button button_dial_sensitivity_plus{ + {20 * 8, 2 * 16, 16, 16}, + "+"}; + + Button button_dial_sensitivity_minus{ + {20 * 8, 4 * 16, 16, 16}, + "-"}; + + Button button_rate_multiplier_plus{ + {20 * 8, 9 * 16, 16, 16}, + "+"}; + + Button button_rate_multiplier_minus{ + {20 * 8, 11 * 16, 16, 16}, + "-"}; + + Button button_save{ + {2 * 8, 16 * 16, 12 * 8, 32}, + "Save"}; + + Button button_cancel{ + {16 * 8, 16 * 16, 12 * 8, 32}, + "Cancel", + }; +}; + +class SetButtonsView : public View { + public: + SetButtonsView(NavigationView& nav); + void focus() override; + std::string title() const override { return "Button Speed"; }; + + private: + Labels labels{ + {{1 * 8, 1 * 16}, "Adjusts response time when a", Theme::getInstance()->fg_light->foreground}, + {{1 * 8, 2 * 16}, "button is held down.", Theme::getInstance()->fg_light->foreground}, + {{2 * 8, 5 * 16}, "Repeat delay:", Theme::getInstance()->fg_light->foreground}, + {{2 * 8, 7 * 16}, "Repeat speed:", Theme::getInstance()->fg_light->foreground}, + {{2 * 8, 9 * 16}, "Long press delay:", Theme::getInstance()->fg_light->foreground}, + }; + + OptionsField field_repeat_delay{ + {20 * 8, 5 * 16}, + 6, + {{"NORMAL", false}, + {"FAST", true}}}; + + OptionsField field_repeat_speed{ + {20 * 8, 7 * 16}, + 6, + {{"NORMAL", false}, + {"FAST", true}}}; + + OptionsField field_long_press_delay{ + {20 * 8, 9 * 16}, + 6, + {{"NORMAL", false}, + {"FAST", true}}}; + Button button_save{ {2 * 8, 16 * 16, 12 * 8, 32}, "Save"}; @@ -672,7 +713,7 @@ class AppSettingsView : public View { {{0, 4}, "Select file to edit:", Theme::getInstance()->bg_darkest->foreground}}; MenuView menu_view{ - {0, 2 * 8, 240, 26 * 8}, + {0, 2 * 8, screen_width, 26 * 8}, true}; }; @@ -705,6 +746,7 @@ class SetConfigModeView : public View { "Cancel", }; }; +using portapack::persistent_memory::fake_brightness_level_options; class SetDisplayView : public View { public: @@ -715,10 +757,31 @@ class SetDisplayView : public View { std::string title() const override { return "Display"; }; private: - Checkbox checkbox_invert_switch{ - {1 * 8, 2 * 16}, + Labels labels{ + {{1 * 8, 1 * 16}, "Limits screen brightness", Theme::getInstance()->fg_light->foreground}, + {{1 * 8, 2 * 16}, "(has a small performance", Theme::getInstance()->fg_light->foreground}, + {{1 * 8, 3 * 16}, "impact when enabled).", Theme::getInstance()->fg_light->foreground}, + {{2 * 8, 8 * 16}, "Brightness:", Theme::getInstance()->fg_light->foreground}, + {{2 * 8, 10 * 16}, "REBOOT TO APPLY SCREEN TYPE", Theme::getInstance()->fg_light->foreground}, + + }; + + OptionsField field_fake_brightness{ + {20 * 8, 8 * 16}, + 6, + {{"12.5%", fake_brightness_level_options::BRIGHTNESS_12p5}, + {"25%", fake_brightness_level_options::BRIGHTNESS_25}, + {"50%", fake_brightness_level_options::BRIGHTNESS_50}}}; + + Checkbox checkbox_brightness_switch{ + {1 * 8, 5 * 16}, + 16, + "Enable brightness adjust"}; + + Checkbox checkbox_ips_screen_switch{ + {1 * 8, 12 * 16}, 23, - "Invert colors (For IPS)"}; + "IPS Screen"}; Button button_save{ {2 * 8, 16 * 16, 12 * 8, 32}, @@ -864,47 +927,6 @@ class SetMenuColorView : public View { }; }; -class SetAutostartView : public View { - public: - SetAutostartView(NavigationView& nav); - - void focus() override; - - std::string title() const override { return "Autostart"; }; - - private: - int32_t i = 0; - std::string autostart_app{""}; - OptionsField::options_t opts{}; - std::map full_app_list{}; // looking table - int32_t selected = 0; - SettingsStore nav_setting{ - "nav"sv, - {{"autostart_app"sv, &autostart_app}}}; - Labels labels{ - {{1 * 8, 1 * 16}, "Select app to start on boot", Theme::getInstance()->fg_light->foreground}, - {{2 * 8, 2 * 16}, "(an SD Card is required)", Theme::getInstance()->fg_light->foreground}}; - - Button button_save{ - {2 * 8, 16 * 16, 12 * 8, 32}, - "Save"}; - - OptionsField options{ - {0 * 8, 4 * 16}, - screen_width / 8, - {}, - true}; - - Button button_cancel{ - {16 * 8, 16 * 16, 12 * 8, 32}, - "Cancel", - }; - - Button button_reset{ - {2 * 8, 6 * 16, screen_width - 4 * 8, 32}, - "Reset"}; -}; - class SetThemeView : public View { public: SetThemeView(NavigationView& nav); @@ -925,13 +947,14 @@ class SetThemeView : public View { OptionsField options{ {0 * 8, 4 * 16}, - screen_width / 8, + (size_t)(screen_width / 8), { {"Default - Grey", 0}, {"Yellow", 1}, {"Aqua", 2}, {"Green", 3}, {"Red", 4}, + {"Dark", 5}, }, true}; @@ -958,9 +981,13 @@ class SetBatteryView : public View { int32_t selected = 0; Labels labels{ {{1 * 8, 1 * 16}, "Override batt calculation", Theme::getInstance()->fg_light->foreground}, - {{1 * 8, 2 * 16}, "method to voltage based", Theme::getInstance()->fg_light->foreground}}; - Labels labels2{ - {{1 * 8, 6 * 16}, "Reset IC's learned params.", Theme::getInstance()->fg_light->foreground}}; + {{1 * 8, 2 * 16}, "method to voltage based", Theme::getInstance()->fg_light->foreground}, + /**/ + {{1 * 8, 6 * 16}, "Display a hint to remind you", Theme::getInstance()->fg_light->foreground}, + {{1 * 8, 7 * 16}, "when you charge", Theme::getInstance()->fg_light->foreground}}; + + Labels labels2{{{1 * 8, 11 * 16}, "Reset IC's learned params.", Theme::getInstance()->fg_light->foreground}}; + Button button_save{ {2 * 8, 16 * 16, 12 * 8, 32}, "Save"}; @@ -970,13 +997,18 @@ class SetBatteryView : public View { 23, "Override"}; + Checkbox checkbox_battery_charge_hint{ + {2 * 8, 9 * 16}, + 23, + "Charge hint"}; + Button button_cancel{ {16 * 8, 16 * 16, 12 * 8, 32}, "Cancel", }; Button button_reset{ - {2 * 8, 8 * 16, 12 * 8, 32}, + {2 * 8, 13 * 16, 12 * 8, 32}, "Reset", }; }; @@ -988,6 +1020,7 @@ class SettingsMenuView : public BtnGridView { private: NavigationView& nav_; + void on_populate() override; }; diff --git a/firmware/application/apps/ui_sigfrx.cpp b/firmware/application/apps/ui_sigfrx.cpp index e04933060..516e898fc 100644 --- a/firmware/application/apps/ui_sigfrx.cpp +++ b/firmware/application/apps/ui_sigfrx.cpp @@ -57,7 +57,7 @@ void SIGFRXView::paint(Painter& painter) { uint8_t i, xp; // portapack::display.draw_bmp_from_bmp_hex_arr({0, 302-160}, fox_bmp); - portapack::display.fill_rectangle({0, 16, 240, 160 - 16}, Theme::getInstance()->bg_darkest->foreground); + portapack::display.fill_rectangle({0, 16, screen_width, 160 - 16}, Theme::getInstance()->bg_darkest->foreground); for (i = 0; i < 6; i++) { xp = sigfrx_marks[i * 3]; painter.draw_string({(ui::Coord)sigfrx_marks[(i * 3) + 1], 144 - 20}, style_white, to_string_dec_uint(sigfrx_marks[(i * 3) + 2])); @@ -66,7 +66,7 @@ void SIGFRXView::paint(Painter& painter) { } void SIGFRXView::on_channel_spectrum(const ChannelSpectrum& spectrum) { - portapack::display.fill_rectangle({0, 144, 240, 4}, Theme::getInstance()->bg_darkest->foreground); + portapack::display.fill_rectangle({0, 144, screen_width, 4}, Theme::getInstance()->bg_darkest->foreground); uint8_t xmax = 0, imax = 0; size_t i; diff --git a/firmware/application/apps/ui_siggen.cpp b/firmware/application/apps/ui_siggen.cpp index e34e57d3a..032dbd56c 100644 --- a/firmware/application/apps/ui_siggen.cpp +++ b/firmware/application/apps/ui_siggen.cpp @@ -44,9 +44,9 @@ SigGenView::~SigGenView() { void SigGenView::update_config() { if (checkbox_stop.value()) - baseband::set_siggen_config(transmitter_model.channel_bandwidth(), options_shape.selected_index_value(), field_stop.value()); + baseband::set_siggen_config(transmitter_model.channel_bandwidth(), (options_mod.selected_index_value() << 4) + options_shape.selected_index_value(), field_stop.value()); else - baseband::set_siggen_config(transmitter_model.channel_bandwidth(), options_shape.selected_index_value(), 0); + baseband::set_siggen_config(transmitter_model.channel_bandwidth(), (options_mod.selected_index_value() << 4) + options_shape.selected_index_value(), 0); } void SigGenView::update_tone() { @@ -78,6 +78,7 @@ SigGenView::SigGenView( baseband::run_image(portapack::spi_flash::image_tag_siggen); add_children({&labels, + &options_mod, &options_shape, &text_shape, &symfield_tone, @@ -87,22 +88,48 @@ SigGenView::SigGenView( &field_stop, &tx_view}); - symfield_tone.hidden(1); // At first launch , by default we are in CW Shape has NO MOD , we are not using Tone modulation. + symfield_tone.hidden(true); // At first launch , by default we are in CW: Shape ignored, we are not using Tone modulation. + options_shape.hidden(true); + text_shape.hidden(true); symfield_tone.set_value(1000); // Default: 1000 Hz options_shape.on_change = [this](size_t, OptionsField::value_t v) { text_shape.set(shape_strings[v]); if (auto_update) update_config(); - if ((v == 0) || (v == 6)) { // In Shapes Options (CW & Pseudo Random Noise) we are not using Tone modulation freq. - symfield_tone.hidden(1); + + if (v == 5) { // In Shape Pseudo Random Noise we are not using Tone modulation freq. + symfield_tone.hidden(true); } else { - symfield_tone.hidden(0); + symfield_tone.hidden(false); } + set_dirty(); }; options_shape.set_selected_index(0); text_shape.set(shape_strings[0]); + options_mod.on_change = [this](size_t, OptionsField::value_t v) { + if (auto_update) + update_config(); + + if (v == 0) { // In Modulation Options CW we are not using Tone modulation freq. + symfield_tone.hidden(true); + } else { + symfield_tone.hidden(false); + } + + if ((v == 0) || (v == 2) || (v == 3) || (v == 7)) { // In Modulation Options CW, QPSK, BPSK, Pulsed CW we are not using Shapes. + options_shape.hidden(true); + text_shape.hidden(true); + } else { + options_shape.hidden(false); + text_shape.hidden(false); + } + + set_dirty(); + }; + options_mod.set_selected_index(0); + field_stop.set_value(1); symfield_tone.set_value(1000); // Default: 1000 Hz @@ -127,6 +154,13 @@ SigGenView::SigGenView( }; }; + tx_view.on_bandwidth_changed = [this]() { + // we don't protect here with auto_update because other field of tx_view obj isn't protected too + // to remains the design logic same + + update_config(); + }; + tx_view.on_start = [this]() { start_tx(); tx_view.set_transmitting(true); @@ -138,4 +172,4 @@ SigGenView::SigGenView( }; } -} /* namespace ui */ +} /* namespace ui */ \ No newline at end of file diff --git a/firmware/application/apps/ui_siggen.hpp b/firmware/application/apps/ui_siggen.hpp index efd7dceaf..bbeeba28b 100644 --- a/firmware/application/apps/ui_siggen.hpp +++ b/firmware/application/apps/ui_siggen.hpp @@ -58,68 +58,74 @@ class SigGenView : public View { app_settings::SettingsManager settings_{ "tx_siggen", app_settings::Mode::TX}; - const std::string shape_strings[9] = { - "CW (No mod.) ", - "Sine mod. FM", - "Triangle mod.FM", // max 15 character text space. - "Saw up mod. FM", - "Saw down mod.FM", - "Square mod. FM", - "Pseudo Noise FM", // using 16 bits LFSR register, 16 order polynomial feedback. - "BPSK 0,1,0,1...", - "QPSK 00-01-10.."}; + const std::string shape_strings[6] = {// max 15 character text space. + "Sine", + "Triangle", + "Saw up", + "Saw down", + "Square", + "Pseudo Noise"}; bool auto_update{false}; Labels labels{ - {{3 * 8, 4 + 10}, "Shape:", Theme::getInstance()->fg_light->foreground}, - {{6 * 8, 7 * 8}, "Tone: Hz", Theme::getInstance()->fg_light->foreground}, - {{22 * 8, 15 * 8 + 4}, "s.", Theme::getInstance()->fg_light->foreground}, - {{8 * 8, 20 * 8}, "Modulation: FM", Theme::getInstance()->fg_light->foreground}}; + {{3 * 8, 2 * 8}, "Modulation:", Theme::getInstance()->fg_light->foreground}, + {{3 * 8, 3 * 8 + 8 + 10}, "Shape:", Theme::getInstance()->fg_light->foreground}, + {{6 * 8, 2 * 8 + 7 * 8}, "Tone: Hz", Theme::getInstance()->fg_light->foreground}, + {{22 * 8, 2 * 8 + 15 * 8 + 4}, "s.", Theme::getInstance()->fg_light->foreground}}; ImageOptionsField options_shape{ - {10 * 8, 4, 32, 32}, + {10 * 8, 3 * 8 + 8, 32, 32}, Theme::getInstance()->bg_darkest->foreground, Theme::getInstance()->bg_darkest->background, - {{&bitmap_sig_cw, 0}, - {&bitmap_sig_sine, 1}, - {&bitmap_sig_tri, 2}, - {&bitmap_sig_saw_up, 3}, - {&bitmap_sig_saw_down, 4}, - {&bitmap_sig_square, 5}, - {&bitmap_sig_noise, 6}, - {&bitmap_sig_noise, 7}, // Pending to add a correct BPSK icon. - {&bitmap_sig_noise, 8}}}; // Pending to add a correct QPSK icon. + {{&bitmap_sig_sine, 0}, + {&bitmap_sig_tri, 1}, + {&bitmap_sig_saw_up, 2}, + {&bitmap_sig_saw_down, 3}, + {&bitmap_sig_square, 4}, + {&bitmap_sig_noise, 5}}}; Text text_shape{ - {15 * 8, 4 + 10, 15 * 8, 16}, + {15 * 8, 3 * 8 + 8 + 10, 15 * 8, 16}, ""}; SymField symfield_tone{ - {12 * 8, 7 * 8}, + {12 * 8, 2 * 8 + 7 * 8}, 5}; Button button_update{ - {5 * 8, 10 * 8, 8 * 8, 3 * 8}, + {5 * 8, 2 * 8 + 10 * 8, 8 * 8, 3 * 8}, "Update"}; Checkbox checkbox_auto{ - {15 * 8, 10 * 8}, + {15 * 8, 2 * 8 + 10 * 8}, 4, "Auto"}; Checkbox checkbox_stop{ - {5 * 8, 15 * 8}, + {5 * 8, 2 * 8 + 15 * 8}, 10, "Stop after"}; NumberField field_stop{ - {20 * 8, 15 * 8 + 4}, + {20 * 8, 2 * 8 + 15 * 8 + 4}, 2, {1, 99}, 1, ' '}; + OptionsField options_mod{ + {15 * 8, 2 * 8}, + 12, + {{"CW (No mod.)", 0}, + {"FM", 1}, + {"BPSK", 2}, + {"QPSK", 3}, + {"DSB", 4}, + {"AM 100% dep.", 5}, + {"AM 50% depth", 6}, + {"Pulse CW 25%", 7}}}; + TransmitterView tx_view{ 16 * 16, 10000, diff --git a/firmware/application/apps/ui_sonde.hpp b/firmware/application/apps/ui_sonde.hpp index 886ee44e4..2f1a4c0aa 100644 --- a/firmware/application/apps/ui_sonde.hpp +++ b/firmware/application/apps/ui_sonde.hpp @@ -120,7 +120,7 @@ class SondeView : public View { {21 * 8, 0, 6 * 8, 4}}; AudioVolumeField field_volume{ - {28 * 8, 0 * 16}}; + {screen_width - 2 * 8, 0 * 16}}; Checkbox check_log{ {22 * 8, 8 * 16}, diff --git a/firmware/application/apps/ui_ss_viewer.cpp b/firmware/application/apps/ui_ss_viewer.cpp index a0741041f..67ead2955 100644 --- a/firmware/application/apps/ui_ss_viewer.cpp +++ b/firmware/application/apps/ui_ss_viewer.cpp @@ -58,7 +58,7 @@ void ScreenshotViewer::paint(Painter& painter) { } // Screenshots from PNGWriter are all this size. - if (file.size() != 232383) { + if ((file.size() != 232383 && screen_width == 240) || (screen_width == 320 && file.size() != 463743)) { show_invalid(); return; } @@ -66,7 +66,7 @@ void ScreenshotViewer::paint(Painter& painter) { constexpr size_t read_chunk = 80; // NB: must be a factor of pixel_width. constexpr size_t buffer_size = sizeof(ColorRGB888) * read_chunk; uint8_t buffer[buffer_size]; - std::array pixel_data; + std::vector pixel_data(screen_width); // Seek past all the headers. file.seek(43); diff --git a/firmware/application/apps/ui_subghzd.cpp b/firmware/application/apps/ui_subghzd.cpp index fa878252c..6a36075cb 100644 --- a/firmware/application/apps/ui_subghzd.cpp +++ b/firmware/application/apps/ui_subghzd.cpp @@ -84,6 +84,7 @@ void SubGhzDView::focus() { SubGhzDView::SubGhzDView(NavigationView& nav) : nav_{nav} { add_children({&rssi, + &channel, &field_rf_amp, &field_lna, &field_vga, diff --git a/firmware/application/apps/ui_subghzd.hpp b/firmware/application/apps/ui_subghzd.hpp index afdf79e20..232357db6 100644 --- a/firmware/application/apps/ui_subghzd.hpp +++ b/firmware/application/apps/ui_subghzd.hpp @@ -129,6 +129,9 @@ class SubGhzDView : public View { {18 * 8, 0 * 16}}; RSSI rssi{ {21 * 8, 0, 6 * 8, 4}}; + Channel channel{ + {21 * 8, 5, 6 * 8, 4}, + }; RxFrequencyField field_frequency{ {0 * 8, 0 * 16}, nav_}; @@ -192,7 +195,7 @@ class SubGhzDRecentEntryDetailView : public View { Text text_id{{6 * 8, 2 * 16, 10 * 8, 16}, "?"}; Console console{ - {0, 4 * 16, 240, screen_height - (4 * 16) - 36}}; + {0, 4 * 16, screen_width, screen_height - (4 * 16) - 36}}; Labels labels{ {{0 * 8, 0 * 16}, "Type:", Theme::getInstance()->fg_light->foreground}, diff --git a/firmware/application/apps/ui_test.cpp b/firmware/application/apps/ui_test.cpp index 1029ac866..348577af1 100644 --- a/firmware/application/apps/ui_test.cpp +++ b/firmware/application/apps/ui_test.cpp @@ -99,8 +99,8 @@ void TestView::on_packet(const testapp::Packet& packet) { display.draw_pixel(Point(cur_x, 4 * 16 + (256 - ((raw_alt - cal_value) / 4))), Color::white()); cur_x++; - if (cur_x >= 240) { - display.fill_rectangle(Rect(0, 5 * 16, 240, 256), Color::black()); + if (cur_x >= screen_width) { + display.fill_rectangle(Rect(0, 5 * 16, screen_width, 256), Color::black()); cur_x = 0; } diff --git a/firmware/application/apps/ui_test.hpp b/firmware/application/apps/ui_test.hpp index c39f60773..48180ab25 100644 --- a/firmware/application/apps/ui_test.hpp +++ b/firmware/application/apps/ui_test.hpp @@ -95,10 +95,10 @@ class TestView : public View { }; Text text_debug_a{ - {0 * 8, 4 * 16, 30 * 8, 16}, + {0 * 8, 4 * 16, screen_width, 16}, "..."}; Text text_debug_b{ - {0 * 8, 5 * 16, 30 * 8, 16}, + {0 * 8, 5 * 16, screen_width, 16}, "..."}; Button button_cal{ diff --git a/firmware/application/apps/ui_text_editor.cpp b/firmware/application/apps/ui_text_editor.cpp index cb57704b2..ac05f5bf5 100644 --- a/firmware/application/apps/ui_text_editor.cpp +++ b/firmware/application/apps/ui_text_editor.cpp @@ -26,6 +26,7 @@ #include "log_file.hpp" #include "string_format.hpp" +#include "irq_controls.hpp" using namespace portapack; namespace fs = std::filesystem; @@ -81,21 +82,75 @@ void TextViewer::paint(Painter& painter) { paint_cursor(painter); } +void TextViewer::enable_long_press() { + // Enable long press on "Select". + SwitchesState config; + config[toUType(Switch::Sel)] = true; + set_switches_long_press_config(config); +} + +void TextViewer::on_focus() { + enable_long_press(); +} + bool TextViewer::on_key(const KeyEvent key) { int16_t delta_col = 0; int16_t delta_line = 0; - if (key == KeyEvent::Left) - delta_col = -1; - else if (key == KeyEvent::Right) - delta_col = 1; - else if (key == KeyEvent::Up) - delta_line = -1; - else if (key == KeyEvent::Down) - delta_line = 1; - else if (key == KeyEvent::Select && on_select) { - on_select(); - return true; + if (key == KeyEvent::Select) { + // Toggle 'digit' mode with long-press. + if (digit_mode_ || key_is_long_pressed(key)) { + digit_mode_ = !digit_mode_; + set_dirty(); + return true; + } + } + + if (digit_mode_) { + switch (key) { + case KeyEvent::Left: + delta_col = -1; + break; + case KeyEvent::Right: + delta_col = 1; + break; + case KeyEvent::Up: + set_value(value_ == 0x0F ? 0x00 : value_ + 1); + break; + case KeyEvent::Down: + set_value(value_ == 0x00 ? 0x0F : value_ - 1); + break; + default: + return false; + } + + if (delta_col == 0 && delta_line == 0) { + return true; + } + } else { + switch (key) { + case KeyEvent::Left: + delta_col = -1; + break; + case KeyEvent::Right: + delta_col = 1; + break; + case KeyEvent::Up: + delta_line = -1; + break; + case KeyEvent::Down: + delta_line = 1; + break; + case KeyEvent::Select: { + if (on_select) { + on_select(); + return true; + } + break; + } + default: + return false; + } } // Always allow cursor direction to be updated. @@ -111,19 +166,42 @@ bool TextViewer::on_key(const KeyEvent key) { bool TextViewer::on_encoder(EncoderEvent delta) { bool updated = false; - if (cursor_.dir == ScrollDirection::Horizontal) - updated = apply_scrolling_constraints(0, delta); - else { - delta *= 16; - updated = apply_scrolling_constraints(delta, 0); + if (digit_mode_) { + if (delta > 0) { + set_value(value_ == 0x0F ? 0x00 : value_ + 1); + } else if (delta < 0) { + set_value(value_ == 0x00 ? 0x0F : value_ - 1); + } + + updated = true; + } else { + if (cursor_.dir == ScrollDirection::Horizontal) { + updated = apply_scrolling_constraints(0, delta); + } else { + delta *= 16; + updated = apply_scrolling_constraints(delta, 0); + } + + if (updated) { + redraw(); + } } - if (updated) - redraw(); - return updated; } +void TextViewer::set_value(uint8_t new_value) { + if (new_value != value_) { + value_ = new_value; + + if (on_change) { + on_change(value_); + } + + set_dirty(); + } +} + void TextViewer::redraw(bool redraw_text, bool redraw_marked) { paint_state_.redraw_text = redraw_text; paint_state_.redraw_marked = redraw_marked; @@ -617,6 +695,7 @@ void TextEditorView::show_edit_line() { edit_line_buffer_, viewer.col(), max_edit_length, + ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& buffer) { auto range = file_->line_range(viewer.line()); if (!range) diff --git a/firmware/application/apps/ui_text_editor.hpp b/firmware/application/apps/ui_text_editor.hpp index 18fdeb654..d40fcaeef 100644 --- a/firmware/application/apps/ui_text_editor.hpp +++ b/firmware/application/apps/ui_text_editor.hpp @@ -54,10 +54,13 @@ class TextViewer : public Widget { std::function on_select{}; std::function on_cursor_moved{}; + std::function on_change{}; void paint(Painter& painter) override; bool on_key(KeyEvent key) override; bool on_encoder(EncoderEvent delta) override; + void set_value(uint8_t new_value); + void on_focus() override; void redraw(bool redraw_text = false, bool redraw_marked = false); @@ -74,6 +77,7 @@ class TextViewer : public Widget { void cursor_set(uint16_t line, uint16_t col); void cursor_mark_selected(); void cursor_clear_marked(); + void enable_long_press(); typedef std::pair LineColPair; std::vector lineColPair{}; @@ -95,6 +99,9 @@ class TextViewer : public Widget { int8_t char_height{}; uint8_t max_line{}; uint8_t max_col{}; + bool digit_mode_{false}; + uint8_t value_{0}; + bool allow_digit_mode_{true}; /* Returns true if the cursor was updated. */ bool apply_scrolling_constraints( diff --git a/firmware/application/apps/ui_weatherstation.cpp b/firmware/application/apps/ui_weatherstation.cpp index 2eae1607f..0c334731e 100644 --- a/firmware/application/apps/ui_weatherstation.cpp +++ b/firmware/application/apps/ui_weatherstation.cpp @@ -107,6 +107,7 @@ void WeatherView::focus() { WeatherView::WeatherView(NavigationView& nav) : nav_{nav} { add_children({&rssi, + &channel, &field_rf_amp, &field_lna, &field_vga, diff --git a/firmware/application/apps/ui_weatherstation.hpp b/firmware/application/apps/ui_weatherstation.hpp index 6c265e517..d12f91029 100644 --- a/firmware/application/apps/ui_weatherstation.hpp +++ b/firmware/application/apps/ui_weatherstation.hpp @@ -147,9 +147,12 @@ class WeatherView : public View { {18 * 8, 0 * 16}}; RSSI rssi{ {21 * 8, 0, 6 * 8, 4}}; + Channel channel{ + {21 * 8, 5, 6 * 8, 4}, + }; AudioVolumeField field_volume{ - {28 * 8, 0 * 16}}; + {screen_width - 2 * 8, 0 * 16}}; RxFrequencyField field_frequency{ {0 * 8, 0 * 16}, diff --git a/firmware/application/baseband_api.cpp b/firmware/application/baseband_api.cpp index e288d9d66..2655f37f9 100644 --- a/firmware/application/baseband_api.cpp +++ b/firmware/application/baseband_api.cpp @@ -66,12 +66,13 @@ static void send_message(const Message* const message) { void AMConfig::apply() const { const AMConfigureMessage message{ - taps_6k0_decim_0, // common FIR filter taps pre-decim_0 to all 5 x AM mod types.(AM-9K, AM-6K, USB, LSB, CW) - taps_6k0_decim_1, // common FIR filter taps pre-decim_1 to all 5 x AM mod. types. - decim_2, // var decim_2 FIR taps filter , variable values, depending selected AM mod(AM 9k / 6k all rest AM modes) - channel, // var channel FIR taps filter , variable values, depending selected AM mode, each one different (DSB-9K, DSB-6K, USB-3K, LSB-3K,CW) - modulation, // var parameter . - audio_12k_hpf_300hz_config}; + taps_6k0_decim_0, // common FIR filter taps pre-decim_0 to all 6 x AM mod types.(AM-9K, AM-6K, USB, LSB, CW, AMFM-WFAX) + decim_1, // var decim_1 FIR taps filter , variable values , to handle two spectrum decim factor 1 and 2 (zoom) and more APT LPF filtered . + decim_2, // var decim_2 FIR taps filter , variable values, depending selected AM mod(AM 9k / 6k and all rest AM modes) + channel, // var channel FIR taps filter , variable values, depending selected AM mode, each one different (DSB-9K, DSB-6K, USB-3K, LSB-3K,CW,AMFM-WFAX) + modulation, // var parameter . enum class Modulation : int32_t {DSB = 0, SSB = 1, SSB_FM = 2} + audio_12k_iir_filter_config, // var parameter , 300 Hz hpf all except Wefax (1.500Hz lpf) + spectrum_decimation_factor}; // var parameter , waterfall no zoom : 1 ,for zoom x 2 : 2 send_message(&message); audio::set_rate(audio::Rate::Hz_12000); } @@ -92,9 +93,9 @@ void NBFMConfig::apply(const uint8_t squelch_level) const { void WFMConfig::apply() const { const WFMConfigureMessage message{ - decim_0, // taps_200k_decim_0 , taps_180k_wfm_decim_0, taps_40k_wfm_decim_0 - decim_1, // taps_200k_decim_1 or taps_180k_wfm_decim_1, taps_40k_wfm_decim_1 - taps_64_lp_156_198, + decim_0, // Dynamic array 24 taps : taps_200k_decim_0 , taps_180k_wfm_decim_0, taps_80k_wfm_decim_0 + decim_1, // Dynamic array 16 taps : taps_200k_decim_1 or taps_180k_wfm_decim_1, taps_80k_wfm_decim_1 + taps_64_lp_156_198, // Fixed channel audio filter 15khz 75000, audio_48k_hpf_30hz_config, audio_48k_deemph_2122_6_config}; @@ -102,6 +103,18 @@ void WFMConfig::apply() const { audio::set_rate(audio::Rate::Hz_48000); } +void WFMAMConfig::apply() const { + const WFMAMConfigureMessage message{ + decim_0, // Fixed 24 taps array : taps_16k0_decim_0 + decim_1, // Dynamic 32 taps array : taps_80k_wfmam_decim_1, 38k_wfmam + taps_64_lp_bpf, // Dynamic 64 taps array , to filter modulated DSB AM 2k4 carrier before demod. AM .(LPF / BPF) + 17000, // NOAA satellite tx , FM deviation = +-17Khz. + apt_audio_12k_notch_2k4_config, + apt_audio_12k_lpf_2000hz_config}; + send_message(&message); + audio::set_rate(audio::Rate::Hz_12000); +} + void set_tone(const uint32_t index, const uint32_t delta, const uint32_t duration) { shared_memory.bb_data.tones_data.tone_defs[index].delta = delta; shared_memory.bb_data.tones_data.tone_defs[index].duration = duration; @@ -173,13 +186,14 @@ void set_nrf(const uint32_t baudrate, const uint32_t word_length, const uint32_t send_message(&message); } -void set_fsk(const size_t deviation) { +void set_fsk(const uint8_t samplesPerSymbol, const uint32_t syncWord, const uint8_t syncWordLength, const uint32_t preamble, const uint8_t preambleLength, uint16_t numDataBytes) { const FSKRxConfigureMessage message{ - taps_200k_decim_0, - taps_16k0_decim_1, - taps_11k0_channel, - 2, - deviation}; + samplesPerSymbol, + syncWord, + syncWordLength, + preamble, + preambleLength, + numDataBytes}; send_message(&message); } @@ -304,6 +318,16 @@ void set_spectrum(const size_t sampling_rate, const size_t trigger) { send_message(&message); } +void set_wefax_config(uint8_t lpm = 120, uint8_t ioc = 0) { + const WeFaxRxConfigureMessage message{lpm, ioc}; + send_message(&message); +} + +void set_noaaapt_config() { + const NoaaAptRxConfigureMessage message{}; + send_message(&message); +} + void set_siggen_tone(const uint32_t tone) { const SigGenToneMessage message{ TONES_F2D(tone, TONES_SAMPLERATE)}; diff --git a/firmware/application/baseband_api.hpp b/firmware/application/baseband_api.hpp index a594fc273..84d5f292a 100644 --- a/firmware/application/baseband_api.hpp +++ b/firmware/application/baseband_api.hpp @@ -36,9 +36,12 @@ namespace baseband { struct AMConfig { - const fir_taps_real<32> decim_2; // added to handle two types decim_2 9k, 6k + const fir_taps_real<32> decim_1; // added to handle two var LPF in AMFM to avoid aliasing when spectrum zoom factor 2. + const fir_taps_real<32> decim_2; // added to handle two var types decim_2 9k, 6k const fir_taps_complex<64> channel; const AMConfigureMessage::Modulation modulation; + const iir_biquad_config_t audio_12k_iir_filter_config; // added to handle two var IIR filter types : 300 hpf(as before) , 1500Hz lpf for Wefax. + const size_t spectrum_decimation_factor; // used to handle LCD AM waterfall zoom x1 / zoom x2. void apply() const; }; @@ -53,12 +56,20 @@ struct NBFMConfig { }; struct WFMConfig { - const fir_taps_real<24> decim_0; // To handle both WFM filters , 200k and 40K for NOAA APT + const fir_taps_real<24> decim_0; // To handle all 3 WFM filters , 200k, 180k and 80K- const fir_taps_real<16> decim_1; void apply() const; }; +struct WFMAMConfig { + const fir_taps_real<24> decim_0; // To handle WFM filter BW=40K for NOAA APT + const fir_taps_real<32> decim_1; + const fir_taps_real<64> taps_64_lp_bpf; // to handle dynamically LPF / BPF . + + void apply() const; +}; + void set_tone(const uint32_t index, const uint32_t delta, const uint32_t duration); void set_tones_config(const uint32_t bw, const uint32_t pre_silence, const uint16_t tone_count, const bool dual_tone, const bool audio_out); void kill_tone(); @@ -69,7 +80,7 @@ void set_pitch_rssi(int32_t avg, bool enabled); void set_afsk_data(const uint32_t afsk_samples_per_bit, const uint32_t afsk_phase_inc_mark, const uint32_t afsk_phase_inc_space, const uint8_t afsk_repeat, const uint32_t afsk_bw, const uint8_t symbol_count); void kill_afsk(); void set_afsk(const uint32_t baudrate, const uint32_t word_length, const uint32_t trigger_value, const bool trigger_word); -void set_fsk(const size_t deviation); +void set_fsk(const uint32_t samplesPerSymbol, const uint32_t syncWord, const uint8_t syncWordLength, const uint32_t preamble, const uint8_t preambleLength, uint16_t numDataBytes); void set_aprs(const uint32_t baudrate); void set_btlerx(uint8_t channel_number); @@ -89,6 +100,8 @@ void set_siggen_tone(const uint32_t tone); void set_siggen_config(const uint32_t bw, const uint32_t shape, const uint32_t duration); void set_spectrum_painter_config(const uint16_t width, const uint16_t height, bool update, int32_t bw); void set_subghzd_config(uint8_t modulation, uint32_t sampling_rate); +void set_wefax_config(uint8_t lpm, uint8_t ioc); +void set_noaaapt_config(); void request_roger_beep(); void request_rssi_beep(); diff --git a/firmware/application/binder.hpp b/firmware/application/binder.hpp index 1b4c01ec0..40e877829 100644 --- a/firmware/application/binder.hpp +++ b/firmware/application/binder.hpp @@ -25,6 +25,7 @@ #include "ui.hpp" #include "ui_navigation.hpp" #include "ui_widget.hpp" +#include "ui_textentry.hpp" namespace ui { @@ -105,7 +106,7 @@ void bind(TextField& field, T& value, NavigationView& nav, Fn fn = Fn{}) { // Capture a new string and make the lambda mutable so it can be modified. field.on_select = [&nav, buf = std::string{}](TextField& tf) mutable { buf = tf.get_text(); - text_prompt(nav, buf, /*max_length*/ 255, + text_prompt(nav, buf, /*max_length*/ 255, ENTER_KEYBOARD_MODE_ALPHA, [&tf](std::string& str) { tf.set_text(str); }); diff --git a/firmware/application/bitmap.hpp b/firmware/application/bitmap.hpp index 704d727c6..f3e1767d2 100644 --- a/firmware/application/bitmap.hpp +++ b/firmware/application/bitmap.hpp @@ -29,543 +29,429 @@ namespace ui { -static constexpr uint8_t bitmap_icon_receivers_data[] = { - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x98, - 0x19, - 0xB0, - 0x0D, - 0xE0, - 0x07, - 0xC0, - 0x03, - 0x83, - 0xC1, - 0x03, - 0xC0, - 0xFF, - 0xFF, - 0xFF, - 0xFF, -}; -static constexpr Bitmap bitmap_icon_receivers{ - {16, 16}, - bitmap_icon_receivers_data}; - -static constexpr uint8_t bitmap_icon_utilities_data[] = { - 0x30, - 0x24, - 0x78, - 0x66, - 0x78, - 0x66, - 0x78, - 0x7E, - 0x78, - 0x3C, - 0x78, - 0x18, - 0x78, - 0x18, - 0x30, - 0x3C, - 0x30, - 0x3C, - 0x30, - 0x3C, - 0x30, - 0x3C, - 0x30, - 0x3C, - 0x30, - 0x3C, - 0x30, - 0x3C, - 0x30, - 0x18, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_utilities{ - {16, 16}, - bitmap_icon_utilities_data}; - -static constexpr uint8_t bitmap_stripes_data[] = { - 0xFF, - 0x03, - 0xC0, - 0xFF, - 0x01, - 0xE0, - 0xFF, - 0x00, - 0xF0, - 0x7F, - 0x00, - 0xF8, - 0x3F, - 0x00, - 0xFC, - 0x1F, - 0x00, - 0xFE, - 0x0F, - 0x00, - 0xFF, - 0x07, - 0x80, - 0xFF, -}; -static constexpr Bitmap bitmap_stripes{ - {24, 8}, - bitmap_stripes_data}; - -static constexpr uint8_t bitmap_icon_sstv_data[] = { +static constexpr uint8_t bitmap_arrow_left_data[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, - 0xFE, - 0x7F, - 0x03, - 0xC0, - 0x53, - 0xD5, - 0xAB, - 0xCA, - 0x53, - 0xD5, - 0xAB, - 0xCA, - 0x53, - 0xD5, - 0xAB, - 0xCA, - 0x53, - 0xD5, - 0x03, - 0xC0, - 0xFF, - 0xFF, - 0xFB, - 0xD7, - 0xFE, - 0x7F, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_sstv{ - {16, 16}, - bitmap_icon_sstv_data}; - -static constexpr uint8_t bitmap_icon_morse_data[] = { - 0x00, - 0x00, - 0xFE, - 0x7F, - 0xFF, - 0xFF, - 0xBB, - 0xD0, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0x0B, - 0xE1, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xEB, - 0xD0, - 0xFF, - 0xFF, - 0xFE, - 0x7F, - 0x70, - 0x00, - 0x30, - 0x00, - 0x10, 0x00, 0x00, 0x00, -}; -static constexpr Bitmap bitmap_icon_morse{ - {16, 16}, - bitmap_icon_morse_data}; - -static constexpr uint8_t bitmap_icon_file_wav_data[] = { - 0xFC, - 0x03, - 0x04, - 0x06, - 0x04, - 0x0E, - 0x04, - 0x1E, - 0x04, - 0x3E, - 0x84, 0x20, - 0xC4, - 0x22, - 0xF4, - 0x20, - 0xF4, - 0x2E, - 0xF4, - 0x20, - 0xC4, - 0x22, - 0x84, - 0x24, - 0x04, - 0x28, - 0x04, - 0x20, - 0x04, - 0x20, - 0xFC, - 0x3F, -}; -static constexpr Bitmap bitmap_icon_file_wav{ - {16, 16}, - bitmap_icon_file_wav_data}; - -static constexpr uint8_t bitmap_icon_tetra_data[] = { - 0xE0, - 0x0F, - 0x18, + 0x00, + 0x30, + 0x00, 0x38, - 0xE4, - 0x67, - 0x7E, - 0xCE, - 0xC7, - 0xCC, + 0x00, + 0xFC, + 0x7F, + 0xFE, + 0x7F, + 0xFC, + 0x7F, + 0x38, + 0x00, + 0x30, + 0x00, + 0x20, 0x00, 0x00, - 0xFF, - 0x4F, - 0xBA, - 0xB2, - 0x9A, - 0xEE, - 0xBA, - 0xB2, 0x00, 0x00, - 0x3B, - 0xE3, - 0x73, - 0x7E, - 0xC6, - 0x27, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_arrow_left{ + {16, 16}, + bitmap_arrow_left_data}; + +static constexpr uint8_t bitmap_arrow_right_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 0x0C, + 0x00, 0x1C, - 0x18, - 0xF0, - 0x07, -}; -static constexpr Bitmap bitmap_icon_tetra{ - {16, 16}, - bitmap_icon_tetra_data}; - -static constexpr uint8_t bitmap_icon_debug_data[] = { 0xFE, - 0x03, - 0x02, - 0x07, - 0x2A, - 0x0D, - 0x52, - 0x0F, - 0x2A, - 0x08, - 0x52, - 0x09, - 0xAA, - 0x0A, - 0x52, - 0x09, - 0xAA, - 0x0A, - 0x52, - 0x01, - 0xAA, - 0x12, - 0x02, - 0x08, - 0x02, - 0xFC, - 0x02, - 0x08, - 0xFE, - 0x13, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_debug{ - {16, 16}, - bitmap_icon_debug_data}; - -static constexpr uint8_t bitmap_icon_downconvert_data[] = { - 0x00, - 0x00, - 0x77, - 0x77, - 0x51, - 0x51, - 0x33, - 0x53, - 0x51, - 0x51, - 0x51, - 0x77, - 0x00, - 0x80, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0xF8, - 0x1F, - 0xF0, - 0x0F, - 0xE0, - 0x07, - 0xC0, - 0x03, - 0x80, - 0x01, -}; -static constexpr Bitmap bitmap_icon_downconvert{ - {16, 16}, - bitmap_icon_downconvert_data}; - -static constexpr uint8_t bitmap_icon_speaker_and_headphones_data[] = { - 0x20, - 0x10, - 0x30, - 0x20, - 0x38, - 0x44, - 0x3E, - 0x48, - 0x3E, - 0x91, - 0x3E, - 0x92, - 0x38, - 0x92, - 0x30, - 0x92, - 0x20, - 0x92, - 0x00, - 0x92, - 0x30, - 0x91, - 0x48, - 0x48, - 0x84, - 0x44, - 0x84, - 0x20, - 0x86, - 0x11, - 0x86, - 0x01, -}; -static constexpr Bitmap bitmap_icon_speaker_and_headphones{ - {16, 16}, - bitmap_icon_speaker_and_headphones_data}; - -static constexpr uint8_t bitmap_more_data[] = { - 0x10, - 0x10, - 0x10, - 0x10, - 0x54, - 0x38, - 0x10, - 0x00, -}; -static constexpr Bitmap bitmap_more{ - {8, 8}, - bitmap_more_data}; - -static constexpr uint8_t bitmap_icon_nuoptix_data[] = { - 0x80, - 0x01, - 0x80, - 0x01, - 0x40, - 0x02, - 0x40, - 0x1A, - 0x40, - 0x1A, - 0x20, - 0x0C, - 0x20, - 0x0F, - 0x20, - 0x1E, - 0x10, - 0x0E, - 0x10, - 0x0B, - 0x10, - 0x0B, - 0xF8, - 0x1F, - 0xF8, - 0x1F, - 0xF8, - 0x1F, - 0xFC, 0x3F, - 0xFC, - 0x3F, -}; -static constexpr Bitmap bitmap_icon_nuoptix{ - {16, 16}, - bitmap_icon_nuoptix_data}; - -static constexpr uint8_t bitmap_icon_search_data[] = { - 0xF8, - 0x01, - 0xFC, - 0x03, - 0x0E, - 0x07, - 0x07, - 0x0E, - 0x03, - 0x0C, - 0x0B, - 0x0C, - 0x0B, - 0x0C, - 0x13, - 0x0C, - 0x07, - 0x0E, - 0x0E, - 0x07, - 0xFC, - 0x1F, - 0xF8, - 0x3D, - 0x00, - 0x7C, - 0x00, - 0xF8, - 0x00, - 0xF0, - 0x00, - 0x60, -}; -static constexpr Bitmap bitmap_icon_search{ - {16, 16}, - bitmap_icon_search_data}; - -static constexpr uint8_t bitmap_icon_biast_on_data[] = { - 0x00, - 0x00, 0xFE, 0x7F, + 0xFE, + 0x3F, 0x00, - 0x04, - 0x00, - 0x08, - 0x20, - 0x10, - 0x20, - 0x08, - 0x30, - 0x04, - 0x30, - 0x08, - 0xF8, - 0x10, - 0x60, - 0x08, - 0x60, - 0x04, - 0x20, - 0x08, - 0x20, - 0x10, - 0x00, - 0x08, - 0x00, - 0x04, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_biast_on{ - {16, 16}, - bitmap_icon_biast_on_data}; - -static constexpr uint8_t bitmap_icon_cwgen_data[] = { - 0x18, - 0x00, - 0x24, - 0x00, - 0x42, - 0x00, - 0x42, - 0x00, - 0x42, - 0x00, - 0x42, - 0x00, - 0x81, - 0x00, - 0xAB, - 0x6A, - 0x80, - 0x40, - 0x00, - 0x21, - 0x00, - 0x21, - 0x00, - 0x21, - 0x00, - 0x21, - 0x00, - 0x12, + 0x1C, 0x00, 0x0C, 0x00, + 0x04, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, 0x00, }; -static constexpr Bitmap bitmap_icon_cwgen{ +static constexpr Bitmap bitmap_arrow_right{ {16, 16}, - bitmap_icon_cwgen_data}; + bitmap_arrow_right_data}; + +static constexpr uint8_t bitmap_bulb_ignore_data[] = { + 0x00, + 0x3C, + 0x00, + 0x00, + 0xC3, + 0x00, + 0x80, + 0x00, + 0x01, + 0x40, + 0x3C, + 0x02, + 0x20, + 0x7E, + 0x04, + 0x20, + 0xE7, + 0x04, + 0x10, + 0xC3, + 0x08, + 0x10, + 0xE3, + 0x08, + 0x10, + 0x70, + 0x08, + 0x10, + 0x38, + 0x08, + 0x10, + 0x18, + 0x08, + 0x20, + 0x18, + 0x04, + 0x20, + 0x00, + 0x04, + 0x40, + 0x18, + 0x02, + 0x80, + 0x18, + 0x01, + 0x00, + 0xC3, + 0x00, + 0x00, + 0xFF, + 0x00, + 0x00, + 0xBD, + 0x00, + 0x00, + 0xC3, + 0x00, + 0x00, + 0xBD, + 0x00, + 0x00, + 0xC3, + 0x00, + 0x00, + 0xBD, + 0x00, + 0x00, + 0x42, + 0x00, + 0x00, + 0x3C, + 0x00, +}; +static constexpr Bitmap bitmap_bulb_ignore{ + {24, 24}, + bitmap_bulb_ignore_data}; + +static constexpr uint8_t bitmap_bulb_off_data[] = { + 0x00, + 0x3C, + 0x00, + 0x00, + 0xC3, + 0x00, + 0x80, + 0x00, + 0x01, + 0x40, + 0x00, + 0x02, + 0x20, + 0x00, + 0x04, + 0x20, + 0x00, + 0x04, + 0x10, + 0x00, + 0x08, + 0x10, + 0x42, + 0x08, + 0x10, + 0x42, + 0x08, + 0x10, + 0x24, + 0x08, + 0x10, + 0x24, + 0x08, + 0x20, + 0x24, + 0x04, + 0x20, + 0x2C, + 0x04, + 0x40, + 0x34, + 0x02, + 0x80, + 0x3C, + 0x01, + 0x00, + 0xFF, + 0x00, + 0x00, + 0xE3, + 0x00, + 0x00, + 0xBD, + 0x00, + 0x00, + 0xC3, + 0x00, + 0x00, + 0xBD, + 0x00, + 0x00, + 0xC3, + 0x00, + 0x00, + 0xBD, + 0x00, + 0x00, + 0x42, + 0x00, + 0x00, + 0x3C, + 0x00, +}; +static constexpr Bitmap bitmap_bulb_off{ + {24, 24}, + bitmap_bulb_off_data}; + +static constexpr uint8_t bitmap_bulb_on_data[] = { + 0x04, + 0x3C, + 0x20, + 0x08, + 0xFF, + 0x10, + 0x90, + 0xFF, + 0x09, + 0xC0, + 0xFF, + 0x03, + 0xE0, + 0xFF, + 0x07, + 0xE0, + 0xFF, + 0x07, + 0xF0, + 0xE7, + 0x0F, + 0xF0, + 0xBD, + 0x0F, + 0xF7, + 0xBD, + 0xEF, + 0xF0, + 0xDB, + 0x0F, + 0xF0, + 0xDB, + 0x0F, + 0xE0, + 0xDB, + 0x07, + 0xE0, + 0xCB, + 0x07, + 0xC0, + 0xD3, + 0x03, + 0x90, + 0xCB, + 0x09, + 0x08, + 0xFD, + 0x10, + 0x04, + 0xE3, + 0x20, + 0x00, + 0xBD, + 0x00, + 0x00, + 0xC3, + 0x00, + 0x00, + 0xBD, + 0x00, + 0x00, + 0xC3, + 0x00, + 0x00, + 0xBD, + 0x00, + 0x00, + 0x42, + 0x00, + 0x00, + 0x3C, + 0x00, +}; +static constexpr Bitmap bitmap_bulb_on{ + {24, 24}, + bitmap_bulb_on_data}; + +static constexpr uint8_t bitmap_icon_add_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0xF8, + 0x1F, + 0xF8, + 0x1F, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_add{ + {16, 16}, + bitmap_icon_add_data}; + +static constexpr uint8_t bitmap_icon_adsb_data[] = { + 0x80, + 0x01, + 0xC0, + 0x03, + 0xC0, + 0x03, + 0xC0, + 0x03, + 0xC0, + 0x03, + 0xE0, + 0x07, + 0xF8, + 0x1F, + 0xFE, + 0x7F, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xC0, + 0x03, + 0xC0, + 0x03, + 0xC0, + 0x03, + 0xE0, + 0x07, + 0xF0, + 0x0F, + 0xF8, + 0x1F, +}; +static constexpr Bitmap bitmap_icon_adsb{ + {16, 16}, + bitmap_icon_adsb_data}; + +static constexpr uint8_t bitmap_icon_ais_data[] = { + 0x00, + 0x01, + 0x80, + 0x01, + 0xC0, + 0x01, + 0xC0, + 0x0D, + 0xE0, + 0x3D, + 0xF0, + 0x3D, + 0xF8, + 0x7D, + 0xFC, + 0x7D, + 0xFC, + 0x7D, + 0xFE, + 0x7D, + 0xFF, + 0x7D, + 0x00, + 0x00, + 0xF8, + 0x7F, + 0xF8, + 0x3F, + 0xF0, + 0x0F, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_ais{ + {16, 16}, + bitmap_icon_ais_data}; static constexpr uint8_t bitmap_icon_aprs_data[] = { 0x00, @@ -605,425 +491,81 @@ static constexpr Bitmap bitmap_icon_aprs{ {16, 16}, bitmap_icon_aprs_data}; -static constexpr uint8_t bitmap_icon_burger_data[] = { +static constexpr uint8_t bitmap_icon_back_data[] = { 0x00, 0x00, - 0xE0, - 0x07, - 0xF8, - 0x1F, - 0xFC, + 0x30, + 0x00, + 0x38, + 0x00, + 0x1C, + 0x00, + 0x0E, + 0x00, + 0xFF, 0x3F, - 0xFE, + 0xFF, 0x7F, - 0xFF, - 0xFF, - 0xFF, - 0xFF, + 0x0E, + 0xE0, + 0x1C, + 0xC0, + 0x38, + 0xC0, + 0x30, + 0xC0, 0x00, + 0xE0, 0x00, - 0x55, - 0x55, - 0xAA, - 0xAA, - 0x55, - 0x55, - 0x00, - 0x00, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFE, 0x7F, 0x00, + 0x3F, + 0x00, + 0x00, + 0x00, 0x00, }; -static constexpr Bitmap bitmap_icon_burger{ +static constexpr Bitmap bitmap_icon_back{ {16, 16}, - bitmap_icon_burger_data}; + bitmap_icon_back_data}; -static constexpr uint8_t bitmap_sig_tri_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x03, - 0xC0, - 0x00, - 0x00, - 0x03, - 0xC0, - 0x00, - 0x80, - 0x07, - 0xE0, - 0x01, - 0x80, - 0x07, - 0xE0, - 0x01, - 0xC0, - 0x0C, - 0x30, - 0x03, - 0xC0, - 0x0C, - 0x30, - 0x03, - 0x60, - 0x18, - 0x18, - 0x06, - 0x60, - 0x18, - 0x18, - 0x06, - 0x30, - 0x30, - 0x0C, - 0x0C, - 0x30, - 0x30, - 0x0C, - 0x0C, - 0x18, - 0x60, - 0x06, - 0x18, - 0x18, - 0x60, - 0x06, - 0x18, - 0x0E, +static constexpr uint8_t bitmap_icon_batt_icon_data[] = { 0xC0, 0x03, - 0x70, - 0x0E, 0xC0, 0x03, - 0x70, - 0x06, - 0x80, - 0x01, - 0x60, - 0x06, - 0x80, - 0x01, - 0x60, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_sig_tri{ - {32, 32}, - bitmap_sig_tri_data}; - -static constexpr uint8_t bitmap_sig_sine_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x03, - 0xC0, - 0x00, - 0x80, - 0x07, - 0xE0, - 0x01, - 0xC0, + 0xF0, + 0x0F, + 0x10, + 0x08, + 0x10, + 0x08, + 0x10, + 0x08, + 0x10, + 0x08, + 0x10, + 0x08, + 0xF0, 0x0F, 0xF0, - 0x03, - 0xC0, - 0x0C, - 0x30, - 0x03, - 0x60, - 0x18, - 0x18, - 0x06, - 0x60, - 0x18, - 0x18, - 0x06, - 0x60, - 0x18, - 0x18, - 0x06, - 0x60, - 0x18, - 0x18, - 0x06, - 0x30, - 0x30, - 0x0C, - 0x0C, - 0x30, - 0x30, - 0x0C, - 0x0C, - 0x30, - 0x30, - 0x0C, - 0x0C, - 0x30, - 0x30, - 0x0C, - 0x0C, - 0x18, - 0x60, - 0x06, - 0x18, - 0x1E, - 0xE0, - 0x07, - 0x78, - 0x0E, - 0xC0, - 0x03, - 0x70, - 0x06, - 0x80, - 0x01, - 0x60, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, + 0x0F, + 0xF0, + 0x0F, + 0xF0, + 0x0F, + 0xF0, + 0x0F, + 0xF0, + 0x0F, + 0xF0, + 0x0F, 0x00, 0x00, }; -static constexpr Bitmap bitmap_sig_sine{ - {32, 32}, - bitmap_sig_sine_data}; - -static constexpr uint8_t bitmap_icon_biast_off_data[] = { - 0x00, - 0x00, - 0xFE, - 0x7F, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x10, - 0x00, - 0x08, - 0x88, - 0x04, - 0x50, - 0x08, - 0x20, - 0x10, - 0x50, - 0x08, - 0x88, - 0x04, - 0x00, - 0x08, - 0x00, - 0x10, - 0x00, - 0x08, - 0x00, - 0x04, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_biast_off{ +static constexpr Bitmap bitmap_icon_batt_icon{ {16, 16}, - bitmap_icon_biast_off_data}; - -static constexpr uint8_t bitmap_icon_previous_data[] = { - 0x00, - 0x00, - 0xC0, - 0x00, - 0xE0, - 0x00, - 0x70, - 0x00, - 0x38, - 0x00, - 0x1C, - 0x00, - 0x0E, - 0x00, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0x0E, - 0x00, - 0x1C, - 0x00, - 0x38, - 0x00, - 0x70, - 0x00, - 0xE0, - 0x00, - 0xC0, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_previous{ - {16, 16}, - bitmap_icon_previous_data}; - -static constexpr uint8_t bitmap_icon_tools_antenna_data[] = { - 0x38, - 0x3E, - 0x10, - 0x22, - 0x10, - 0x26, - 0x10, - 0x22, - 0x10, - 0x2E, - 0x10, - 0x22, - 0x10, - 0x26, - 0x10, - 0x22, - 0x38, - 0x2E, - 0x38, - 0x22, - 0x38, - 0x26, - 0x38, - 0x22, - 0x38, - 0x2E, - 0x38, - 0x22, - 0x38, - 0x3E, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_tools_antenna{ - {16, 16}, - bitmap_icon_tools_antenna_data}; + bitmap_icon_batt_icon_data}; static constexpr uint8_t bitmap_icon_batt_text_data[] = { 0x00, @@ -1063,6 +605,1798 @@ static constexpr Bitmap bitmap_icon_batt_text{ {16, 16}, bitmap_icon_batt_text_data}; +static constexpr uint8_t bitmap_icon_bht_data[] = { + 0x00, + 0x00, + 0xE0, + 0x07, + 0xF8, + 0x08, + 0x9C, + 0x07, + 0x0C, + 0x00, + 0x8E, + 0x0A, + 0x46, + 0x12, + 0x26, + 0x22, + 0x06, + 0x02, + 0x06, + 0x00, + 0x06, + 0x00, + 0x06, + 0x00, + 0x06, + 0x00, + 0x06, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_bht{ + {16, 16}, + bitmap_icon_bht_data}; + +static constexpr uint8_t bitmap_icon_biast_off_data[] = { + 0x00, + 0x00, + 0xFE, + 0x7F, + 0x00, + 0x04, + 0x00, + 0x08, + 0x00, + 0x10, + 0x00, + 0x08, + 0x88, + 0x04, + 0x50, + 0x08, + 0x20, + 0x10, + 0x50, + 0x08, + 0x88, + 0x04, + 0x00, + 0x08, + 0x00, + 0x10, + 0x00, + 0x08, + 0x00, + 0x04, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_biast_off{ + {16, 16}, + bitmap_icon_biast_off_data}; + +static constexpr uint8_t bitmap_icon_biast_on_data[] = { + 0x00, + 0x00, + 0xFE, + 0x7F, + 0x00, + 0x04, + 0x00, + 0x08, + 0x20, + 0x10, + 0x20, + 0x08, + 0x30, + 0x04, + 0x30, + 0x08, + 0xF8, + 0x10, + 0x60, + 0x08, + 0x60, + 0x04, + 0x20, + 0x08, + 0x20, + 0x10, + 0x00, + 0x08, + 0x00, + 0x04, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_biast_on{ + {16, 16}, + bitmap_icon_biast_on_data}; + +static constexpr uint8_t bitmap_icon_breakout_data[] = { + 0x00, + 0x00, + 0x7F, + 0x7F, + 0x7F, + 0x7F, + 0x7F, + 0x7F, + 0x00, + 0x00, + 0xF7, + 0xF7, + 0xF7, + 0xF7, + 0xF7, + 0xF7, + 0x00, + 0x00, + 0x7F, + 0x7F, + 0x7F, + 0x7F, + 0x7F, + 0x7F, + 0x00, + 0x00, + 0xF7, + 0xF7, + 0xF7, + 0xF7, + 0xF7, + 0xF7, +}; +static constexpr Bitmap bitmap_icon_breakout{ + {16, 16}, + bitmap_icon_breakout_data}; + +static constexpr uint8_t bitmap_icon_brightness_data[] = { + 0x00, + 0x00, + 0x80, + 0x01, + 0x84, + 0x21, + 0x08, + 0x10, + 0xC0, + 0x03, + 0xE0, + 0x07, + 0xF0, + 0x0F, + 0xF6, + 0x6F, + 0xF6, + 0x6F, + 0xF0, + 0x0F, + 0xE0, + 0x07, + 0xC0, + 0x03, + 0x08, + 0x10, + 0x84, + 0x21, + 0x80, + 0x01, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_brightness{ + {16, 16}, + bitmap_icon_brightness_data}; + +static constexpr uint8_t bitmap_icon_btle_data[] = { + 0xE0, + 0x03, + 0x30, + 0x07, + 0x38, + 0x0E, + 0x3C, + 0x1C, + 0x24, + 0x19, + 0x0C, + 0x13, + 0x1C, + 0x19, + 0x3C, + 0x1C, + 0x3C, + 0x1C, + 0x1C, + 0x19, + 0x0C, + 0x13, + 0x24, + 0x19, + 0x3C, + 0x1C, + 0x38, + 0x0E, + 0x30, + 0x07, + 0xE0, + 0x03, +}; +static constexpr Bitmap bitmap_icon_btle{ + {16, 16}, + bitmap_icon_btle_data}; + +static constexpr uint8_t bitmap_icon_burger_data[] = { + 0x00, + 0x00, + 0xE0, + 0x07, + 0xF8, + 0x1F, + 0xFC, + 0x3F, + 0xFE, + 0x7F, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0x00, + 0x00, + 0x55, + 0x55, + 0xAA, + 0xAA, + 0x55, + 0x55, + 0x00, + 0x00, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFE, + 0x7F, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_burger{ + {16, 16}, + bitmap_icon_burger_data}; + +static constexpr uint8_t bitmap_icon_camera_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0xE0, + 0x07, + 0xF0, + 0x0F, + 0x3E, + 0x7C, + 0xDE, + 0x7B, + 0xEE, + 0x77, + 0xEE, + 0x77, + 0xEE, + 0x77, + 0xEE, + 0x77, + 0xDE, + 0x7B, + 0x3E, + 0x7C, + 0xFE, + 0x7F, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_camera{ + {16, 16}, + bitmap_icon_camera_data}; + +static constexpr uint8_t bitmap_icon_capture_data[] = { + 0xE0, + 0x07, + 0xF8, + 0x1F, + 0xFC, + 0x3F, + 0xFE, + 0x7F, + 0xFE, + 0x7F, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFE, + 0x7F, + 0xFE, + 0x7F, + 0xFC, + 0x3F, + 0xF8, + 0x1F, + 0xE0, + 0x07, +}; +static constexpr Bitmap bitmap_icon_capture{ + {16, 16}, + bitmap_icon_capture_data}; + +static constexpr uint8_t bitmap_icon_clean_data[] = { + 0x00, + 0x00, + 0xC0, + 0x01, + 0x20, + 0x02, + 0xFC, + 0x1F, + 0x00, + 0x00, + 0x08, + 0x08, + 0xE8, + 0x08, + 0xA8, + 0x09, + 0xA8, + 0x0B, + 0x28, + 0x0A, + 0x28, + 0x0A, + 0x28, + 0x0A, + 0xE8, + 0x0B, + 0x08, + 0x08, + 0xF0, + 0x07, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_clean{ + {16, 16}, + bitmap_icon_clean_data}; + +static constexpr uint8_t bitmap_icon_clk_ext_data[] = { + 0x00, + 0x00, + 0xDC, + 0x54, + 0x54, + 0x54, + 0x54, + 0x76, + 0x00, + 0x10, + 0x38, + 0x7C, + 0x10, + 0x10, + 0x10, + 0x00, +}; +static constexpr Bitmap bitmap_icon_clk_ext{ + {8, 16}, + bitmap_icon_clk_ext_data}; + +static constexpr uint8_t bitmap_icon_clk_int_data[] = { + 0x00, + 0x00, + 0xDC, + 0x54, + 0x54, + 0x54, + 0x54, + 0x76, + 0x00, + 0x44, + 0x6C, + 0x38, + 0x38, + 0x6C, + 0x44, + 0x00, +}; +static constexpr Bitmap bitmap_icon_clk_int{ + {8, 16}, + bitmap_icon_clk_int_data}; + +static constexpr uint8_t bitmap_icon_codetx_data[] = { + 0x00, + 0x00, + 0xF0, + 0x07, + 0x0C, + 0x18, + 0x03, + 0x60, + 0xE0, + 0x03, + 0x18, + 0x0C, + 0x04, + 0x10, + 0xC0, + 0x01, + 0x20, + 0x02, + 0x00, + 0x00, + 0x00, + 0x00, + 0xBB, + 0x6D, + 0x2A, + 0x49, + 0x2A, + 0x49, + 0x3A, + 0x49, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_codetx{ + {16, 16}, + bitmap_icon_codetx_data}; + +static constexpr uint8_t bitmap_icon_controls_data[] = { + 0x8C, + 0x31, + 0x5A, + 0x6B, + 0xDE, + 0x7B, + 0x8C, + 0x31, + 0x00, + 0x00, + 0x8C, + 0x31, + 0x5A, + 0x7B, + 0xDE, + 0x7B, + 0x8C, + 0x31, + 0x00, + 0x00, + 0x8C, + 0x31, + 0xDA, + 0x7B, + 0xDE, + 0x7B, + 0x8C, + 0x31, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_controls{ + {16, 16}, + bitmap_icon_controls_data}; + +static constexpr uint8_t bitmap_icon_copy_data[] = { + 0x00, + 0x00, + 0xFC, + 0x00, + 0x84, + 0x01, + 0xC4, + 0x0F, + 0x74, + 0x18, + 0x44, + 0x38, + 0x44, + 0x78, + 0x74, + 0x40, + 0x44, + 0x44, + 0x44, + 0x44, + 0x74, + 0x5F, + 0x44, + 0x44, + 0x44, + 0x44, + 0x7C, + 0x40, + 0xC0, + 0x7F, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_copy{ + {16, 16}, + bitmap_icon_copy_data}; + +static constexpr uint8_t bitmap_icon_cut_data[] = { + 0x00, + 0x00, + 0x10, + 0x10, + 0x30, + 0x18, + 0x20, + 0x08, + 0x60, + 0x0C, + 0x40, + 0x04, + 0xC0, + 0x06, + 0x80, + 0x00, + 0x80, + 0x01, + 0x80, + 0x01, + 0xC0, + 0x03, + 0x78, + 0x1E, + 0x44, + 0x22, + 0x44, + 0x22, + 0x44, + 0x22, + 0x38, + 0x1C, +}; +static constexpr Bitmap bitmap_icon_cut{ + {16, 16}, + bitmap_icon_cut_data}; + +static constexpr uint8_t bitmap_icon_cwgen_data[] = { + 0x18, + 0x00, + 0x24, + 0x00, + 0x42, + 0x00, + 0x42, + 0x00, + 0x42, + 0x00, + 0x42, + 0x00, + 0x81, + 0x00, + 0xAB, + 0x6A, + 0x80, + 0x40, + 0x00, + 0x21, + 0x00, + 0x21, + 0x00, + 0x21, + 0x00, + 0x21, + 0x00, + 0x12, + 0x00, + 0x0C, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_cwgen{ + {16, 16}, + bitmap_icon_cwgen_data}; + +static constexpr uint8_t bitmap_icon_debug_data[] = { + 0xFE, + 0x03, + 0x02, + 0x07, + 0x2A, + 0x0D, + 0x52, + 0x0F, + 0x2A, + 0x08, + 0x52, + 0x09, + 0xAA, + 0x0A, + 0x52, + 0x09, + 0xAA, + 0x0A, + 0x52, + 0x01, + 0xAA, + 0x12, + 0x02, + 0x08, + 0x02, + 0xFC, + 0x02, + 0x08, + 0xFE, + 0x13, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_debug{ + {16, 16}, + bitmap_icon_debug_data}; + +static constexpr uint8_t bitmap_icon_delete_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x0C, + 0x30, + 0x1C, + 0x38, + 0x38, + 0x1C, + 0x70, + 0x0E, + 0xE0, + 0x07, + 0xC0, + 0x03, + 0xC0, + 0x03, + 0xE0, + 0x07, + 0x70, + 0x0E, + 0x38, + 0x1C, + 0x1C, + 0x38, + 0x0C, + 0x30, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_delete{ + {16, 16}, + bitmap_icon_delete_data}; + +static constexpr uint8_t bitmap_icon_dir_data[] = { + 0x00, + 0x00, + 0x3E, + 0x00, + 0x41, + 0x00, + 0xC1, + 0x7F, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xAF, + 0xEA, + 0x57, + 0xF5, + 0xEF, + 0xEF, + 0xF7, + 0xF7, + 0xEE, + 0x6F, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_dir{ + {16, 16}, + bitmap_icon_dir_data}; + +static constexpr uint8_t bitmap_icon_dmr_data[] = { + 0x00, + 0x00, + 0xFE, + 0x1F, + 0xFE, + 0x3F, + 0x0E, + 0x78, + 0x0E, + 0x70, + 0x0E, + 0x70, + 0x0E, + 0x70, + 0x0E, + 0x78, + 0xFE, + 0x3F, + 0xFE, + 0x1F, + 0x8E, + 0x07, + 0x0E, + 0x0F, + 0x0E, + 0x1E, + 0x0E, + 0x3C, + 0x0E, + 0x78, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_dmr{ + {16, 16}, + bitmap_icon_dmr_data}; + +static constexpr uint8_t bitmap_icon_doom_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x77, + 0xDF, + 0xFF, + 0xDF, + 0xD9, + 0xFD, + 0x89, + 0xF8, + 0x89, + 0xE8, + 0x89, + 0xA8, + 0x89, + 0xA8, + 0xD9, + 0xAD, + 0x79, + 0xAF, + 0x2D, + 0xAA, + 0x07, + 0xA8, + 0x03, + 0xA0, + 0x01, + 0x80, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_doom{ + {16, 16}, + bitmap_icon_doom_data}; + +static constexpr uint8_t bitmap_icon_downconvert_data[] = { + 0x00, + 0x00, + 0x77, + 0x77, + 0x51, + 0x51, + 0x33, + 0x53, + 0x51, + 0x51, + 0x51, + 0x77, + 0x00, + 0x80, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0xF8, + 0x1F, + 0xF0, + 0x0F, + 0xE0, + 0x07, + 0xC0, + 0x03, + 0x80, + 0x01, +}; +static constexpr Bitmap bitmap_icon_downconvert{ + {16, 16}, + bitmap_icon_downconvert_data}; + +static constexpr uint8_t bitmap_icon_ert_data[] = { + 0x00, + 0x00, + 0x00, + 0x0F, + 0x80, + 0x7F, + 0xC0, + 0x0F, + 0xFC, + 0x0F, + 0xC2, + 0x0F, + 0x82, + 0x7F, + 0x01, + 0x0F, + 0x01, + 0x00, + 0x21, + 0x05, + 0x53, + 0x09, + 0x56, + 0x09, + 0x50, + 0x05, + 0x50, + 0x05, + 0x20, + 0xAD, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_ert{ + {16, 16}, + bitmap_icon_ert_data}; + +static constexpr uint8_t bitmap_icon_file_data[] = { + 0xFC, + 0x03, + 0x04, + 0x06, + 0x04, + 0x0E, + 0x04, + 0x1E, + 0x04, + 0x3E, + 0x04, + 0x20, + 0x04, + 0x20, + 0x04, + 0x20, + 0x04, + 0x20, + 0x04, + 0x20, + 0x04, + 0x20, + 0x04, + 0x20, + 0x04, + 0x20, + 0x04, + 0x20, + 0x04, + 0x20, + 0xFC, + 0x3F, +}; +static constexpr Bitmap bitmap_icon_file{ + {16, 16}, + bitmap_icon_file_data}; + +static constexpr uint8_t bitmap_icon_file_image_data[] = { + 0x00, + 0x00, + 0xFF, + 0xFF, + 0x01, + 0x80, + 0x01, + 0x80, + 0x89, + 0x80, + 0xC1, + 0x81, + 0xE1, + 0xA3, + 0xB1, + 0xB3, + 0x89, + 0xDC, + 0x07, + 0x8C, + 0x01, + 0x90, + 0x01, + 0x80, + 0xAB, + 0x82, + 0xFF, + 0xD5, + 0xFF, + 0xFF, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_file_image{ + {16, 16}, + bitmap_icon_file_image_data}; + +static constexpr uint8_t bitmap_icon_file_iq_data[] = { + 0xFC, + 0x03, + 0x04, + 0x06, + 0x04, + 0x0E, + 0x04, + 0x1E, + 0x04, + 0x3E, + 0x04, + 0x20, + 0x04, + 0x20, + 0x04, + 0x21, + 0x44, + 0x25, + 0x54, + 0x25, + 0xF4, + 0x2F, + 0xA4, + 0x2A, + 0x84, + 0x22, + 0x04, + 0x22, + 0x04, + 0x20, + 0xFC, + 0x3F, +}; +static constexpr Bitmap bitmap_icon_file_iq{ + {16, 16}, + bitmap_icon_file_iq_data}; + +static constexpr uint8_t bitmap_icon_file_text_data[] = { + 0xFC, + 0x03, + 0x04, + 0x06, + 0x04, + 0x0E, + 0x04, + 0x1E, + 0xF4, + 0x3E, + 0x04, + 0x20, + 0xF4, + 0x2F, + 0x04, + 0x20, + 0xF4, + 0x2F, + 0x04, + 0x20, + 0xF4, + 0x2F, + 0x04, + 0x20, + 0xF4, + 0x2F, + 0x04, + 0x20, + 0x04, + 0x20, + 0xFC, + 0x3F, +}; +static constexpr Bitmap bitmap_icon_file_text{ + {16, 16}, + bitmap_icon_file_text_data}; + +static constexpr uint8_t bitmap_icon_file_wav_data[] = { + 0xFC, + 0x03, + 0x04, + 0x06, + 0x04, + 0x0E, + 0x04, + 0x1E, + 0x04, + 0x3E, + 0x84, + 0x20, + 0xC4, + 0x22, + 0xF4, + 0x20, + 0xF4, + 0x2E, + 0xF4, + 0x20, + 0xC4, + 0x22, + 0x84, + 0x24, + 0x04, + 0x28, + 0x04, + 0x20, + 0x04, + 0x20, + 0xFC, + 0x3F, +}; +static constexpr Bitmap bitmap_icon_file_wav{ + {16, 16}, + bitmap_icon_file_wav_data}; + +static constexpr uint8_t bitmap_icon_font_viewer_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x10, + 0x0C, + 0x38, + 0x0C, + 0x38, + 0x0C, + 0x6C, + 0x0C, + 0x6C, + 0x0C, + 0xC6, + 0x7C, + 0xFE, + 0xFC, + 0xFF, + 0x8D, + 0x83, + 0x8D, + 0x83, + 0xFD, + 0x01, + 0x7D, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_font_viewer{ + {16, 16}, + bitmap_icon_font_viewer_data}; + +static constexpr uint8_t bitmap_icon_fox_data[] = { + 0x18, + 0x18, + 0x28, + 0x14, + 0x68, + 0x16, + 0x68, + 0x16, + 0xC8, + 0x13, + 0x88, + 0x11, + 0x04, + 0x20, + 0x24, + 0x24, + 0x22, + 0x44, + 0x01, + 0x80, + 0x06, + 0x60, + 0x98, + 0x19, + 0x20, + 0x04, + 0x40, + 0x02, + 0x80, + 0x01, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_fox{ + {16, 16}, + bitmap_icon_fox_data}; + +static constexpr uint8_t bitmap_icon_freqman_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x7E, + 0x7E, + 0x81, + 0x81, + 0xBD, + 0xBD, + 0x81, + 0x81, + 0xBD, + 0xBD, + 0x81, + 0x81, + 0xBD, + 0x9D, + 0x81, + 0x81, + 0xBD, + 0xE1, + 0x81, + 0x61, + 0x7E, + 0x3E, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_freqman{ + {16, 16}, + bitmap_icon_freqman_data}; + +static constexpr uint8_t bitmap_icon_games_data[] = { + 0x00, + 0x01, + 0x00, + 0x01, + 0x80, + 0x00, + 0x80, + 0x00, + 0x80, + 0x00, + 0xFE, + 0x7F, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xE7, + 0xD7, + 0xE7, + 0x93, + 0x81, + 0xFF, + 0x81, + 0x93, + 0xE7, + 0xD7, + 0xE7, + 0xFF, + 0x3F, + 0xF9, + 0xFE, + 0x7F, +}; +static constexpr Bitmap bitmap_icon_games{ + {16, 16}, + bitmap_icon_games_data}; + +static constexpr uint8_t bitmap_icon_gps_sim_data[] = { + 0xC0, + 0x07, + 0xE0, + 0x0F, + 0x70, + 0x1F, + 0x78, + 0x3E, + 0x78, + 0x3C, + 0x78, + 0x38, + 0x78, + 0x30, + 0x78, + 0x38, + 0x78, + 0x3C, + 0x70, + 0x1E, + 0x70, + 0x1F, + 0xE0, + 0x0F, + 0xC0, + 0x07, + 0x80, + 0x03, + 0x20, + 0x09, + 0x50, + 0x14, +}; +static constexpr Bitmap bitmap_icon_gps_sim{ + {16, 16}, + bitmap_icon_gps_sim_data}; + +static constexpr uint8_t bitmap_icon_hackrf_data[] = { + 0xF0, + 0x0F, + 0x10, + 0x08, + 0x50, + 0x0A, + 0x10, + 0x08, + 0x10, + 0x08, + 0x10, + 0x08, + 0xF8, + 0x1F, + 0xF8, + 0x1F, + 0xF8, + 0x1F, + 0xF8, + 0x1F, + 0xF8, + 0x1F, + 0xF8, + 0x1F, + 0xF8, + 0x1F, + 0xF0, + 0x0F, + 0x80, + 0x01, + 0x80, + 0x01, +}; +static constexpr Bitmap bitmap_icon_hackrf{ + {16, 16}, + bitmap_icon_hackrf_data}; + +static constexpr uint8_t bitmap_icon_hide_data[] = { + 0x00, + 0x00, + 0x00, + 0x40, + 0x00, + 0x20, + 0xE0, + 0x17, + 0x18, + 0x18, + 0xC4, + 0x27, + 0x62, + 0x42, + 0x21, + 0x85, + 0xA1, + 0x84, + 0x62, + 0x46, + 0xA4, + 0x23, + 0x18, + 0x18, + 0xE8, + 0x07, + 0x04, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_hide{ + {16, 16}, + bitmap_icon_hide_data}; + +static constexpr uint8_t bitmap_icon_jammer_data[] = { + 0xE0, + 0x07, + 0xF8, + 0x1F, + 0x1C, + 0x38, + 0x0E, + 0x78, + 0x06, + 0x7C, + 0x03, + 0xCE, + 0x03, + 0xC7, + 0x83, + 0xC3, + 0xC3, + 0xC1, + 0xE3, + 0xC0, + 0x73, + 0xC0, + 0x3E, + 0x60, + 0x1E, + 0x70, + 0x1C, + 0x38, + 0xF8, + 0x1F, + 0xE0, + 0x07, +}; +static constexpr Bitmap bitmap_icon_jammer{ + {16, 16}, + bitmap_icon_jammer_data}; + +static constexpr uint8_t bitmap_icon_lcr_data[] = { + 0x0C, + 0x00, + 0xFF, + 0x7F, + 0x01, + 0x80, + 0xC1, + 0x9B, + 0xFF, + 0x7F, + 0x0C, + 0x00, + 0xFF, + 0x7F, + 0x01, + 0x80, + 0xC1, + 0x9D, + 0xFF, + 0x7F, + 0x0C, + 0x00, + 0x0C, + 0x00, + 0x0C, + 0x00, + 0x0C, + 0x00, + 0x0C, + 0x00, + 0x0C, + 0x00, +}; +static constexpr Bitmap bitmap_icon_lcr{ + {16, 16}, + bitmap_icon_lcr_data}; + +static constexpr uint8_t bitmap_icon_lge_data[] = { + 0x00, + 0x00, + 0x80, + 0x00, + 0xA4, + 0x12, + 0xA8, + 0x0A, + 0xD0, + 0x05, + 0xEC, + 0x1B, + 0xF0, + 0x07, + 0xFE, + 0xFF, + 0xF0, + 0x07, + 0xEC, + 0x1B, + 0xD0, + 0x05, + 0xA8, + 0x0A, + 0xA4, + 0x12, + 0x80, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_lge{ + {16, 16}, + bitmap_icon_lge_data}; + +static constexpr uint8_t bitmap_icon_load_data[] = { + 0x00, + 0x01, + 0x80, + 0x03, + 0x40, + 0x05, + 0x00, + 0x01, + 0x0E, + 0x01, + 0x11, + 0x01, + 0x7F, + 0x1D, + 0x01, + 0x20, + 0xF9, + 0xFF, + 0xF9, + 0xFF, + 0xFD, + 0x7F, + 0xFD, + 0x7F, + 0xFF, + 0x3F, + 0xFF, + 0x3F, + 0xFF, + 0x1F, + 0xFF, + 0x1F, +}; +static constexpr Bitmap bitmap_icon_load{ + {16, 16}, + bitmap_icon_load_data}; + +static constexpr uint8_t bitmap_icon_looking_data[] = { + 0xF8, + 0x01, + 0xFC, + 0x03, + 0x0E, + 0x07, + 0x07, + 0x0E, + 0xF3, + 0x0C, + 0x9F, + 0x0F, + 0x9F, + 0x0F, + 0xF3, + 0x0C, + 0x07, + 0x0E, + 0x0E, + 0x07, + 0xFC, + 0x1F, + 0xF8, + 0x3D, + 0x00, + 0x7C, + 0x00, + 0xF8, + 0x00, + 0xF0, + 0x00, + 0x60, +}; +static constexpr Bitmap bitmap_icon_looking{ + {16, 16}, + bitmap_icon_looking_data}; + +static constexpr uint8_t bitmap_icon_lora_data[] = { + 0xC0, + 0x03, + 0x30, + 0x0C, + 0x00, + 0x00, + 0xC0, + 0x03, + 0x00, + 0x00, + 0xC0, + 0x03, + 0x60, + 0x06, + 0x60, + 0x06, + 0x60, + 0x06, + 0x60, + 0x06, + 0xC0, + 0x03, + 0x00, + 0x00, + 0xC0, + 0x03, + 0x00, + 0x00, + 0x30, + 0x0C, + 0xC0, + 0x03, +}; +static constexpr Bitmap bitmap_icon_lora{ + {16, 16}, + bitmap_icon_lora_data}; + +static constexpr uint8_t bitmap_icon_memory_data[] = { + 0x54, + 0x15, + 0x54, + 0x15, + 0xFF, + 0x7F, + 0xFC, + 0x1F, + 0xFF, + 0x7F, + 0xCC, + 0x19, + 0xAF, + 0x7A, + 0x6C, + 0x1B, + 0xEF, + 0x7B, + 0xEC, + 0x1B, + 0xFF, + 0x7F, + 0xFC, + 0x1F, + 0xFF, + 0x7F, + 0x54, + 0x15, + 0x54, + 0x15, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_memory{ + {16, 16}, + bitmap_icon_memory_data}; + +static constexpr uint8_t bitmap_icon_microphone_data[] = { + 0xC0, + 0x03, + 0xE0, + 0x07, + 0xE0, + 0x07, + 0xE0, + 0x07, + 0xE8, + 0x17, + 0xE8, + 0x17, + 0xE8, + 0x17, + 0xE8, + 0x17, + 0xE8, + 0x17, + 0xC8, + 0x13, + 0x18, + 0x18, + 0xF0, + 0x0F, + 0xC0, + 0x03, + 0x80, + 0x01, + 0x80, + 0x01, + 0xE0, + 0x07, +}; +static constexpr Bitmap bitmap_icon_microphone{ + {16, 16}, + bitmap_icon_microphone_data}; + +static constexpr uint8_t bitmap_icon_modem_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xF8, + 0x1F, + 0x04, + 0x20, + 0x02, + 0x40, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xAB, + 0xDF, + 0xAB, + 0xDF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_modem{ + {16, 16}, + bitmap_icon_modem_data}; + +static constexpr uint8_t bitmap_icon_morse_data[] = { + 0x00, + 0x00, + 0xFE, + 0x7F, + 0xFF, + 0xFF, + 0xBB, + 0xD0, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0x0B, + 0xE1, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xEB, + 0xD0, + 0xFF, + 0xFF, + 0xFE, + 0x7F, + 0x70, + 0x00, + 0x30, + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_morse{ + {16, 16}, + bitmap_icon_morse_data}; + +static constexpr uint8_t bitmap_icon_new_category_data[] = { + 0x00, + 0x18, + 0x3E, + 0x18, + 0x41, + 0x7E, + 0xC1, + 0x7E, + 0xFF, + 0x18, + 0xFF, + 0xDB, + 0xFF, + 0xC3, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xAF, + 0xEA, + 0x57, + 0xF5, + 0xEF, + 0xEF, + 0xF7, + 0xF7, + 0xEE, + 0x6F, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_new_category{ + {16, 16}, + bitmap_icon_new_category_data}; + +static constexpr uint8_t bitmap_icon_new_dir_data[] = { + 0x00, + 0x00, + 0x1E, + 0x00, + 0x21, + 0x00, + 0xE1, + 0x7F, + 0x01, + 0xC0, + 0x81, + 0x81, + 0x81, + 0x81, + 0x81, + 0x81, + 0xF1, + 0x8F, + 0xF1, + 0x8F, + 0x81, + 0x81, + 0x81, + 0x81, + 0x81, + 0x81, + 0x03, + 0xC0, + 0xFE, + 0x7F, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_new_dir{ + {16, 16}, + bitmap_icon_new_dir_data}; + static constexpr uint8_t bitmap_icon_new_file_data[] = { 0x00, 0x00, @@ -1101,6 +2435,2392 @@ static constexpr Bitmap bitmap_icon_new_file{ {16, 16}, bitmap_icon_new_file_data}; +static constexpr uint8_t bitmap_icon_noaa_data[] = { + 0x1C, + 0x80, + 0x3C, + 0x40, + 0x78, + 0x18, + 0xF0, + 0x20, + 0xE0, + 0x26, + 0x00, + 0x0F, + 0x80, + 0x0F, + 0xC0, + 0x07, + 0xE1, + 0x1B, + 0xC5, + 0x39, + 0x95, + 0x78, + 0x35, + 0xF0, + 0x09, + 0xE0, + 0x72, + 0xC0, + 0x04, + 0x00, + 0x78, + 0x00, +}; +static constexpr Bitmap bitmap_icon_noaa{ + {16, 16}, + bitmap_icon_noaa_data}; + +static constexpr uint8_t bitmap_icon_notepad_data[] = { + 0x0C, + 0x00, + 0x1E, + 0x00, + 0x2F, + 0x00, + 0x47, + 0x00, + 0xE2, + 0x00, + 0xD4, + 0x01, + 0xB8, + 0x03, + 0x70, + 0x07, + 0xE0, + 0x0E, + 0xC0, + 0x1D, + 0x80, + 0x3B, + 0x00, + 0x4F, + 0x00, + 0x46, + 0x00, + 0x84, + 0x00, + 0xD8, + 0x00, + 0xE0, +}; +static constexpr Bitmap bitmap_icon_notepad{ + {16, 16}, + bitmap_icon_notepad_data}; + +static constexpr uint8_t bitmap_icon_nrf_data[] = { + 0x00, + 0x01, + 0x00, + 0x01, + 0x00, + 0x01, + 0x00, + 0x01, + 0x00, + 0x01, + 0x00, + 0x01, + 0x00, + 0x01, + 0xF8, + 0x3F, + 0xFC, + 0x7F, + 0xFC, + 0x7F, + 0xDC, + 0x7F, + 0x8C, + 0x6B, + 0xDC, + 0x7F, + 0xFC, + 0x7F, + 0xFC, + 0x7F, + 0xF8, + 0x3F, +}; +static constexpr Bitmap bitmap_icon_nrf{ + {16, 16}, + bitmap_icon_nrf_data}; + +static constexpr uint8_t bitmap_icon_nuoptix_data[] = { + 0x80, + 0x01, + 0x80, + 0x01, + 0x40, + 0x02, + 0x40, + 0x1A, + 0x40, + 0x1A, + 0x20, + 0x0C, + 0x20, + 0x0F, + 0x20, + 0x1E, + 0x10, + 0x0E, + 0x10, + 0x0B, + 0x10, + 0x0B, + 0xF8, + 0x1F, + 0xF8, + 0x1F, + 0xF8, + 0x1F, + 0xFC, + 0x3F, + 0xFC, + 0x3F, +}; +static constexpr Bitmap bitmap_icon_nuoptix{ + {16, 16}, + bitmap_icon_nuoptix_data}; + +static constexpr uint8_t bitmap_icon_options_datetime_data[] = { + 0x0C, + 0x06, + 0xFF, + 0x1F, + 0x49, + 0x12, + 0x49, + 0x12, + 0xFF, + 0x1F, + 0x49, + 0x00, + 0x49, + 0x1C, + 0x7F, + 0x63, + 0x09, + 0x49, + 0x89, + 0x88, + 0xBE, + 0xB8, + 0x80, + 0x80, + 0x00, + 0x41, + 0x00, + 0x63, + 0x00, + 0x1C, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_options_datetime{ + {16, 16}, + bitmap_icon_options_datetime_data}; + +static constexpr uint8_t bitmap_icon_options_radio_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x20, + 0x12, + 0x48, + 0x8A, + 0x51, + 0xCA, + 0x53, + 0xCA, + 0x53, + 0x8A, + 0x51, + 0x12, + 0x48, + 0x84, + 0x21, + 0xC0, + 0x03, + 0x40, + 0x02, + 0x60, + 0x06, + 0x20, + 0x04, + 0x30, + 0x0C, + 0xF0, + 0x0F, +}; +static constexpr Bitmap bitmap_icon_options_radio{ + {16, 16}, + bitmap_icon_options_radio_data}; + +static constexpr uint8_t bitmap_icon_options_touch_data[] = { + 0xC7, + 0xF1, + 0x97, + 0xF4, + 0x27, + 0xF2, + 0x8F, + 0xF8, + 0x5F, + 0xFD, + 0x47, + 0xFD, + 0x53, + 0xC1, + 0x4B, + 0x9F, + 0x43, + 0xB5, + 0x6F, + 0xA0, + 0x2F, + 0xA0, + 0x20, + 0x20, + 0x60, + 0x20, + 0x40, + 0x10, + 0xC0, + 0x1F, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_options_touch{ + {16, 16}, + bitmap_icon_options_touch_data}; + +static constexpr uint8_t bitmap_icon_options_ui_data[] = { + 0xFF, + 0x1F, + 0xFF, + 0x13, + 0xFF, + 0x1F, + 0x01, + 0x10, + 0x01, + 0x10, + 0x01, + 0x10, + 0x01, + 0x04, + 0x01, + 0x0C, + 0x01, + 0x1C, + 0x01, + 0x3C, + 0xFF, + 0x7D, + 0x00, + 0xFC, + 0x00, + 0x34, + 0x00, + 0x20, + 0x00, + 0x60, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_options_ui{ + {16, 16}, + bitmap_icon_options_ui_data}; + +static constexpr uint8_t bitmap_icon_paint_data[] = { + 0xFE, + 0x3F, + 0xFF, + 0x3F, + 0xFF, + 0xFF, + 0xFF, + 0xBF, + 0xFE, + 0xBF, + 0x00, + 0x80, + 0x80, + 0xFF, + 0x80, + 0x00, + 0x80, + 0x00, + 0xC0, + 0x01, + 0xC0, + 0x01, + 0xC0, + 0x01, + 0xC0, + 0x01, + 0xC0, + 0x01, + 0xC0, + 0x01, + 0xC0, + 0x01, +}; +static constexpr Bitmap bitmap_icon_paint{ + {16, 16}, + bitmap_icon_paint_data}; + +static constexpr uint8_t bitmap_icon_paste_data[] = { + 0x00, + 0x00, + 0xE0, + 0x00, + 0x18, + 0x03, + 0xE4, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x84, + 0x3F, + 0x84, + 0x20, + 0x84, + 0x2E, + 0x84, + 0x20, + 0x84, + 0x2E, + 0x84, + 0x20, + 0x84, + 0x2E, + 0xF8, + 0x20, + 0x80, + 0x3F, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_paste{ + {16, 16}, + bitmap_icon_paste_data}; + +static constexpr uint8_t bitmap_icon_peripherals_data[] = { + 0x54, + 0x01, + 0x54, + 0x01, + 0xFF, + 0x07, + 0x7C, + 0x01, + 0xBF, + 0x07, + 0xDC, + 0x18, + 0x6F, + 0x10, + 0x2C, + 0x21, + 0xAF, + 0x20, + 0x34, + 0x20, + 0x54, + 0x10, + 0xC0, + 0x38, + 0x00, + 0x77, + 0x00, + 0xE0, + 0x00, + 0xC0, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_peripherals{ + {16, 16}, + bitmap_icon_peripherals_data}; + +static constexpr uint8_t bitmap_icon_peripherals_details_data[] = { + 0x54, + 0x01, + 0x54, + 0x01, + 0xFF, + 0x07, + 0xFC, + 0x01, + 0x3F, + 0x00, + 0xBC, + 0x3F, + 0xBF, + 0x60, + 0xBC, + 0xEE, + 0xBF, + 0x80, + 0x94, + 0xBE, + 0x94, + 0x80, + 0x80, + 0xBE, + 0x80, + 0x80, + 0x80, + 0xBE, + 0x80, + 0x80, + 0x80, + 0xFF, +}; +static constexpr Bitmap bitmap_icon_peripherals_details{ + {16, 16}, + bitmap_icon_peripherals_details_data}; + +static constexpr uint8_t bitmap_icon_pocsag_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xFC, + 0x3F, + 0xFE, + 0x7F, + 0x02, + 0x40, + 0xBA, + 0x45, + 0x02, + 0x40, + 0xFE, + 0x7F, + 0xFE, + 0x7F, + 0x92, + 0x7C, + 0x92, + 0x7C, + 0xFC, + 0x3F, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_pocsag{ + {16, 16}, + bitmap_icon_pocsag_data}; + +static constexpr uint8_t bitmap_icon_previous_data[] = { + 0x00, + 0x00, + 0xC0, + 0x00, + 0xE0, + 0x00, + 0x70, + 0x00, + 0x38, + 0x00, + 0x1C, + 0x00, + 0x0E, + 0x00, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0x0E, + 0x00, + 0x1C, + 0x00, + 0x38, + 0x00, + 0x70, + 0x00, + 0xE0, + 0x00, + 0xC0, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_previous{ + {16, 16}, + bitmap_icon_previous_data}; + +static constexpr uint8_t bitmap_icon_protoview_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0xF8, + 0x87, + 0x08, + 0x84, + 0x0F, + 0xFC, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xF3, + 0xE0, + 0x92, + 0xA0, + 0x9E, + 0xBF, + 0x00, + 0x00, + 0x00, + 0x00, + 0xFC, + 0xF3, + 0x04, + 0x12, + 0x07, + 0x1E, +}; +static constexpr Bitmap bitmap_icon_protoview{ + {16, 16}, + bitmap_icon_protoview_data}; + +static constexpr uint8_t bitmap_icon_qr_code_data[] = { + 0x00, + 0x00, + 0xFE, + 0x7E, + 0xC6, + 0x62, + 0xFA, + 0x5A, + 0xFA, + 0x5A, + 0xDA, + 0x5A, + 0xFE, + 0x7E, + 0x7E, + 0x7E, + 0x00, + 0x00, + 0xFE, + 0x46, + 0xC2, + 0x06, + 0xFA, + 0x18, + 0xFA, + 0x18, + 0xC6, + 0x60, + 0xFE, + 0x62, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_qr_code{ + {16, 16}, + bitmap_icon_qr_code_data}; + +static constexpr uint8_t bitmap_icon_rds_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x3C, + 0x3C, + 0x7E, + 0x7E, + 0x67, + 0xE7, + 0x83, + 0xC3, + 0xC7, + 0xE1, + 0xFD, + 0xBC, + 0x42, + 0x42, + 0x3C, + 0x3C, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_rds{ + {16, 16}, + bitmap_icon_rds_data}; + +static constexpr uint8_t bitmap_icon_receivers_data[] = { + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x98, + 0x19, + 0xB0, + 0x0D, + 0xE0, + 0x07, + 0xC0, + 0x03, + 0x83, + 0xC1, + 0x03, + 0xC0, + 0xFF, + 0xFF, + 0xFF, + 0xFF, +}; +static constexpr Bitmap bitmap_icon_receivers{ + {16, 16}, + bitmap_icon_receivers_data}; + +static constexpr uint8_t bitmap_icon_remote_data[] = { + 0x20, + 0x00, + 0x20, + 0x00, + 0x20, + 0x00, + 0x20, + 0x00, + 0xE0, + 0x07, + 0xF0, + 0x0F, + 0x30, + 0x0C, + 0x30, + 0x0C, + 0xF0, + 0x0F, + 0xF0, + 0x0F, + 0x70, + 0x0D, + 0xB0, + 0x0E, + 0x70, + 0x0D, + 0xB0, + 0x0E, + 0xF0, + 0x0F, + 0xE0, + 0x07, +}; +static constexpr Bitmap bitmap_icon_remote{ + {16, 16}, + bitmap_icon_remote_data}; + +static constexpr uint8_t bitmap_icon_rename_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0E, + 0x00, + 0x04, + 0xFF, + 0xF5, + 0x01, + 0x84, + 0xC9, + 0x84, + 0x55, + 0x85, + 0xDD, + 0x84, + 0x55, + 0x85, + 0xD5, + 0x84, + 0x01, + 0x84, + 0xFF, + 0xF5, + 0x00, + 0x04, + 0x00, + 0x0E, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_rename{ + {16, 16}, + bitmap_icon_rename_data}; + +static constexpr uint8_t bitmap_icon_rename_numeric_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0E, + 0x00, + 0x04, + 0xFF, + 0xF5, + 0x01, + 0x84, + 0xC9, + 0x85, + 0x0D, + 0x85, + 0xC9, + 0x85, + 0x49, + 0x84, + 0xDD, + 0x85, + 0x01, + 0x84, + 0xFF, + 0xF5, + 0x00, + 0x04, + 0x00, + 0x0E, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_rename_numeric{ + {16, 16}, + bitmap_icon_rename_numeric_data}; + +static constexpr uint8_t bitmap_icon_replay_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x0C, + 0x00, + 0x3C, + 0x00, + 0xFC, + 0x00, + 0xFC, + 0x03, + 0xFC, + 0x0F, + 0xFC, + 0x3F, + 0xFC, + 0x3F, + 0xFC, + 0x0F, + 0xFC, + 0x03, + 0xFC, + 0x00, + 0x3C, + 0x00, + 0x0C, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_replay{ + {16, 16}, + bitmap_icon_replay_data}; + +static constexpr uint8_t bitmap_icon_save_data[] = { + 0xFC, + 0x07, + 0x0A, + 0x0A, + 0x0A, + 0x12, + 0xF2, + 0x21, + 0x02, + 0x20, + 0x02, + 0x20, + 0x02, + 0x20, + 0x02, + 0x20, + 0xFA, + 0x27, + 0xFA, + 0x2F, + 0x0A, + 0x28, + 0xFA, + 0x2F, + 0x0A, + 0x28, + 0xFA, + 0x2F, + 0xFC, + 0x1F, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_save{ + {16, 16}, + bitmap_icon_save_data}; + +static constexpr uint8_t bitmap_icon_scanner_data[] = { + 0x03, + 0x00, + 0x00, + 0x00, + 0x03, + 0x00, + 0x00, + 0x00, + 0x0F, + 0x00, + 0x00, + 0x00, + 0x03, + 0x01, + 0x80, + 0x01, + 0xC3, + 0x00, + 0xE0, + 0xFF, + 0xEF, + 0xFF, + 0xC0, + 0x00, + 0x83, + 0x01, + 0x00, + 0x01, + 0x03, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_scanner{ + {16, 16}, + bitmap_icon_scanner_data}; + +static constexpr uint8_t bitmap_icon_script_data[] = { + 0xFC, + 0x07, + 0xFA, + 0x0F, + 0x19, + 0x1A, + 0xF9, + 0x1F, + 0x1E, + 0x1D, + 0xF8, + 0x1F, + 0x98, + 0x1F, + 0xF8, + 0x1F, + 0xF8, + 0x1F, + 0x08, + 0x14, + 0xF8, + 0x1F, + 0x48, + 0x1E, + 0xF8, + 0xFF, + 0x78, + 0x80, + 0x30, + 0x40, + 0xE0, + 0x3F, +}; +static constexpr Bitmap bitmap_icon_script{ + {16, 16}, + bitmap_icon_script_data}; + +static constexpr uint8_t bitmap_icon_sd_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0xC0, + 0x1F, + 0xE0, + 0x1F, + 0xF0, + 0x1F, + 0xF8, + 0x1F, + 0x98, + 0x18, + 0xE8, + 0x16, + 0xC8, + 0x16, + 0x98, + 0x16, + 0xB8, + 0x16, + 0xC8, + 0x18, + 0xF8, + 0x1F, + 0xF8, + 0x1F, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_sd{ + {16, 16}, + bitmap_icon_sd_data}; + +static constexpr uint8_t bitmap_icon_sdcard_data[] = { + 0xF0, + 0x3F, + 0x58, + 0x35, + 0x5C, + 0x35, + 0xFC, + 0x3F, + 0xFC, + 0x3F, + 0xFC, + 0x3F, + 0xFC, + 0x3F, + 0xFC, + 0x3F, + 0xFC, + 0x3F, + 0xAC, + 0x3A, + 0x5C, + 0x35, + 0xAC, + 0x3A, + 0x5C, + 0x35, + 0xAC, + 0x3A, + 0x5C, + 0x35, + 0xAC, + 0x3A, +}; +static constexpr Bitmap bitmap_icon_sdcard{ + {16, 16}, + bitmap_icon_sdcard_data}; + +static constexpr uint8_t bitmap_icon_search_data[] = { + 0xF8, + 0x01, + 0xFC, + 0x03, + 0x0E, + 0x07, + 0x07, + 0x0E, + 0x03, + 0x0C, + 0x0B, + 0x0C, + 0x0B, + 0x0C, + 0x13, + 0x0C, + 0x07, + 0x0E, + 0x0E, + 0x07, + 0xFC, + 0x1F, + 0xF8, + 0x3D, + 0x00, + 0x7C, + 0x00, + 0xF8, + 0x00, + 0xF0, + 0x00, + 0x60, +}; +static constexpr Bitmap bitmap_icon_search{ + {16, 16}, + bitmap_icon_search_data}; + +static constexpr uint8_t bitmap_icon_setup_data[] = { + 0xC0, + 0x01, + 0xC0, + 0x01, + 0xE4, + 0x13, + 0xFE, + 0x3F, + 0xFF, + 0x7F, + 0x3E, + 0x3E, + 0x1C, + 0x1C, + 0x1C, + 0x1C, + 0x1C, + 0x1C, + 0x3E, + 0x3E, + 0xFF, + 0x7F, + 0xFE, + 0x3F, + 0xE4, + 0x13, + 0xC0, + 0x01, + 0xC0, + 0x01, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_setup{ + {16, 16}, + bitmap_icon_setup_data}; + +static constexpr uint8_t bitmap_icon_shift_data[] = { + 0x00, + 0x00, + 0x80, + 0x00, + 0xC0, + 0x01, + 0xE0, + 0x03, + 0xF0, + 0x07, + 0xF8, + 0x0F, + 0xFC, + 0x1F, + 0xE0, + 0x03, + 0xE0, + 0x03, + 0xE0, + 0x03, + 0x20, + 0x02, + 0xE0, + 0x03, + 0x20, + 0x02, + 0xE0, + 0x03, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_shift{ + {16, 16}, + bitmap_icon_shift_data}; + +static constexpr uint8_t bitmap_icon_sleep_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 0x08, + 0x00, + 0x18, + 0x00, + 0x18, + 0x00, + 0x38, + 0x00, + 0x3C, + 0x00, + 0x3C, + 0x00, + 0x3E, + 0x84, + 0x1F, + 0xF8, + 0x1F, + 0xF0, + 0x0F, + 0xC0, + 0x03, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_sleep{ + {16, 16}, + bitmap_icon_sleep_data}; + +static constexpr uint8_t bitmap_icon_snake_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0xE0, + 0x09, + 0x70, + 0xC7, + 0xFC, + 0xC9, + 0x06, + 0x00, + 0x06, + 0x00, + 0x0C, + 0x00, + 0xF0, + 0x01, + 0x00, + 0x3E, + 0x00, + 0x40, + 0xFC, + 0x40, + 0x02, + 0x3F, + 0x02, + 0x00, + 0x7C, + 0x80, + 0x80, + 0x7F, +}; +static constexpr Bitmap bitmap_icon_snake{ + {16, 16}, + bitmap_icon_snake_data}; + +static constexpr uint8_t bitmap_icon_sonde_data[] = { + 0x80, + 0x03, + 0xE0, + 0x0F, + 0xE0, + 0x0F, + 0xF0, + 0x1F, + 0xF0, + 0x1F, + 0xF0, + 0x1F, + 0xE0, + 0x0F, + 0xE0, + 0x0F, + 0x00, + 0x00, + 0x20, + 0x09, + 0x00, + 0x00, + 0x40, + 0x05, + 0x00, + 0x00, + 0xC0, + 0x07, + 0xC0, + 0x07, + 0xC0, + 0x07, +}; +static constexpr Bitmap bitmap_icon_sonde{ + {16, 16}, + bitmap_icon_sonde_data}; + +static constexpr uint8_t bitmap_icon_soundboard_data[] = { + 0xF0, + 0x0F, + 0x1C, + 0x18, + 0x17, + 0x38, + 0x15, + 0x78, + 0x15, + 0xF8, + 0x15, + 0x82, + 0x15, + 0x8B, + 0xD5, + 0x83, + 0xD5, + 0xBB, + 0xD5, + 0x83, + 0x15, + 0x8B, + 0x15, + 0x92, + 0x15, + 0xA0, + 0x17, + 0x80, + 0x1C, + 0x80, + 0xF0, + 0xFF, +}; +static constexpr Bitmap bitmap_icon_soundboard{ + {16, 16}, + bitmap_icon_soundboard_data}; + +static constexpr uint8_t bitmap_icon_speaker_data[] = { + 0x00, + 0x00, + 0x40, + 0x10, + 0x60, + 0x20, + 0x70, + 0x44, + 0x78, + 0x48, + 0x7F, + 0x91, + 0x7F, + 0x92, + 0x7F, + 0x92, + 0x7F, + 0x92, + 0x7F, + 0x92, + 0x7F, + 0x92, + 0x7F, + 0x91, + 0x78, + 0x48, + 0x70, + 0x44, + 0x60, + 0x20, + 0x40, + 0x10, +}; +static constexpr Bitmap bitmap_icon_speaker{ + {16, 16}, + bitmap_icon_speaker_data}; + +static constexpr uint8_t bitmap_icon_speaker_and_headphones_data[] = { + 0x40, + 0x10, + 0x60, + 0x20, + 0x70, + 0x44, + 0x7C, + 0x48, + 0x7C, + 0x91, + 0x7C, + 0x92, + 0x70, + 0x92, + 0x60, + 0x92, + 0x40, + 0x92, + 0x00, + 0x92, + 0x30, + 0x91, + 0x48, + 0x48, + 0x84, + 0x44, + 0x84, + 0x20, + 0x86, + 0x11, + 0x86, + 0x01, +}; +static constexpr Bitmap bitmap_icon_speaker_and_headphones{ + {16, 16}, + bitmap_icon_speaker_and_headphones_data}; + +static constexpr uint8_t bitmap_icon_speaker_and_headphones_mute_data[] = { + 0x40, + 0x00, + 0x60, + 0x44, + 0x70, + 0x6C, + 0x7C, + 0x38, + 0x7C, + 0x10, + 0x7C, + 0x38, + 0x70, + 0x6C, + 0x60, + 0x44, + 0x40, + 0x00, + 0x00, + 0x44, + 0x30, + 0x6C, + 0x48, + 0x38, + 0x84, + 0x10, + 0x84, + 0x38, + 0x86, + 0x6D, + 0x86, + 0x45, +}; +static constexpr Bitmap bitmap_icon_speaker_and_headphones_mute{ + {16, 16}, + bitmap_icon_speaker_and_headphones_mute_data}; + +static constexpr uint8_t bitmap_icon_speaker_mute_data[] = { + 0x00, + 0x00, + 0x40, + 0x00, + 0x60, + 0x00, + 0x70, + 0x00, + 0x78, + 0x00, + 0x7F, + 0x22, + 0x7F, + 0x36, + 0x7F, + 0x1C, + 0x7F, + 0x08, + 0x7F, + 0x1C, + 0x7F, + 0x36, + 0x7F, + 0x22, + 0x78, + 0x00, + 0x70, + 0x00, + 0x60, + 0x00, + 0x40, + 0x00, +}; +static constexpr Bitmap bitmap_icon_speaker_mute{ + {16, 16}, + bitmap_icon_speaker_mute_data}; + +static constexpr uint8_t bitmap_icon_sstv_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0xFE, + 0x7F, + 0x03, + 0xC0, + 0x53, + 0xD5, + 0xAB, + 0xCA, + 0x53, + 0xD5, + 0xAB, + 0xCA, + 0x53, + 0xD5, + 0xAB, + 0xCA, + 0x53, + 0xD5, + 0x03, + 0xC0, + 0xFF, + 0xFF, + 0xFB, + 0xD7, + 0xFE, + 0x7F, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_sstv{ + {16, 16}, + bitmap_icon_sstv_data}; + +static constexpr uint8_t bitmap_icon_stealth_data[] = { + 0x00, + 0x00, + 0xC0, + 0x03, + 0xE0, + 0x07, + 0xE0, + 0x07, + 0xF8, + 0x1F, + 0x00, + 0x00, + 0xE0, + 0x07, + 0x60, + 0x06, + 0x00, + 0x00, + 0xF0, + 0x0F, + 0xF0, + 0x0F, + 0xF8, + 0x1E, + 0xFC, + 0x3F, + 0xFC, + 0x3E, + 0xFC, + 0x3F, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_stealth{ + {16, 16}, + bitmap_icon_stealth_data}; + +static constexpr uint8_t bitmap_icon_temperature_data[] = { + 0x00, + 0x01, + 0x80, + 0x01, + 0x80, + 0x05, + 0xC0, + 0x0D, + 0x40, + 0x0D, + 0xD0, + 0x1F, + 0x70, + 0x15, + 0xB0, + 0x1A, + 0x58, + 0x35, + 0xB8, + 0x3A, + 0x58, + 0x34, + 0x28, + 0x28, + 0x18, + 0x30, + 0x30, + 0x18, + 0x60, + 0x0C, + 0xC0, + 0x07, +}; +static constexpr Bitmap bitmap_icon_temperature{ + {16, 16}, + bitmap_icon_temperature_data}; + +static constexpr uint8_t bitmap_icon_tetra_data[] = { + 0xE0, + 0x0F, + 0x18, + 0x38, + 0xE4, + 0x67, + 0x7E, + 0xCE, + 0xC7, + 0xCC, + 0x00, + 0x00, + 0xFF, + 0x4F, + 0xBA, + 0xB2, + 0x9A, + 0xEE, + 0xBA, + 0xB2, + 0x00, + 0x00, + 0x3B, + 0xE3, + 0x73, + 0x7E, + 0xC6, + 0x27, + 0x1C, + 0x18, + 0xF0, + 0x07, +}; +static constexpr Bitmap bitmap_icon_tetra{ + {16, 16}, + bitmap_icon_tetra_data}; + +static constexpr uint8_t bitmap_icon_tetris_data[] = { + 0xF8, + 0xFF, + 0x88, + 0x88, + 0x88, + 0x88, + 0x88, + 0x88, + 0xF8, + 0xFF, + 0x80, + 0x08, + 0x80, + 0x08, + 0x9F, + 0x08, + 0x91, + 0x0F, + 0x11, + 0x00, + 0x11, + 0x00, + 0xFF, + 0xF1, + 0x11, + 0x91, + 0x11, + 0x91, + 0x11, + 0x91, + 0xFF, + 0xF1, +}; +static constexpr Bitmap bitmap_icon_tetris{ + {16, 16}, + bitmap_icon_tetris_data}; + +static constexpr uint8_t bitmap_icon_thermometer_data[] = { + 0xC0, + 0x00, + 0x20, + 0x01, + 0x10, + 0x02, + 0x10, + 0x3A, + 0x10, + 0x02, + 0x10, + 0x1A, + 0x10, + 0x02, + 0xD0, + 0x3A, + 0xD0, + 0x02, + 0xD0, + 0x1A, + 0xD0, + 0x02, + 0xE8, + 0x05, + 0xE8, + 0x05, + 0xC8, + 0x04, + 0x10, + 0x02, + 0xE0, + 0x01, +}; +static constexpr Bitmap bitmap_icon_thermometer{ + {16, 16}, + bitmap_icon_thermometer_data}; + +static constexpr uint8_t bitmap_icon_tools_antenna_data[] = { + 0x38, + 0x3E, + 0x10, + 0x22, + 0x10, + 0x26, + 0x10, + 0x22, + 0x10, + 0x2E, + 0x10, + 0x22, + 0x10, + 0x26, + 0x10, + 0x22, + 0x38, + 0x2E, + 0x38, + 0x22, + 0x38, + 0x26, + 0x38, + 0x22, + 0x38, + 0x2E, + 0x38, + 0x22, + 0x38, + 0x3E, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_tools_antenna{ + {16, 16}, + bitmap_icon_tools_antenna_data}; + +static constexpr uint8_t bitmap_icon_tools_wipesd_data[] = { + 0xF0, + 0x3F, + 0x58, + 0x35, + 0x5C, + 0x35, + 0xFC, + 0x3F, + 0xFC, + 0x3F, + 0xFC, + 0x3F, + 0x3C, + 0x1C, + 0xBC, + 0xC9, + 0xBC, + 0xE3, + 0x2C, + 0x77, + 0x5C, + 0x3E, + 0xAC, + 0x1C, + 0x5C, + 0x3E, + 0x2C, + 0x77, + 0x9C, + 0xE3, + 0xAC, + 0xC1, +}; +static constexpr Bitmap bitmap_icon_tools_wipesd{ + {16, 16}, + bitmap_icon_tools_wipesd_data}; + +static constexpr uint8_t bitmap_icon_touchtunes_data[] = { + 0xE0, + 0x07, + 0x30, + 0x0C, + 0x7C, + 0x3E, + 0xC4, + 0x23, + 0x26, + 0x64, + 0x12, + 0x48, + 0x0F, + 0xF3, + 0x09, + 0x95, + 0x0F, + 0xF1, + 0x09, + 0x91, + 0x0F, + 0xF1, + 0xC9, + 0x91, + 0xE9, + 0x91, + 0xC9, + 0x90, + 0x0F, + 0xF0, + 0xFF, + 0xFF, +}; +static constexpr Bitmap bitmap_icon_touchtunes{ + {16, 16}, + bitmap_icon_touchtunes_data}; + +static constexpr uint8_t bitmap_icon_tpms_data[] = { + 0xC0, + 0x03, + 0xF0, + 0x0F, + 0x18, + 0x18, + 0xEC, + 0x37, + 0x36, + 0x6D, + 0x3A, + 0x59, + 0x4B, + 0xD5, + 0x8B, + 0xD3, + 0xCB, + 0xD1, + 0xAB, + 0xD2, + 0x9A, + 0x5C, + 0xB6, + 0x6C, + 0xEC, + 0x37, + 0x18, + 0x18, + 0xF0, + 0x0F, + 0xC0, + 0x03, +}; +static constexpr Bitmap bitmap_icon_tpms{ + {16, 16}, + bitmap_icon_tpms_data}; + +static constexpr uint8_t bitmap_icon_tranceivers_data[] = { + 0x80, + 0x01, + 0xC0, + 0x03, + 0xE0, + 0x07, + 0xB0, + 0x0D, + 0x98, + 0x19, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x98, + 0x19, + 0xB0, + 0x0D, + 0xE0, + 0x07, + 0xC0, + 0x03, + 0x83, + 0xC1, + 0x03, + 0xC0, + 0xFF, + 0xFF, + 0xFF, + 0xFF, +}; +static constexpr Bitmap bitmap_icon_tranceivers{ + {16, 16}, + bitmap_icon_tranceivers_data}; + +static constexpr uint8_t bitmap_icon_transmit_data[] = { + 0x80, + 0x01, + 0xC0, + 0x03, + 0xE0, + 0x07, + 0xB0, + 0x0D, + 0x98, + 0x19, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x83, + 0xC1, + 0x03, + 0xC0, + 0xFF, + 0xFF, + 0xFF, + 0xFF, +}; +static constexpr Bitmap bitmap_icon_transmit{ + {16, 16}, + bitmap_icon_transmit_data}; + +static constexpr uint8_t bitmap_icon_trash_data[] = { + 0x00, + 0x00, + 0xC0, + 0x01, + 0x20, + 0x02, + 0xFC, + 0x1F, + 0x00, + 0x00, + 0xA8, + 0x0A, + 0xA8, + 0x0A, + 0xA8, + 0x0A, + 0xA8, + 0x0A, + 0xA8, + 0x0A, + 0xA8, + 0x0A, + 0xA8, + 0x0A, + 0xA8, + 0x0A, + 0x08, + 0x08, + 0xF0, + 0x07, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_trash{ + {16, 16}, + bitmap_icon_trash_data}; + +static constexpr uint8_t bitmap_icon_trim_data[] = { + 0x10, + 0x10, + 0x30, + 0x12, + 0x50, + 0x15, + 0x50, + 0x15, + 0x50, + 0x15, + 0x52, + 0x95, + 0x56, + 0xD5, + 0x5F, + 0xF5, + 0x56, + 0xD5, + 0x52, + 0x95, + 0x50, + 0x15, + 0x50, + 0x15, + 0x50, + 0x15, + 0x90, + 0x18, + 0x10, + 0x10, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_trim{ + {16, 16}, + bitmap_icon_trim_data}; + +static constexpr uint8_t bitmap_icon_tune_fork_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x22, + 0x44, + 0x21, + 0x84, + 0x2D, + 0xB4, + 0x25, + 0xA4, + 0x25, + 0xA4, + 0x2D, + 0xB4, + 0x61, + 0x86, + 0xC2, + 0x43, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_tune_fork{ + {16, 16}, + bitmap_icon_tune_fork_data}; + +static constexpr uint8_t bitmap_icon_upconvert_data[] = { + 0x80, + 0x01, + 0xC0, + 0x03, + 0xE0, + 0x07, + 0xF0, + 0x0F, + 0xF8, + 0x1F, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x00, + 0x00, + 0x77, + 0x77, + 0x51, + 0x51, + 0x33, + 0x53, + 0x51, + 0x51, + 0x51, + 0x77, + 0x00, + 0x80, +}; +static constexpr Bitmap bitmap_icon_upconvert{ + {16, 16}, + bitmap_icon_upconvert_data}; + +static constexpr uint8_t bitmap_icon_utilities_data[] = { + 0x30, + 0x24, + 0x78, + 0x66, + 0x78, + 0x66, + 0x78, + 0x7E, + 0x78, + 0x3C, + 0x78, + 0x18, + 0x78, + 0x18, + 0x30, + 0x3C, + 0x30, + 0x3C, + 0x30, + 0x3C, + 0x30, + 0x3C, + 0x30, + 0x3C, + 0x30, + 0x3C, + 0x30, + 0x3C, + 0x30, + 0x18, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_icon_utilities{ + {16, 16}, + bitmap_icon_utilities_data}; + +static constexpr uint8_t bitmap_key_data[] = { + 0xC0, + 0x03, + 0xE0, + 0x07, + 0x30, + 0x0C, + 0x30, + 0x0C, + 0x30, + 0x0C, + 0x30, + 0x0C, + 0xE0, + 0x07, + 0xC0, + 0x03, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x07, + 0x80, + 0x03, + 0x80, + 0x07, + 0x80, + 0x01, +}; +static constexpr Bitmap bitmap_key{ + {16, 16}, + bitmap_key_data}; + +static constexpr uint8_t bitmap_more_data[] = { + 0x10, + 0x10, + 0x10, + 0x10, + 0x54, + 0x38, + 0x10, + 0x00, +}; +static constexpr Bitmap bitmap_more{ + {8, 8}, + bitmap_more_data}; + +static constexpr uint8_t bitmap_play_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x0C, + 0x00, + 0x3C, + 0x00, + 0xFC, + 0x00, + 0xFC, + 0x03, + 0xFC, + 0x0F, + 0xFC, + 0x3F, + 0xFC, + 0x3F, + 0xFC, + 0x0F, + 0xFC, + 0x03, + 0xFC, + 0x00, + 0x3C, + 0x00, + 0x0C, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_play{ + {16, 16}, + bitmap_play_data}; + +static constexpr uint8_t bitmap_record_data[] = { + 0xC0, + 0x07, + 0xF0, + 0x1F, + 0xF8, + 0x3F, + 0xFC, + 0x7F, + 0xFC, + 0x7F, + 0x66, + 0xCC, + 0x56, + 0xF7, + 0x66, + 0xF6, + 0x56, + 0xF7, + 0x56, + 0xCC, + 0xFC, + 0x7F, + 0xFC, + 0x7F, + 0xF8, + 0x3F, + 0xF0, + 0x1F, + 0xC0, + 0x07, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_record{ + {16, 16}, + bitmap_record_data}; + +static constexpr uint8_t bitmap_rssipwm_data[] = { + 0x00, + 0x00, + 0x00, + 0x8F, + 0xE7, + 0x7D, + 0x51, + 0x10, + 0x10, + 0x51, + 0x10, + 0x10, + 0x8F, + 0xE3, + 0x10, + 0x09, + 0x04, + 0x11, + 0x11, + 0x04, + 0x11, + 0xD1, + 0xF3, + 0x7C, + 0x00, + 0x00, + 0x00, + 0x3F, + 0x1E, + 0x1E, + 0x21, + 0x12, + 0x12, + 0x21, + 0x12, + 0x12, + 0x21, + 0x12, + 0x12, + 0x21, + 0x12, + 0x12, + 0x21, + 0x12, + 0x12, + 0xE1, + 0xF3, + 0x73, +}; +static constexpr Bitmap bitmap_rssipwm{ + {24, 16}, + bitmap_rssipwm_data}; + +static constexpr uint8_t bitmap_sd_card_error_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0xC0, + 0x1F, + 0xE0, + 0x1F, + 0xF0, + 0x1F, + 0xF8, + 0x1F, + 0xC8, + 0x13, + 0x98, + 0x19, + 0x38, + 0x1C, + 0x78, + 0x1E, + 0x38, + 0x1C, + 0x98, + 0x19, + 0xC8, + 0x13, + 0xF8, + 0x1F, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_sd_card_error{ + {16, 16}, + bitmap_sd_card_error_data}; + +static constexpr uint8_t bitmap_sd_card_ok_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0xC0, + 0x1F, + 0xE0, + 0x1F, + 0xF0, + 0x1F, + 0xF8, + 0x1F, + 0xF8, + 0x1F, + 0x98, + 0x15, + 0x68, + 0x19, + 0x68, + 0x1D, + 0x68, + 0x19, + 0x98, + 0x15, + 0xF8, + 0x1F, + 0xF8, + 0x1F, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_sd_card_ok{ + {16, 16}, + bitmap_sd_card_ok_data}; + +static constexpr uint8_t bitmap_sd_card_unknown_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0xC0, + 0x1F, + 0xE0, + 0x1F, + 0xF0, + 0x1F, + 0xF8, + 0x1F, + 0x38, + 0x1C, + 0x98, + 0x19, + 0xF8, + 0x1C, + 0x78, + 0x1E, + 0x78, + 0x1E, + 0xF8, + 0x1F, + 0x78, + 0x1E, + 0xF8, + 0x1F, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_sd_card_unknown{ + {16, 16}, + bitmap_sd_card_unknown_data}; + static constexpr uint8_t bitmap_sig_cw_data[] = { 0x00, 0x00, @@ -1235,180 +4955,7 @@ static constexpr Bitmap bitmap_sig_cw{ {32, 32}, bitmap_sig_cw_data}; -static constexpr uint8_t bitmap_icon_tpms_data[] = { - 0xC0, - 0x03, - 0xF0, - 0x0F, - 0x18, - 0x18, - 0xEC, - 0x37, - 0x36, - 0x6D, - 0x3A, - 0x59, - 0x4B, - 0xD5, - 0x8B, - 0xD3, - 0xCB, - 0xD1, - 0xAB, - 0xD2, - 0x9A, - 0x5C, - 0xB6, - 0x6C, - 0xEC, - 0x37, - 0x18, - 0x18, - 0xF0, - 0x0F, - 0xC0, - 0x03, -}; -static constexpr Bitmap bitmap_icon_tpms{ - {16, 16}, - bitmap_icon_tpms_data}; - -static constexpr uint8_t bitmap_rssipwm_data[] = { - 0x00, - 0x00, - 0x00, - 0x8F, - 0xE7, - 0x7D, - 0x51, - 0x10, - 0x10, - 0x51, - 0x10, - 0x10, - 0x8F, - 0xE3, - 0x10, - 0x09, - 0x04, - 0x11, - 0x11, - 0x04, - 0x11, - 0xD1, - 0xF3, - 0x7C, - 0x00, - 0x00, - 0x00, - 0x3F, - 0x1E, - 0x1E, - 0x21, - 0x12, - 0x12, - 0x21, - 0x12, - 0x12, - 0x21, - 0x12, - 0x12, - 0x21, - 0x12, - 0x12, - 0x21, - 0x12, - 0x12, - 0xE1, - 0xF3, - 0x73, -}; -static constexpr Bitmap bitmap_rssipwm{ - {24, 16}, - bitmap_rssipwm_data}; - -static constexpr uint8_t bitmap_icon_stealth_data[] = { - 0x00, - 0x00, - 0xC0, - 0x03, - 0xE0, - 0x07, - 0xE0, - 0x07, - 0xF8, - 0x1F, - 0x00, - 0x00, - 0xE0, - 0x07, - 0x60, - 0x06, - 0x00, - 0x00, - 0xF0, - 0x0F, - 0xF0, - 0x0F, - 0xF8, - 0x1E, - 0xFC, - 0x3F, - 0xFC, - 0x3E, - 0xFC, - 0x3F, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_stealth{ - {16, 16}, - bitmap_icon_stealth_data}; - -static constexpr uint8_t bitmap_key_data[] = { - 0xC0, - 0x03, - 0xE0, - 0x07, - 0x30, - 0x0C, - 0x30, - 0x0C, - 0x30, - 0x0C, - 0x30, - 0x0C, - 0xE0, - 0x07, - 0xC0, - 0x03, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x07, - 0x80, - 0x03, - 0x80, - 0x07, - 0x80, - 0x01, -}; -static constexpr Bitmap bitmap_key{ - {16, 16}, - bitmap_key_data}; - -static constexpr uint8_t bitmap_sig_square_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, +static constexpr uint8_t bitmap_sig_noise_data[] = { 0x00, 0x00, 0x00, @@ -1436,1890 +4983,111 @@ static constexpr uint8_t bitmap_sig_square_data[] = { 0x00, 0x00, 0x00, - 0xFE, - 0x83, - 0xFF, - 0x60, - 0xFE, - 0x83, - 0xFF, - 0x60, - 0x06, - 0x83, - 0xC1, - 0x60, - 0x06, - 0x83, - 0xC1, - 0x60, - 0x06, - 0x83, - 0xC1, - 0x60, - 0x06, - 0x83, - 0xC1, - 0x60, - 0x06, - 0x83, - 0xC1, - 0x60, - 0x06, - 0x83, - 0xC1, - 0x60, - 0x06, - 0x83, - 0xC1, - 0x60, - 0x06, - 0x83, - 0xC1, - 0x60, - 0x06, - 0x83, - 0xC1, - 0x60, - 0x06, - 0x83, - 0xC1, - 0x60, - 0x06, - 0x83, - 0xC1, - 0x60, - 0x06, - 0x83, - 0xC1, - 0x60, - 0x06, - 0xFF, - 0xC1, - 0x7F, - 0x06, - 0xFF, - 0xC1, - 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_sig_square{ - {32, 32}, - bitmap_sig_square_data}; - -static constexpr uint8_t bitmap_icon_options_ui_data[] = { - 0xFF, - 0x1F, - 0xFF, - 0x13, - 0xFF, - 0x1F, - 0x01, - 0x10, - 0x01, - 0x10, - 0x01, - 0x10, - 0x01, - 0x04, - 0x01, - 0x0C, - 0x01, - 0x1C, - 0x01, - 0x3C, - 0xFF, - 0x7D, - 0x00, - 0xFC, - 0x00, - 0x34, - 0x00, 0x20, 0x00, - 0x60, 0x00, 0x00, -}; -static constexpr Bitmap bitmap_icon_options_ui{ - {16, 16}, - bitmap_icon_options_ui_data}; - -static constexpr uint8_t bitmap_icon_jammer_data[] = { - 0xE0, - 0x07, - 0xF8, - 0x1F, - 0x1C, - 0x38, - 0x0E, - 0x78, - 0x06, - 0x7C, + 0x30, + 0x80, + 0x00, + 0x00, + 0x30, + 0x80, + 0x01, + 0x40, + 0x30, + 0xC0, 0x03, + 0xC0, + 0x30, + 0xC0, + 0x03, + 0xC0, + 0x39, + 0xC0, + 0x72, + 0xC0, + 0x7B, + 0x60, + 0x76, + 0x60, + 0x6E, + 0x60, + 0x1E, + 0x60, 0xCE, - 0x03, - 0xC7, - 0x83, - 0xC3, - 0xC3, - 0xC1, - 0xE3, - 0xC0, - 0x73, - 0xC0, - 0x3E, - 0x60, - 0x1E, - 0x70, - 0x1C, - 0x38, - 0xF8, - 0x1F, - 0xE0, - 0x07, -}; -static constexpr Bitmap bitmap_icon_jammer{ - {16, 16}, - bitmap_icon_jammer_data}; - -static constexpr uint8_t bitmap_icon_qr_code_data[] = { - 0x00, - 0x00, - 0xFE, - 0x7E, - 0xC6, - 0x62, - 0xFA, - 0x5A, - 0xFA, - 0x5A, - 0xDA, - 0x5A, - 0xFE, - 0x7E, - 0x7E, - 0x7E, - 0x00, - 0x00, - 0xFE, - 0x46, - 0xC2, - 0x06, - 0xFA, - 0x18, - 0xFA, - 0x18, - 0xC6, - 0x60, - 0xFE, - 0x62, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_qr_code{ - {16, 16}, - bitmap_icon_qr_code_data}; - -static constexpr uint8_t bitmap_icon_sonde_data[] = { - 0x80, - 0x03, - 0xE0, - 0x0F, - 0xE0, - 0x0F, - 0xF0, - 0x1F, - 0xF0, - 0x1F, - 0xF0, - 0x1F, - 0xE0, - 0x0F, - 0xE0, - 0x0F, - 0x00, - 0x00, - 0x20, - 0x09, - 0x00, - 0x00, - 0x40, - 0x05, - 0x00, - 0x00, - 0xC0, - 0x07, - 0xC0, - 0x07, - 0xC0, - 0x07, -}; -static constexpr Bitmap bitmap_icon_sonde{ - {16, 16}, - bitmap_icon_sonde_data}; - -static constexpr uint8_t bitmap_icon_codetx_data[] = { - 0x00, - 0x00, - 0xF0, - 0x07, + 0x6C, 0x0C, - 0x18, - 0x03, - 0x60, - 0xE0, - 0x03, - 0x18, - 0x0C, - 0x04, - 0x10, - 0xC0, - 0x01, - 0x20, - 0x02, - 0x00, - 0x00, - 0x00, - 0x00, - 0xBB, - 0x6D, - 0x2A, - 0x49, - 0x2A, - 0x49, - 0x3A, - 0x49, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_codetx{ - {16, 16}, - bitmap_icon_codetx_data}; - -static constexpr uint8_t bitmap_icon_scanner_data[] = { - 0x03, - 0x00, - 0x00, - 0x00, - 0x03, - 0x00, - 0x00, - 0x00, - 0x0F, - 0x00, - 0x00, - 0x00, - 0x03, - 0x01, - 0x80, - 0x01, - 0xC3, - 0x00, - 0xE0, - 0xFF, - 0xEF, - 0xFF, - 0xC0, - 0x00, - 0x83, - 0x01, - 0x00, - 0x01, - 0x03, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_scanner{ - {16, 16}, - bitmap_icon_scanner_data}; - -static constexpr uint8_t bitmap_icon_lge_data[] = { - 0x00, - 0x00, - 0x80, - 0x00, - 0xA4, - 0x12, - 0xA8, - 0x0A, - 0xD0, - 0x05, - 0xEC, - 0x1B, - 0xF0, - 0x07, - 0xFE, - 0xFF, - 0xF0, - 0x07, - 0xEC, - 0x1B, - 0xD0, - 0x05, - 0xA8, - 0x0A, - 0xA4, - 0x12, - 0x80, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_lge{ - {16, 16}, - bitmap_icon_lge_data}; - -static constexpr uint8_t bitmap_icon_soundboard_data[] = { - 0xF0, - 0x0F, - 0x1C, - 0x18, - 0x17, - 0x38, - 0x15, - 0x78, - 0x15, - 0xF8, - 0x15, - 0x82, - 0x15, - 0x8B, - 0xD5, - 0x83, - 0xD5, - 0xBB, - 0xD5, - 0x83, - 0x15, - 0x8B, - 0x15, - 0x92, - 0x15, - 0xA0, - 0x17, - 0x80, - 0x1C, - 0x80, - 0xF0, - 0xFF, -}; -static constexpr Bitmap bitmap_icon_soundboard{ - {16, 16}, - bitmap_icon_soundboard_data}; - -static constexpr uint8_t bitmap_icon_tetris_data[] = { - 0xF8, - 0xFF, - 0x88, - 0x88, - 0x88, - 0x88, - 0x88, - 0x88, - 0xF8, - 0xFF, - 0x80, - 0x08, - 0x80, - 0x08, - 0x9F, - 0x08, - 0x91, - 0x0F, - 0x11, - 0x00, - 0x11, - 0x00, - 0xFF, - 0xF1, - 0x11, - 0x91, - 0x11, - 0x91, - 0x11, - 0x91, - 0xFF, - 0xF1, -}; -static constexpr Bitmap bitmap_icon_tetris{ - {16, 16}, - bitmap_icon_tetris_data}; - -static constexpr uint8_t bitmap_icon_rename_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x0E, - 0x00, - 0x04, - 0xFF, - 0xF5, - 0x01, - 0x84, - 0xC9, - 0x84, - 0x55, - 0x85, - 0xDD, - 0x84, - 0x55, - 0x85, - 0xD5, - 0x84, - 0x01, - 0x84, - 0xFF, - 0xF5, - 0x00, - 0x04, - 0x00, - 0x0E, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_rename{ - {16, 16}, - bitmap_icon_rename_data}; - -static constexpr uint8_t bitmap_icon_lora_data[] = { - 0xC0, - 0x03, - 0x30, - 0x0C, - 0x00, - 0x00, - 0xC0, - 0x03, - 0x00, - 0x00, - 0xC0, - 0x03, - 0x60, - 0x06, - 0x60, - 0x06, - 0x60, - 0x06, - 0x60, - 0x06, - 0xC0, - 0x03, - 0x00, - 0x00, - 0xC0, - 0x03, - 0x00, - 0x00, - 0x30, - 0x0C, - 0xC0, - 0x03, -}; -static constexpr Bitmap bitmap_icon_lora{ - {16, 16}, - bitmap_icon_lora_data}; - -static constexpr uint8_t bitmap_icon_lcr_data[] = { - 0x0C, - 0x00, - 0xFF, - 0x7F, - 0x01, - 0x80, - 0xC1, - 0x9B, - 0xFF, - 0x7F, - 0x0C, - 0x00, - 0xFF, - 0x7F, - 0x01, - 0x80, - 0xC1, - 0x9D, - 0xFF, - 0x7F, - 0x0C, - 0x00, - 0x0C, - 0x00, - 0x0C, - 0x00, - 0x0C, - 0x00, - 0x0C, - 0x00, - 0x0C, - 0x00, -}; -static constexpr Bitmap bitmap_icon_lcr{ - {16, 16}, - bitmap_icon_lcr_data}; - -static constexpr uint8_t bitmap_icon_file_data[] = { - 0xFC, - 0x03, - 0x04, - 0x06, - 0x04, - 0x0E, - 0x04, - 0x1E, - 0x04, - 0x3E, - 0x04, - 0x20, - 0x04, - 0x20, - 0x04, - 0x20, - 0x04, - 0x20, - 0x04, - 0x20, - 0x04, - 0x20, - 0x04, - 0x20, - 0x04, - 0x20, - 0x04, - 0x20, - 0x04, - 0x20, - 0xFC, - 0x3F, -}; -static constexpr Bitmap bitmap_icon_file{ - {16, 16}, - bitmap_icon_file_data}; - -static constexpr uint8_t bitmap_icon_clk_ext_data[] = { - 0x00, - 0x00, - 0xDC, - 0x54, - 0x54, - 0x54, - 0x54, - 0x76, - 0x00, - 0x10, - 0x38, - 0x7C, - 0x10, - 0x10, - 0x10, - 0x00, -}; -static constexpr Bitmap bitmap_icon_clk_ext{ - {8, 16}, - bitmap_icon_clk_ext_data}; - -static constexpr uint8_t bitmap_icon_trash_data[] = { - 0x00, - 0x00, - 0xC0, - 0x01, - 0x20, - 0x02, - 0xFC, - 0x1F, - 0x00, - 0x00, - 0xA8, - 0x0A, - 0xA8, - 0x0A, - 0xA8, - 0x0A, - 0xA8, - 0x0A, - 0xA8, - 0x0A, - 0xA8, - 0x0A, - 0xA8, - 0x0A, - 0xA8, - 0x0A, - 0x08, - 0x08, - 0xF0, - 0x07, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_trash{ - {16, 16}, - bitmap_icon_trash_data}; - -static constexpr uint8_t bitmap_icon_fox_data[] = { - 0x18, - 0x18, - 0x28, - 0x14, - 0x68, - 0x16, - 0x68, - 0x16, - 0xC8, - 0x13, - 0x88, - 0x11, - 0x04, - 0x20, - 0x24, - 0x24, - 0x22, - 0x44, - 0x01, - 0x80, - 0x06, - 0x60, - 0x98, - 0x19, - 0x20, - 0x04, - 0x40, - 0x02, - 0x80, - 0x01, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_fox{ - {16, 16}, - bitmap_icon_fox_data}; - -static constexpr uint8_t bitmap_icon_script_data[] = { - 0xFC, - 0x07, - 0xFA, - 0x0F, - 0x19, - 0x1A, - 0xF9, - 0x1F, - 0x1E, - 0x1D, - 0xF8, - 0x1F, - 0x98, - 0x1F, - 0xF8, - 0x1F, - 0xF8, - 0x1F, - 0x08, - 0x14, - 0xF8, - 0x1F, - 0x48, - 0x1E, - 0xF8, - 0xFF, - 0x78, - 0x80, - 0x30, - 0x40, - 0xE0, - 0x3F, -}; -static constexpr Bitmap bitmap_icon_script{ - {16, 16}, - bitmap_icon_script_data}; - -static constexpr uint8_t bitmap_icon_hackrf_data[] = { - 0xF0, - 0x0F, - 0x10, - 0x08, - 0x50, - 0x0A, - 0x10, - 0x08, - 0x10, - 0x08, - 0x10, - 0x08, - 0xF8, - 0x1F, - 0xF8, - 0x1F, - 0xF8, - 0x1F, - 0xF8, - 0x1F, - 0xF8, - 0x1F, - 0xF8, - 0x1F, - 0xF8, - 0x1F, - 0xF0, - 0x0F, - 0x80, - 0x01, - 0x80, - 0x01, -}; -static constexpr Bitmap bitmap_icon_hackrf{ - {16, 16}, - bitmap_icon_hackrf_data}; - -static constexpr uint8_t bitmap_icon_dmr_data[] = { - 0x00, - 0x00, - 0xFE, - 0x1F, - 0xFE, - 0x3F, - 0x0E, - 0x78, - 0x0E, - 0x70, - 0x0E, - 0x70, - 0x0E, - 0x70, - 0x0E, - 0x78, - 0xFE, - 0x3F, - 0xFE, - 0x1F, - 0x8E, - 0x07, - 0x0E, - 0x0F, - 0x0E, - 0x1E, - 0x0E, - 0x3C, - 0x0E, - 0x78, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_dmr{ - {16, 16}, - bitmap_icon_dmr_data}; - -static constexpr uint8_t bitmap_arrow_right_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0x0C, - 0x00, - 0x1C, - 0xFE, - 0x3F, - 0xFE, - 0x7F, - 0xFE, - 0x3F, - 0x00, - 0x1C, - 0x00, - 0x0C, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_arrow_right{ - {16, 16}, - bitmap_arrow_right_data}; - -static constexpr uint8_t bitmap_icon_upconvert_data[] = { - 0x80, - 0x01, - 0xC0, - 0x03, - 0xE0, - 0x07, - 0xF0, - 0x0F, - 0xF8, - 0x1F, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x00, - 0x00, - 0x77, - 0x77, - 0x51, - 0x51, - 0x33, - 0x53, - 0x51, - 0x51, - 0x51, - 0x77, - 0x00, - 0x80, -}; -static constexpr Bitmap bitmap_icon_upconvert{ - {16, 16}, - bitmap_icon_upconvert_data}; - -static constexpr uint8_t bitmap_icon_hide_data[] = { - 0x00, - 0x00, - 0x00, - 0x40, - 0x00, - 0x20, - 0xE0, - 0x17, - 0x18, - 0x18, + 0x66, 0xC4, - 0x27, - 0x62, - 0x42, - 0x21, - 0x85, - 0xA1, - 0x84, - 0x62, - 0x46, - 0xA4, - 0x23, - 0x18, - 0x18, - 0xE8, - 0x07, - 0x04, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_hide{ - {16, 16}, - bitmap_icon_hide_data}; - -static constexpr uint8_t bitmap_icon_add_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0xF8, - 0x1F, - 0xF8, - 0x1F, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_add{ - {16, 16}, - bitmap_icon_add_data}; - -static constexpr uint8_t bitmap_icon_clk_int_data[] = { - 0x00, - 0x00, - 0xDC, - 0x54, - 0x54, - 0x54, - 0x54, - 0x76, - 0x00, - 0x44, - 0x6C, - 0x38, - 0x38, - 0x6C, - 0x44, - 0x00, -}; -static constexpr Bitmap bitmap_icon_clk_int{ - {8, 16}, - bitmap_icon_clk_int_data}; - -static constexpr uint8_t bitmap_icon_rds_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x3C, - 0x3C, - 0x7E, - 0x7E, - 0x67, - 0xE7, - 0x83, - 0xC3, - 0xC7, - 0xE1, - 0xFD, - 0xBC, - 0x42, - 0x42, - 0x3C, - 0x3C, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_rds{ - {16, 16}, - bitmap_icon_rds_data}; - -static constexpr uint8_t bitmap_icon_file_image_data[] = { - 0x00, - 0x00, - 0xFF, - 0xFF, - 0x01, - 0x80, - 0x01, - 0x80, - 0x89, - 0x80, - 0xC1, - 0x81, - 0xE1, - 0xA3, - 0xB1, - 0xB3, - 0x89, - 0xDC, - 0x07, - 0x8C, - 0x01, - 0x90, - 0x01, - 0x80, - 0xAB, - 0x82, - 0xFF, - 0xD5, - 0xFF, - 0xFF, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_file_image{ - {16, 16}, - bitmap_icon_file_image_data}; - -static constexpr uint8_t bitmap_icon_batt_icon_data[] = { - 0xC0, - 0x03, - 0xC0, - 0x03, - 0xF0, - 0x0F, - 0x10, - 0x08, - 0x10, - 0x08, - 0x10, - 0x08, - 0x10, - 0x08, - 0x10, - 0x08, - 0xF0, - 0x0F, - 0xF0, - 0x0F, - 0xF0, - 0x0F, - 0xF0, - 0x0F, - 0xF0, - 0x0F, - 0xF0, - 0x0F, - 0xF0, - 0x0F, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_batt_icon{ - {16, 16}, - bitmap_icon_batt_icon_data}; - -static constexpr uint8_t bitmap_tab_edge_data[] = { - 0x00, - 0x01, - 0x01, - 0x03, - 0x03, - 0x03, - 0x07, - 0x07, - 0x07, - 0x0F, - 0x0F, - 0x0F, - 0x1F, - 0x1F, - 0x1F, - 0x1F, - 0x3F, - 0x3F, - 0x3F, - 0x7F, - 0x7F, - 0x7F, - 0xFF, - 0xFF, -}; -static constexpr Bitmap bitmap_tab_edge{ - {8, 24}, - bitmap_tab_edge_data}; - -static constexpr uint8_t bitmap_icon_sdcard_data[] = { - 0xF0, - 0x3F, - 0x58, - 0x35, - 0x5C, - 0x35, - 0xFC, - 0x3F, - 0xFC, - 0x3F, - 0xFC, - 0x3F, - 0xFC, - 0x3F, - 0xFC, - 0x3F, - 0xFC, - 0x3F, - 0xAC, - 0x3A, - 0x5C, - 0x35, - 0xAC, - 0x3A, - 0x5C, - 0x35, - 0xAC, - 0x3A, - 0x5C, - 0x35, - 0xAC, - 0x3A, -}; -static constexpr Bitmap bitmap_icon_sdcard{ - {16, 16}, - bitmap_icon_sdcard_data}; - -static constexpr uint8_t bitmap_icon_clean_data[] = { - 0x00, - 0x00, - 0xC0, - 0x01, - 0x20, - 0x02, - 0xFC, - 0x1F, - 0x00, - 0x00, - 0x08, - 0x08, - 0xE8, - 0x08, - 0xA8, - 0x09, - 0xA8, - 0x0B, - 0x28, - 0x0A, - 0x28, - 0x0A, - 0x28, - 0x0A, - 0xE8, - 0x0B, - 0x08, - 0x08, - 0xF0, - 0x07, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_clean{ - {16, 16}, - bitmap_icon_clean_data}; - -static constexpr uint8_t bitmap_icon_touchtunes_data[] = { - 0xE0, - 0x07, - 0x30, + 0x6E, 0x0C, - 0x7C, - 0x3E, - 0xC4, - 0x23, - 0x26, - 0x64, - 0x12, - 0x48, - 0x0F, - 0xF3, - 0x09, - 0x95, - 0x0F, - 0xF1, - 0x09, - 0x91, - 0x0F, - 0xF1, - 0xC9, - 0x91, - 0xE9, - 0x91, - 0xC9, - 0x90, - 0x0F, - 0xF0, - 0xFF, - 0xFF, -}; -static constexpr Bitmap bitmap_icon_touchtunes{ - {16, 16}, - bitmap_icon_touchtunes_data}; - -static constexpr uint8_t bitmap_icon_file_iq_data[] = { - 0xFC, - 0x03, - 0x04, - 0x06, - 0x04, - 0x0E, - 0x04, - 0x1E, - 0x04, - 0x3E, - 0x04, - 0x20, - 0x04, - 0x20, - 0x04, - 0x21, - 0x44, - 0x25, - 0x54, - 0x25, - 0xF4, - 0x2F, - 0xA4, - 0x2A, - 0x84, - 0x22, - 0x04, - 0x22, - 0x04, - 0x20, - 0xFC, - 0x3F, -}; -static constexpr Bitmap bitmap_icon_file_iq{ - {16, 16}, - bitmap_icon_file_iq_data}; - -static constexpr uint8_t bitmap_icon_sd_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, + 0x66, 0xC0, - 0x1F, - 0xE0, - 0x1F, - 0xF0, - 0x1F, - 0xF8, - 0x1F, - 0x98, - 0x18, - 0xE8, - 0x16, - 0xC8, - 0x16, - 0x98, - 0x16, - 0xB8, - 0x16, - 0xC8, - 0x18, - 0xF8, - 0x1F, - 0xF8, - 0x1F, - 0x00, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_sd{ - {16, 16}, - bitmap_icon_sd_data}; - -static constexpr uint8_t bitmap_icon_camera_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0xE0, - 0x07, - 0xF0, - 0x0F, 0x3E, - 0x7C, - 0xDE, - 0x7B, - 0xEE, - 0x77, - 0xEE, - 0x77, - 0xEE, - 0x77, - 0xEE, - 0x77, - 0xDE, - 0x7B, - 0x3E, - 0x7C, - 0xFE, - 0x7F, 0x00, + 0x2C, + 0xC0, + 0x3B, 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_camera{ - {16, 16}, - bitmap_icon_camera_data}; - -static constexpr uint8_t bitmap_icon_tools_wipesd_data[] = { - 0xF0, - 0x3F, - 0x58, - 0x35, - 0x5C, - 0x35, - 0xFC, - 0x3F, - 0xFC, - 0x3F, - 0xFC, - 0x3F, 0x3C, - 0x1C, - 0xBC, - 0xC9, - 0xBC, - 0xE3, - 0x2C, - 0x77, - 0x5C, - 0x3E, - 0xAC, - 0x1C, - 0x5C, - 0x3E, - 0x2C, - 0x77, - 0x9C, - 0xE3, - 0xAC, - 0xC1, -}; -static constexpr Bitmap bitmap_icon_tools_wipesd{ - {16, 16}, - bitmap_icon_tools_wipesd_data}; - -static constexpr uint8_t bitmap_icon_options_radio_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x20, - 0x12, - 0x48, - 0x8A, - 0x51, - 0xCA, - 0x53, - 0xCA, - 0x53, - 0x8A, - 0x51, - 0x12, - 0x48, - 0x84, - 0x21, 0xC0, - 0x03, + 0x39, + 0x00, + 0x3C, + 0xC0, + 0x18, + 0x00, + 0x18, 0x40, - 0x02, - 0x60, - 0x06, - 0x20, - 0x04, - 0x30, - 0x0C, - 0xF0, - 0x0F, -}; -static constexpr Bitmap bitmap_icon_options_radio{ - {16, 16}, - bitmap_icon_options_radio_data}; - -static constexpr uint8_t bitmap_icon_freqman_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x7E, - 0x7E, - 0x81, - 0x81, - 0xBD, - 0xBD, - 0x81, - 0x81, - 0xBD, - 0xBD, - 0x81, - 0x81, - 0xBD, - 0x9D, - 0x81, - 0x81, - 0xBD, - 0xE1, - 0x81, - 0x61, - 0x7E, - 0x3E, - 0x00, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_freqman{ - {16, 16}, - bitmap_icon_freqman_data}; - -static constexpr uint8_t bitmap_icon_thermometer_data[] = { - 0xC0, - 0x00, - 0x20, - 0x01, 0x10, - 0x02, + 0x00, + 0x18, + 0x40, 0x10, - 0x3A, - 0x10, - 0x02, - 0x10, - 0x1A, - 0x10, - 0x02, - 0xD0, - 0x3A, - 0xD0, - 0x02, - 0xD0, - 0x1A, - 0xD0, - 0x02, - 0xE8, - 0x05, - 0xE8, - 0x05, - 0xC8, - 0x04, - 0x10, - 0x02, - 0xE0, - 0x01, -}; -static constexpr Bitmap bitmap_icon_thermometer{ - {16, 16}, - bitmap_icon_thermometer_data}; - -static constexpr uint8_t bitmap_sd_card_ok_data[] = { 0x00, 0x00, 0x00, 0x00, - 0xC0, - 0x1F, - 0xE0, - 0x1F, - 0xF0, - 0x1F, - 0xF8, - 0x1F, - 0xF8, - 0x1F, - 0x98, - 0x15, - 0x68, - 0x19, - 0x68, - 0x1D, - 0x68, - 0x19, - 0x98, - 0x15, - 0xF8, - 0x1F, - 0xF8, - 0x1F, 0x00, 0x00, 0x00, 0x00, -}; -static constexpr Bitmap bitmap_sd_card_ok{ - {16, 16}, - bitmap_sd_card_ok_data}; - -static constexpr uint8_t bitmap_icon_dir_data[] = { - 0x00, - 0x00, - 0x3E, - 0x00, - 0x41, - 0x00, - 0xC1, - 0x7F, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xAF, - 0xEA, - 0x57, - 0xF5, - 0xEF, - 0xEF, - 0xF7, - 0xF7, - 0xEE, - 0x6F, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_dir{ - {16, 16}, - bitmap_icon_dir_data}; - -static constexpr uint8_t bitmap_icon_memory_data[] = { - 0x54, - 0x15, - 0x54, - 0x15, - 0xFF, - 0x7F, - 0xFC, - 0x1F, - 0xFF, - 0x7F, - 0xCC, - 0x19, - 0xAF, - 0x7A, - 0x6C, - 0x1B, - 0xEF, - 0x7B, - 0xEC, - 0x1B, - 0xFF, - 0x7F, - 0xFC, - 0x1F, - 0xFF, - 0x7F, - 0x54, - 0x15, - 0x54, - 0x15, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_memory{ - {16, 16}, - bitmap_icon_memory_data}; - -static constexpr uint8_t bitmap_icon_remote_data[] = { - 0x20, - 0x00, - 0x20, - 0x00, - 0x20, - 0x00, - 0x20, - 0x00, - 0xE0, - 0x07, - 0xF0, - 0x0F, - 0x30, - 0x0C, - 0x30, - 0x0C, - 0xF0, - 0x0F, - 0xF0, - 0x0F, - 0x70, - 0x0D, - 0xB0, - 0x0E, - 0x70, - 0x0D, - 0xB0, - 0x0E, - 0xF0, - 0x0F, - 0xE0, - 0x07, -}; -static constexpr Bitmap bitmap_icon_remote{ - {16, 16}, - bitmap_icon_remote_data}; - -static constexpr uint8_t bitmap_icon_save_data[] = { - 0xFC, - 0x07, - 0x0A, - 0x0A, - 0x0A, - 0x12, - 0xF2, - 0x21, - 0x02, - 0x20, - 0x02, - 0x20, - 0x02, - 0x20, - 0x02, - 0x20, - 0xFA, - 0x27, - 0xFA, - 0x2F, - 0x0A, - 0x28, - 0xFA, - 0x2F, - 0x0A, - 0x28, - 0xFA, - 0x2F, - 0xFC, - 0x1F, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_save{ - {16, 16}, - bitmap_icon_save_data}; - -static constexpr uint8_t bitmap_icon_back_data[] = { - 0x00, - 0x00, - 0x30, - 0x00, - 0x38, - 0x00, - 0x1C, - 0x00, - 0x0E, - 0x00, - 0xFF, - 0x3F, - 0xFF, - 0x7F, - 0x0E, - 0xE0, - 0x1C, - 0xC0, - 0x38, - 0xC0, - 0x30, - 0xC0, - 0x00, - 0xE0, - 0x00, - 0x7F, - 0x00, - 0x3F, 0x00, 0x00, 0x00, 0x00, -}; -static constexpr Bitmap bitmap_icon_back{ - {16, 16}, - bitmap_icon_back_data}; - -static constexpr uint8_t bitmap_icon_bht_data[] = { - 0x00, - 0x00, - 0xE0, - 0x07, - 0xF8, - 0x08, - 0x9C, - 0x07, - 0x0C, - 0x00, - 0x8E, - 0x0A, - 0x46, - 0x12, - 0x26, - 0x22, - 0x06, - 0x02, - 0x06, - 0x00, - 0x06, - 0x00, - 0x06, - 0x00, - 0x06, - 0x00, - 0x06, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_bht{ - {16, 16}, - bitmap_icon_bht_data}; - -static constexpr uint8_t bitmap_icon_shift_data[] = { - 0x00, - 0x00, - 0x80, - 0x00, - 0xC0, - 0x01, - 0xE0, - 0x03, - 0xF0, - 0x07, - 0xF8, - 0x0F, - 0xFC, - 0x1F, - 0xE0, - 0x03, - 0xE0, - 0x03, - 0xE0, - 0x03, - 0x20, - 0x02, - 0xE0, - 0x03, - 0x20, - 0x02, - 0xE0, - 0x03, 0x00, 0x00, 0x00, 0x00, -}; -static constexpr Bitmap bitmap_icon_shift{ - {16, 16}, - bitmap_icon_shift_data}; - -static constexpr uint8_t bitmap_play_data[] = { 0x00, 0x00, 0x00, 0x00, - 0x0C, 0x00, - 0x3C, 0x00, - 0xFC, 0x00, - 0xFC, - 0x03, - 0xFC, - 0x0F, - 0xFC, - 0x3F, - 0xFC, - 0x3F, - 0xFC, - 0x0F, - 0xFC, - 0x03, - 0xFC, 0x00, - 0x3C, 0x00, - 0x0C, + 0x00, + 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; -static constexpr Bitmap bitmap_play{ - {16, 16}, - bitmap_play_data}; - -static constexpr uint8_t bitmap_icon_setup_data[] = { - 0xC0, - 0x01, - 0xC0, - 0x01, - 0xE4, - 0x13, - 0xFE, - 0x3F, - 0xFF, - 0x7F, - 0x3E, - 0x3E, - 0x1C, - 0x1C, - 0x1C, - 0x1C, - 0x1C, - 0x1C, - 0x3E, - 0x3E, - 0xFF, - 0x7F, - 0xFE, - 0x3F, - 0xE4, - 0x13, - 0xC0, - 0x01, - 0xC0, - 0x01, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_setup{ - {16, 16}, - bitmap_icon_setup_data}; +static constexpr Bitmap bitmap_sig_noise{ + {32, 32}, + bitmap_sig_noise_data}; static constexpr uint8_t bitmap_sig_saw_down_data[] = { 0x00, @@ -3455,463 +5223,715 @@ static constexpr Bitmap bitmap_sig_saw_down{ {32, 32}, bitmap_sig_saw_down_data}; -static constexpr uint8_t bitmap_icon_font_viewer_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x10, - 0x0C, - 0x38, - 0x0C, - 0x38, - 0x0C, - 0x6C, - 0x0C, - 0x6C, - 0x0C, - 0xC6, - 0x7C, - 0xFE, - 0xFC, - 0xFF, - 0x8D, - 0x83, - 0x8D, - 0x83, - 0xFD, - 0x01, - 0x7D, +static constexpr uint8_t bitmap_sig_saw_up_data[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -static constexpr Bitmap bitmap_icon_font_viewer{ - {16, 16}, - bitmap_icon_font_viewer_data}; - -static constexpr uint8_t bitmap_icon_load_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x06, 0x00, 0x01, - 0x80, - 0x03, - 0x40, - 0x05, - 0x00, - 0x01, - 0x0E, - 0x01, - 0x11, - 0x01, - 0x7F, - 0x1D, - 0x01, - 0x20, - 0xF9, - 0xFF, - 0xF9, - 0xFF, - 0xFD, - 0x7F, - 0xFD, - 0x7F, - 0xFF, - 0x3F, - 0xFF, - 0x3F, - 0xFF, - 0x1F, - 0xFF, - 0x1F, -}; -static constexpr Bitmap bitmap_icon_load{ - {16, 16}, - bitmap_icon_load_data}; - -static constexpr uint8_t bitmap_icon_speaker_mute_data[] = { - 0x00, - 0x00, - 0x40, - 0x00, - 0x60, - 0x00, 0x70, - 0x00, - 0x78, - 0x00, - 0x7F, - 0x22, - 0x7F, - 0x36, - 0x7F, - 0x1C, - 0x7F, - 0x08, - 0x7F, - 0x1C, - 0x7F, - 0x36, - 0x7F, - 0x22, - 0x78, - 0x00, - 0x70, - 0x00, - 0x60, - 0x00, - 0x40, - 0x00, -}; -static constexpr Bitmap bitmap_icon_speaker_mute{ - {16, 16}, - bitmap_icon_speaker_mute_data}; - -static constexpr uint8_t bitmap_icon_modem_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xF8, - 0x1F, - 0x04, - 0x20, - 0x02, - 0x40, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xAB, - 0xDF, - 0xAB, - 0xDF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_modem{ - {16, 16}, - bitmap_icon_modem_data}; - -static constexpr uint8_t bitmap_bulb_off_data[] = { - 0x00, - 0x3C, - 0x00, - 0x00, - 0xC3, - 0x00, - 0x80, - 0x00, - 0x01, - 0x40, - 0x00, - 0x02, - 0x20, - 0x00, - 0x04, - 0x20, - 0x00, - 0x04, - 0x10, - 0x00, - 0x08, - 0x10, - 0x42, - 0x08, - 0x10, - 0x42, - 0x08, - 0x10, - 0x24, - 0x08, - 0x10, - 0x24, - 0x08, - 0x20, - 0x24, - 0x04, - 0x20, - 0x2C, - 0x04, - 0x40, - 0x34, - 0x02, - 0x80, - 0x3C, - 0x01, - 0x00, - 0xFF, - 0x00, - 0x00, - 0xE3, - 0x00, - 0x00, - 0xBD, - 0x00, - 0x00, - 0xC3, - 0x00, - 0x00, - 0xBD, - 0x00, - 0x00, - 0xC3, - 0x00, - 0x00, - 0xBD, - 0x00, - 0x00, - 0x42, - 0x00, - 0x00, - 0x3C, - 0x00, -}; -static constexpr Bitmap bitmap_bulb_off{ - {24, 24}, - bitmap_bulb_off_data}; - -static constexpr uint8_t bitmap_icon_sleep_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0x08, - 0x00, - 0x18, - 0x00, - 0x18, - 0x00, - 0x38, - 0x00, - 0x3C, - 0x00, - 0x3C, - 0x00, - 0x3E, - 0x84, - 0x1F, - 0xF8, - 0x1F, - 0xF0, - 0x0F, - 0xC0, - 0x03, - 0x00, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_sleep{ - {16, 16}, - bitmap_icon_sleep_data}; - -static constexpr uint8_t bitmap_icon_paint_data[] = { - 0xFE, - 0x3F, - 0xFF, - 0x3F, - 0xFF, - 0xFF, - 0xFF, - 0xBF, - 0xFE, - 0xBF, - 0x00, - 0x80, - 0x80, - 0xFF, - 0x80, - 0x00, - 0x80, - 0x00, - 0xC0, - 0x01, - 0xC0, - 0x01, - 0xC0, - 0x01, - 0xC0, - 0x01, - 0xC0, - 0x01, - 0xC0, - 0x01, - 0xC0, - 0x01, -}; -static constexpr Bitmap bitmap_icon_paint{ - {16, 16}, - bitmap_icon_paint_data}; - -static constexpr uint8_t bitmap_icon_notepad_data[] = { - 0x0C, - 0x00, - 0x1E, - 0x00, - 0x2F, - 0x00, - 0x47, - 0x00, - 0xE2, - 0x00, - 0xD4, - 0x01, - 0xB8, - 0x03, - 0x70, - 0x07, - 0xE0, - 0x0E, - 0xC0, - 0x1D, - 0x80, - 0x3B, - 0x00, - 0x4F, - 0x00, - 0x46, - 0x00, - 0x84, - 0x00, - 0xD8, - 0x00, - 0xE0, -}; -static constexpr Bitmap bitmap_icon_notepad{ - {16, 16}, - bitmap_icon_notepad_data}; - -static constexpr uint8_t bitmap_icon_trim_data[] = { - 0x10, - 0x10, - 0x30, - 0x12, - 0x50, - 0x15, - 0x50, - 0x15, - 0x50, - 0x15, - 0x52, - 0x95, - 0x56, - 0xD5, - 0x5F, - 0xF5, - 0x56, - 0xD5, - 0x52, - 0x95, - 0x50, - 0x15, - 0x50, - 0x15, - 0x50, - 0x15, - 0x90, - 0x18, - 0x10, - 0x10, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_trim{ - {16, 16}, - bitmap_icon_trim_data}; - -static constexpr uint8_t bitmap_icon_copy_data[] = { - 0x00, - 0x00, - 0xFC, - 0x00, - 0x84, - 0x01, - 0xC4, - 0x0F, - 0x74, - 0x18, - 0x44, - 0x38, - 0x44, - 0x78, - 0x74, - 0x40, - 0x44, - 0x44, - 0x44, - 0x44, - 0x74, - 0x5F, - 0x44, - 0x44, - 0x44, - 0x44, - 0x7C, - 0x40, - 0xC0, - 0x7F, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_copy{ - {16, 16}, - bitmap_icon_copy_data}; - -static constexpr uint8_t bitmap_icon_cut_data[] = { - 0x00, - 0x00, - 0x10, - 0x10, - 0x30, - 0x18, - 0x20, - 0x08, - 0x60, - 0x0C, - 0x40, - 0x04, - 0xC0, 0x06, 0x80, + 0x01, + 0x78, + 0x06, + 0xC0, + 0x01, + 0x7C, + 0x06, + 0xE0, + 0x01, + 0x6E, + 0x06, + 0xF0, + 0x01, + 0x67, + 0x06, + 0xB8, + 0x81, + 0x63, + 0x06, + 0x9C, + 0xC1, + 0x61, + 0x06, + 0x8E, + 0xE1, + 0x60, + 0x06, + 0x87, + 0x71, + 0x60, + 0x86, + 0x83, + 0x39, + 0x60, + 0xC6, + 0x81, + 0x1D, + 0x60, + 0xE6, + 0x80, + 0x0F, + 0x60, + 0x76, + 0x80, + 0x07, + 0x60, + 0x3E, + 0x80, + 0x03, + 0x60, + 0x1E, + 0x80, + 0x01, + 0x60, + 0x0E, + 0x80, + 0x00, + 0x60, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_sig_saw_up{ + {32, 32}, + bitmap_sig_saw_up_data}; + +static constexpr uint8_t bitmap_sig_sine_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x03, + 0xC0, 0x00, 0x80, - 0x01, - 0x80, + 0x07, + 0xE0, 0x01, 0xC0, + 0x0F, + 0xF0, 0x03, - 0x78, + 0xC0, + 0x0C, + 0x30, + 0x03, + 0x60, + 0x18, + 0x18, + 0x06, + 0x60, + 0x18, + 0x18, + 0x06, + 0x60, + 0x18, + 0x18, + 0x06, + 0x60, + 0x18, + 0x18, + 0x06, + 0x30, + 0x30, + 0x0C, + 0x0C, + 0x30, + 0x30, + 0x0C, + 0x0C, + 0x30, + 0x30, + 0x0C, + 0x0C, + 0x30, + 0x30, + 0x0C, + 0x0C, + 0x18, + 0x60, + 0x06, + 0x18, 0x1E, - 0x44, - 0x22, - 0x44, - 0x22, - 0x44, - 0x22, - 0x38, - 0x1C, + 0xE0, + 0x07, + 0x78, + 0x0E, + 0xC0, + 0x03, + 0x70, + 0x06, + 0x80, + 0x01, + 0x60, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, }; -static constexpr Bitmap bitmap_icon_cut{ +static constexpr Bitmap bitmap_sig_sine{ + {32, 32}, + bitmap_sig_sine_data}; + +static constexpr uint8_t bitmap_sig_square_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xFE, + 0x83, + 0xFF, + 0x60, + 0xFE, + 0x83, + 0xFF, + 0x60, + 0x06, + 0x83, + 0xC1, + 0x60, + 0x06, + 0x83, + 0xC1, + 0x60, + 0x06, + 0x83, + 0xC1, + 0x60, + 0x06, + 0x83, + 0xC1, + 0x60, + 0x06, + 0x83, + 0xC1, + 0x60, + 0x06, + 0x83, + 0xC1, + 0x60, + 0x06, + 0x83, + 0xC1, + 0x60, + 0x06, + 0x83, + 0xC1, + 0x60, + 0x06, + 0x83, + 0xC1, + 0x60, + 0x06, + 0x83, + 0xC1, + 0x60, + 0x06, + 0x83, + 0xC1, + 0x60, + 0x06, + 0x83, + 0xC1, + 0x60, + 0x06, + 0xFF, + 0xC1, + 0x7F, + 0x06, + 0xFF, + 0xC1, + 0x7F, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_sig_square{ + {32, 32}, + bitmap_sig_square_data}; + +static constexpr uint8_t bitmap_sig_tri_data[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x03, + 0xC0, + 0x00, + 0x00, + 0x03, + 0xC0, + 0x00, + 0x80, + 0x07, + 0xE0, + 0x01, + 0x80, + 0x07, + 0xE0, + 0x01, + 0xC0, + 0x0C, + 0x30, + 0x03, + 0xC0, + 0x0C, + 0x30, + 0x03, + 0x60, + 0x18, + 0x18, + 0x06, + 0x60, + 0x18, + 0x18, + 0x06, + 0x30, + 0x30, + 0x0C, + 0x0C, + 0x30, + 0x30, + 0x0C, + 0x0C, + 0x18, + 0x60, + 0x06, + 0x18, + 0x18, + 0x60, + 0x06, + 0x18, + 0x0E, + 0xC0, + 0x03, + 0x70, + 0x0E, + 0xC0, + 0x03, + 0x70, + 0x06, + 0x80, + 0x01, + 0x60, + 0x06, + 0x80, + 0x01, + 0x60, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_sig_tri{ + {32, 32}, + bitmap_sig_tri_data}; + +static constexpr uint8_t bitmap_stop_data[] = { + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0x8B, + 0xCD, + 0xDD, + 0xAA, + 0xDB, + 0xCA, + 0xDB, + 0xEA, + 0xDD, + 0xED, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_stop{ {16, 16}, - bitmap_icon_cut_data}; + bitmap_stop_data}; + +static constexpr uint8_t bitmap_stopwatch_data[] = { + 0x00, + 0x00, + 0xC0, + 0x01, + 0x80, + 0x00, + 0x80, + 0x20, + 0x60, + 0x13, + 0x10, + 0x0C, + 0x88, + 0x08, + 0x84, + 0x10, + 0x84, + 0x10, + 0xC2, + 0x21, + 0x84, + 0x10, + 0x04, + 0x10, + 0x08, + 0x08, + 0x10, + 0x04, + 0x60, + 0x03, + 0x80, + 0x00, +}; +static constexpr Bitmap bitmap_stopwatch{ + {16, 16}, + bitmap_stopwatch_data}; + +static constexpr uint8_t bitmap_stripes_data[] = { + 0xFF, + 0x03, + 0xC0, + 0xFF, + 0x01, + 0xE0, + 0xFF, + 0x00, + 0xF0, + 0x7F, + 0x00, + 0xF8, + 0x3F, + 0x00, + 0xFC, + 0x1F, + 0x00, + 0xFE, + 0x0F, + 0x00, + 0xFF, + 0x07, + 0x80, + 0xFF, +}; +static constexpr Bitmap bitmap_stripes{ + {24, 8}, + bitmap_stripes_data}; + +static constexpr uint8_t bitmap_tab_edge_data[] = { + 0x00, + 0x01, + 0x01, + 0x03, + 0x03, + 0x03, + 0x07, + 0x07, + 0x07, + 0x0F, + 0x0F, + 0x0F, + 0x1F, + 0x1F, + 0x1F, + 0x1F, + 0x3F, + 0x3F, + 0x3F, + 0x7F, + 0x7F, + 0x7F, + 0xFF, + 0xFF, +}; +static constexpr Bitmap bitmap_tab_edge{ + {8, 24}, + bitmap_tab_edge_data}; + +static constexpr uint8_t bitmap_target_data[] = { + 0x80, + 0x00, + 0x80, + 0x00, + 0xE0, + 0x03, + 0x90, + 0x04, + 0x88, + 0x08, + 0x04, + 0x10, + 0x04, + 0x10, + 0x1F, + 0x7C, + 0x04, + 0x10, + 0x04, + 0x10, + 0x88, + 0x08, + 0x90, + 0x04, + 0xE0, + 0x03, + 0x80, + 0x00, + 0x80, + 0x00, + 0x00, + 0x00, +}; +static constexpr Bitmap bitmap_target{ + {16, 16}, + bitmap_target_data}; static constexpr uint8_t bitmap_target_calibrate_data[] = { 0x02, @@ -4047,747 +6067,177 @@ static constexpr Bitmap bitmap_target_calibrate{ {32, 32}, bitmap_target_calibrate_data}; -static constexpr uint8_t bitmap_icon_controls_data[] = { - 0x8C, - 0x31, - 0x5A, - 0x6B, - 0xDE, - 0x7B, - 0x8C, - 0x31, +static constexpr uint8_t bitmap_target_verify_data[] = { 0x00, - 0x00, - 0x8C, - 0x31, - 0x5A, - 0x7B, - 0xDE, - 0x7B, - 0x8C, - 0x31, - 0x00, - 0x00, - 0x8C, - 0x31, - 0xDA, - 0x7B, - 0xDE, - 0x7B, - 0x8C, - 0x31, - 0x00, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_controls{ - {16, 16}, - bitmap_icon_controls_data}; - -static constexpr uint8_t bitmap_icon_pocsag_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xFC, - 0x3F, - 0xFE, - 0x7F, - 0x02, - 0x40, - 0xBA, - 0x45, - 0x02, - 0x40, - 0xFE, - 0x7F, - 0xFE, - 0x7F, - 0x92, - 0x7C, - 0x92, - 0x7C, - 0xFC, - 0x3F, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_pocsag{ - {16, 16}, - bitmap_icon_pocsag_data}; - -static constexpr uint8_t bitmap_stop_data[] = { - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0x8B, - 0xCD, - 0xDD, - 0xAA, - 0xDB, - 0xCA, - 0xDB, - 0xEA, - 0xDD, - 0xED, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_stop{ - {16, 16}, - bitmap_stop_data}; - -static constexpr uint8_t bitmap_icon_speaker_data[] = { - 0x00, - 0x00, - 0x40, - 0x10, - 0x60, - 0x20, - 0x70, - 0x44, - 0x78, - 0x48, - 0x7F, - 0x91, - 0x7F, - 0x92, - 0x7F, - 0x92, - 0x7F, - 0x92, - 0x7F, - 0x92, - 0x7F, - 0x92, - 0x7F, - 0x91, - 0x78, - 0x48, - 0x70, - 0x44, - 0x60, - 0x20, - 0x40, - 0x10, -}; -static constexpr Bitmap bitmap_icon_speaker{ - {16, 16}, - bitmap_icon_speaker_data}; - -static constexpr uint8_t bitmap_icon_replay_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x0C, - 0x00, - 0x3C, - 0x00, - 0xFC, - 0x00, - 0xFC, - 0x03, - 0xFC, - 0x0F, - 0xFC, - 0x3F, - 0xFC, - 0x3F, - 0xFC, - 0x0F, - 0xFC, - 0x03, - 0xFC, - 0x00, - 0x3C, - 0x00, - 0x0C, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_replay{ - {16, 16}, - bitmap_icon_replay_data}; - -static constexpr uint8_t bitmap_icon_rename_numeric_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x0E, - 0x00, - 0x04, - 0xFF, - 0xF5, - 0x01, - 0x84, - 0xC9, - 0x85, - 0x0D, - 0x85, - 0xC9, - 0x85, - 0x49, - 0x84, - 0xDD, - 0x85, - 0x01, - 0x84, - 0xFF, - 0xF5, - 0x00, - 0x04, - 0x00, - 0x0E, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_rename_numeric{ - {16, 16}, - bitmap_icon_rename_numeric_data}; - -static constexpr uint8_t bitmap_icon_transmit_data[] = { - 0x80, - 0x01, - 0xC0, - 0x03, 0xE0, 0x07, - 0xB0, - 0x0D, - 0x98, - 0x19, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x80, - 0x01, - 0x83, - 0xC1, - 0x03, - 0xC0, - 0xFF, - 0xFF, - 0xFF, - 0xFF, -}; -static constexpr Bitmap bitmap_icon_transmit{ - {16, 16}, - bitmap_icon_transmit_data}; - -static constexpr uint8_t bitmap_icon_looking_data[] = { - 0xF8, - 0x01, - 0xFC, - 0x03, - 0x0E, - 0x07, - 0x07, - 0x0E, - 0xF3, - 0x0C, - 0x9F, - 0x0F, - 0x9F, - 0x0F, - 0xF3, - 0x0C, - 0x07, - 0x0E, - 0x0E, - 0x07, + 0x00, + 0x00, 0xFC, + 0x3F, + 0x00, + 0x00, 0x1F, 0xF8, - 0x3D, 0x00, - 0x7C, - 0x00, - 0xF8, - 0x00, - 0xF0, - 0x00, - 0x60, -}; -static constexpr Bitmap bitmap_icon_looking{ - {16, 16}, - bitmap_icon_looking_data}; - -static constexpr uint8_t bitmap_icon_delete_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x0C, - 0x30, - 0x1C, - 0x38, - 0x38, - 0x1C, - 0x70, - 0x0E, - 0xE0, - 0x07, 0xC0, 0x03, 0xC0, 0x03, 0xE0, + 0x00, + 0x00, 0x07, 0x70, + 0x00, + 0x00, 0x0E, 0x38, + 0x00, + 0x00, 0x1C, - 0x1C, - 0x38, + 0x18, + 0x00, + 0x00, + 0x18, 0x0C, + 0x00, + 0x00, 0x30, + 0x0C, 0x00, 0x00, + 0x30, + 0x06, 0x00, 0x00, -}; -static constexpr Bitmap bitmap_icon_delete{ - {16, 16}, - bitmap_icon_delete_data}; - -static constexpr uint8_t bitmap_icon_adsb_data[] = { + 0x60, + 0x06, + 0x00, + 0x00, + 0x60, + 0x06, + 0x00, + 0x00, + 0x60, + 0x03, 0x80, 0x01, 0xC0, 0x03, - 0xC0, - 0x03, - 0xC0, - 0x03, + 0x80, + 0x01, 0xC0, 0x03, 0xE0, 0x07, - 0xF8, - 0x1F, - 0xFE, - 0x7F, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xC0, - 0x03, - 0xC0, - 0x03, 0xC0, 0x03, 0xE0, 0x07, - 0xF0, - 0x0F, - 0xF8, - 0x1F, -}; -static constexpr Bitmap bitmap_icon_adsb{ - {16, 16}, - bitmap_icon_adsb_data}; - -static constexpr uint8_t bitmap_record_data[] = { 0xC0, - 0x07, - 0xF0, - 0x1F, - 0xF8, - 0x3F, - 0xFC, - 0x7F, - 0xFC, - 0x7F, - 0x66, - 0xCC, - 0x56, - 0xF7, - 0x66, - 0xF6, - 0x56, - 0xF7, - 0x56, - 0xCC, - 0xFC, - 0x7F, - 0xFC, - 0x7F, - 0xF8, - 0x3F, - 0xF0, - 0x1F, + 0x03, + 0x80, + 0x01, 0xC0, - 0x07, + 0x03, + 0x80, + 0x01, + 0xC0, + 0x06, 0x00, 0x00, -}; -static constexpr Bitmap bitmap_record{ - {16, 16}, - bitmap_record_data}; - -static constexpr uint8_t bitmap_icon_options_touch_data[] = { - 0xC7, - 0xF1, - 0x97, - 0xF4, - 0x27, - 0xF2, - 0x8F, - 0xF8, - 0x5F, - 0xFD, - 0x47, - 0xFD, - 0x53, - 0xC1, - 0x4B, - 0x9F, - 0x43, - 0xB5, - 0x6F, - 0xA0, - 0x2F, - 0xA0, - 0x20, - 0x20, 0x60, - 0x20, - 0x40, - 0x10, - 0xC0, - 0x1F, + 0x06, + 0x00, + 0x00, + 0x60, + 0x06, + 0x00, + 0x00, + 0x60, + 0x0C, + 0x00, + 0x00, + 0x30, + 0x0C, + 0x00, + 0x00, + 0x30, + 0x18, 0x00, 0x00, -}; -static constexpr Bitmap bitmap_icon_options_touch{ - {16, 16}, - bitmap_icon_options_touch_data}; - -static constexpr uint8_t bitmap_icon_peripherals_data[] = { - 0x54, - 0x01, - 0x54, - 0x01, - 0xFF, - 0x07, - 0x7C, - 0x01, - 0xBF, - 0x07, - 0xDC, 0x18, - 0x6F, - 0x10, - 0x2C, - 0x21, - 0xAF, - 0x20, - 0x34, - 0x20, - 0x54, - 0x10, - 0xC0, 0x38, 0x00, - 0x77, 0x00, + 0x1C, + 0x70, + 0x00, + 0x00, + 0x0E, 0xE0, 0x00, - 0xC0, 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_peripherals{ - {16, 16}, - bitmap_icon_peripherals_data}; - -static constexpr uint8_t bitmap_icon_capture_data[] = { - 0xE0, 0x07, - 0xF8, - 0x1F, - 0xFC, - 0x3F, - 0xFE, - 0x7F, - 0xFE, - 0x7F, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFE, - 0x7F, - 0xFE, - 0x7F, - 0xFC, - 0x3F, - 0xF8, - 0x1F, - 0xE0, - 0x07, -}; -static constexpr Bitmap bitmap_icon_capture{ - {16, 16}, - bitmap_icon_capture_data}; - -static constexpr uint8_t bitmap_icon_nrf_data[] = { - 0x00, - 0x01, - 0x00, - 0x01, - 0x00, - 0x01, - 0x00, - 0x01, - 0x00, - 0x01, - 0x00, - 0x01, - 0x00, - 0x01, - 0xF8, - 0x3F, - 0xFC, - 0x7F, - 0xFC, - 0x7F, - 0xDC, - 0x7F, - 0x8C, - 0x6B, - 0xDC, - 0x7F, - 0xFC, - 0x7F, - 0xFC, - 0x7F, - 0xF8, - 0x3F, -}; -static constexpr Bitmap bitmap_icon_nrf{ - {16, 16}, - bitmap_icon_nrf_data}; - -static constexpr uint8_t bitmap_sig_noise_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x00, - 0x00, - 0x30, - 0x80, - 0x00, - 0x00, - 0x30, - 0x80, - 0x01, - 0x40, - 0x30, 0xC0, 0x03, 0xC0, - 0x30, - 0xC0, 0x03, - 0xC0, - 0x39, - 0xC0, - 0x72, - 0xC0, - 0x7B, - 0x60, - 0x76, - 0x60, - 0x6E, - 0x60, - 0x1E, - 0x60, - 0xCE, - 0x6C, - 0x0C, - 0x66, - 0xC4, - 0x6E, - 0x0C, - 0x66, - 0xC0, - 0x3E, - 0x00, - 0x2C, - 0xC0, - 0x3B, - 0x00, - 0x3C, - 0xC0, - 0x39, - 0x00, - 0x3C, - 0xC0, - 0x18, - 0x00, - 0x18, - 0x40, - 0x10, - 0x00, - 0x18, - 0x40, - 0x10, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, 0x00, + 0x1F, + 0xF8, 0x00, 0x00, + 0xFC, + 0x3F, 0x00, 0x00, + 0xE0, + 0x07, 0x00, }; -static constexpr Bitmap bitmap_sig_noise{ +static constexpr Bitmap bitmap_target_verify{ {32, 32}, - bitmap_sig_noise_data}; + bitmap_target_verify_data}; -static constexpr uint8_t bitmap_icon_ais_data[] = { - 0x00, - 0x01, - 0x80, - 0x01, - 0xC0, - 0x01, - 0xC0, - 0x0D, - 0xE0, - 0x3D, - 0xF0, - 0x3D, - 0xF8, - 0x7D, - 0xFC, - 0x7D, - 0xFC, - 0x7D, - 0xFE, - 0x7D, - 0xFF, - 0x7D, +static constexpr uint8_t bitmap_temperature_data[] = { 0x00, 0x00, - 0xF8, - 0x7F, - 0xF8, - 0x3F, - 0xF0, - 0x0F, + 0x20, + 0x00, + 0x70, + 0x3E, + 0x88, + 0x00, + 0x88, + 0x00, + 0x88, + 0x3E, + 0x88, + 0x00, + 0x88, + 0x00, + 0x88, + 0x3E, + 0x88, + 0x00, + 0x04, + 0x01, + 0x74, + 0x01, + 0x04, + 0x01, + 0x88, + 0x00, + 0x70, + 0x00, 0x00, 0x00, }; -static constexpr Bitmap bitmap_icon_ais{ +static constexpr Bitmap bitmap_temperature{ {16, 16}, - bitmap_icon_ais_data}; + bitmap_temperature_data}; static constexpr uint8_t bitmap_titlebar_image_data[] = { 0x00, @@ -4955,1076 +6405,6 @@ static constexpr Bitmap bitmap_titlebar_image{ {80, 16}, bitmap_titlebar_image_data}; -static constexpr uint8_t bitmap_icon_btle_data[] = { - 0xE0, - 0x03, - 0x30, - 0x07, - 0x38, - 0x0E, - 0x3C, - 0x1C, - 0x24, - 0x19, - 0x0C, - 0x13, - 0x1C, - 0x19, - 0x3C, - 0x1C, - 0x3C, - 0x1C, - 0x1C, - 0x19, - 0x0C, - 0x13, - 0x24, - 0x19, - 0x3C, - 0x1C, - 0x38, - 0x0E, - 0x30, - 0x07, - 0xE0, - 0x03, -}; -static constexpr Bitmap bitmap_icon_btle{ - {16, 16}, - bitmap_icon_btle_data}; - -static constexpr uint8_t bitmap_arrow_left_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x30, - 0x00, - 0x38, - 0x00, - 0xFC, - 0x7F, - 0xFE, - 0x7F, - 0xFC, - 0x7F, - 0x38, - 0x00, - 0x30, - 0x00, - 0x20, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_arrow_left{ - {16, 16}, - bitmap_arrow_left_data}; - -static constexpr uint8_t bitmap_sd_card_error_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0xC0, - 0x1F, - 0xE0, - 0x1F, - 0xF0, - 0x1F, - 0xF8, - 0x1F, - 0xC8, - 0x13, - 0x98, - 0x19, - 0x38, - 0x1C, - 0x78, - 0x1E, - 0x38, - 0x1C, - 0x98, - 0x19, - 0xC8, - 0x13, - 0xF8, - 0x1F, - 0x00, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_sd_card_error{ - {16, 16}, - bitmap_sd_card_error_data}; - -static constexpr uint8_t bitmap_sig_saw_up_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x01, - 0x70, - 0x06, - 0x80, - 0x01, - 0x78, - 0x06, - 0xC0, - 0x01, - 0x7C, - 0x06, - 0xE0, - 0x01, - 0x6E, - 0x06, - 0xF0, - 0x01, - 0x67, - 0x06, - 0xB8, - 0x81, - 0x63, - 0x06, - 0x9C, - 0xC1, - 0x61, - 0x06, - 0x8E, - 0xE1, - 0x60, - 0x06, - 0x87, - 0x71, - 0x60, - 0x86, - 0x83, - 0x39, - 0x60, - 0xC6, - 0x81, - 0x1D, - 0x60, - 0xE6, - 0x80, - 0x0F, - 0x60, - 0x76, - 0x80, - 0x07, - 0x60, - 0x3E, - 0x80, - 0x03, - 0x60, - 0x1E, - 0x80, - 0x01, - 0x60, - 0x0E, - 0x80, - 0x00, - 0x60, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_sig_saw_up{ - {32, 32}, - bitmap_sig_saw_up_data}; - -static constexpr uint8_t bitmap_icon_brightness_data[] = { - 0x00, - 0x00, - 0x80, - 0x01, - 0x84, - 0x21, - 0x08, - 0x10, - 0xC0, - 0x03, - 0xE0, - 0x07, - 0xF0, - 0x0F, - 0xF6, - 0x6F, - 0xF6, - 0x6F, - 0xF0, - 0x0F, - 0xE0, - 0x07, - 0xC0, - 0x03, - 0x08, - 0x10, - 0x84, - 0x21, - 0x80, - 0x01, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_brightness{ - {16, 16}, - bitmap_icon_brightness_data}; - -static constexpr uint8_t bitmap_icon_microphone_data[] = { - 0xC0, - 0x03, - 0xE0, - 0x07, - 0xE0, - 0x07, - 0xE0, - 0x07, - 0xE8, - 0x17, - 0xE8, - 0x17, - 0xE8, - 0x17, - 0xE8, - 0x17, - 0xE8, - 0x17, - 0xC8, - 0x13, - 0x18, - 0x18, - 0xF0, - 0x0F, - 0xC0, - 0x03, - 0x80, - 0x01, - 0x80, - 0x01, - 0xE0, - 0x07, -}; -static constexpr Bitmap bitmap_icon_microphone{ - {16, 16}, - bitmap_icon_microphone_data}; - -static constexpr uint8_t bitmap_bulb_on_data[] = { - 0x04, - 0x3C, - 0x20, - 0x08, - 0xFF, - 0x10, - 0x90, - 0xFF, - 0x09, - 0xC0, - 0xFF, - 0x03, - 0xE0, - 0xFF, - 0x07, - 0xE0, - 0xFF, - 0x07, - 0xF0, - 0xE7, - 0x0F, - 0xF0, - 0xBD, - 0x0F, - 0xF7, - 0xBD, - 0xEF, - 0xF0, - 0xDB, - 0x0F, - 0xF0, - 0xDB, - 0x0F, - 0xE0, - 0xDB, - 0x07, - 0xE0, - 0xCB, - 0x07, - 0xC0, - 0xD3, - 0x03, - 0x90, - 0xCB, - 0x09, - 0x08, - 0xFD, - 0x10, - 0x04, - 0xE3, - 0x20, - 0x00, - 0xBD, - 0x00, - 0x00, - 0xC3, - 0x00, - 0x00, - 0xBD, - 0x00, - 0x00, - 0xC3, - 0x00, - 0x00, - 0xBD, - 0x00, - 0x00, - 0x42, - 0x00, - 0x00, - 0x3C, - 0x00, -}; -static constexpr Bitmap bitmap_bulb_on{ - {24, 24}, - bitmap_bulb_on_data}; - -static constexpr uint8_t bitmap_sd_card_unknown_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0xC0, - 0x1F, - 0xE0, - 0x1F, - 0xF0, - 0x1F, - 0xF8, - 0x1F, - 0x38, - 0x1C, - 0x98, - 0x19, - 0xF8, - 0x1C, - 0x78, - 0x1E, - 0x78, - 0x1E, - 0xF8, - 0x1F, - 0x78, - 0x1E, - 0xF8, - 0x1F, - 0x00, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_sd_card_unknown{ - {16, 16}, - bitmap_sd_card_unknown_data}; - -static constexpr uint8_t bitmap_icon_file_text_data[] = { - 0xFC, - 0x03, - 0x04, - 0x06, - 0x04, - 0x0E, - 0x04, - 0x1E, - 0xF4, - 0x3E, - 0x04, - 0x20, - 0xF4, - 0x2F, - 0x04, - 0x20, - 0xF4, - 0x2F, - 0x04, - 0x20, - 0xF4, - 0x2F, - 0x04, - 0x20, - 0xF4, - 0x2F, - 0x04, - 0x20, - 0x04, - 0x20, - 0xFC, - 0x3F, -}; -static constexpr Bitmap bitmap_icon_file_text{ - {16, 16}, - bitmap_icon_file_text_data}; - -static constexpr uint8_t bitmap_icon_ert_data[] = { - 0x00, - 0x00, - 0x00, - 0x0F, - 0x80, - 0x7F, - 0xC0, - 0x0F, - 0xFC, - 0x0F, - 0xC2, - 0x0F, - 0x82, - 0x7F, - 0x01, - 0x0F, - 0x01, - 0x00, - 0x21, - 0x05, - 0x53, - 0x09, - 0x56, - 0x09, - 0x50, - 0x05, - 0x50, - 0x05, - 0x20, - 0xAD, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_ert{ - {16, 16}, - bitmap_icon_ert_data}; - -static constexpr uint8_t bitmap_icon_peripherals_details_data[] = { - 0x54, - 0x01, - 0x54, - 0x01, - 0xFF, - 0x07, - 0xFC, - 0x01, - 0x3F, - 0x00, - 0xBC, - 0x3F, - 0xBF, - 0x60, - 0xBC, - 0xEE, - 0xBF, - 0x80, - 0x94, - 0xBE, - 0x94, - 0x80, - 0x80, - 0xBE, - 0x80, - 0x80, - 0x80, - 0xBE, - 0x80, - 0x80, - 0x80, - 0xFF, -}; -static constexpr Bitmap bitmap_icon_peripherals_details{ - {16, 16}, - bitmap_icon_peripherals_details_data}; - -static constexpr uint8_t bitmap_icon_paste_data[] = { - 0x00, - 0x00, - 0xE0, - 0x00, - 0x18, - 0x03, - 0xE4, - 0x04, - 0x04, - 0x04, - 0x04, - 0x04, - 0x84, - 0x3F, - 0x84, - 0x20, - 0x84, - 0x2E, - 0x84, - 0x20, - 0x84, - 0x2E, - 0x84, - 0x20, - 0x84, - 0x2E, - 0xF8, - 0x20, - 0x80, - 0x3F, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_paste{ - {16, 16}, - bitmap_icon_paste_data}; - -static constexpr uint8_t bitmap_bulb_ignore_data[] = { - 0x00, - 0x3C, - 0x00, - 0x00, - 0xC3, - 0x00, - 0x80, - 0x00, - 0x01, - 0x40, - 0x3C, - 0x02, - 0x20, - 0x7E, - 0x04, - 0x20, - 0xE7, - 0x04, - 0x10, - 0xC3, - 0x08, - 0x10, - 0xE3, - 0x08, - 0x10, - 0x70, - 0x08, - 0x10, - 0x38, - 0x08, - 0x10, - 0x18, - 0x08, - 0x20, - 0x18, - 0x04, - 0x20, - 0x00, - 0x04, - 0x40, - 0x18, - 0x02, - 0x80, - 0x18, - 0x01, - 0x00, - 0xC3, - 0x00, - 0x00, - 0xFF, - 0x00, - 0x00, - 0xBD, - 0x00, - 0x00, - 0xC3, - 0x00, - 0x00, - 0xBD, - 0x00, - 0x00, - 0xC3, - 0x00, - 0x00, - 0xBD, - 0x00, - 0x00, - 0x42, - 0x00, - 0x00, - 0x3C, - 0x00, -}; -static constexpr Bitmap bitmap_bulb_ignore{ - {24, 24}, - bitmap_bulb_ignore_data}; - -static constexpr uint8_t bitmap_icon_gps_sim_data[] = { - 0xC0, - 0x07, - 0xE0, - 0x0F, - 0x70, - 0x1F, - 0x78, - 0x3E, - 0x78, - 0x3C, - 0x78, - 0x38, - 0x78, - 0x30, - 0x78, - 0x38, - 0x78, - 0x3C, - 0x70, - 0x1E, - 0x70, - 0x1F, - 0xE0, - 0x0F, - 0xC0, - 0x07, - 0x80, - 0x03, - 0x20, - 0x09, - 0x50, - 0x14, -}; -static constexpr Bitmap bitmap_icon_gps_sim{ - {16, 16}, - bitmap_icon_gps_sim_data}; - -static constexpr uint8_t bitmap_icon_options_datetime_data[] = { - 0x0C, - 0x06, - 0xFF, - 0x1F, - 0x49, - 0x12, - 0x49, - 0x12, - 0xFF, - 0x1F, - 0x49, - 0x00, - 0x49, - 0x1C, - 0x7F, - 0x63, - 0x09, - 0x49, - 0x89, - 0x88, - 0xBE, - 0xB8, - 0x80, - 0x80, - 0x00, - 0x41, - 0x00, - 0x63, - 0x00, - 0x1C, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_options_datetime{ - {16, 16}, - bitmap_icon_options_datetime_data}; - -static constexpr uint8_t bitmap_target_verify_data[] = { - 0x00, - 0xE0, - 0x07, - 0x00, - 0x00, - 0xFC, - 0x3F, - 0x00, - 0x00, - 0x1F, - 0xF8, - 0x00, - 0xC0, - 0x03, - 0xC0, - 0x03, - 0xE0, - 0x00, - 0x00, - 0x07, - 0x70, - 0x00, - 0x00, - 0x0E, - 0x38, - 0x00, - 0x00, - 0x1C, - 0x18, - 0x00, - 0x00, - 0x18, - 0x0C, - 0x00, - 0x00, - 0x30, - 0x0C, - 0x00, - 0x00, - 0x30, - 0x06, - 0x00, - 0x00, - 0x60, - 0x06, - 0x00, - 0x00, - 0x60, - 0x06, - 0x00, - 0x00, - 0x60, - 0x03, - 0x80, - 0x01, - 0xC0, - 0x03, - 0x80, - 0x01, - 0xC0, - 0x03, - 0xE0, - 0x07, - 0xC0, - 0x03, - 0xE0, - 0x07, - 0xC0, - 0x03, - 0x80, - 0x01, - 0xC0, - 0x03, - 0x80, - 0x01, - 0xC0, - 0x06, - 0x00, - 0x00, - 0x60, - 0x06, - 0x00, - 0x00, - 0x60, - 0x06, - 0x00, - 0x00, - 0x60, - 0x0C, - 0x00, - 0x00, - 0x30, - 0x0C, - 0x00, - 0x00, - 0x30, - 0x18, - 0x00, - 0x00, - 0x18, - 0x38, - 0x00, - 0x00, - 0x1C, - 0x70, - 0x00, - 0x00, - 0x0E, - 0xE0, - 0x00, - 0x00, - 0x07, - 0xC0, - 0x03, - 0xC0, - 0x03, - 0x00, - 0x1F, - 0xF8, - 0x00, - 0x00, - 0xFC, - 0x3F, - 0x00, - 0x00, - 0xE0, - 0x07, - 0x00, -}; -static constexpr Bitmap bitmap_target_verify{ - {32, 32}, - bitmap_target_verify_data}; - -static constexpr uint8_t bitmap_icon_new_category_data[] = { - 0x00, - 0x18, - 0x3E, - 0x18, - 0x41, - 0x7E, - 0xC1, - 0x7E, - 0xFF, - 0x18, - 0xFF, - 0xDB, - 0xFF, - 0xC3, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xAF, - 0xEA, - 0x57, - 0xF5, - 0xEF, - 0xEF, - 0xF7, - 0xF7, - 0xEE, - 0x6F, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_new_category{ - {16, 16}, - bitmap_icon_new_category_data}; - -static constexpr uint8_t bitmap_target_data[] = { - 0x80, - 0x00, - 0x80, - 0x00, - 0xE0, - 0x03, - 0x90, - 0x04, - 0x88, - 0x08, - 0x04, - 0x10, - 0x04, - 0x10, - 0x1F, - 0x7C, - 0x04, - 0x10, - 0x04, - 0x10, - 0x88, - 0x08, - 0x90, - 0x04, - 0xE0, - 0x03, - 0x80, - 0x00, - 0x80, - 0x00, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_target{ - {16, 16}, - bitmap_target_data}; - -static constexpr uint8_t bitmap_icon_speaker_and_headphones_mute_data[] = { - 0x40, - 0x00, - 0x60, - 0x44, - 0x70, - 0x6C, - 0x7C, - 0x38, - 0x7C, - 0x10, - 0x7C, - 0x38, - 0x70, - 0x6C, - 0x60, - 0x44, - 0x40, - 0x00, - 0x00, - 0x44, - 0x30, - 0x6C, - 0x48, - 0x38, - 0x84, - 0x10, - 0x84, - 0x38, - 0x86, - 0x6D, - 0x86, - 0x45, -}; -static constexpr Bitmap bitmap_icon_speaker_and_headphones_mute{ - {16, 16}, - bitmap_icon_speaker_and_headphones_mute_data}; - -static constexpr uint8_t bitmap_icon_new_dir_data[] = { - 0x00, - 0x00, - 0x1E, - 0x00, - 0x21, - 0x00, - 0xE1, - 0x7F, - 0x01, - 0xC0, - 0x81, - 0x81, - 0x81, - 0x81, - 0x81, - 0x81, - 0xF1, - 0x8F, - 0xF1, - 0x8F, - 0x81, - 0x81, - 0x81, - 0x81, - 0x81, - 0x81, - 0x03, - 0xC0, - 0xFE, - 0x7F, - 0x00, - 0x00, -}; -static constexpr Bitmap bitmap_icon_new_dir{ - {16, 16}, - bitmap_icon_new_dir_data}; - -static constexpr uint8_t bitmap_icon_protoview_data[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0xF8, - 0x87, - 0x08, - 0x84, - 0x0F, - 0xFC, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xF3, - 0xE0, - 0x92, - 0xA0, - 0x9E, - 0xBF, - 0x00, - 0x00, - 0x00, - 0x00, - 0xFC, - 0xF3, - 0x04, - 0x12, - 0x07, - 0x1E, -}; -static constexpr Bitmap bitmap_icon_protoview{ - {16, 16}, - bitmap_icon_protoview_data}; - } /* namespace ui */ #endif /*__BITMAP_HPP__*/ diff --git a/firmware/application/bitmaps/bmp_modal_warning.hpp b/firmware/application/bitmaps/bmp_modal_warning.hpp deleted file mode 100644 index 4af35e884..000000000 --- a/firmware/application/bitmaps/bmp_modal_warning.hpp +++ /dev/null @@ -1,72 +0,0 @@ -unsigned char modal_warning_bmp[] = { - 0x42, 0x4d, 0xfa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x00, - 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x28, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa8, 0x02, - 0x00, 0x00, 0x13, 0x0b, 0x00, 0x00, 0x13, 0x0b, 0x00, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x42, 0x47, 0x52, 0x73, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xff, 0x00, 0x00, 0x5a, - 0xff, 0x00, 0x78, 0x78, 0x78, 0x00, 0x00, 0x7c, 0xff, 0x00, 0x00, 0xa9, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x02, 0x03, 0x24, 0x66, 0x02, 0x30, - 0x00, 0x00, 0x02, 0x36, 0x24, 0x66, 0x02, 0x63, 0x00, 0x00, 0x02, 0x66, - 0x02, 0x63, 0x20, 0x00, 0x02, 0x36, 0x02, 0x66, 0x00, 0x00, 0x02, 0x36, - 0x02, 0x60, 0x20, 0x00, 0x02, 0x06, 0x02, 0x63, 0x00, 0x00, 0x02, 0x06, - 0x02, 0x60, 0x0c, 0x00, 0x00, 0x08, 0x03, 0x66, 0x66, 0x30, 0x0c, 0x00, - 0x02, 0x06, 0x02, 0x60, 0x00, 0x00, 0x02, 0x03, 0x02, 0x66, 0x0c, 0x00, - 0x00, 0x08, 0x06, 0x11, 0x11, 0x60, 0x0c, 0x00, 0x02, 0x66, 0x02, 0x30, - 0x00, 0x00, 0x02, 0x00, 0x02, 0x66, 0x0c, 0x00, 0x00, 0x08, 0x06, 0x21, - 0x21, 0x60, 0x0c, 0x00, 0x02, 0x66, 0x02, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x00, 0x36, 0x60, 0x00, 0x0a, 0x00, 0x00, 0x08, 0x06, 0x42, 0x42, 0x60, - 0x0a, 0x00, 0x00, 0x06, 0x06, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x00, 0x06, 0x60, 0x00, 0x0a, 0x00, 0x00, 0x08, 0x06, 0x54, 0x45, 0x60, - 0x0a, 0x00, 0x00, 0x06, 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x00, 0x03, 0x66, 0x00, 0x0a, 0x00, 0x00, 0x08, 0x03, 0x66, 0x66, 0x30, - 0x0a, 0x00, 0x00, 0x06, 0x66, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x00, 0x00, 0x66, 0x00, 0x1c, 0x00, 0x00, 0x06, 0x66, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x36, 0x60, 0x18, 0x00, 0x00, 0x08, - 0x06, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x06, 0x60, - 0x0a, 0x00, 0x02, 0x36, 0x02, 0x63, 0x0a, 0x00, 0x00, 0x08, 0x06, 0x60, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x03, 0x66, 0x08, 0x00, - 0x00, 0x08, 0x03, 0x61, 0x16, 0x30, 0x08, 0x00, 0x00, 0x08, 0x66, 0x30, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x66, 0x08, 0x00, 0x00, 0x08, - 0x06, 0x11, 0x11, 0x60, 0x08, 0x00, 0x02, 0x66, 0x06, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x02, 0x36, 0x02, 0x60, 0x06, 0x00, 0x00, 0x08, 0x06, 0x11, - 0x11, 0x60, 0x06, 0x00, 0x02, 0x06, 0x02, 0x63, 0x06, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x02, 0x06, 0x02, 0x60, 0x06, 0x00, 0x00, 0x08, 0x06, 0x11, - 0x11, 0x60, 0x06, 0x00, 0x02, 0x06, 0x02, 0x60, 0x06, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x02, 0x03, 0x02, 0x66, 0x06, 0x00, 0x00, 0x08, 0x06, 0x11, - 0x11, 0x60, 0x06, 0x00, 0x02, 0x66, 0x02, 0x30, 0x06, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x02, 0x66, 0x06, 0x00, 0x00, 0x08, 0x06, 0x11, 0x11, 0x60, - 0x06, 0x00, 0x02, 0x66, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, - 0x36, 0x60, 0x00, 0x00, 0x06, 0x11, 0x11, 0x60, 0x00, 0x00, 0x06, 0x63, - 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x06, 0x60, 0x00, 0x00, - 0x06, 0x21, 0x21, 0x60, 0x00, 0x00, 0x06, 0x60, 0x08, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x18, 0x03, 0x66, 0x00, 0x00, 0x06, 0x12, 0x12, 0x60, - 0x00, 0x00, 0x66, 0x30, 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x14, - 0x66, 0x00, 0x00, 0x06, 0x21, 0x21, 0x60, 0x00, 0x00, 0x66, 0x0a, 0x00, - 0x00, 0x00, 0x0a, 0x00, 0x00, 0x14, 0x36, 0x60, 0x00, 0x06, 0x22, 0x22, - 0x60, 0x00, 0x06, 0x63, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x14, - 0x06, 0x60, 0x00, 0x06, 0x24, 0x24, 0x60, 0x00, 0x06, 0x60, 0x0a, 0x00, - 0x00, 0x00, 0x0a, 0x00, 0x00, 0x14, 0x03, 0x66, 0x00, 0x06, 0x42, 0x42, - 0x60, 0x00, 0x66, 0x30, 0x0a, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x10, - 0x66, 0x00, 0x06, 0x54, 0x45, 0x60, 0x00, 0x66, 0x0c, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x10, 0x36, 0x60, 0x03, 0x66, 0x66, 0x30, 0x06, 0x63, - 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x02, 0x06, 0x02, 0x60, 0x08, 0x00, - 0x02, 0x06, 0x02, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x02, 0x03, - 0x02, 0x66, 0x08, 0x00, 0x02, 0x66, 0x02, 0x30, 0x0c, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x02, 0x66, 0x08, 0x00, 0x02, 0x66, 0x0e, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x0c, 0x36, 0x60, 0x00, 0x00, 0x06, 0x63, 0x0e, 0x00, - 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0c, 0x06, 0x60, 0x00, 0x00, 0x06, 0x60, - 0x0e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0c, 0x03, 0x66, 0x00, 0x00, - 0x66, 0x30, 0x0e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x66, 0x00, - 0x00, 0x66, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x36, 0x60, - 0x06, 0x63, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x06, 0x60, - 0x06, 0x60, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x03, 0x66, - 0x66, 0x30, 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x66, 0x02, 0x66, - 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x36, 0x02, 0x63, 0x12, 0x00, - 0x00, 0x01}; -unsigned int modal_warning_bmp_len = 830; diff --git a/firmware/application/bitmaps/bmp_splash.hpp b/firmware/application/bitmaps/bmp_splash.hpp deleted file mode 100644 index 77af970c0..000000000 --- a/firmware/application/bitmaps/bmp_splash.hpp +++ /dev/null @@ -1,327 +0,0 @@ -// converted by bmp_to_hex_cpp_arr.py at the firmware/tools dir -// fake transparent px should be the exact color rgb dec(41,24,22), then use true for the last arg when drawing bmp with the draw func - -const unsigned char splash_bmp[] = { - 0x42, 0x4d, 0x0e, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x00, - 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x32, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x9c, 0x0e, - 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00, 0x0f, 0x00, - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x19, 0xf6, 0x00, 0x00, 0x14, - 0xc9, 0x00, 0x00, 0x0c, 0x78, 0x00, 0x16, 0x18, 0x29, 0x00, 0xfd, 0xfd, - 0xfd, 0x00, 0xf0, 0xf0, 0xf0, 0x00, 0xe7, 0xe7, 0xe7, 0x00, 0xda, 0xda, - 0xda, 0x00, 0xcd, 0xcd, 0xcd, 0x00, 0xc7, 0xc7, 0xc7, 0x00, 0xba, 0xba, - 0xba, 0x00, 0xad, 0xad, 0xad, 0x00, 0x96, 0x96, 0x96, 0x00, 0x5c, 0x5c, - 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x33, 0x00, 0x00, 0xe6, 0x33, - 0x00, 0x00, 0xe6, 0x33, 0x00, 0x00, 0xe6, 0x33, 0x00, 0x00, 0x00, 0x08, - 0x33, 0x44, 0x44, 0x47, 0x0a, 0x33, 0x00, 0x06, 0xd5, 0x44, 0x7d, 0x00, - 0x0a, 0x33, 0x00, 0x0a, 0x44, 0x44, 0x48, 0x33, 0x3a, 0x00, 0x06, 0x44, - 0x02, 0xd3, 0x12, 0x33, 0x00, 0x08, 0xa4, 0x44, 0x45, 0x9d, 0x08, 0x33, - 0x00, 0x08, 0xc4, 0x44, 0x45, 0xc3, 0x10, 0x33, 0x00, 0x08, 0x34, 0x44, - 0x44, 0x6d, 0x16, 0x33, 0x00, 0x08, 0x34, 0x44, 0x44, 0x6d, 0x08, 0x33, - 0x02, 0xd5, 0x1a, 0x44, 0x00, 0x0c, 0x45, 0xc3, 0x33, 0x44, 0x44, 0x47, - 0x0a, 0x33, 0x00, 0x06, 0xd5, 0x44, 0x7d, 0x00, 0x0a, 0x33, 0x00, 0x08, - 0x44, 0x44, 0x48, 0x33, 0x00, 0x00, 0x00, 0x0a, 0x33, 0x49, 0x99, 0x95, - 0xd3, 0x00, 0x06, 0x33, 0x00, 0x0a, 0xd4, 0x46, 0x89, 0x98, 0xb3, 0x00, - 0x08, 0x33, 0x00, 0x12, 0x49, 0x99, 0x94, 0x33, 0x3d, 0x79, 0x99, 0x99, - 0x73, 0x00, 0x10, 0x33, 0x00, 0x0a, 0x3d, 0x47, 0x99, 0x95, 0xa3, 0x00, - 0x08, 0x33, 0x00, 0x08, 0xc7, 0x99, 0x97, 0xa3, 0x10, 0x33, 0x00, 0x08, - 0x34, 0x99, 0x99, 0x7c, 0x16, 0x33, 0x00, 0x08, 0x34, 0x99, 0x99, 0x7c, - 0x06, 0x33, 0x00, 0x06, 0xb4, 0x56, 0x89, 0x00, 0x18, 0x99, 0x00, 0x0e, - 0x97, 0xa3, 0x33, 0x49, 0x99, 0x95, 0xd3, 0x00, 0x06, 0x33, 0x00, 0x0a, - 0xd4, 0x46, 0x89, 0x98, 0xb3, 0x00, 0x08, 0x33, 0x00, 0x08, 0x49, 0x99, - 0x94, 0x33, 0x00, 0x00, 0x00, 0x0a, 0x33, 0x49, 0x99, 0x95, 0xd3, 0x00, - 0x06, 0x33, 0x02, 0x55, 0x06, 0x99, 0x02, 0x9b, 0x08, 0x33, 0x00, 0x12, - 0x49, 0x99, 0x94, 0x33, 0x33, 0xb9, 0x99, 0x99, 0x8d, 0x00, 0x10, 0x33, - 0x00, 0x0a, 0x37, 0x69, 0x99, 0x74, 0xd3, 0x00, 0x08, 0x33, 0x00, 0x08, - 0xc7, 0x99, 0x97, 0xa3, 0x10, 0x33, 0x00, 0x08, 0x34, 0x99, 0x99, 0x7c, - 0x16, 0x33, 0x00, 0x10, 0x34, 0x99, 0x99, 0x7c, 0x33, 0x33, 0x3a, 0x47, - 0x1c, 0x99, 0x00, 0x0e, 0x97, 0xa3, 0x33, 0x49, 0x99, 0x95, 0xd3, 0x00, - 0x06, 0x33, 0x02, 0x55, 0x06, 0x99, 0x02, 0x9b, 0x08, 0x33, 0x00, 0x08, - 0x49, 0x99, 0x94, 0x33, 0x00, 0x00, 0x00, 0x12, 0x33, 0x49, 0x99, 0x95, - 0xd3, 0x33, 0x33, 0x3a, 0x48, 0x00, 0x06, 0x99, 0x02, 0x98, 0x02, 0xd3, - 0x06, 0x33, 0x00, 0x12, 0x49, 0x99, 0x94, 0x33, 0x33, 0xd7, 0x99, 0x99, - 0x98, 0x00, 0x10, 0x33, 0x00, 0x08, 0xd4, 0x89, 0x99, 0x5a, 0x0a, 0x33, - 0x00, 0x08, 0xc7, 0x99, 0x97, 0xa3, 0x10, 0x33, 0x00, 0x08, 0x34, 0x99, - 0x99, 0x7c, 0x16, 0x33, 0x00, 0x10, 0x34, 0x99, 0x99, 0x7c, 0x33, 0x33, - 0xb4, 0x79, 0x1c, 0x99, 0x00, 0x16, 0x97, 0xa3, 0x33, 0x49, 0x99, 0x95, - 0xd3, 0x33, 0x33, 0x3a, 0x48, 0x00, 0x06, 0x99, 0x02, 0x98, 0x02, 0xd3, - 0x06, 0x33, 0x00, 0x08, 0x49, 0x99, 0x94, 0x33, 0x00, 0x00, 0x00, 0x12, - 0x33, 0x49, 0x99, 0x95, 0xd3, 0x33, 0x33, 0xd4, 0x79, 0x00, 0x08, 0x99, - 0x02, 0x73, 0x06, 0x33, 0x00, 0x0c, 0x49, 0x99, 0x94, 0x33, 0x33, 0x3b, - 0x06, 0x99, 0x02, 0xc3, 0x0e, 0x33, 0x00, 0x08, 0x56, 0x99, 0x97, 0x4d, - 0x0a, 0x33, 0x00, 0x08, 0xc7, 0x99, 0x97, 0xa3, 0x10, 0x33, 0x00, 0x08, - 0x34, 0x99, 0x99, 0x7c, 0x16, 0x33, 0x00, 0x0e, 0x34, 0x99, 0x99, 0x7c, - 0x33, 0x3d, 0x47, 0x00, 0x1e, 0x99, 0x00, 0x16, 0x97, 0xa3, 0x33, 0x49, - 0x99, 0x95, 0xd3, 0x33, 0x33, 0xd4, 0x79, 0x00, 0x08, 0x99, 0x02, 0x73, - 0x06, 0x33, 0x00, 0x08, 0x49, 0x99, 0x94, 0x33, 0x00, 0x00, 0x00, 0x10, - 0x33, 0x49, 0x99, 0x95, 0xd3, 0x33, 0x33, 0xa5, 0x0a, 0x99, 0x02, 0x8d, - 0x06, 0x33, 0x00, 0x14, 0x49, 0x99, 0x94, 0x33, 0x33, 0x3d, 0x79, 0x99, - 0x99, 0x73, 0x0c, 0x33, 0x00, 0x0a, 0x3c, 0x48, 0x99, 0x95, 0xa3, 0x00, - 0x0a, 0x33, 0x00, 0x08, 0xc7, 0x99, 0x97, 0xa3, 0x10, 0x33, 0x00, 0x08, - 0x34, 0x99, 0x99, 0x7c, 0x16, 0x33, 0x00, 0x0e, 0x34, 0x99, 0x99, 0x7c, - 0x33, 0x37, 0x69, 0x00, 0x1e, 0x99, 0x00, 0x14, 0x97, 0xa3, 0x33, 0x49, - 0x99, 0x95, 0xd3, 0x33, 0x33, 0xa5, 0x0a, 0x99, 0x02, 0x8d, 0x06, 0x33, - 0x00, 0x08, 0x49, 0x99, 0x94, 0x33, 0x00, 0x00, 0x00, 0x1c, 0x33, 0x49, - 0x99, 0x95, 0xd3, 0x33, 0x3d, 0x47, 0x99, 0x97, 0x89, 0x99, 0x99, 0x97, - 0x06, 0x33, 0x00, 0x06, 0x49, 0x99, 0x94, 0x00, 0x06, 0x33, 0x00, 0x08, - 0xb9, 0x99, 0x99, 0x9d, 0x0c, 0x33, 0x00, 0x0a, 0x34, 0x69, 0x99, 0x74, - 0xd3, 0x00, 0x0a, 0x33, 0x00, 0x08, 0xc7, 0x99, 0x98, 0xa3, 0x10, 0x33, - 0x00, 0x08, 0x34, 0x99, 0x99, 0x7c, 0x16, 0x33, 0x00, 0x12, 0x34, 0x99, - 0x99, 0x7c, 0x33, 0x34, 0x89, 0x99, 0x64, 0x00, 0x1c, 0x44, 0x00, 0x1e, - 0xa3, 0x33, 0x49, 0x99, 0x95, 0xd3, 0x33, 0x3d, 0x47, 0x99, 0x97, 0x89, - 0x99, 0x99, 0x97, 0x00, 0x06, 0x33, 0x00, 0x08, 0x49, 0x99, 0x94, 0x33, - 0x00, 0x00, 0x00, 0x28, 0x33, 0x49, 0x99, 0x95, 0xd3, 0x33, 0x3c, 0x59, - 0x99, 0x95, 0xbc, 0x99, 0x99, 0x98, 0xd3, 0x33, 0x33, 0x49, 0x99, 0x94, - 0x06, 0x33, 0x02, 0xd7, 0x06, 0x99, 0x02, 0x74, 0x0c, 0x44, 0x00, 0x06, - 0x99, 0x99, 0x4b, 0x00, 0x0c, 0x33, 0x00, 0x08, 0xb7, 0x99, 0x99, 0xa3, - 0x10, 0x33, 0x00, 0x08, 0x34, 0x99, 0x99, 0x7c, 0x16, 0x33, 0x00, 0x12, - 0x34, 0x99, 0x99, 0x7c, 0x33, 0xd5, 0x99, 0x99, 0x6d, 0x00, 0x20, 0x33, - 0x00, 0x28, 0x49, 0x99, 0x95, 0xd3, 0x33, 0x3c, 0x59, 0x99, 0x95, 0xbc, - 0x99, 0x99, 0x98, 0xd3, 0x33, 0x33, 0x49, 0x99, 0x94, 0x33, 0x00, 0x00, - 0x00, 0x28, 0x33, 0x49, 0x99, 0x95, 0xd3, 0x33, 0x34, 0x79, 0x99, 0x84, - 0xdd, 0x89, 0x99, 0x99, 0x83, 0x33, 0x33, 0x49, 0x99, 0x94, 0x06, 0x33, - 0x02, 0x3b, 0x16, 0x99, 0x02, 0x97, 0x02, 0x43, 0x0a, 0x33, 0x00, 0x0a, - 0x3d, 0x47, 0x99, 0x99, 0x9d, 0x00, 0x10, 0x33, 0x00, 0x08, 0x34, 0x99, - 0x99, 0x9d, 0x16, 0x33, 0x00, 0x12, 0x34, 0x99, 0x99, 0x7c, 0x33, 0xd6, - 0x99, 0x99, 0x6d, 0x00, 0x20, 0x33, 0x00, 0x28, 0x49, 0x99, 0x95, 0xd3, - 0x33, 0x34, 0x79, 0x99, 0x84, 0xdd, 0x89, 0x99, 0x99, 0x83, 0x33, 0x33, - 0x49, 0x99, 0x94, 0x33, 0x00, 0x00, 0x00, 0x28, 0x33, 0x49, 0x99, 0x95, - 0xd3, 0x33, 0xc4, 0x99, 0x99, 0x67, 0x33, 0x79, 0x99, 0x99, 0x8d, 0x33, - 0x33, 0x49, 0x99, 0x94, 0x06, 0x33, 0x02, 0x3d, 0x02, 0x79, 0x14, 0x99, - 0x02, 0x94, 0x02, 0xc3, 0x0a, 0x33, 0x00, 0x0a, 0x35, 0x59, 0x99, 0x99, - 0x98, 0x00, 0x10, 0x33, 0x02, 0x34, 0x06, 0x99, 0x02, 0x74, 0x16, 0x44, - 0x00, 0x10, 0x99, 0x99, 0x7c, 0x33, 0xd6, 0x99, 0x99, 0x9d, 0x20, 0x33, - 0x00, 0x28, 0x49, 0x99, 0x95, 0xd3, 0x33, 0xc4, 0x99, 0x99, 0x67, 0x33, - 0x79, 0x99, 0x99, 0x8d, 0x33, 0x33, 0x49, 0x99, 0x94, 0x33, 0x00, 0x00, - 0x00, 0x28, 0x33, 0x49, 0x99, 0x95, 0xd3, 0x33, 0x57, 0x99, 0x99, 0x4d, - 0x33, 0xd8, 0x99, 0x99, 0x98, 0x33, 0x33, 0x49, 0x99, 0x94, 0x08, 0x33, - 0x02, 0xc9, 0x14, 0x99, 0x02, 0x74, 0x0c, 0x33, 0x02, 0x84, 0x02, 0x89, - 0x06, 0x99, 0x02, 0xa3, 0x0e, 0x33, 0x02, 0x34, 0x22, 0x99, 0x00, 0x06, - 0x7c, 0x33, 0xd6, 0x00, 0x06, 0x99, 0x02, 0x64, 0x18, 0x44, 0x00, 0x2e, - 0x45, 0xc3, 0x33, 0x49, 0x99, 0x95, 0xd3, 0x33, 0x57, 0x99, 0x99, 0x4d, - 0x33, 0xd8, 0x99, 0x99, 0x98, 0x33, 0x33, 0x49, 0x99, 0x94, 0x33, 0x00, - 0x00, 0x00, 0x00, 0x28, 0x33, 0x49, 0x99, 0x95, 0xd3, 0x3d, 0x48, 0x99, - 0x97, 0x43, 0x33, 0x37, 0x99, 0x99, 0x97, 0xd3, 0x33, 0x49, 0x99, 0x94, - 0x08, 0x33, 0x02, 0x37, 0x14, 0x99, 0x02, 0x4c, 0x0a, 0x33, 0x02, 0x3b, - 0x02, 0x48, 0x08, 0x99, 0x02, 0x9b, 0x0e, 0x33, 0x02, 0x34, 0x22, 0x99, - 0x00, 0x06, 0x7c, 0x33, 0xd6, 0x00, 0x20, 0x99, 0x00, 0x2e, 0x97, 0xa3, - 0x33, 0x49, 0x99, 0x95, 0xd3, 0x3d, 0x48, 0x99, 0x97, 0x43, 0x33, 0x37, - 0x99, 0x99, 0x97, 0xd3, 0x33, 0x49, 0x99, 0x94, 0x33, 0x00, 0x00, 0x00, - 0x00, 0x28, 0x33, 0x49, 0x99, 0x95, 0xd3, 0x35, 0x69, 0x99, 0x95, 0xc3, - 0x33, 0x3c, 0x89, 0x99, 0x99, 0xb3, 0x33, 0x49, 0x99, 0x94, 0x08, 0x33, - 0x02, 0x3c, 0x12, 0x99, 0x02, 0x97, 0x02, 0x43, 0x0a, 0x33, 0x02, 0xd4, - 0x02, 0x79, 0x0a, 0x99, 0x02, 0xd3, 0x0c, 0x33, 0x02, 0x34, 0x22, 0x99, - 0x00, 0x06, 0x7c, 0x33, 0xd6, 0x00, 0x20, 0x99, 0x00, 0x2e, 0x97, 0xa3, - 0x33, 0x49, 0x99, 0x95, 0xd3, 0x35, 0x69, 0x99, 0x95, 0xc3, 0x33, 0x3c, - 0x89, 0x99, 0x99, 0xb3, 0x33, 0x49, 0x99, 0x94, 0x33, 0x00, 0x00, 0x00, - 0x00, 0x12, 0x33, 0x49, 0x99, 0x95, 0xd3, 0xd4, 0x89, 0x99, 0x74, 0x00, - 0x06, 0x33, 0x00, 0x10, 0x79, 0x99, 0x99, 0x7d, 0x33, 0x49, 0x99, 0x94, - 0x0a, 0x33, 0x00, 0x16, 0x79, 0x99, 0x99, 0x64, 0x44, 0x44, 0x89, 0x99, - 0x99, 0x94, 0xc3, 0x00, 0x08, 0x33, 0x00, 0x0a, 0x3d, 0x46, 0x99, 0x98, - 0x59, 0x00, 0x06, 0x99, 0x02, 0x8d, 0x0c, 0x33, 0x02, 0x34, 0x22, 0x99, - 0x00, 0x06, 0x7c, 0x33, 0xd6, 0x00, 0x20, 0x99, 0x00, 0x16, 0x97, 0xa3, - 0x33, 0x49, 0x99, 0x95, 0xd3, 0xd4, 0x89, 0x99, 0x74, 0x00, 0x06, 0x33, - 0x00, 0x12, 0x79, 0x99, 0x99, 0x7d, 0x33, 0x49, 0x99, 0x94, 0x33, 0x00, - 0x00, 0x00, 0x00, 0x12, 0x33, 0x49, 0x99, 0x95, 0xd3, 0x76, 0x99, 0x99, - 0x6a, 0x00, 0x06, 0x33, 0x00, 0x10, 0xa9, 0x99, 0x99, 0x9b, 0x33, 0x49, - 0x99, 0x94, 0x0a, 0x33, 0x00, 0x14, 0xc9, 0x99, 0x99, 0x9c, 0x33, 0x33, - 0x3b, 0x99, 0x99, 0x74, 0x0a, 0x33, 0x00, 0x0a, 0x35, 0x59, 0x99, 0x95, - 0x7d, 0x00, 0x06, 0x99, 0x02, 0x9a, 0x0c, 0x33, 0x02, 0x34, 0x22, 0x99, - 0x00, 0x06, 0x7c, 0x33, 0xd6, 0x00, 0x20, 0x99, 0x00, 0x16, 0x97, 0xa3, - 0x33, 0x49, 0x99, 0x95, 0xd3, 0x76, 0x99, 0x99, 0x6a, 0x00, 0x06, 0x33, - 0x00, 0x12, 0xa9, 0x99, 0x99, 0x9b, 0x33, 0x49, 0x99, 0x94, 0x33, 0x00, - 0x00, 0x00, 0x00, 0x12, 0x33, 0x49, 0x99, 0x95, 0x3d, 0x48, 0x99, 0x98, - 0x4d, 0x00, 0x06, 0x33, 0x00, 0x10, 0xd7, 0x99, 0x99, 0x97, 0xd3, 0x49, - 0x99, 0x94, 0x0a, 0x33, 0x00, 0x14, 0x37, 0x99, 0x99, 0x97, 0x33, 0x33, - 0xc4, 0x89, 0x99, 0x4c, 0x0a, 0x33, 0x00, 0x0c, 0x84, 0x89, 0x99, 0x64, - 0x33, 0xd9, 0x06, 0x99, 0x02, 0xa3, 0x0a, 0x33, 0x00, 0x08, 0x34, 0x99, - 0x99, 0x64, 0x16, 0x44, 0x06, 0x99, 0x00, 0x06, 0x7c, 0x33, 0xd6, 0x00, - 0x20, 0x99, 0x00, 0x16, 0x97, 0xa3, 0x33, 0x49, 0x99, 0x95, 0x3d, 0x48, - 0x99, 0x98, 0x4d, 0x00, 0x06, 0x33, 0x00, 0x12, 0xd7, 0x99, 0x99, 0x97, - 0xd3, 0x49, 0x99, 0x94, 0x33, 0x00, 0x00, 0x00, 0x00, 0x12, 0x33, 0x49, - 0x99, 0x96, 0x3b, 0x69, 0x99, 0x96, 0x53, 0x00, 0x06, 0x33, 0x02, 0x38, - 0x06, 0x99, 0x00, 0x08, 0xc3, 0x49, 0x99, 0x94, 0x0a, 0x33, 0x02, 0x3c, - 0x06, 0x99, 0x00, 0x0c, 0xb3, 0x33, 0x46, 0x99, 0x96, 0x43, 0x08, 0x33, - 0x00, 0x0e, 0x3b, 0x48, 0x99, 0x97, 0x4d, 0x33, 0x3d, 0x00, 0x06, 0x99, - 0x02, 0x9c, 0x0a, 0x33, 0x00, 0x08, 0x34, 0x99, 0x99, 0x6d, 0x16, 0x33, - 0x00, 0x12, 0x39, 0x99, 0x99, 0x7c, 0x33, 0xd6, 0x99, 0x99, 0x54, 0x00, - 0x1c, 0x44, 0x00, 0x14, 0xa3, 0x33, 0x49, 0x99, 0x96, 0x3b, 0x69, 0x99, - 0x96, 0x53, 0x06, 0x33, 0x02, 0x38, 0x06, 0x99, 0x00, 0x0a, 0xc3, 0x49, - 0x99, 0x94, 0x33, 0x00, 0x00, 0x00, 0x00, 0x12, 0x33, 0x49, 0x99, 0x98, - 0xd5, 0x79, 0x99, 0x94, 0xd3, 0x00, 0x06, 0x33, 0x00, 0x10, 0x3d, 0x89, - 0x99, 0x99, 0x73, 0x49, 0x99, 0x94, 0x0c, 0x33, 0x00, 0x12, 0x79, 0x99, - 0x99, 0x8d, 0x3a, 0x59, 0x99, 0x84, 0xd3, 0x00, 0x08, 0x33, 0x00, 0x10, - 0xd4, 0x79, 0x99, 0x84, 0xb3, 0x33, 0x33, 0xb9, 0x06, 0x99, 0x02, 0xd3, - 0x08, 0x33, 0x00, 0x08, 0x34, 0x99, 0x99, 0x6d, 0x16, 0x33, 0x00, 0x12, - 0x34, 0x99, 0x99, 0x7c, 0x33, 0xd6, 0x99, 0x99, 0x5d, 0x00, 0x20, 0x33, - 0x00, 0x10, 0x49, 0x99, 0x98, 0xd5, 0x79, 0x99, 0x94, 0xd3, 0x06, 0x33, - 0x00, 0x12, 0x3d, 0x89, 0x99, 0x99, 0x73, 0x49, 0x99, 0x94, 0x33, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x33, 0x49, 0x99, 0x99, 0xa6, 0x99, 0x99, 0x74, - 0x0a, 0x33, 0x00, 0x0e, 0x79, 0x99, 0x99, 0x9c, 0x59, 0x99, 0x94, 0x00, - 0x0c, 0x33, 0x00, 0x10, 0xc9, 0x99, 0x99, 0x9a, 0xd4, 0x79, 0x99, 0x65, - 0x08, 0x33, 0x00, 0x0a, 0x3d, 0x46, 0x99, 0x98, 0x48, 0x00, 0x06, 0x33, - 0x02, 0x3a, 0x06, 0x99, 0x02, 0x83, 0x08, 0x33, 0x00, 0x08, 0x34, 0x99, - 0x99, 0x6d, 0x16, 0x33, 0x00, 0x12, 0x34, 0x99, 0x99, 0x7c, 0x33, 0xd6, - 0x99, 0x99, 0x93, 0x00, 0x20, 0x33, 0x00, 0x0e, 0x49, 0x99, 0x99, 0xa6, - 0x99, 0x99, 0x74, 0x00, 0x0a, 0x33, 0x00, 0x10, 0x79, 0x99, 0x99, 0x9c, - 0x59, 0x99, 0x94, 0x33, 0x00, 0x00, 0x00, 0x10, 0x33, 0x49, 0x99, 0x99, - 0x98, 0x99, 0x99, 0x5c, 0x0a, 0x33, 0x02, 0xd8, 0x06, 0x99, 0x00, 0x06, - 0x79, 0x99, 0x84, 0x00, 0x0c, 0x33, 0x02, 0x37, 0x06, 0x99, 0x00, 0x08, - 0x86, 0x99, 0x98, 0x4d, 0x08, 0x33, 0x00, 0x0a, 0x35, 0x59, 0x99, 0x95, - 0x53, 0x00, 0x08, 0x33, 0x00, 0x08, 0x89, 0x99, 0x99, 0x9a, 0x08, 0x33, - 0x00, 0x08, 0x34, 0x99, 0x99, 0x6d, 0x16, 0x33, 0x00, 0x0c, 0x34, 0x99, - 0x99, 0x7c, 0x33, 0x36, 0x06, 0x99, 0x02, 0x54, 0x18, 0x44, 0x00, 0x14, - 0x45, 0xc3, 0x33, 0x49, 0x99, 0x99, 0x98, 0x99, 0x99, 0x5c, 0x0a, 0x33, - 0x02, 0xd8, 0x06, 0x99, 0x00, 0x08, 0x79, 0x99, 0x84, 0x33, 0x00, 0x00, - 0x02, 0x33, 0x02, 0x59, 0x08, 0x99, 0x02, 0x97, 0x02, 0x4d, 0x0a, 0x33, - 0x02, 0x36, 0x0a, 0x99, 0x02, 0x75, 0x0c, 0x33, 0x02, 0x3c, 0x0a, 0x99, - 0x02, 0x96, 0x02, 0x53, 0x08, 0x33, 0x00, 0x0a, 0x84, 0x89, 0x99, 0x64, - 0xd3, 0x00, 0x08, 0x33, 0x02, 0xd9, 0x06, 0x99, 0x02, 0xb3, 0x06, 0x33, - 0x00, 0x08, 0x34, 0x99, 0x99, 0x6d, 0x16, 0x33, 0x00, 0x0c, 0x34, 0x99, - 0x99, 0x7c, 0x33, 0x36, 0x20, 0x99, 0x00, 0x08, 0x97, 0xa3, 0x33, 0x59, - 0x08, 0x99, 0x02, 0x97, 0x02, 0x4d, 0x0a, 0x33, 0x02, 0x36, 0x0a, 0x99, - 0x02, 0x75, 0x02, 0x33, 0x00, 0x00, 0x02, 0x33, 0x02, 0xa8, 0x08, 0x99, - 0x02, 0x95, 0x02, 0xa3, 0x0a, 0x33, 0x02, 0x3c, 0x0a, 0x99, 0x02, 0x5b, - 0x0e, 0x33, 0x02, 0x89, 0x08, 0x99, 0x02, 0x84, 0x02, 0xd3, 0x06, 0x33, - 0x00, 0x0a, 0x3b, 0x48, 0x99, 0x97, 0x4c, 0x00, 0x0a, 0x33, 0x02, 0x3d, - 0x06, 0x99, 0x02, 0x9d, 0x06, 0x33, 0x00, 0x08, 0x34, 0x99, 0x99, 0x6d, - 0x16, 0x33, 0x00, 0x0e, 0x34, 0x99, 0x99, 0x7c, 0x33, 0x3d, 0x89, 0x00, - 0x1e, 0x99, 0x00, 0x08, 0x97, 0xa3, 0x33, 0xa8, 0x08, 0x99, 0x02, 0x95, - 0x02, 0xa3, 0x0a, 0x33, 0x02, 0x3c, 0x0a, 0x99, 0x02, 0x5b, 0x02, 0x33, - 0x00, 0x00, 0x02, 0x33, 0x02, 0xd7, 0x08, 0x99, 0x02, 0x64, 0x0e, 0x33, - 0x02, 0x79, 0x06, 0x99, 0x02, 0x96, 0x02, 0x4d, 0x0e, 0x33, 0x02, 0xd8, - 0x06, 0x99, 0x02, 0x98, 0x02, 0x48, 0x08, 0x33, 0x00, 0x0a, 0xd4, 0x79, - 0x99, 0x84, 0xb3, 0x00, 0x0c, 0x33, 0x00, 0x16, 0xb9, 0x99, 0x99, 0x98, - 0xd3, 0x33, 0x33, 0x34, 0x99, 0x99, 0x6d, 0x00, 0x16, 0x33, 0x00, 0x0c, - 0x34, 0x99, 0x99, 0x7c, 0x33, 0x33, 0x20, 0x99, 0x00, 0x08, 0x97, 0xa3, - 0x33, 0xd7, 0x08, 0x99, 0x02, 0x64, 0x0e, 0x33, 0x02, 0x79, 0x06, 0x99, - 0x00, 0x06, 0x96, 0x4d, 0x33, 0x00, 0x00, 0x00, 0x02, 0x33, 0x02, 0x3c, - 0x06, 0x99, 0x02, 0x96, 0x02, 0x4d, 0x0e, 0x33, 0x02, 0xd9, 0x06, 0x99, - 0x02, 0x74, 0x02, 0xc3, 0x0e, 0x33, 0x02, 0x3d, 0x06, 0x99, 0x02, 0x85, - 0x02, 0x53, 0x06, 0x33, 0x00, 0x0a, 0x3d, 0x46, 0x99, 0x99, 0x57, 0x00, - 0x0e, 0x33, 0x02, 0x39, 0x06, 0x99, 0x00, 0x0e, 0xa3, 0x33, 0x33, 0x34, - 0x99, 0x99, 0x6d, 0x00, 0x16, 0x33, 0x00, 0x0e, 0x34, 0x99, 0x99, 0x7c, - 0x33, 0x33, 0x3a, 0x00, 0x1e, 0x99, 0x00, 0x08, 0x97, 0xa3, 0x33, 0x3c, - 0x06, 0x99, 0x02, 0x96, 0x02, 0x4d, 0x0e, 0x33, 0x02, 0xd9, 0x06, 0x99, - 0x00, 0x06, 0x74, 0xc3, 0x33, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x33, 0x33, - 0xc8, 0x99, 0x96, 0x44, 0xd3, 0x00, 0x0e, 0x33, 0x00, 0x0a, 0x3d, 0x79, - 0x99, 0x76, 0x4b, 0x00, 0x12, 0x33, 0x00, 0x0a, 0xc7, 0x99, 0x96, 0x45, - 0xd3, 0x00, 0x06, 0x33, 0x00, 0x0a, 0x35, 0x59, 0x99, 0x96, 0x43, 0x00, - 0x10, 0x33, 0x00, 0x14, 0x89, 0x99, 0x99, 0x9a, 0x33, 0x33, 0x34, 0x99, - 0x99, 0x6d, 0x16, 0x33, 0x00, 0x08, 0x34, 0x99, 0x99, 0x7c, 0x06, 0x33, - 0x02, 0xa6, 0x1c, 0x99, 0x00, 0x12, 0x97, 0xa3, 0x33, 0x33, 0xc8, 0x99, - 0x96, 0x44, 0xd3, 0x00, 0x0e, 0x33, 0x00, 0x0e, 0x3d, 0x79, 0x99, 0x76, - 0x4b, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x33, 0x33, 0x3d, 0x84, - 0x44, 0xc3, 0x12, 0x33, 0x00, 0x08, 0xdc, 0x44, 0x4a, 0xd3, 0x12, 0x33, - 0x00, 0x08, 0x3d, 0xa4, 0x44, 0xd3, 0x08, 0x33, 0x02, 0xc8, 0x06, 0x44, - 0x02, 0xd3, 0x10, 0x33, 0x02, 0xd4, 0x06, 0x44, 0x00, 0x0c, 0xa3, 0x33, - 0x38, 0x44, 0x44, 0x4d, 0x16, 0x33, 0x00, 0x08, 0x38, 0x44, 0x44, 0x4c, - 0x06, 0x33, 0x02, 0x3d, 0x02, 0xc4, 0x1c, 0x44, 0x00, 0x0e, 0xa3, 0x33, - 0x33, 0x3d, 0x84, 0x44, 0xc3, 0x00, 0x12, 0x33, 0x00, 0x0c, 0xdc, 0x44, - 0x4a, 0xd3, 0x33, 0x33, 0x00, 0x00, 0xe6, 0x33, 0x00, 0x00, 0xe6, 0x33, - 0x00, 0x00, 0xe6, 0x33, 0x00, 0x00, 0xe6, 0x33, 0x00, 0x00, 0xe6, 0x33, - 0x00, 0x00, 0x00, 0x1e, 0x33, 0x20, 0x00, 0x23, 0x30, 0x00, 0x13, 0x31, - 0x00, 0x02, 0x33, 0x00, 0x01, 0x33, 0x32, 0x00, 0x08, 0x00, 0x00, 0x26, - 0x13, 0x31, 0x00, 0x02, 0x33, 0x00, 0x01, 0x33, 0x00, 0x00, 0x13, 0x33, - 0x00, 0x00, 0x13, 0x32, 0x00, 0x00, 0x23, 0x00, 0x24, 0x33, 0x00, 0x06, - 0x32, 0x00, 0x02, 0x00, 0x08, 0x33, 0x02, 0x32, 0x06, 0x00, 0x00, 0x30, - 0x01, 0x33, 0x31, 0x00, 0x02, 0x33, 0x00, 0x01, 0x33, 0x33, 0x32, 0x00, - 0x02, 0x33, 0x33, 0x30, 0x00, 0x13, 0x32, 0x00, 0x02, 0x33, 0x00, 0x01, - 0x08, 0x33, 0x00, 0x10, 0x30, 0x00, 0x13, 0x31, 0x00, 0x02, 0x33, 0x30, - 0x08, 0x00, 0x00, 0x10, 0x23, 0x30, 0x00, 0x13, 0x31, 0x00, 0x02, 0x33, - 0x00, 0x00, 0x00, 0x20, 0x33, 0x20, 0x11, 0x13, 0x30, 0x11, 0x03, 0x31, - 0x11, 0x02, 0x33, 0x01, 0x10, 0x33, 0x10, 0x10, 0x06, 0x00, 0x00, 0x26, - 0x03, 0x31, 0x11, 0x02, 0x33, 0x01, 0x10, 0x33, 0x01, 0x11, 0x03, 0x33, - 0x01, 0x11, 0x13, 0x32, 0x01, 0x11, 0x23, 0x00, 0x24, 0x33, 0x00, 0x06, - 0x32, 0x01, 0x11, 0x00, 0x08, 0x33, 0x00, 0x38, 0x10, 0x10, 0x00, 0x11, - 0x11, 0x03, 0x31, 0x11, 0x02, 0x33, 0x01, 0x10, 0x33, 0x33, 0x32, 0x01, - 0x11, 0x33, 0x33, 0x30, 0x11, 0x03, 0x32, 0x01, 0x11, 0x33, 0x01, 0x10, - 0x08, 0x33, 0x00, 0x12, 0x30, 0x11, 0x03, 0x31, 0x11, 0x02, 0x33, 0x00, - 0x10, 0x00, 0x06, 0x00, 0x00, 0x10, 0x23, 0x30, 0x11, 0x03, 0x31, 0x11, - 0x02, 0x33, 0x00, 0x00, 0x00, 0x22, 0x33, 0x20, 0x11, 0x13, 0x30, 0x11, - 0x03, 0x31, 0x11, 0x02, 0x33, 0x01, 0x10, 0x33, 0x11, 0x10, 0x23, 0x00, - 0x06, 0x33, 0x00, 0x24, 0x31, 0x11, 0x02, 0x33, 0x01, 0x10, 0x33, 0x01, - 0x11, 0x13, 0x33, 0x01, 0x10, 0x13, 0x32, 0x01, 0x11, 0x23, 0x24, 0x33, - 0x00, 0x06, 0x32, 0x01, 0x11, 0x00, 0x08, 0x33, 0x00, 0x38, 0x11, 0x10, - 0x23, 0x31, 0x11, 0x03, 0x31, 0x11, 0x02, 0x33, 0x01, 0x10, 0x33, 0x33, - 0x32, 0x01, 0x11, 0x33, 0x33, 0x30, 0x11, 0x03, 0x32, 0x01, 0x11, 0x33, - 0x01, 0x10, 0x08, 0x33, 0x00, 0x12, 0x30, 0x11, 0x03, 0x31, 0x11, 0x02, - 0x33, 0x01, 0x10, 0x00, 0x08, 0x33, 0x00, 0x0e, 0x30, 0x11, 0x03, 0x31, - 0x11, 0x02, 0x33, 0x00, 0x00, 0x00, 0x00, 0x22, 0x33, 0x20, 0x11, 0x23, - 0x30, 0x11, 0x03, 0x31, 0x11, 0x12, 0x33, 0x01, 0x10, 0x33, 0x11, 0x10, - 0x23, 0x00, 0x06, 0x33, 0x00, 0x28, 0x31, 0x11, 0x12, 0x33, 0x01, 0x00, - 0x33, 0x01, 0x11, 0x11, 0x00, 0x01, 0x12, 0x33, 0x32, 0x01, 0x11, 0x11, - 0x00, 0x23, 0x20, 0x33, 0x00, 0x06, 0x32, 0x01, 0x12, 0x00, 0x08, 0x33, - 0x00, 0x38, 0x11, 0x10, 0x23, 0x30, 0x11, 0x03, 0x31, 0x11, 0x12, 0x33, - 0x01, 0x00, 0x33, 0x33, 0x32, 0x01, 0x11, 0x33, 0x33, 0x30, 0x11, 0x13, - 0x32, 0x01, 0x11, 0x33, 0x01, 0x11, 0x08, 0x33, 0x00, 0x12, 0x30, 0x11, - 0x03, 0x31, 0x11, 0x02, 0x33, 0x01, 0x10, 0x00, 0x08, 0x33, 0x00, 0x0e, - 0x30, 0x11, 0x03, 0x31, 0x11, 0x02, 0x33, 0x00, 0x00, 0x00, 0x00, 0x22, - 0x33, 0x20, 0x11, 0x11, 0x00, 0x11, 0x03, 0x31, 0x11, 0x11, 0x00, 0x01, - 0x10, 0x33, 0x11, 0x10, 0x23, 0x00, 0x06, 0x33, 0x00, 0x10, 0x31, 0x11, - 0x11, 0x00, 0x01, 0x13, 0x33, 0x01, 0x08, 0x11, 0x00, 0x10, 0x12, 0x33, - 0x32, 0x01, 0x11, 0x11, 0x10, 0x23, 0x20, 0x33, 0x00, 0x60, 0x32, 0x01, - 0x11, 0x10, 0x00, 0x03, 0x33, 0x11, 0x10, 0x23, 0x30, 0x11, 0x03, 0x31, - 0x11, 0x12, 0x22, 0x01, 0x02, 0x33, 0x33, 0x32, 0x01, 0x11, 0x33, 0x33, - 0x30, 0x11, 0x12, 0x21, 0x01, 0x11, 0x33, 0x01, 0x11, 0x22, 0x22, 0x23, - 0x33, 0x30, 0x11, 0x12, 0x21, 0x11, 0x02, 0x33, 0x01, 0x10, 0x08, 0x33, - 0x00, 0x0e, 0x30, 0x11, 0x12, 0x21, 0x10, 0x13, 0x33, 0x00, 0x00, 0x00, - 0x00, 0x22, 0x33, 0x20, 0x11, 0x00, 0x11, 0x11, 0x03, 0x31, 0x11, 0x00, - 0x01, 0x11, 0x10, 0x33, 0x11, 0x10, 0x23, 0x00, 0x06, 0x33, 0x00, 0x28, - 0x31, 0x11, 0x00, 0x01, 0x11, 0x13, 0x33, 0x01, 0x11, 0x00, 0x01, 0x11, - 0x12, 0x33, 0x32, 0x01, 0x11, 0x00, 0x00, 0x23, 0x20, 0x33, 0x00, 0x60, - 0x32, 0x01, 0x10, 0x01, 0x11, 0x12, 0x33, 0x11, 0x10, 0x23, 0x30, 0x11, - 0x03, 0x31, 0x11, 0x10, 0x10, 0x11, 0x13, 0x33, 0x33, 0x32, 0x01, 0x11, - 0x33, 0x33, 0x30, 0x11, 0x10, 0x10, 0x11, 0x11, 0x33, 0x01, 0x11, 0x01, - 0x00, 0x01, 0x23, 0x30, 0x11, 0x00, 0x10, 0x11, 0x02, 0x33, 0x01, 0x10, - 0x08, 0x33, 0x00, 0x0e, 0x30, 0x11, 0x00, 0x10, 0x11, 0x23, 0x33, 0x00, - 0x00, 0x00, 0x00, 0x22, 0x33, 0x20, 0x11, 0x13, 0x31, 0x11, 0x03, 0x31, - 0x11, 0x02, 0x33, 0x11, 0x10, 0x33, 0x11, 0x10, 0x23, 0x00, 0x06, 0x33, - 0x00, 0x24, 0x31, 0x11, 0x02, 0x33, 0x11, 0x10, 0x33, 0x01, 0x11, 0x03, - 0x33, 0x11, 0x11, 0x13, 0x32, 0x01, 0x11, 0x23, 0x24, 0x33, 0x00, 0x60, - 0x32, 0x01, 0x11, 0x33, 0x11, 0x10, 0x33, 0x11, 0x10, 0x23, 0x30, 0x11, - 0x03, 0x31, 0x11, 0x01, 0x22, 0x11, 0x12, 0x33, 0x33, 0x32, 0x01, 0x11, - 0x33, 0x33, 0x30, 0x11, 0x02, 0x22, 0x11, 0x11, 0x33, 0x01, 0x10, 0x22, - 0x21, 0x11, 0x13, 0x30, 0x11, 0x02, 0x21, 0x11, 0x02, 0x33, 0x01, 0x10, - 0x08, 0x33, 0x00, 0x0e, 0x30, 0x11, 0x02, 0x21, 0x11, 0x23, 0x33, 0x00, - 0x00, 0x00, 0x00, 0x22, 0x33, 0x20, 0x11, 0x13, 0x30, 0x11, 0x03, 0x31, - 0x11, 0x02, 0x33, 0x01, 0x10, 0x33, 0x11, 0x10, 0x23, 0x00, 0x06, 0x33, - 0x00, 0x24, 0x31, 0x11, 0x02, 0x33, 0x01, 0x10, 0x33, 0x01, 0x11, 0x13, - 0x33, 0x01, 0x11, 0x13, 0x32, 0x01, 0x11, 0x23, 0x24, 0x33, 0x00, 0x60, - 0x32, 0x01, 0x11, 0x33, 0x01, 0x10, 0x33, 0x11, 0x11, 0x23, 0x30, 0x11, - 0x03, 0x31, 0x11, 0x12, 0x33, 0x11, 0x10, 0x33, 0x33, 0x32, 0x01, 0x11, - 0x33, 0x33, 0x30, 0x11, 0x13, 0x32, 0x11, 0x11, 0x33, 0x01, 0x11, 0x33, - 0x21, 0x11, 0x13, 0x30, 0x11, 0x03, 0x31, 0x11, 0x02, 0x33, 0x01, 0x10, - 0x08, 0x33, 0x00, 0x0e, 0x30, 0x11, 0x03, 0x31, 0x11, 0x02, 0x33, 0x00, - 0x00, 0x00, 0x00, 0x22, 0x33, 0x20, 0x11, 0x13, 0x30, 0x11, 0x03, 0x31, - 0x11, 0x12, 0x33, 0x01, 0x00, 0x33, 0x11, 0x11, 0x23, 0x00, 0x06, 0x33, - 0x00, 0x2c, 0x31, 0x11, 0x02, 0x33, 0x01, 0x10, 0x33, 0x01, 0x11, 0x11, - 0x00, 0x01, 0x10, 0x13, 0x32, 0x01, 0x11, 0x11, 0x00, 0x00, 0x01, 0x23, - 0x1c, 0x33, 0x00, 0x60, 0x32, 0x01, 0x12, 0x33, 0x01, 0x00, 0x33, 0x11, - 0x11, 0x22, 0x20, 0x11, 0x03, 0x31, 0x11, 0x12, 0x22, 0x01, 0x10, 0x33, - 0x33, 0x32, 0x01, 0x12, 0x33, 0x33, 0x30, 0x11, 0x12, 0x21, 0x01, 0x11, - 0x33, 0x01, 0x11, 0x22, 0x10, 0x11, 0x13, 0x30, 0x11, 0x12, 0x21, 0x11, - 0x02, 0x33, 0x01, 0x11, 0x08, 0x33, 0x00, 0x0e, 0x30, 0x11, 0x03, 0x31, - 0x11, 0x02, 0x33, 0x00, 0x00, 0x00, 0x00, 0x38, 0x33, 0x20, 0x11, 0x13, - 0x30, 0x11, 0x03, 0x32, 0x11, 0x11, 0x00, 0x01, 0x02, 0x33, 0x21, 0x11, - 0x10, 0x00, 0x00, 0x13, 0x31, 0x11, 0x02, 0x33, 0x01, 0x10, 0x33, 0x01, - 0x08, 0x11, 0x00, 0x08, 0x12, 0x33, 0x33, 0x21, 0x08, 0x11, 0x02, 0x10, - 0x02, 0x23, 0x1c, 0x33, 0x00, 0x0e, 0x32, 0x01, 0x11, 0x10, 0x01, 0x02, - 0x33, 0x00, 0x06, 0x11, 0x00, 0x62, 0x01, 0x10, 0x03, 0x31, 0x11, 0x11, - 0x10, 0x11, 0x00, 0x33, 0x10, 0x00, 0x01, 0x11, 0x10, 0x13, 0x30, 0x11, - 0x11, 0x10, 0x11, 0x01, 0x33, 0x01, 0x11, 0x11, 0x01, 0x10, 0x13, 0x30, - 0x11, 0x11, 0x00, 0x10, 0x02, 0x33, 0x01, 0x11, 0x10, 0x00, 0x00, 0x23, - 0x30, 0x11, 0x03, 0x31, 0x11, 0x02, 0x33, 0x00, 0x00, 0x00, 0x00, 0x12, - 0x33, 0x20, 0x00, 0x13, 0x31, 0x00, 0x03, 0x33, 0x20, 0x00, 0x06, 0x00, - 0x00, 0x06, 0x13, 0x33, 0x32, 0x00, 0x08, 0x00, 0x00, 0x12, 0x03, 0x32, - 0x00, 0x02, 0x33, 0x10, 0x00, 0x33, 0x10, 0x00, 0x08, 0x00, 0x00, 0x08, - 0x02, 0x33, 0x33, 0x30, 0x0a, 0x00, 0x02, 0x23, 0x1c, 0x33, 0x02, 0x32, - 0x08, 0x00, 0x00, 0x06, 0x03, 0x33, 0x32, 0x00, 0x06, 0x00, 0x00, 0x06, - 0x01, 0x33, 0x32, 0x00, 0x08, 0x00, 0x00, 0x06, 0x13, 0x33, 0x20, 0x00, - 0x08, 0x00, 0x00, 0x06, 0x03, 0x33, 0x10, 0x00, 0x06, 0x00, 0x00, 0x06, - 0x23, 0x33, 0x10, 0x00, 0x06, 0x00, 0x00, 0x06, 0x02, 0x33, 0x33, 0x00, - 0x08, 0x00, 0x00, 0x06, 0x23, 0x33, 0x30, 0x00, 0x08, 0x00, 0x00, 0x10, - 0x23, 0x31, 0x00, 0x03, 0x32, 0x00, 0x02, 0x33, 0x00, 0x00, 0xe6, 0x33, - 0x00, 0x00, 0xe6, 0x33, 0x00, 0x00, 0xe6, 0x33, 0x00, 0x00, 0xe6, 0x33, - 0x00, 0x01}; -unsigned int splash_new__new_t_len = 3854; diff --git a/firmware/application/database.cpp b/firmware/application/database.cpp index 432453b9f..5905277e0 100644 --- a/firmware/application/database.cpp +++ b/firmware/application/database.cpp @@ -2,6 +2,7 @@ * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. * Copyright (C) 2016 Furrtek * Copyright (C) 2022 Arjan Onwezen + * Copyright (C) 2025 Tommaso Ventafridda * * This file is part of PortaPack. * @@ -56,6 +57,16 @@ int database::retrieve_aircraft_record(AircraftDBRecord* record, std::string sea return (result); } +int database::retrieve_macaddress_record(MacAddressDBRecord* record, std::string search_term) { + file_path = macaddress_dir / u"macaddress.db"; + index_item_length = 7; + record_length = 64; + + result = retrieve_record(file_path, index_item_length, record_length, record, search_term); + + return (result); +} + int database::retrieve_record(std::filesystem::path file_path, int index_item_length, int record_length, void* record, std::string search_term) { if (search_term.empty()) return DATABASE_RECORD_NOT_FOUND; diff --git a/firmware/application/database.hpp b/firmware/application/database.hpp index 4720da87a..862fa692d 100644 --- a/firmware/application/database.hpp +++ b/firmware/application/database.hpp @@ -2,6 +2,7 @@ * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. * Copyright (C) 2016 Furrtek * Copyright (C) 2022 Arjan Onwezen + * Copyright (C) 2025 Tommaso Ventafridda * * This file is part of PortaPack. * @@ -60,6 +61,12 @@ class database { int retrieve_aircraft_record(AircraftDBRecord* record, std::string search_term); + struct MacAddressDBRecord { + char vendor_name[64]; // vendor/manufacturer name + }; + + int retrieve_macaddress_record(MacAddressDBRecord* record, std::string search_term); + private: std::filesystem::path file_path = ""; // path including filename int index_item_length = 0; // length of index item @@ -77,4 +84,4 @@ class database { int retrieve_record(std::filesystem::path file_path, int index_item_length, int record_length, void* record, std::string search_term); }; -#endif /*__DATABASE_H__*/ +#endif /*__DATABASE_H__*/ \ No newline at end of file diff --git a/firmware/application/de_bruijn.cpp b/firmware/application/de_bruijn.cpp deleted file mode 100644 index 97ae105ed..000000000 --- a/firmware/application/de_bruijn.cpp +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (C) 2014 Jared Boone, ShareBrained Technology, Inc. - * Copyright (C) 2017 Furrtek - * - * This file is part of PortaPack. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#include "de_bruijn.hpp" - -/* How this works: - * B(2,4) means: - * Alphabet size = 2 (binary) - * Code length = 4 - * The length of the bitstream is (2 ^ 4) + (4 - 1) = 19 bits - * The primitive polynomials come from the de_bruijn_polys[] array (one for each code length) - * The shift register is init with 1 and shifted left each step - * The polynomial is kept on the right, and used as a AND mask applied on the corresponding shift register bits - * The resulting bits are XORed together to produce the new bit pushed in the shift register - * - * 0001 (init) - * AND 1001 (polynomial) - * 0001 XOR'd -> 1 - * - * 00011 (shift left) - * AND 1001 - * 0001 XOR'd -> 1 - * - * 000111 (shift left) - * AND 1001 - * 0001 XOR'd -> 1 - * - * 0001111 (shift left) - * AND 1001 - * 1001 XOR'd -> 0 - * - * 00011110 (shift left) - * AND 1001 - * 1000 XOR'd -> 1 - * ... - * After 16 steps: (0+) 000111101011001000 - * Each of the 16 possible values appears in the sequence: - * -0000-111101011001000 0 - * 0-0001-11101011001000 1 - * 0000111101011-0010-00 2 - * 00-0011-1101011001000 3 - * 00001111010110-0100-0 4 - * 00001111-0101-1001000 5 - * 0000111101-0110-01000 6 - * 000-0111-101011001000 7 - * 000011110101100-1000- 8 - * 000011110101-1001-000 9 - * 0000111-1010-11001000 10 - * 000011110-1011-001000 11 - * 00001111010-1100-1000 12 - * 000011-1101-011001000 13 - * 00001-1110-1011001000 14 - * 0000-1111-01011001000 15 - */ - -size_t de_bruijn::init(const uint32_t n) { - // Cap - if ((n < 3) || (n > 16)) - length = 3; - else - length = n; - - poly = de_bruijn_polys[length - 3]; - shift_register = 1; - - return (1U << length) + (length - 1); -} - -uint32_t de_bruijn::compute(const uint32_t steps) { - uint32_t step, bits, masked; - uint8_t new_bit; - - for (step = 0; step < steps; step++) { - masked = shift_register & poly; - new_bit = 0; - for (bits = 0; bits < length; bits++) { - new_bit ^= (masked & 1); - masked >>= 1; - } - shift_register <<= 1; - shift_register |= new_bit; - } - - return shift_register; -} diff --git a/firmware/application/de_bruijn.hpp b/firmware/application/de_bruijn.hpp deleted file mode 100644 index cc4c5b3e8..000000000 --- a/firmware/application/de_bruijn.hpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2014 Jared Boone, ShareBrained Technology, Inc. - * Copyright (C) 2017 Furrtek - * - * This file is part of PortaPack. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#include -#include - -#ifndef __DE_BRUIJN_H__ -#define __DE_BRUIJN_H__ - -// n from 3 to 16 -const uint32_t de_bruijn_polys[14]{ - 0b0000000000000101, - 0b0000000000001001, - 0b0000000000011011, - 0b0000000000110011, - 0b0000000001010011, - 0b0000000010001101, - 0b0000000100100001, - 0b0000001000100001, - 0b0000010001100001, - 0b0000110101000011, - 0b0001001001100101, - 0b0010101100000011, - 0b0101000000001001, - 0b1010000101000101}; - -struct de_bruijn { - public: - size_t init(const uint32_t n); - uint32_t compute(const uint32_t steps); - - private: - uint32_t length{}; - uint32_t poly{}; - uint32_t shift_register{}; -}; - -#endif /*__DE_BRUIJN_H__*/ diff --git a/firmware/application/external/acars_rx/acars_app.hpp b/firmware/application/external/acars_rx/acars_app.hpp index ac99e7045..abefedce0 100644 --- a/firmware/application/external/acars_rx/acars_app.hpp +++ b/firmware/application/external/acars_rx/acars_app.hpp @@ -87,10 +87,10 @@ class ACARSAppView : public View { true}; Console console{ - {0, 3 * 16, 240, 256}}; + {0, 3 * 16, screen_width, 256}}; AudioVolumeField field_volume{ - {28 * 8, 1 * 16}}; + {screen_width - 2 * 8, 1 * 16}}; std::unique_ptr logger{}; diff --git a/firmware/application/external/adsbtx/ui_adsb_tx.cpp b/firmware/application/external/adsbtx/ui_adsb_tx.cpp index 380b80821..4fdece1ae 100644 --- a/firmware/application/external/adsbtx/ui_adsb_tx.cpp +++ b/firmware/application/external/adsbtx/ui_adsb_tx.cpp @@ -131,6 +131,7 @@ ADSBCallsignView::ADSBCallsignView( nav, callsign, 8, + ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& s) { button_callsign.set_text(s); }); diff --git a/firmware/application/external/adsbtx/ui_adsb_tx.hpp b/firmware/application/external/adsbtx/ui_adsb_tx.hpp index d39af7809..245ffd43e 100644 --- a/firmware/application/external/adsbtx/ui_adsb_tx.hpp +++ b/firmware/application/external/adsbtx/ui_adsb_tx.hpp @@ -218,7 +218,7 @@ class ADSBTxView : public View { void start_tx(); void generate_frames(); - Rect view_rect = {0, 7 * 8, 240, 192}; + Rect view_rect = {0, 7 * 8, screen_width, 192}; ADSBPositionView view_position{nav_, view_rect}; ADSBCallsignView view_callsign{nav_, view_rect}; diff --git a/firmware/application/external/afsk_rx/ui_afsk_rx.hpp b/firmware/application/external/afsk_rx/ui_afsk_rx.hpp index 2ebcd08ea..388a966c7 100644 --- a/firmware/application/external/afsk_rx/ui_afsk_rx.hpp +++ b/firmware/application/external/afsk_rx/ui_afsk_rx.hpp @@ -84,7 +84,7 @@ class AFSKRxView : public View { {21 * 8, 5, 6 * 8, 4}}; AudioVolumeField field_volume{ - {28 * 8, 0 * 16}}; + {screen_width - 2 * 8, 0 * 16}}; RxFrequencyField field_frequency{ {0 * 8, 0 * 16}, @@ -105,7 +105,7 @@ class AFSKRxView : public View { LanguageHelper::currentMessages[LANG_MODEM_SETUP]}; Console console{ - {0, 4 * 16, 240, screen_width}}; + {0, 4 * 16, screen_width, screen_width}}; void on_data_afsk(const AFSKDataMessage& message); diff --git a/firmware/application/external/analogtv/analog_tv_app.hpp b/firmware/application/external/analogtv/analog_tv_app.hpp index 21445fb09..04aadd52a 100644 --- a/firmware/application/external/analogtv/analog_tv_app.hpp +++ b/firmware/application/external/analogtv/analog_tv_app.hpp @@ -58,7 +58,7 @@ class AnalogTvView : public View { app_settings::SettingsManager settings_{ "rx_tv", app_settings::Mode::RX}; - const Rect options_view_rect{0 * 8, 1 * 16, 30 * 8, 1 * 16}; + const Rect options_view_rect{0 * 8, 1 * 16, screen_width, 1 * 16}; const Rect nbfm_view_rect{0 * 8, 1 * 16, 18 * 8, 1 * 16}; RSSI rssi{ diff --git a/firmware/application/external/antenna_length/main.cpp b/firmware/application/external/antenna_length/main.cpp new file mode 100644 index 000000000..97dfa8644 --- /dev/null +++ b/firmware/application/external/antenna_length/main.cpp @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2024 Bernd Herzog + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui.hpp" +#include "ui_whipcalc.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::antenna_length { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::antenna_length + +extern "C" { + +__attribute__((section(".external_app.app_antenna_length.application_information"), used)) application_information_t _application_information_antenna_length = { + /*.memory_location = */ (uint8_t*)0x00000000, + /*.externalAppEntry = */ ui::external_app::antenna_length::initialize_app, + /*.header_version = */ CURRENT_HEADER_VERSION, + /*.app_version = */ VERSION_MD5, + + /*.app_name = */ "Antenna Length", + /*.bitmap_data = */ {0x38, 0x3E, 0x10, 0x22, 0x10, 0x26, 0x10, 0x22, 0x10, 0x2E, 0x10, 0x22, 0x10, 0x26, 0x10, 0x22, 0x38, 0x2E, 0x38, 0x22, 0x38, 0x26, 0x38, 0x22, 0x38, 0x2E, 0x38, 0x22, 0x38, 0x3E, 0x00, 0x00}, + /*.icon_color = */ ui::Color::cyan().v, + /*.menu_location = */ app_location_t::UTILITIES, + /*.desired_menu_position = */ -1, + + /*.m4_app_tag = portapack::spi_flash::image_tag_none */ {0, 0, 0, 0}, + /*.m4_app_offset = */ 0x00000000, // will be filled at compile time +}; +} diff --git a/firmware/application/apps/ui_whipcalc.cpp b/firmware/application/external/antenna_length/ui_whipcalc.cpp similarity index 98% rename from firmware/application/apps/ui_whipcalc.cpp rename to firmware/application/external/antenna_length/ui_whipcalc.cpp index 8285e66fc..72604f1c5 100644 --- a/firmware/application/apps/ui_whipcalc.cpp +++ b/firmware/application/external/antenna_length/ui_whipcalc.cpp @@ -32,8 +32,9 @@ #include using namespace portapack; +using namespace ui; -namespace ui { +namespace ui::external_app::antenna_length { void WhipCalcView::focus() { field_frequency.focus(); @@ -176,4 +177,4 @@ void WhipCalcView::load_antenna_db() { void WhipCalcView::add_default_antenna() { antenna_db.push_back({"ANT500", {185, 315, 450, 586, 724, 862}}); // store a default ant500 } -} // namespace ui +} // namespace ui::external_app::antenna_length diff --git a/firmware/application/apps/ui_whipcalc.hpp b/firmware/application/external/antenna_length/ui_whipcalc.hpp similarity index 94% rename from firmware/application/apps/ui_whipcalc.hpp rename to firmware/application/external/antenna_length/ui_whipcalc.hpp index 0f807c5f7..78fa3f56a 100644 --- a/firmware/application/apps/ui_whipcalc.hpp +++ b/firmware/application/external/antenna_length/ui_whipcalc.hpp @@ -31,7 +31,10 @@ #include "string_format.hpp" #include -namespace ui { +using namespace ui; + +namespace ui::external_app::antenna_length { + class WhipCalcView : public View { public: WhipCalcView(NavigationView& nav); @@ -83,13 +86,13 @@ class WhipCalcView : public View { {13 * 8, 4 * 16, 10 * 16, 16}, "-"}; Console console{ - {0, 6 * 16, 240, 160}}; + {0, 6 * 16, screen_width, 160}}; Button button_exit{ {72, 17 * 16, 96, 32}, "Back"}; }; -} /* namespace ui */ +} // namespace ui::external_app::antenna_length #endif /*__UI_WHIPCALC__*/ diff --git a/firmware/application/external/app_manager/main.cpp b/firmware/application/external/app_manager/main.cpp new file mode 100644 index 000000000..ccb9b38bc --- /dev/null +++ b/firmware/application/external/app_manager/main.cpp @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2024 Bernd Herzog + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui.hpp" +#include "ui_app_manager.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::app_manager { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::app_manager + +extern "C" { + +__attribute__((section(".external_app.app_app_manager.application_information"), used)) application_information_t _application_information_app_manager = { + /*.memory_location = */ (uint8_t*)0x00000000, + /*.externalAppEntry = */ ui::external_app::app_manager::initialize_app, + /*.header_version = */ CURRENT_HEADER_VERSION, + /*.app_version = */ VERSION_MD5, + + /*.app_name = */ "AppManager", + /*.bitmap_data = */ { + 0xE0, + 0x00, + 0x10, + 0x01, + 0x10, + 0x01, + 0x1F, + 0x1F, + 0x01, + 0x10, + 0x01, + 0x10, + 0x01, + 0x10, + 0x01, + 0x70, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x80, + 0x01, + 0x70, + 0xE1, + 0x10, + 0x11, + 0x11, + 0x11, + 0x11, + 0x1F, + 0x1F, + + }, + /*.icon_color = */ ui::Color::cyan().v, + /*.menu_location = */ app_location_t::SETTINGS, + /*.desired_menu_position = */ -1, + + /*.m4_app_tag = portapack::spi_flash::image_tag_none */ {0, 0, 0, 0}, + /*.m4_app_offset = */ 0x00000000, // will be filled at compile time +}; +} \ No newline at end of file diff --git a/firmware/application/external/app_manager/ui_app_manager.cpp b/firmware/application/external/app_manager/ui_app_manager.cpp new file mode 100644 index 000000000..d7ebbfc1e --- /dev/null +++ b/firmware/application/external/app_manager/ui_app_manager.cpp @@ -0,0 +1,275 @@ +/* + * copyleft spammingdramaqueen + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui_app_manager.hpp" +#include "ui_navigation.hpp" +#include "ui_external_items_menu_loader.hpp" + +#include "file.hpp" +namespace fs = std::filesystem; + +#include "string_format.hpp" + +#include "file_reader.hpp" + +using namespace portapack; + +namespace ui::external_app::app_manager { + +/* AppManagerView **************************************/ +/* | inner apps | external apps | + * ------------------------------ + * | id | appCallName | + * | displayName|appFriendlyName| + */ +AppManagerView::AppManagerView(NavigationView& nav) + : nav_{nav} { + add_children({&labels, + &menu_view, + &text_app_info, + &button_hide_unhide, + &button_clean_hide, + &button_set_cancel_autostart, + &button_clean_autostart}); + + menu_view.set_parent_rect({0, 2 * 8, screen_width, 24 * 8}); + + menu_view.on_highlight = [this]() { + if (menu_view.highlighted_index() >= app_list_index) { + text_app_info.set(""); + return; + } + + std::string info; + auto app_name = get_app_info(menu_view.highlighted_index(), true); + auto app_id = get_app_info(menu_view.highlighted_index(), false); + + info += "Hidden:"; + + if (is_blacklisted(app_name)) { + info += "Yes "; + } else { + info += "No "; + } + + info += "Autostart:"; + if (is_autostart_app(app_id)) { + info += "Yes"; + } else { + info += "No"; + } + + if (info.empty()) { + info = "Highlight an app"; + } + + text_app_info.set(info); + }; + + button_hide_unhide.on_select = [this](Button&) { + hide_unhide_app(); + refresh_list(); + }; + + button_clean_hide.on_select = [this](Button&) { + clean_blacklist(); + refresh_list(); + }; + + button_set_cancel_autostart.on_select = [this](Button&) { + set_unset_autostart_app(); + refresh_list(); + }; + + button_clean_autostart.on_select = [this](Button&) { + unset_auto_start(); + refresh_list(); + }; + + refresh_list(); +} + +void AppManagerView::refresh_list() { + auto previous_cursor_index = menu_view.highlighted_index(); + app_list_index = 0; + menu_view.clear(); + + size_t index = 0; + + auto padding = [](const std::string& str) { + return str.length() < 25 ? std::string(25 - str.length(), ' ') + '' : ""; + // that weird char is a icon in portapack's font base that looks like a switch, which i use to indicate the auto start + }; + + for (auto& app : NavigationView::appList) { + if (app.id == nullptr) continue; + + app_list_index++; + + menu_view.add_item({app.displayName + std::string(is_autostart_app(app.id) ? padding(app.displayName) : ""), + app.iconColor, + app.icon, + [this, app_id = std::string(app.id)](KeyEvent) { + button_hide_unhide.focus(); + }}); + } + + ExternalItemsMenuLoader::load_all_external_items_callback([this, &index, &padding](ui::AppInfoConsole& app) { + if (app.appCallName == nullptr) return; + + app_list_index++; + + menu_view.add_item({app.appFriendlyName + std::string(is_autostart_app(app.appCallName) ? padding(app.appFriendlyName) : ""), + ui::Color::light_grey(), + &bitmap_icon_sdcard, + [this, app_id = std::string(app.appCallName)](KeyEvent) { + button_hide_unhide.focus(); + }}); + }); + + menu_view.set_highlighted(previous_cursor_index); +} + +void AppManagerView::focus() { + menu_view.focus(); +} + +void AppManagerView::hide_app() { + std::vector blacklist; + get_blacklist(blacklist); + + blacklist.push_back(get_app_info(menu_view.highlighted_index(), true)); + write_blacklist(blacklist); +} + +void AppManagerView::unhide_app() { + std::vector blacklist; + get_blacklist(blacklist); + blacklist.erase(std::remove(blacklist.begin(), blacklist.end(), get_app_info(menu_view.highlighted_index(), true)), blacklist.end()); + write_blacklist(blacklist); +} + +void AppManagerView::hide_unhide_app() { + if (is_blacklisted(get_app_info(menu_view.highlighted_index(), true))) + unhide_app(); + else + hide_app(); +} + +void AppManagerView::get_blacklist(std::vector& blacklist) { + File f; + + auto error = f.open(u"SETTINGS/blacklist"); + if (error) + return; + + auto reader = FileLineReader(f); + for (const auto& line : reader) { + if (line.length() == 0 || line[0] == '#') + continue; + + blacklist.push_back(trim(line)); + } +} + +void AppManagerView::write_blacklist(const std::vector& blacklist) { + File f; + auto error = f.create(u"SETTINGS/blacklist"); + if (error) + return; + + for (const auto& app_name : blacklist) { + auto line = app_name + "\n"; + f.write(line.c_str(), line.length()); + } +} + +void AppManagerView::clean_blacklist() { + std::vector blacklist = {}; + write_blacklist(blacklist); +} + +bool AppManagerView::is_blacklisted(const std::string& app_name) { + std::vector blacklist; + get_blacklist(blacklist); + return std::find(blacklist.begin(), blacklist.end(), app_name) != blacklist.end(); +} + +void AppManagerView::set_auto_start() { + auto app_index = menu_view.highlighted_index(); + if (app_index >= app_list_index) return; + + auto id_aka_app_call_name = get_app_info(app_index, false); + + autostart_app = id_aka_app_call_name; + + refresh_list(); +} + +void AppManagerView::unset_auto_start() { + autostart_app = ""; + refresh_list(); +} + +void AppManagerView::set_unset_autostart_app() { + auto app_index = menu_view.highlighted_index(); + if (app_index >= app_list_index) return; + + auto id_aka_friendly_name = get_app_info(app_index, false); + + if (is_autostart_app(id_aka_friendly_name)) + unset_auto_start(); + else + set_auto_start(); +} + +bool AppManagerView::is_autostart_app(const char* id_aka_friendly_name) { + return autostart_app == std::string(id_aka_friendly_name); +} + +bool AppManagerView::is_autostart_app(const std::string& id_aka_friendly_name) { + return autostart_app == id_aka_friendly_name; +} + +std::string AppManagerView::get_app_info(uint16_t index, bool is_display_name) { + size_t current_index = 0; + std::string result; + + for (auto& app : NavigationView::appList) { + if (app.id == nullptr) continue; + if (current_index == index) { + return is_display_name ? std::string(app.displayName) : std::string(app.id); + } + current_index++; + } + + ExternalItemsMenuLoader::load_all_external_items_callback([¤t_index, &index, &result, &is_display_name](ui::AppInfoConsole& app) { + if (app.appCallName == nullptr) return; + if (current_index == index) { + result = is_display_name ? app.appFriendlyName : app.appCallName; + } + current_index++; + }); + + return result; +} + +} // namespace ui::external_app::app_manager \ No newline at end of file diff --git a/firmware/application/external/app_manager/ui_app_manager.hpp b/firmware/application/external/app_manager/ui_app_manager.hpp new file mode 100644 index 000000000..5c2f5597e --- /dev/null +++ b/firmware/application/external/app_manager/ui_app_manager.hpp @@ -0,0 +1,87 @@ +/* + * copyleft spammingdramaqueen + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __UI_APP_MANAGER_H__ +#define __UI_APP_MANAGER_H__ + +#include "ui_navigation.hpp" + +namespace ui::external_app::app_manager { + +class AppManagerView : public View { + public: + AppManagerView(NavigationView& nav); + std::string title() const override { return "AppMan"; }; + + private: + NavigationView& nav_; + std::string autostart_app{""}; + SettingsStore nav_setting{ + "nav"sv, + {{"autostart_app"sv, &autostart_app}}}; + + void focus() override; + void refresh_list(); + uint16_t app_list_index{0}; + + Labels labels{ + {{0 * 8, 0 * 16}, "App list:", Theme::getInstance()->fg_light->foreground}}; + + MenuView menu_view{}; + + Text text_app_info{ + {0, 27 * 8, screen_width, 16}, + "Highlight an app"}; + + Button button_hide_unhide{ + {0, 29 * 8, screen_width / 2 - 1, 32}, + "Hide/Show"}; + + Button button_clean_hide{ + {screen_width / 2 + 2, 29 * 8, screen_width / 2 - 2, 32}, + "Clean Hidden"}; + + Button button_set_cancel_autostart{ + {0, screen_height - 32 - 16, screen_width / 2 - 1, 32}, + "Set Autostart"}; + + Button button_clean_autostart{ + {screen_width / 2 + 2, screen_height - 32 - 16, screen_width / 2 - 2, 32}, + "Del Autostart"}; + + std::string get_app_info(uint16_t index, bool is_display_name); + void get_blacklist(std::vector& blacklist); + void write_blacklist(const std::vector& blacklist); + bool is_blacklisted(const std::string& app_display_name); + void hide_app(); + void unhide_app(); + void hide_unhide_app(); + void clean_blacklist(); + bool is_autostart_app(const std::string& display_name); + void set_auto_start(); + void unset_auto_start(); + void set_unset_autostart_app(); + bool is_autostart_app(const char* id_aka_app_call_name); +}; + +} // namespace ui::external_app::app_manager + +#endif // __UI_APP_MANAGER_H__ \ No newline at end of file diff --git a/firmware/application/external/battleship/main.cpp b/firmware/application/external/battleship/main.cpp new file mode 100644 index 000000000..3ba40f401 --- /dev/null +++ b/firmware/application/external/battleship/main.cpp @@ -0,0 +1,55 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +#include "ui.hpp" +#include "ui_battleship.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::battleship { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::battleship + +extern "C" { + +__attribute__((section(".external_app.app_battleship.application_information"), used)) application_information_t _application_information_battleship = { + /*.memory_location = */ (uint8_t*)0x00000000, + /*.externalAppEntry = */ ui::external_app::battleship::initialize_app, + /*.header_version = */ CURRENT_HEADER_VERSION, + /*.app_version = */ VERSION_MD5, + + /*.app_name = */ "Battleship", + /*.bitmap_data = */ { + // Pirate galleon - 16x16 + 0x80, 0x00, // ........#....... + 0x80, 0x00, // ........#....... + 0x80, 0x00, // ........#....... + 0xC0, 0x01, // .......###...... + 0xE0, 0x03, // ......#####..... + 0xF0, 0x07, // .....#######.... + 0xF8, 0x0F, // ....#########... + 0xFC, 0x1F, // ...###########.. + 0xFE, 0x3F, // ..#############. + 0x00, 0x01, // .......#........ + 0x00, 0x01, // .......#........ + 0x00, 0x01, // .......#........ + 0xFC, 0x3F, // ..############.. + 0xFE, 0x7F, // .##############. + 0xFF, 0xFF, // ################ + 0xFC, 0x3F, // ..############.. + }, + /*.icon_color = */ ui::Color::blue().v, + /*.menu_location = */ app_location_t::GAMES, + /*.desired_menu_position = */ -1, + + /*.m4_app_tag = */ {'P', 'P', 'O', '2'}, // Use POCSAG2 baseband (larger than FSKTX) + /*.m4_app_offset = */ 0x00000000, // will be filled at compile time +}; +} diff --git a/firmware/application/external/battleship/ui_battleship.cpp b/firmware/application/external/battleship/ui_battleship.cpp new file mode 100644 index 000000000..693fa200a --- /dev/null +++ b/firmware/application/external/battleship/ui_battleship.cpp @@ -0,0 +1,1034 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +#include "ui_battleship.hpp" +#include "portapack_shared_memory.hpp" +#include "utility.hpp" +#include "modems.hpp" +#include "bch_code.hpp" + +using namespace portapack; +using namespace modems; + +namespace ui::external_app::battleship { + +// POCSAG address for battleship game messages +constexpr uint32_t BATTLESHIP_BASE_ADDRESS = 1000000; +constexpr uint32_t RED_TEAM_ADDRESS = BATTLESHIP_BASE_ADDRESS + 1; +constexpr uint32_t BLUE_TEAM_ADDRESS = BATTLESHIP_BASE_ADDRESS + 2; + +BattleshipView::BattleshipView(NavigationView& nav) + : nav_{nav} { + baseband::run_image(portapack::spi_flash::image_tag_pocsag2); + + add_children({&text_title, &text_subtitle, + &rect_radio_settings, &label_radio, &button_frequency, + &label_rf_amp, &checkbox_rf_amp, + &label_lna, &field_lna, + &label_vga, &field_vga, + &label_tx_gain, &field_tx_gain, + &rect_audio_settings, &label_audio, + &checkbox_sound, &label_volume, &field_volume, + &rect_team_selection, &label_team, + &button_red_team, &button_blue_team, + &rssi, &text_status, &text_score, + &button_rotate, &button_place, &button_fire, &button_menu}); + + // Hide in-game elements + rssi.hidden(true); + text_status.hidden(true); + text_score.hidden(true); + button_rotate.hidden(true); + button_place.hidden(true); + button_fire.hidden(true); + button_menu.hidden(true); + + // Configure frequency button + button_frequency.set_text("<" + to_string_short_freq(tx_frequency) + ">"); + + button_frequency.on_select = [this, &nav](ButtonWithEncoder& button) { + auto new_view = nav_.push(tx_frequency); + new_view->on_changed = [this, &button](rf::Frequency f) { + tx_frequency = f; + rx_frequency = f; + button_frequency.set_text("<" + to_string_short_freq(tx_frequency) + ">"); + if (!is_transmitting) { + receiver_model.set_target_frequency(rx_frequency); + } + }; + }; + + button_frequency.on_change = [this]() { + int64_t def_step = 25000; + int64_t new_freq = static_cast(tx_frequency) + (button_frequency.get_encoder_delta() * def_step); + + if (new_freq < 1) new_freq = 1; + if (new_freq > 7200000000LL) new_freq = 7200000000LL; + + tx_frequency = static_cast(new_freq); + rx_frequency = tx_frequency; + button_frequency.set_encoder_delta(0); + button_frequency.set_text("<" + to_string_short_freq(tx_frequency) + ">"); + if (!is_transmitting) { + receiver_model.set_target_frequency(rx_frequency); + } + }; + + // Radio controls + checkbox_rf_amp.set_value(rf_amp_enabled); + checkbox_rf_amp.on_select = [this](Checkbox&, bool v) { + rf_amp_enabled = v; + transmitter_model.set_rf_amp(v); + receiver_model.set_rf_amp(v); + }; + + field_lna.set_value(lna_gain); + field_lna.on_change = [this](int32_t v) { + lna_gain = v; + receiver_model.set_lna(v); + }; + + field_vga.set_value(vga_gain); + field_vga.on_change = [this](int32_t v) { + vga_gain = v; + receiver_model.set_vga(v); + }; + + field_tx_gain.set_value(tx_gain); + field_tx_gain.on_change = [this](int32_t v) { + tx_gain = v; + transmitter_model.set_tx_gain(v); + }; + + // Audio controls + checkbox_sound.set_value(sound_enabled); + checkbox_sound.on_select = [this](Checkbox&, bool v) { + sound_enabled = v; + if (sound_enabled) { + audio::output::unmute(); + } else { + audio::output::mute(); + } + }; + + // Team selection + button_red_team.on_select = [this](Button&) { + start_team(true); + }; + + button_blue_team.on_select = [this](Button&) { + start_team(false); + }; + + // In-game controls + button_rotate.on_select = [this](Button&) { + placing_horizontal = !placing_horizontal; + set_dirty(); + }; + + button_place.on_select = [this](Button&) { + place_ship(); + }; + + button_fire.on_select = [this](Button&) { + fire_at_position(); + }; + + button_menu.on_select = [this](Button&) { + reset_game(); + }; + + // Set proper rectangles for layout + button_frequency.set_parent_rect({17, 65, 11 * 8, 20}); + checkbox_rf_amp.set_parent_rect({55, 90, 24, 24}); + field_lna.set_parent_rect({50, 118, 32, 16}); + field_vga.set_parent_rect({125, 118, 32, 16}); + field_tx_gain.set_parent_rect({185, 118, 32, 16}); + checkbox_sound.set_parent_rect({17, 187, 80, 24}); + field_volume.set_parent_rect({165, 187, 32, 16}); + button_red_team.set_parent_rect({25, 242, 85, 45}); + button_blue_team.set_parent_rect({130, 242, 85, 45}); + + // Make menu elements focusable + button_frequency.set_focusable(true); + checkbox_rf_amp.set_focusable(true); + field_lna.set_focusable(true); + field_vga.set_focusable(true); + field_tx_gain.set_focusable(true); + checkbox_sound.set_focusable(true); + field_volume.set_focusable(true); + button_red_team.set_focusable(true); + button_blue_team.set_focusable(true); + + set_focusable(true); + init_game(); +} + +BattleshipView::~BattleshipView() { + transmitter_model.disable(); + receiver_model.disable(); + audio::output::stop(); + baseband::shutdown(); +} + +void BattleshipView::focus() { + if (game_state == GameState::MENU) { + button_frequency.focus(); + } else { + View::focus(); + } +} + +void BattleshipView::init_game() { + for (uint8_t y = 0; y < GRID_SIZE; y++) { + for (uint8_t x = 0; x < GRID_SIZE; x++) { + my_grid[y][x] = CellState::EMPTY; + enemy_grid[y][x] = CellState::EMPTY; + } + } + + setup_ships(); + update_score(); +} + +void BattleshipView::reset_game() { + transmitter_model.disable(); + receiver_model.disable(); + audio::output::stop(); + + game_state = GameState::MENU; + is_red_team = false; + opponent_ready = false; + current_ship_index = 0; + placing_horizontal = true; + ships_remaining = 5; + enemy_ships_remaining = 5; + cursor_x = 0; + cursor_y = 0; + target_x = 0; + target_y = 0; + is_transmitting = false; + last_address = 0; + + init_game(); + + current_status = "Choose your team!"; + update_score(); + + // Toggle visibility + bool menu_vis = true; + bool game_vis = false; + + text_title.hidden(!menu_vis); + text_subtitle.hidden(!menu_vis); + rect_radio_settings.hidden(!menu_vis); + label_radio.hidden(!menu_vis); + button_frequency.hidden(!menu_vis); + label_rf_amp.hidden(!menu_vis); + checkbox_rf_amp.hidden(!menu_vis); + label_lna.hidden(!menu_vis); + field_lna.hidden(!menu_vis); + label_vga.hidden(!menu_vis); + field_vga.hidden(!menu_vis); + label_tx_gain.hidden(!menu_vis); + field_tx_gain.hidden(!menu_vis); + rect_audio_settings.hidden(!menu_vis); + label_audio.hidden(!menu_vis); + checkbox_sound.hidden(!menu_vis); + label_volume.hidden(!menu_vis); + field_volume.hidden(!menu_vis); + rect_team_selection.hidden(!menu_vis); + label_team.hidden(!menu_vis); + button_red_team.hidden(!menu_vis); + button_blue_team.hidden(!menu_vis); + + rssi.hidden(!game_vis); + text_status.hidden(!game_vis); + text_score.hidden(!game_vis); + button_rotate.hidden(!game_vis); + button_place.hidden(!game_vis); + button_fire.hidden(!game_vis); + button_menu.hidden(!game_vis); + + // Restore focusability + button_frequency.set_focusable(menu_vis); + checkbox_rf_amp.set_focusable(menu_vis); + field_lna.set_focusable(menu_vis); + field_vga.set_focusable(menu_vis); + field_tx_gain.set_focusable(menu_vis); + checkbox_sound.set_focusable(menu_vis); + field_volume.set_focusable(menu_vis); + button_red_team.set_focusable(menu_vis); + button_blue_team.set_focusable(menu_vis); + + button_frequency.focus(); + set_dirty(); +} + +void BattleshipView::setup_ships() { + static const ShipType types[] = {ShipType::CARRIER, ShipType::BATTLESHIP, + ShipType::CRUISER, ShipType::SUBMARINE, ShipType::DESTROYER}; + for (uint8_t i = 0; i < 5; i++) { + my_ships[i] = {types[i], 0, 0, true, 0, false}; + } +} + +void BattleshipView::start_team(bool red) { + is_red_team = red; + game_state = GameState::PLACING_SHIPS; + + // Toggle visibility + bool menu_vis = false; + bool game_vis = true; + + text_title.hidden(!menu_vis); + text_subtitle.hidden(!menu_vis); + rect_radio_settings.hidden(!menu_vis); + label_radio.hidden(!menu_vis); + button_frequency.hidden(!menu_vis); + label_rf_amp.hidden(!menu_vis); + checkbox_rf_amp.hidden(!menu_vis); + label_lna.hidden(!menu_vis); + field_lna.hidden(!menu_vis); + label_vga.hidden(!menu_vis); + field_vga.hidden(!menu_vis); + label_tx_gain.hidden(!menu_vis); + field_tx_gain.hidden(!menu_vis); + rect_audio_settings.hidden(!menu_vis); + label_audio.hidden(!menu_vis); + checkbox_sound.hidden(!menu_vis); + label_volume.hidden(!menu_vis); + field_volume.hidden(!menu_vis); + rect_team_selection.hidden(!menu_vis); + label_team.hidden(!menu_vis); + button_red_team.hidden(!menu_vis); + button_blue_team.hidden(!menu_vis); + + rssi.hidden(!game_vis); + text_status.hidden(true); + text_score.hidden(true); + button_rotate.hidden(false); + button_place.hidden(false); + button_menu.hidden(false); + + current_status = "Place carrier (5)"; + + button_rotate.set_focusable(false); + button_place.set_focusable(false); + button_menu.set_focusable(false); + + focus(); + is_transmitting = true; + configure_radio_rx(); + set_dirty(); +} + +void BattleshipView::configure_radio_tx() { + if (is_transmitting) return; + + audio::output::stop(); + receiver_model.disable(); + baseband::shutdown(); + + chThdSleepMilliseconds(100); + + baseband::run_image(portapack::spi_flash::image_tag_fsktx); + + chThdSleepMilliseconds(100); + + transmitter_model.set_target_frequency(tx_frequency); + transmitter_model.set_sampling_rate(2280000); + transmitter_model.set_baseband_bandwidth(1750000); + transmitter_model.set_rf_amp(rf_amp_enabled); + transmitter_model.set_tx_gain(tx_gain); + + is_transmitting = true; +} + +void BattleshipView::configure_radio_rx() { + if (is_transmitting) { + transmitter_model.disable(); + baseband::shutdown(); + chThdSleepMilliseconds(100); + } + + baseband::run_image(portapack::spi_flash::image_tag_pocsag2); + chThdSleepMilliseconds(100); + + receiver_model.set_target_frequency(rx_frequency); + receiver_model.set_sampling_rate(3072000); + receiver_model.set_baseband_bandwidth(1750000); + receiver_model.set_rf_amp(rf_amp_enabled); + receiver_model.set_lna(lna_gain); + receiver_model.set_vga(vga_gain); + + baseband::set_pocsag(); + receiver_model.enable(); + + audio::set_rate(audio::Rate::Hz_24000); + + if (sound_enabled) { + audio::output::start(); + } + + is_transmitting = false; + current_status = "RX Ready"; + set_dirty(); +} + +void BattleshipView::paint(Painter& painter) { + painter.fill_rectangle({0, 0, 240, 320}, Color::black()); + + if (game_state == GameState::MENU) { + draw_menu_screen(painter); + + // Custom paint team buttons + if (!button_red_team.hidden()) { + Rect r = button_red_team.screen_rect(); + painter.fill_rectangle(r, Color::dark_red()); + painter.draw_rectangle(r, Color::red()); + + if (button_red_team.has_focus()) { + painter.draw_rectangle({r.location().x() - 1, r.location().y() - 1, r.size().width() + 2, r.size().height() + 2}, Color::yellow()); + } + + auto style_white = Style{ + .font = ui::font::fixed_8x16, + .background = Color::dark_red(), + .foreground = Color::white()}; + painter.draw_string(r.center() - Point(24, 16), style_white, "RED"); + painter.draw_string(r.center() - Point(24, 0), style_white, "TEAM"); + } + + if (!button_blue_team.hidden()) { + Rect r = button_blue_team.screen_rect(); + painter.fill_rectangle(r, Color::dark_blue()); + painter.draw_rectangle(r, Color::blue()); + + if (button_blue_team.has_focus()) { + painter.draw_rectangle({r.location().x() - 1, r.location().y() - 1, r.size().width() + 2, r.size().height() + 2}, Color::yellow()); + } + + auto style_white = Style{ + .font = ui::font::fixed_8x16, + .background = Color::dark_blue(), + .foreground = Color::white()}; + painter.draw_string(r.center() - Point(24, 16), style_white, "BLUE"); + painter.draw_string(r.center() - Point(24, 0), style_white, "TEAM"); + } + + return; + } + + Color team_color = is_red_team ? Color::red() : Color::blue(); + painter.fill_rectangle({0, 5, 240, 16}, team_color); + + auto style_white = Style{ + .font = ui::font::fixed_8x16, + .background = team_color, + .foreground = Color::white()}; + painter.draw_string({85, 5}, style_white, is_red_team ? "RED TEAM" : "BLUE TEAM"); + + auto style_status = Style{ + .font = ui::font::fixed_8x16, + .background = Color::black(), + .foreground = Color::white()}; + painter.fill_rectangle({0, 21, 240, 16}, Color::black()); + painter.draw_string({10, 21}, style_status, current_status); + + if (game_state != GameState::MENU) { + painter.draw_string({170, 21}, style_status, current_score); + } + + if (game_state == GameState::PLACING_SHIPS) { + draw_grid(painter, GRID_OFFSET_X, GRID_OFFSET_Y + 5, my_grid, true); + if (current_ship_index < 5) { + draw_ship_preview(painter); + } + } else if (game_state == GameState::MY_TURN) { + draw_grid(painter, GRID_OFFSET_X, GRID_OFFSET_Y + 5, enemy_grid, false, true); + painter.draw_string({10, GRID_OFFSET_Y + GRID_SIZE * CELL_SIZE + 10}, style_status, + "Enemy ships: " + to_string_dec_uint(enemy_ships_remaining)); + } else if (game_state == GameState::OPPONENT_TURN || game_state == GameState::WAITING_FOR_OPPONENT) { + draw_grid(painter, GRID_OFFSET_X, GRID_OFFSET_Y + 5, my_grid, true); + painter.draw_string({10, GRID_OFFSET_Y + GRID_SIZE * CELL_SIZE + 10}, style_status, + "Your ships: " + to_string_dec_uint(ships_remaining)); + } else if (game_state == GameState::GAME_OVER) { + painter.draw_string({50, 150}, style_status, "Game Over!"); + painter.draw_string({30, 170}, style_status, current_status); + } +} + +void BattleshipView::draw_menu_screen(Painter& painter) { + painter.draw_hline({12, 38}, 216, Color::dark_cyan()); + + painter.fill_rectangle({13, 41, 214, 116}, Color::dark_grey()); + painter.draw_hline({12, 40}, 216, Color::cyan()); + painter.draw_hline({12, 157}, 216, Color::cyan()); + + painter.fill_rectangle({13, 165, 214, 43}, Color::dark_grey()); + painter.draw_hline({12, 164}, 216, Color::cyan()); + painter.draw_hline({12, 208}, 216, Color::cyan()); + + painter.fill_rectangle({13, 218, 214, 73}, Color::dark_grey()); + painter.draw_hline({12, 217}, 216, Color::cyan()); + painter.draw_hline({12, 291}, 216, Color::cyan()); + + // Radio status indicator + Point indicator_pos{220, 53}; + if (is_transmitting) { + painter.fill_rectangle({indicator_pos, {6, 6}}, Color::red()); + painter.draw_rectangle({indicator_pos.x() - 1, indicator_pos.y() - 1, 8, 8}, Color::light_grey()); + } else { + painter.fill_rectangle({indicator_pos, {6, 6}}, Color::green()); + painter.draw_rectangle({indicator_pos.x() - 1, indicator_pos.y() - 1, 8, 8}, Color::light_grey()); + } +} + +void BattleshipView::draw_grid(Painter& painter, uint8_t grid_x, uint8_t grid_y, const std::array, GRID_SIZE>& grid, bool show_ships, bool is_offense_grid) { + painter.fill_rectangle({grid_x, grid_y, GRID_SIZE * CELL_SIZE, GRID_SIZE * CELL_SIZE}, + Color::dark_blue()); + + for (uint8_t i = 0; i <= GRID_SIZE; i++) { + painter.draw_vline({grid_x + i * CELL_SIZE, grid_y}, + GRID_SIZE * CELL_SIZE, Color::grey()); + painter.draw_hline({grid_x, grid_y + i * CELL_SIZE}, + GRID_SIZE * CELL_SIZE, Color::grey()); + } + + for (uint8_t y = 0; y < GRID_SIZE; y++) { + for (uint8_t x = 0; x < GRID_SIZE; x++) { + draw_cell(painter, grid_x + x * CELL_SIZE + 1, grid_y + y * CELL_SIZE + 1, + grid[y][x], show_ships, is_offense_grid, + is_cursor_at(x, y, is_offense_grid)); + } + } +} + +void BattleshipView::draw_cell(Painter& painter, uint8_t cell_x, uint8_t cell_y, CellState state, bool show_ships, bool is_offense_grid, bool is_cursor) { + Color cell_color = Color::dark_blue(); + bool should_fill = false; + + if (game_state == GameState::PLACING_SHIPS && !is_offense_grid && current_ship_index < 5) { + uint8_t ship_size = my_ships[current_ship_index].size(); + for (uint8_t i = 0; i < ship_size; i++) { + uint8_t preview_x = placing_horizontal ? cursor_x + i : cursor_x; + uint8_t preview_y = placing_horizontal ? cursor_y : cursor_y + i; + uint8_t grid_x = (cell_x - 1) / CELL_SIZE; + uint8_t grid_y = (cell_y - GRID_OFFSET_Y - 6) / CELL_SIZE; + if (grid_x == preview_x && grid_y == preview_y && preview_x < GRID_SIZE && preview_y < GRID_SIZE) { + return; + } + } + } + + switch (state) { + case CellState::SHIP: + if (show_ships) { + cell_color = Color::grey(); + should_fill = true; + } + break; + case CellState::HIT: + cell_color = Color::red(); + should_fill = true; + break; + case CellState::MISS: + cell_color = Color::light_grey(); + should_fill = true; + break; + case CellState::SUNK: + cell_color = Color::dark_red(); + should_fill = true; + break; + default: + if (is_offense_grid && state == CellState::EMPTY) { + cell_color = Color::dark_grey(); + should_fill = true; + } + break; + } + + if (should_fill) { + painter.fill_rectangle({cell_x, cell_y, CELL_SIZE - 2, CELL_SIZE - 2}, cell_color); + } + + if (state == CellState::HIT || state == CellState::SUNK) { + painter.draw_hline({cell_x + 4, cell_y + 4}, CELL_SIZE - 10, Color::white()); + painter.draw_hline({cell_x + 4, cell_y + CELL_SIZE - 6}, CELL_SIZE - 10, Color::white()); + painter.draw_vline({cell_x + 4, cell_y + 4}, CELL_SIZE - 10, Color::white()); + painter.draw_vline({cell_x + CELL_SIZE - 6, cell_y + 4}, CELL_SIZE - 10, Color::white()); + } else if (state == CellState::MISS) { + painter.draw_hline({cell_x + 8, cell_y + 4}, 8, Color::white()); + painter.draw_hline({cell_x + 8, cell_y + CELL_SIZE - 6}, 8, Color::white()); + painter.draw_vline({cell_x + 4, cell_y + 8}, 8, Color::white()); + painter.draw_vline({cell_x + CELL_SIZE - 6, cell_y + 8}, 8, Color::white()); + } + + if (is_cursor) { + painter.draw_rectangle({cell_x - 1, cell_y - 1, CELL_SIZE, CELL_SIZE}, + is_offense_grid && game_state == GameState::MY_TURN ? Color::yellow() : Color::cyan()); + } +} + +bool BattleshipView::is_cursor_at(uint8_t x, uint8_t y, bool is_offense_grid) { + if (game_state == GameState::PLACING_SHIPS && !is_offense_grid) { + return x == cursor_x && y == cursor_y; + } else if (is_offense_grid && game_state == GameState::MY_TURN) { + return x == target_x && y == target_y; + } + return false; +} + +void BattleshipView::draw_ship_preview(Painter& painter) { + if (current_ship_index >= 5) return; + + const Ship& ship = my_ships[current_ship_index]; + uint8_t size = ship.size(); + bool can_place = can_place_ship(cursor_x, cursor_y, size, placing_horizontal); + + for (uint8_t i = 0; i < size; i++) { + uint8_t x = placing_horizontal ? cursor_x + i : cursor_x; + uint8_t y = placing_horizontal ? cursor_y : cursor_y + i; + + if (x < GRID_SIZE && y < GRID_SIZE) { + uint8_t cell_x = GRID_OFFSET_X + x * CELL_SIZE + 1; + uint8_t cell_y = GRID_OFFSET_Y + 5 + y * CELL_SIZE + 1; + + Color preview_color = can_place ? Color::green() : Color::red(); + + painter.fill_rectangle({cell_x, cell_y, CELL_SIZE - 2, CELL_SIZE - 2}, preview_color); + painter.draw_rectangle({cell_x, cell_y, CELL_SIZE - 2, CELL_SIZE - 2}, Color::white()); + } + } +} + +bool BattleshipView::can_place_ship(uint8_t x, uint8_t y, uint8_t size, bool horizontal) { + if ((horizontal && x + size > GRID_SIZE) || (!horizontal && y + size > GRID_SIZE)) { + return false; + } + + for (uint8_t i = 0; i < size; i++) { + uint8_t check_x = horizontal ? x + i : x; + uint8_t check_y = horizontal ? y : y + i; + + if (my_grid[check_y][check_x] != CellState::EMPTY) { + return false; + } + + for (int dy = -1; dy <= 1; dy++) { + for (int dx = -1; dx <= 1; dx++) { + int adj_x = check_x + dx; + int adj_y = check_y + dy; + + if (adj_x >= 0 && adj_x < GRID_SIZE && + adj_y >= 0 && adj_y < GRID_SIZE) { + if (my_grid[adj_y][adj_x] == CellState::SHIP) { + return false; + } + } + } + } + } + + return true; +} + +void BattleshipView::place_ship() { + if (current_ship_index >= 5) return; + + Ship& ship = my_ships[current_ship_index]; + uint8_t size = ship.size(); + + if (!can_place_ship(cursor_x, cursor_y, size, placing_horizontal)) { + current_status = "Invalid placement!"; + set_dirty(); + return; + } + + ship.x = cursor_x; + ship.y = cursor_y; + ship.horizontal = placing_horizontal; + ship.placed = true; + + for (uint8_t i = 0; i < size; i++) { + uint8_t x = placing_horizontal ? cursor_x + i : cursor_x; + uint8_t y = placing_horizontal ? cursor_y : cursor_y + i; + my_grid[y][x] = CellState::SHIP; + } + + current_ship_index++; + + if (current_ship_index >= 5) { + button_rotate.hidden(true); + button_place.hidden(true); + + send_message({MessageType::READY, 0, 0}); + + if (is_red_team) { + game_state = GameState::MY_TURN; + current_status = "Your turn! Fire!"; + button_fire.hidden(false); + button_fire.set_focusable(false); + touch_enabled = true; + } else { + game_state = GameState::WAITING_FOR_OPPONENT; + current_status = "Waiting for Red..."; + touch_enabled = false; + } + + focus(); + } else { + static const char* ship_names[] = {"carrier (5)", "battleship (4)", "cruiser (3)", + "submarine (3)", "destroyer (2)"}; + current_status = "Place "; + current_status += ship_names[current_ship_index]; + } + + set_dirty(); +} + +void BattleshipView::send_message(const GameMessage& msg) { + static const char* msg_strings[] = {"READY", "SHOT:", "HIT:", "MISS:", "SUNK:", "WIN"}; + + std::string message = msg_strings[static_cast(msg.type)]; + if (msg.type != MessageType::READY && msg.type != MessageType::WIN) { + message += to_string_dec_uint(msg.x) + "," + to_string_dec_uint(msg.y); + } + + configure_radio_tx(); + + uint32_t target_address = is_red_team ? BLUE_TEAM_ADDRESS : RED_TEAM_ADDRESS; + + std::vector codewords; + BCHCode BCH_code{{1, 0, 1, 0, 0, 1}, 5, 31, 21, 2}; + + pocsag::pocsag_encode(pocsag::MessageType::ALPHANUMERIC, BCH_code, 0, message, target_address, codewords); + + uint8_t* data_ptr = shared_memory.bb_data.data; + size_t bi = 0; + + for (size_t i = 0; i < codewords.size(); i++) { + uint32_t codeword = codewords[i]; + data_ptr[bi++] = (codeword >> 24) & 0xFF; + data_ptr[bi++] = (codeword >> 16) & 0xFF; + data_ptr[bi++] = (codeword >> 8) & 0xFF; + data_ptr[bi++] = codeword & 0xFF; + } + + baseband::set_fsk_data( + codewords.size() * 32, + 2280000 / 1200, + 4500, + 64); + + transmitter_model.set_baseband_bandwidth(1750000); + transmitter_model.enable(); + + current_status = "TX: " + message; + set_dirty(); +} + +void BattleshipView::on_pocsag_packet(const POCSAGPacketMessage* message) { + if (message->packet.flag() != pocsag::NORMAL) { + return; + } + + pocsag_state.codeword_index = 0; + pocsag_state.errors = 0; + + while (pocsag::pocsag_decode_batch(message->packet, pocsag_state)) { + if (pocsag_state.out_type == pocsag::MESSAGE) { + uint32_t expected_address = is_red_team ? RED_TEAM_ADDRESS : BLUE_TEAM_ADDRESS; + if (pocsag_state.address == expected_address) { + process_message(pocsag_state.output); + } + } + } +} + +void BattleshipView::on_tx_progress(const uint32_t progress, const bool done) { + (void)progress; + + if (done) { + transmitter_model.disable(); + chThdSleepMilliseconds(200); + configure_radio_rx(); + + if (game_state == GameState::MY_TURN) { + current_status = "Waiting for response"; + set_dirty(); + } + } +} + +bool BattleshipView::parse_coords(const std::string& coords, uint8_t& x, uint8_t& y) { + size_t comma_pos = coords.find(','); + if (comma_pos == std::string::npos) return false; + + x = 0; + y = 0; + + for (size_t i = 0; i < comma_pos; i++) { + char c = coords[i]; + if (c >= '0' && c <= '9') { + x = x * 10 + (c - '0'); + } + } + + for (size_t i = comma_pos + 1; i < coords.length(); i++) { + char c = coords[i]; + if (c >= '0' && c <= '9') { + y = y * 10 + (c - '0'); + } + } + + return x < GRID_SIZE && y < GRID_SIZE; +} + +void BattleshipView::mark_ship_sunk(uint8_t x, uint8_t y, std::array, GRID_SIZE>& grid) { + for (int dy = -1; dy <= 1; dy++) { + for (int dx = -1; dx <= 1; dx++) { + int check_x = x + dx; + int check_y = y + dy; + if (check_x >= 0 && check_x < GRID_SIZE && + check_y >= 0 && check_y < GRID_SIZE) { + if (grid[check_y][check_x] == CellState::HIT) { + grid[check_y][check_x] = CellState::SUNK; + } + } + } + } +} + +void BattleshipView::process_message(const std::string& message) { + if (message.empty()) return; + + size_t colon_pos = message.find(':'); + std::string msg_type = (colon_pos != std::string::npos) + ? message.substr(0, colon_pos) + : message; + + if (msg_type == "READY") { + opponent_ready = true; + if (!is_red_team && game_state == GameState::WAITING_FOR_OPPONENT) { + current_status = "Red ready! Waiting..."; + set_dirty(); + } + } else if (msg_type == "SHOT" && colon_pos != std::string::npos) { + if (game_state == GameState::OPPONENT_TURN || + (game_state == GameState::WAITING_FOR_OPPONENT && !is_red_team)) { + uint8_t x, y; + if (parse_coords(message.substr(colon_pos + 1), x, y)) { + process_shot(x, y); + } + } + } else if ((msg_type == "HIT" || msg_type == "MISS" || msg_type == "SUNK") && colon_pos != std::string::npos) { + uint8_t x, y; + if (parse_coords(message.substr(colon_pos + 1), x, y)) { + if (msg_type == "HIT") { + enemy_grid[y][x] = CellState::HIT; + current_status = "Hit! Fire again!"; + } else if (msg_type == "MISS") { + enemy_grid[y][x] = CellState::MISS; + current_status = "Miss! Enemy turn"; + game_state = GameState::OPPONENT_TURN; + button_fire.hidden(true); + touch_enabled = false; + } else if (msg_type == "SUNK") { + enemy_grid[y][x] = CellState::SUNK; + enemy_ships_remaining--; + current_status = "Ship sunk! Fire!"; + mark_ship_sunk(x, y, enemy_grid); + } + + if (game_state == GameState::MY_TURN) { + touch_enabled = true; + } + } + } else if (msg_type == "WIN") { + game_state = GameState::GAME_OVER; + current_status = (is_red_team ? "BLUE" : "RED") + std::string(" TEAM WINS!"); + button_fire.hidden(true); + touch_enabled = false; + losses++; + update_score(); + } + + set_dirty(); +} + +void BattleshipView::fire_at_position() { + if (game_state != GameState::MY_TURN) return; + + if (enemy_grid[target_y][target_x] != CellState::EMPTY) { + current_status = "Already fired!"; + set_dirty(); + return; + } + + send_message({MessageType::SHOT, target_x, target_y}); + current_status = "Firing..."; + touch_enabled = false; + set_dirty(); +} + +void BattleshipView::process_shot(uint8_t x, uint8_t y) { + if (my_grid[y][x] == CellState::SHIP) { + my_grid[y][x] = CellState::HIT; + + bool sunk = false; + + for (auto& ship : my_ships) { + if (!ship.placed) continue; + + bool hit_this_ship = false; + for (uint8_t i = 0; i < ship.size(); i++) { + uint8_t check_x = ship.horizontal ? ship.x + i : ship.x; + uint8_t check_y = ship.horizontal ? ship.y : ship.y + i; + + if (check_x == x && check_y == y) { + hit_this_ship = true; + ship.hits++; + break; + } + } + + if (hit_this_ship && ship.is_sunk()) { + sunk = true; + ships_remaining--; + + for (uint8_t i = 0; i < ship.size(); i++) { + uint8_t sunk_x = ship.horizontal ? ship.x + i : ship.x; + uint8_t sunk_y = ship.horizontal ? ship.y : ship.y + i; + my_grid[sunk_y][sunk_x] = CellState::SUNK; + } + break; + } + } + + if (sunk) { + send_message({MessageType::SUNK, x, y}); + + if (ships_remaining == 0) { + send_message({MessageType::WIN, 0, 0}); + game_state = GameState::GAME_OVER; + current_status = (is_red_team ? "RED" : "BLUE") + std::string(" TEAM WINS!"); + wins++; + update_score(); + } + } else { + send_message({MessageType::HIT, x, y}); + } + } else { + my_grid[y][x] = CellState::MISS; + send_message({MessageType::MISS, x, y}); + + game_state = GameState::MY_TURN; + button_fire.hidden(false); + touch_enabled = true; + current_status = "Your turn! Fire!"; + } + + set_dirty(); +} + +void BattleshipView::update_score() { + current_score = "W:" + to_string_dec_uint(wins) + " L:" + to_string_dec_uint(losses); +} + +bool BattleshipView::on_touch(const TouchEvent event) { + if (event.type != TouchEvent::Type::Start || !touch_enabled) { + return false; + } + + uint16_t x = event.point.x(); + uint16_t y = event.point.y(); + + if (x >= GRID_OFFSET_X && x < GRID_OFFSET_X + GRID_SIZE * CELL_SIZE && + y >= GRID_OFFSET_Y + 5 && y < GRID_OFFSET_Y + 5 + GRID_SIZE * CELL_SIZE) { + uint8_t grid_x = (x - GRID_OFFSET_X) / CELL_SIZE; + uint8_t grid_y = (y - GRID_OFFSET_Y - 5) / CELL_SIZE; + + if (game_state == GameState::PLACING_SHIPS) { + cursor_x = grid_x; + cursor_y = grid_y; + } else if (game_state == GameState::MY_TURN) { + target_x = grid_x; + target_y = grid_y; + } + set_dirty(); + return true; + } + + return false; +} + +bool BattleshipView::on_encoder(const EncoderEvent delta) { + if (delta == 0) return false; + + if (game_state == GameState::PLACING_SHIPS) { + placing_horizontal = !placing_horizontal; + } else if (game_state == GameState::MY_TURN) { + target_x = (delta > 0) ? (target_x + 1) % GRID_SIZE : (target_x == 0) ? GRID_SIZE - 1 + : target_x - 1; + } + set_dirty(); + return true; +} + +bool BattleshipView::on_key(const KeyEvent key) { + if (game_state == GameState::MENU) { + if (key == KeyEvent::Up || key == KeyEvent::Down || + key == KeyEvent::Left || key == KeyEvent::Right) { + return false; + } + if (key == KeyEvent::Select || key == KeyEvent::Back) { + return false; + } + return false; + } + + // Game state key handling + if (key == KeyEvent::Select) { + if (game_state == GameState::PLACING_SHIPS) { + place_ship(); + return true; + } else if (game_state == GameState::MY_TURN) { + fire_at_position(); + return true; + } + } else if (key == KeyEvent::Back) { + if (game_state != GameState::MENU) { + reset_game(); + return true; + } + } else if (key == KeyEvent::Up || key == KeyEvent::Down) { + uint8_t* coord_y = (game_state == GameState::PLACING_SHIPS) ? &cursor_y : &target_y; + if (key == KeyEvent::Up) { + *coord_y = (*coord_y == 0) ? GRID_SIZE - 1 : *coord_y - 1; + } else { + *coord_y = (*coord_y + 1) % GRID_SIZE; + } + set_dirty(); + return true; + } else if (key == KeyEvent::Left || key == KeyEvent::Right) { + uint8_t* coord_x = (game_state == GameState::PLACING_SHIPS) ? &cursor_x : &target_x; + if (key == KeyEvent::Left) { + *coord_x = (*coord_x == 0) ? GRID_SIZE - 1 : *coord_x - 1; + } else { + *coord_x = (*coord_x + 1) % GRID_SIZE; + } + set_dirty(); + return true; + } + + return false; +} + +} // namespace ui::external_app::battleship diff --git a/firmware/application/external/battleship/ui_battleship.hpp b/firmware/application/external/battleship/ui_battleship.hpp new file mode 100644 index 000000000..fc44c23db --- /dev/null +++ b/firmware/application/external/battleship/ui_battleship.hpp @@ -0,0 +1,250 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +#ifndef __UI_BATTLESHIP_H__ +#define __UI_BATTLESHIP_H__ + +#include "ui.hpp" +#include "ui_navigation.hpp" +#include "ui_receiver.hpp" +#include "ui_transmitter.hpp" +#include "app_settings.hpp" +#include "radio_state.hpp" +#include "baseband_api.hpp" +#include "string_format.hpp" +#include "audio.hpp" +#include "message.hpp" +#include "pocsag.hpp" + +#include + +namespace ui::external_app::battleship { + +constexpr uint8_t GRID_SIZE = 10; +constexpr uint8_t CELL_SIZE = 24; +constexpr uint8_t GRID_OFFSET_X = 0; +constexpr uint8_t GRID_OFFSET_Y = 32; + +enum class ShipType : uint8_t { + CARRIER = 5, + BATTLESHIP = 4, + CRUISER = 3, + SUBMARINE = 3, + DESTROYER = 2 +}; + +enum class GameState : uint8_t { + MENU, + PLACING_SHIPS, + WAITING_FOR_OPPONENT, + MY_TURN, + OPPONENT_TURN, + GAME_OVER +}; + +enum class CellState : uint8_t { + EMPTY, + SHIP, + HIT, + MISS, + SUNK +}; + +enum class MessageType : uint8_t { + READY, + SHOT, + HIT, + MISS, + SUNK, + WIN +}; + +struct Ship { + ShipType type; + uint8_t x; + uint8_t y; + bool horizontal; + uint8_t hits; + bool placed; + + uint8_t size() const { + return static_cast(type); + } + + bool is_sunk() const { + return hits >= size(); + } +}; + +struct GameMessage { + MessageType type; + uint8_t x; + uint8_t y; +}; + +class BattleshipView : public View { + public: + BattleshipView(NavigationView& nav); + ~BattleshipView(); + + void focus() override; + void paint(Painter& painter) override; + bool on_touch(const TouchEvent event) override; + bool on_encoder(const EncoderEvent delta) override; + bool on_key(const KeyEvent key) override; + + std::string title() const override { return "Battleship"; } + + private: + NavigationView& nav_; + + RxRadioState rx_radio_state_{ + 433920000 /* frequency */, + 1750000 /* bandwidth */, + 2280000 /* sampling rate */ + }; + + TxRadioState tx_radio_state_{ + 433920000 /* frequency */, + 1750000 /* bandwidth */, + 2280000 /* sampling rate */ + }; + + // Settings + bool sound_enabled{true}; + bool rf_amp_enabled{false}; + uint8_t lna_gain{24}; + uint8_t vga_gain{24}; + uint8_t tx_gain{35}; + + app_settings::SettingsManager settings_{ + "battleship", + app_settings::Mode::RX_TX, + {{"rx_freq"sv, &rx_frequency}, + {"tx_freq"sv, &tx_frequency}, + {"rf_amp"sv, &rf_amp_enabled}}}; + + GameState game_state{GameState::MENU}; + bool is_red_team{false}; + bool opponent_ready{false}; + uint8_t wins{0}; + uint8_t losses{0}; + + std::array, GRID_SIZE> my_grid{}; + std::array, GRID_SIZE> enemy_grid{}; + + std::string current_status{"Choose your team!"}; + std::string current_score{"W:0 L:0"}; + + std::array my_ships{}; + uint8_t current_ship_index{0}; + bool placing_horizontal{true}; + uint8_t ships_remaining{5}; + uint8_t enemy_ships_remaining{5}; + + uint8_t cursor_x{0}; + uint8_t cursor_y{0}; + uint8_t target_x{0}; + uint8_t target_y{0}; + bool touch_enabled{true}; + + uint32_t tx_frequency{433920000}; + uint32_t rx_frequency{433920000}; + bool is_transmitting{false}; + + // POCSAG decoding state + pocsag::EccContainer ecc{}; + pocsag::POCSAGState pocsag_state{&ecc}; + uint32_t last_address{0}; + + // UI Elements - Menu/Settings Screen + Text text_title{{60, 2, 120, 24}, "BATTLESHIP"}; + Text text_subtitle{{40, 20, 160, 16}, "Naval Combat Game"}; + + Rectangle rect_radio_settings{{12, 40, 216, 118}, Color::dark_grey()}; + Text label_radio{{17, 45, 100, 16}, "RADIO SETUP"}; + ButtonWithEncoder button_frequency{{17, 65, 11 * 8, 20}, ""}; + + // Radio controls + Text label_rf_amp{{17, 90, 35, 16}, "AMP:"}; + Checkbox checkbox_rf_amp{{55, 90}, 3, "", false}; + + Text label_lna{{17, 118, 30, 16}, "LNA:"}; + NumberField field_lna{{50, 118}, 2, {0, 40}, 8, ' '}; + + Text label_vga{{90, 118, 30, 16}, "VGA:"}; + NumberField field_vga{{125, 118}, 2, {0, 62}, 8, ' '}; + + Text label_tx_gain{{155, 118, 25, 16}, "TX:"}; + NumberField field_tx_gain{{185, 118}, 2, {0, 47}, 8, ' '}; + + Rectangle rect_audio_settings{{12, 164, 216, 45}, Color::dark_grey()}; + Text label_audio{{17, 169, 80, 16}, "AUDIO"}; + Checkbox checkbox_sound{{17, 187}, 8, "Sound On", true}; + Text label_volume{{110, 187, 50, 16}, "Volume:"}; + AudioVolumeField field_volume{{165, 187}}; + + Rectangle rect_team_selection{{12, 217, 216, 75}, Color::dark_grey()}; + Text label_team{{17, 222, 110, 16}, "SELECT TEAM"}; + Button button_red_team{{25, 242, 85, 45}, "RED\nTEAM"}; + Button button_blue_team{{130, 242, 85, 45}, "BLUE\nTEAM"}; + + // In-game UI elements + RSSI rssi{{21 * 8, 0, 6 * 8, 4}}; + Text text_status{{10, 16, 220, 16}, ""}; + Text text_score{{170, 16, 60, 16}, ""}; + Button button_rotate{{10, 265, 65, 32}, "Rotate"}; + Button button_place{{82, 265, 65, 32}, "Place"}; + Button button_fire{{82, 265, 65, 32}, "Fire!"}; + Button button_menu{{155, 265, 65, 32}, "Menu"}; + + // Methods + void init_game(); + void reset_game(); + void start_team(bool red); + void setup_ships(); + void draw_menu_screen(Painter& painter); + void draw_grid(Painter& painter, uint8_t grid_x, uint8_t grid_y, const std::array, GRID_SIZE>& grid, bool show_ships, bool is_offense_grid = false); + void draw_cell(Painter& painter, uint8_t cell_x, uint8_t cell_y, CellState state, bool show_ships, bool is_offense_grid, bool is_cursor); + void draw_ship_preview(Painter& painter); + void place_ship(); + bool can_place_ship(uint8_t x, uint8_t y, uint8_t size, bool horizontal); + void fire_at_position(); + void process_shot(uint8_t x, uint8_t y); + void update_score(); + bool is_cursor_at(uint8_t x, uint8_t y, bool is_offense_grid); + + void send_message(const GameMessage& msg); + void process_message(const std::string& message); + bool parse_coords(const std::string& coords, uint8_t& x, uint8_t& y); + void mark_ship_sunk(uint8_t x, uint8_t y, std::array, GRID_SIZE>& grid); + + void configure_radio_tx(); + void configure_radio_rx(); + + MessageHandlerRegistration message_handler_packet{ + Message::ID::POCSAGPacket, + [this](Message* const p) { + const auto message = static_cast(p); + on_pocsag_packet(message); + }}; + + MessageHandlerRegistration message_handler_tx_progress{ + Message::ID::TXProgress, + [this](const Message* const p) { + const auto message = static_cast(p); + on_tx_progress(message->progress, message->done); + }}; + + void on_pocsag_packet(const POCSAGPacketMessage* message); + void on_tx_progress(const uint32_t progress, const bool done); +}; + +} // namespace ui::external_app::battleship + +#endif diff --git a/firmware/application/external/blackjack/main.cpp b/firmware/application/external/blackjack/main.cpp new file mode 100644 index 000000000..cb27fc4ed --- /dev/null +++ b/firmware/application/external/blackjack/main.cpp @@ -0,0 +1,53 @@ +/* + * Blackjack Game for Portapack Mayhem + * Ported / Enhanced / Graphically made awesome by RocketGod (https://betaskynet.com) + * Based on BlackJack 83 for TI Calculator by Harper Maddox (was written in Assembly) + */ + +#include "ui.hpp" +#include "ui_blackjack.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::blackjack { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::blackjack + +extern "C" { + +__attribute__((section(".external_app.app_blackjack.application_information"), used)) application_information_t _application_information_blackjack = { + (uint8_t*)0x00000000, + ui::external_app::blackjack::initialize_app, + CURRENT_HEADER_VERSION, + VERSION_MD5, + + "Blackjack", + { + // Diamond icon 16x16 + 0x00, 0x00, // ................ + 0x80, 0x01, // .......##....... + 0xC0, 0x03, // ......####...... + 0xE0, 0x07, // .....######..... + 0xF0, 0x0F, // ....########.... + 0xF8, 0x1F, // ...##########... + 0xFC, 0x3F, // ..############.. + 0xFE, 0x7F, // .##############. + 0xFE, 0x7F, // .##############. + 0xFC, 0x3F, // ..############.. + 0xF8, 0x1F, // ...##########... + 0xF0, 0x0F, // ....########.... + 0xE0, 0x07, // .....######..... + 0xC0, 0x03, // ......####...... + 0x80, 0x01, // .......##....... + 0x00, 0x00, // ................ + }, + ui::Color::red().v, // Red color for diamonds + app_location_t::GAMES, + -1, + + {0, 0, 0, 0}, + 0x00000000, +}; +} diff --git a/firmware/application/external/blackjack/ui_blackjack.cpp b/firmware/application/external/blackjack/ui_blackjack.cpp new file mode 100644 index 000000000..4d93b98ef --- /dev/null +++ b/firmware/application/external/blackjack/ui_blackjack.cpp @@ -0,0 +1,727 @@ +/* + * Blackjack Game for Portapack Mayhem + * Ported / Enhanced / Graphically made awesome by RocketGod (https://betaskynet.com) + * Based on BlackJack 83 for TI Calculator by Harper Maddox (was written in Assembly) + */ + +#include "ui_blackjack.hpp" + +namespace ui::external_app::blackjack { + +// Global variables +static BlackjackView* current_instance = nullptr; +static Callback game_update_callback = nullptr; +static uint32_t game_update_timeout = 0; +static uint32_t game_update_counter = 0; +static Painter painter; + +void check_game_timer() { + if (game_update_callback) { + if (++game_update_counter >= game_update_timeout) { + game_update_counter = 0; + game_update_callback(); + } + } +} + +void Ticker::attach(Callback func, double delay_sec) { + game_update_callback = func; + game_update_timeout = delay_sec * 60; +} + +void Ticker::detach() { + game_update_callback = nullptr; +} + +void game_timer_check() { + if (current_instance) { + current_instance->update_game(); + } +} + +BlackjackView::BlackjackView(NavigationView& nav) + : nav_{nav}, game_timer{} { + add_children({&dummy}); + current_instance = this; + game_timer.attach(&game_timer_check, 1.0 / 60.0); +} + +BlackjackView::~BlackjackView() { + current_instance = nullptr; +} + +void BlackjackView::on_show() { + draw_menu_static(); +} + +void BlackjackView::paint(Painter& painter) { + (void)painter; + + if (!initialized) { + initialized = true; + std::srand(LPC_RTC->CTIME0); + init_deck(); + } +} + +void BlackjackView::frame_sync() { + check_game_timer(); + set_dirty(); +} + +void BlackjackView::clear_screen() { + painter.fill_rectangle({0, 0, 240, 320}, Color::black()); +} + +void BlackjackView::init_deck() { + // Initialize deck with card values 0-51 + // 0-12 = Spades (A-K), 13-25 = Hearts, 26-38 = Diamonds, 39-51 = Clubs + for (int i = 0; i < 52; i++) { + deck[i] = i; + } + shuffle_deck(); +} + +void BlackjackView::shuffle_deck() { + // Simple shuffle using random swaps + for (int i = 51; i > 0; i--) { + int j = rand() % (i + 1); + uint8_t temp = deck[i]; + deck[i] = deck[j]; + deck[j] = temp; + } + deck_position = 0; +} + +uint8_t BlackjackView::draw_card() { + if (deck_position >= 52) { + shuffle_deck(); + } + return deck[deck_position++]; +} + +int BlackjackView::get_card_value(uint8_t card) { + int value = (card % 13) + 1; // 1-13 + if (value > 10) value = 10; // Face cards worth 10 + return value; +} + +uint8_t BlackjackView::get_card_suit(uint8_t card) { + return card / 13; // 0=Spades, 1=Hearts, 2=Diamonds, 3=Clubs +} + +std::string BlackjackView::get_card_string(uint8_t card) { + int value = (card % 13) + 1; + std::string result; + + if (value == 1) + result = "A"; + else if (value == 11) + result = "J"; + else if (value == 12) + result = "Q"; + else if (value == 13) + result = "K"; + else if (value == 10) + result = "10"; // Special case for 10 + else + result = std::to_string(value); + + return result; +} + +int BlackjackView::calculate_hand_value(uint8_t* cards, uint8_t count) { + int value = 0; + int aces = 0; + + for (uint8_t i = 0; i < count; i++) { + int card_val = get_card_value(cards[i]); + if (card_val == 1) { + aces++; + value += 1; + } else { + value += card_val; + } + } + + // Convert aces from 1 to 11 if beneficial + while (aces > 0 && value + 10 <= 21) { + value += 10; + aces--; + } + + return value; +} + +void BlackjackView::deal_cards() { + // Clear hands + player_card_count = 0; + dealer_card_count = 0; + + // Deal initial cards + player_cards[player_card_count++] = draw_card(); + dealer_cards[dealer_card_count++] = draw_card(); + player_cards[player_card_count++] = draw_card(); + dealer_cards[dealer_card_count++] = draw_card(); + + dealer_hidden = true; + game_state = GameState::PLAYING; +} + +void BlackjackView::player_hit() { + if (player_card_count < MAX_CARDS_IN_HAND) { + player_cards[player_card_count++] = draw_card(); + + int value = calculate_hand_value(player_cards, player_card_count); + if (value > 21) { + // Bust! + cash = (cash >= bet) ? cash - bet : 0; + losses++; + game_state = GameState::GAME_OVER; + } + } +} + +void BlackjackView::player_stay() { + dealer_hidden = false; + game_state = GameState::DEALER_TURN; + dealer_timer = 0; +} + +void BlackjackView::dealer_turn() { + int dealer_value = calculate_hand_value(dealer_cards, dealer_card_count); + + if (dealer_value < 17 && dealer_card_count < MAX_CARDS_IN_HAND) { + dealer_cards[dealer_card_count++] = draw_card(); + } else { + check_game_over(); + } +} + +void BlackjackView::check_game_over() { + int player_value = calculate_hand_value(player_cards, player_card_count); + int dealer_value = calculate_hand_value(dealer_cards, dealer_card_count); + + if (player_value > 21) { + // Player bust (already handled) + } else if (dealer_value > 21) { + // Dealer bust - player wins + cash += bet; + wins++; + } else if (player_value > dealer_value) { + // Player wins + cash += bet; + wins++; + } else if (player_value < dealer_value) { + // Dealer wins + cash = (cash >= bet) ? cash - bet : 0; + losses++; + } + // Else it's a tie - no money changes hands + + if (cash > high_score) { + high_score = cash; + } + + game_state = GameState::GAME_OVER; +} + +void BlackjackView::update_game() { + switch (game_state) { + case GameState::MENU: + draw_menu(); + break; + + case GameState::BETTING: + draw_betting(); + break; + + case GameState::PLAYING: + draw_game(); + break; + + case GameState::DEALER_TURN: + if (++dealer_timer >= 60) { // 1 second delay + dealer_timer = 0; + dealer_turn(); + } + draw_game(); + break; + + case GameState::GAME_OVER: + draw_game(); + break; + + case GameState::STATS: + draw_stats(); + break; + } +} + +void BlackjackView::draw_menu_static() { + clear_screen(); + + auto style_title = *ui::Theme::getInstance()->fg_green; + auto style_text = *ui::Theme::getInstance()->fg_light; + auto style_rules = *ui::Theme::getInstance()->fg_cyan; + + painter.draw_string({84, 20}, style_title, "BLACKJACK"); + + // Draw rules + painter.draw_string({70, 55}, style_rules, "-- RULES --"); + painter.draw_string({61, 75}, style_text, "Get close to 21"); + painter.draw_string({61, 90}, style_text, "without going over"); + painter.draw_string({61, 110}, style_text, "Dealer hits on 16"); + painter.draw_string({61, 125}, style_text, "Dealer stays on 17"); + painter.draw_string({61, 145}, style_text, "Blackjack pays 1:1"); + + // Controls + painter.draw_string({65, 175}, style_rules, "-- CONTROLS --"); + painter.draw_string({61, 195}, style_text, "SELECT: Start/Hit"); + painter.draw_string({61, 210}, style_text, "LEFT: Stats"); + painter.draw_string({61, 225}, style_text, "RIGHT: Exit/Stay"); + + // Draw high score + painter.draw_string({61, 250}, style_text, "High Score: $" + std::to_string(high_score)); +} + +void BlackjackView::draw_menu() { + // Only handle the flashing text animation + if (++blink_counter >= 30) { + blink_counter = 0; + blink_state = !blink_state; + + if (blink_state) { + auto style = *ui::Theme::getInstance()->fg_yellow; + painter.draw_string({55, 280}, style, "* PRESS SELECT *"); + } else { + // Clear just the text area + painter.fill_rectangle({55, 278, 130, 20}, Color::black()); + } + } +} + +void BlackjackView::draw_stats() { + clear_screen(); + + auto style_title = *ui::Theme::getInstance()->fg_green; + auto style_text = *ui::Theme::getInstance()->fg_light; + auto style_value = *ui::Theme::getInstance()->fg_yellow; + + painter.draw_string({75, 30}, style_title, "STATISTICS"); + + painter.draw_string({30, 80}, style_text, "Wins:"); + painter.draw_string({150, 80}, style_value, std::to_string(wins)); + + painter.draw_string({30, 100}, style_text, "Losses:"); + painter.draw_string({150, 100}, style_value, std::to_string(losses)); + + // Win percentage + uint32_t total = wins + losses; + if (total > 0) { + uint32_t win_pct = (wins * 100) / total; + painter.draw_string({30, 120}, style_text, "Win %:"); + painter.draw_string({150, 120}, style_value, std::to_string(win_pct) + "%"); + } + + painter.draw_string({30, 160}, style_text, "High Score:"); + painter.draw_string({150, 160}, style_value, "$" + std::to_string(high_score)); + + painter.draw_string({30, 180}, style_text, "Cash:"); + painter.draw_string({150, 180}, style_value, "$" + std::to_string(cash)); + + painter.draw_string({40, 250}, style_text, "SELECT: Back"); +} + +void BlackjackView::draw_betting() { + static uint32_t last_bet = 0; + static bool betting_drawn = false; + + if (!betting_drawn) { + clear_screen(); + + auto style_title = *ui::Theme::getInstance()->fg_green; + auto style_text = *ui::Theme::getInstance()->fg_light; + + painter.draw_string({70, 40}, style_title, "PLACE BET"); + painter.draw_string({30, 80}, style_text, "Cash: $" + std::to_string(cash)); + + painter.draw_string({30, 140}, style_text, "ENCODER: +/- $10"); + painter.draw_string({30, 160}, style_text, "SELECT: Deal"); + + betting_drawn = true; + last_bet = 0; + } + + // Update bet display + if (bet != last_bet) { + painter.fill_rectangle({30, 110, 150, 20}, Color::black()); + painter.draw_string({30, 110}, *ui::Theme::getInstance()->fg_yellow, "Bet: $" + std::to_string(bet)); + last_bet = bet; + } +} + +void BlackjackView::draw_game() { + static int last_player_count = -1; + static int last_dealer_count = -1; + static GameState last_game_state = GameState::MENU; + static uint32_t last_bet = 0; + + // Clear and redraw if hands changed or game state changed + if (player_card_count != last_player_count || dealer_card_count != last_dealer_count || game_state != last_game_state) { + clear_screen(); + + auto style = *ui::Theme::getInstance()->fg_green; + painter.draw_string({10, 10}, style, "Cash: $" + std::to_string(cash)); + painter.draw_string({140, 10}, style, "Bet: $" + std::to_string(bet)); + + // Draw dealer hand with value next to label + auto style_value = *ui::Theme::getInstance()->fg_yellow; + painter.draw_string({10, 45}, *ui::Theme::getInstance()->fg_light, "Dealer:"); + if (!dealer_hidden || game_state == GameState::GAME_OVER) { + int dealer_value = calculate_hand_value(dealer_cards, dealer_card_count); + painter.draw_string({70, 45}, style_value, "(" + std::to_string(dealer_value) + ")"); + } + draw_hand(10, 65, dealer_cards, dealer_card_count, true); + + // Draw player hand with value next to label + painter.draw_string({10, 165}, *ui::Theme::getInstance()->fg_light, "You:"); + int player_value = calculate_hand_value(player_cards, player_card_count); + painter.draw_string({50, 165}, style_value, "(" + std::to_string(player_value) + ")"); + draw_hand(10, 185, player_cards, player_card_count, false); + + // Draw controls or result + if (game_state == GameState::PLAYING) { + auto style_text = *ui::Theme::getInstance()->fg_light; + painter.draw_string({30, 290}, style_text, "SELECT: Hit"); + painter.draw_string({130, 290}, style_text, "RIGHT: Stay"); + } else if (game_state == GameState::GAME_OVER) { + const Style* style_result = ui::Theme::getInstance()->fg_yellow; + std::string result; + + if (player_value > 21) { + result = "BUST! You Lose"; + style_result = ui::Theme::getInstance()->fg_red; + } else if (calculate_hand_value(dealer_cards, dealer_card_count) > 21) { + result = "Dealer Bust! Win!"; + style_result = ui::Theme::getInstance()->fg_green; + } else if (player_value > calculate_hand_value(dealer_cards, dealer_card_count)) { + result = "You Win!"; + style_result = ui::Theme::getInstance()->fg_green; + } else if (player_value < calculate_hand_value(dealer_cards, dealer_card_count)) { + result = "You Lose"; + style_result = ui::Theme::getInstance()->fg_red; + } else { + result = "Push (Tie)"; + } + + // Draw result + painter.draw_string({60, 270}, *style_result, result); + + // Draw compact bet selector in top right area + auto style_bet = *ui::Theme::getInstance()->fg_cyan; + painter.draw_string({140, 25}, style_bet, "Next: $" + std::to_string(bet)); + + // Show controls + painter.draw_string({10, 290}, *ui::Theme::getInstance()->fg_light, "SELECT: Deal ENC: +/-"); + } + + last_player_count = player_card_count; + last_dealer_count = dealer_card_count; + last_game_state = game_state; + last_bet = bet; + } else if (game_state == GameState::GAME_OVER && bet != last_bet) { + // Only update the bet display when it changes + painter.fill_rectangle({140, 25, 90, 16}, Color::black()); + painter.draw_string({140, 25}, *ui::Theme::getInstance()->fg_cyan, "Next: $" + std::to_string(bet)); + last_bet = bet; + } +} + +void BlackjackView::draw_suit_symbol(int x, int y, uint8_t suit, Color color, bool large) { + if (large) { + // Large suit symbols for center of card + switch (suit) { + case 0: // Spades + // Top curve + painter.fill_rectangle({x + 9, y + 4, 2, 2}, color); + painter.fill_rectangle({x + 8, y + 5, 4, 2}, color); + painter.fill_rectangle({x + 7, y + 6, 6, 2}, color); + painter.fill_rectangle({x + 6, y + 7, 8, 2}, color); + painter.fill_rectangle({x + 5, y + 8, 10, 2}, color); + painter.fill_rectangle({x + 4, y + 9, 12, 2}, color); + painter.fill_rectangle({x + 3, y + 10, 14, 2}, color); + painter.fill_rectangle({x + 2, y + 11, 16, 2}, color); + painter.fill_rectangle({x + 1, y + 12, 18, 2}, color); + painter.fill_rectangle({x + 0, y + 13, 20, 3}, color); + painter.fill_rectangle({x + 1, y + 16, 18, 2}, color); + painter.fill_rectangle({x + 2, y + 17, 16, 1}, color); + painter.fill_rectangle({x + 3, y + 18, 14, 1}, color); + // Stem + painter.fill_rectangle({x + 9, y + 19, 2, 4}, color); + painter.fill_rectangle({x + 8, y + 22, 4, 1}, color); + painter.fill_rectangle({x + 7, y + 23, 6, 1}, color); + painter.fill_rectangle({x + 6, y + 24, 8, 1}, color); + break; + + case 1: // Hearts + // Left bump + painter.fill_rectangle({x + 3, y + 5, 4, 2}, color); + painter.fill_rectangle({x + 2, y + 6, 6, 2}, color); + painter.fill_rectangle({x + 1, y + 7, 8, 3}, color); + painter.fill_rectangle({x + 0, y + 9, 9, 3}, color); + // Right bump + painter.fill_rectangle({x + 13, y + 5, 4, 2}, color); + painter.fill_rectangle({x + 12, y + 6, 6, 2}, color); + painter.fill_rectangle({x + 11, y + 7, 8, 3}, color); + painter.fill_rectangle({x + 11, y + 9, 9, 3}, color); + // Body + painter.fill_rectangle({x + 1, y + 11, 18, 3}, color); + painter.fill_rectangle({x + 2, y + 14, 16, 2}, color); + painter.fill_rectangle({x + 3, y + 16, 14, 2}, color); + painter.fill_rectangle({x + 4, y + 18, 12, 1}, color); + painter.fill_rectangle({x + 5, y + 19, 10, 1}, color); + painter.fill_rectangle({x + 6, y + 20, 8, 1}, color); + painter.fill_rectangle({x + 7, y + 21, 6, 1}, color); + painter.fill_rectangle({x + 8, y + 22, 4, 1}, color); + painter.fill_rectangle({x + 9, y + 23, 2, 1}, color); + break; + + case 2: // Diamonds + painter.fill_rectangle({x + 10, y + 3, 1, 1}, color); + painter.fill_rectangle({x + 9, y + 4, 3, 1}, color); + painter.fill_rectangle({x + 8, y + 5, 5, 1}, color); + painter.fill_rectangle({x + 7, y + 6, 7, 1}, color); + painter.fill_rectangle({x + 6, y + 7, 9, 1}, color); + painter.fill_rectangle({x + 5, y + 8, 11, 1}, color); + painter.fill_rectangle({x + 4, y + 9, 13, 1}, color); + painter.fill_rectangle({x + 3, y + 10, 15, 1}, color); + painter.fill_rectangle({x + 2, y + 11, 17, 1}, color); + painter.fill_rectangle({x + 1, y + 12, 19, 1}, color); + painter.fill_rectangle({x + 0, y + 13, 21, 1}, color); + painter.fill_rectangle({x + 1, y + 14, 19, 1}, color); + painter.fill_rectangle({x + 2, y + 15, 17, 1}, color); + painter.fill_rectangle({x + 3, y + 16, 15, 1}, color); + painter.fill_rectangle({x + 4, y + 17, 13, 1}, color); + painter.fill_rectangle({x + 5, y + 18, 11, 1}, color); + painter.fill_rectangle({x + 6, y + 19, 9, 1}, color); + painter.fill_rectangle({x + 7, y + 20, 7, 1}, color); + painter.fill_rectangle({x + 8, y + 21, 5, 1}, color); + painter.fill_rectangle({x + 9, y + 22, 3, 1}, color); + painter.fill_rectangle({x + 10, y + 23, 1, 1}, color); + break; + + case 3: // Clubs + // Center circle + painter.fill_rectangle({x + 8, y + 8, 5, 1}, color); + painter.fill_rectangle({x + 7, y + 9, 7, 3}, color); + painter.fill_rectangle({x + 8, y + 12, 5, 1}, color); + // Left circle + painter.fill_rectangle({x + 3, y + 11, 4, 1}, color); + painter.fill_rectangle({x + 2, y + 12, 6, 3}, color); + painter.fill_rectangle({x + 3, y + 15, 4, 1}, color); + // Right circle + painter.fill_rectangle({x + 14, y + 11, 4, 1}, color); + painter.fill_rectangle({x + 13, y + 12, 6, 3}, color); + painter.fill_rectangle({x + 14, y + 15, 4, 1}, color); + // Connect circles + painter.fill_rectangle({x + 6, y + 13, 9, 2}, color); + // Stem + painter.fill_rectangle({x + 9, y + 16, 3, 4}, color); + painter.fill_rectangle({x + 8, y + 19, 5, 1}, color); + painter.fill_rectangle({x + 7, y + 20, 7, 1}, color); + painter.fill_rectangle({x + 6, y + 21, 9, 1}, color); + break; + } + } else { + // Small suit symbols + switch (suit) { + case 0: // Spades - small + painter.fill_rectangle({x + 2, y + 1, 3, 3}, color); + painter.fill_rectangle({x + 1, y + 3, 5, 2}, color); + painter.fill_rectangle({x + 3, y + 5, 1, 2}, color); + break; + + case 1: // Hearts - small + painter.fill_rectangle({x + 1, y + 1, 2, 2}, color); + painter.fill_rectangle({x + 4, y + 1, 2, 2}, color); + painter.fill_rectangle({x + 1, y + 2, 5, 2}, color); + painter.fill_rectangle({x + 2, y + 4, 3, 1}, color); + painter.fill_rectangle({x + 3, y + 5, 1, 1}, color); + break; + + case 2: // Diamonds - small + painter.fill_rectangle({x + 3, y + 1, 1, 1}, color); + painter.fill_rectangle({x + 2, y + 2, 3, 1}, color); + painter.fill_rectangle({x + 1, y + 3, 5, 1}, color); + painter.fill_rectangle({x + 2, y + 4, 3, 1}, color); + painter.fill_rectangle({x + 3, y + 5, 1, 1}, color); + break; + + case 3: // Clubs - small + painter.fill_rectangle({x + 3, y + 1, 2, 2}, color); + painter.fill_rectangle({x + 1, y + 3, 2, 2}, color); + painter.fill_rectangle({x + 4, y + 3, 2, 2}, color); + painter.fill_rectangle({x + 3, y + 5, 2, 2}, color); + break; + } + } +} + +void BlackjackView::draw_card(int x, int y, uint8_t card, bool hidden) { + const int width = 60; + const int height = 80; + + // Draw card background + painter.fill_rectangle({x, y, width, height}, Color::white()); + painter.draw_rectangle({x, y, width, height}, Color::black()); + painter.draw_rectangle({x + 1, y + 1, width - 2, height - 2}, Color::grey()); // Inner border + + if (hidden) { + // Draw card back pattern - diagonal lines + for (int i = 4; i < width - 4; i += 6) { + for (int j = 4; j < height - 4; j += 6) { + painter.fill_rectangle({x + i, y + j, 3, 3}, Color::blue()); + painter.fill_rectangle({x + i + 3, y + j + 3, 3, 3}, Color::red()); + } + } + } else { + // Draw card value + uint8_t suit = get_card_suit(card); + Color suit_color = (suit == 1 || suit == 2) ? Color::red() : Color::black(); + + const auto* base_style = ui::Theme::getInstance()->fg_light; + Style card_style{ + .font = base_style->font, + .background = Color::white(), + .foreground = suit_color}; + + std::string value_str = get_card_string(card); + + // Draw value in top-left corner + painter.draw_string({x + 4, y + 4}, card_style, value_str); + + // Draw small suit symbol next to value + int suit_x = (value_str == "10") ? x + 20 : x + 12; + draw_suit_symbol(suit_x, y + 4, suit, suit_color, false); + + // Draw value in bottom-right corner + int bottom_x = (value_str == "10") ? x + width - 24 : x + width - 16; + painter.draw_string({bottom_x, y + height - 18}, card_style, value_str); + + // Draw small suit symbol in bottom-right + draw_suit_symbol(x + width - 10, y + height - 16, suit, suit_color, false); + + // Draw large suit symbol in center + draw_suit_symbol(x + 20, y + 28, suit, suit_color, true); + } +} + +void BlackjackView::draw_hand(int x, int y, uint8_t* cards, uint8_t count, bool is_dealer) { + // Calculate total width needed + const int card_width = 60; + const int overlap = 40; // Amount of overlap when cards need to fit + const int max_width = 230 - x; // Available width on screen + + int spacing; + if (count == 1) { + spacing = 0; + } else if (count == 2) { + spacing = card_width + 5; // Small gap for 2 cards + } else { + // Calculate spacing to fit all cards + int total_overlap_width = card_width + (count - 1) * overlap; + if (total_overlap_width <= max_width) { + spacing = overlap; + } else { + // Need more overlap to fit + spacing = (max_width - card_width) / (count - 1); + } + } + + for (uint8_t i = 0; i < count; i++) { + bool hide = is_dealer && dealer_hidden && i == 1; + int card_x = x + (i * spacing); + draw_card(card_x, y, cards[i], hide); + } +} + +bool BlackjackView::on_key(const KeyEvent key) { + if (key == KeyEvent::Select) { + switch (game_state) { + case GameState::MENU: + if (cash < 10) { + cash = 100; // Reset if broke - maybe should provide https://gamblersanonymous.org/ link if they also lost their wife and house + wins = 0; + losses = 0; + } + game_state = GameState::BETTING; + break; + + case GameState::BETTING: + deal_cards(); + break; + + case GameState::PLAYING: + player_hit(); + break; + + case GameState::GAME_OVER: + // Deal new hand with current bet + if (cash >= bet) { + deal_cards(); + } else if (cash >= 10) { + // Not enough for current bet, reduce to what they can afford + bet = 10; + deal_cards(); + } else { + // Broke, reset game + cash = 100; + wins = 0; + losses = 0; + game_state = GameState::MENU; + draw_menu_static(); + } + break; + + case GameState::STATS: + game_state = GameState::MENU; + draw_menu_static(); + break; + + default: + break; + } + return true; + } else if (key == KeyEvent::Left) { + if (game_state == GameState::MENU) { + game_state = GameState::STATS; + } + return true; + } else if (key == KeyEvent::Right) { + if (game_state == GameState::MENU) { + nav_.pop(); + return true; + } else if (game_state == GameState::PLAYING) { + player_stay(); + return true; + } + } + + return false; +} + +bool BlackjackView::on_encoder(const EncoderEvent delta) { + if (game_state == GameState::BETTING || game_state == GameState::GAME_OVER) { + if (delta > 0 && bet + 10 <= cash) { + bet += 10; + } else if (delta < 0 && bet >= 20) { + bet -= 10; + } + return true; + } + + return false; +} + +} // namespace ui::external_app::blackjack diff --git a/firmware/application/external/blackjack/ui_blackjack.hpp b/firmware/application/external/blackjack/ui_blackjack.hpp new file mode 100644 index 000000000..90d8d8cb6 --- /dev/null +++ b/firmware/application/external/blackjack/ui_blackjack.hpp @@ -0,0 +1,156 @@ +/* + * Blackjack Game for Portapack Mayhem + * Ported / Enhanced / Graphically made awesome by RocketGod (https://betaskynet.com) + * Based on BlackJack 83 for TI Calculator by Harper Maddox (was written in Assembly) + */ + +#ifndef __UI_BLACKJACK_H__ +#define __UI_BLACKJACK_H__ + +#include "ui.hpp" +#include "ui_navigation.hpp" +#include "event_m0.hpp" +#include "message.hpp" +#include "irq_controls.hpp" +#include "random.hpp" +#include "lpc43xx_cpp.hpp" +#include "ui_widget.hpp" +#include "app_settings.hpp" +#include +#include + +namespace ui::external_app::blackjack { + +// Game states +enum class GameState { + MENU, + BETTING, + PLAYING, + DEALER_TURN, + GAME_OVER, + STATS +}; + +// Card structure +struct Card { + uint8_t value; // 1-13 (Ace=1, Jack=11, Queen=12, King=13) + uint8_t suit; // 0=Spades, 1=Hearts, 2=Diamonds, 3=Clubs + + Card() + : value(0), suit(0) {} + Card(uint8_t v, uint8_t s) + : value(v), suit(s) {} +}; + +// Timer class +using Callback = void (*)(void); + +class Ticker { + public: + Ticker() = default; + void attach(Callback func, double delay_sec); + void detach(); +}; + +// Function declarations +void check_game_timer(); +void game_timer_check(); + +class BlackjackView : public View { + public: + BlackjackView(NavigationView& nav); + ~BlackjackView(); + + void on_show() override; + std::string title() const override { return "Blackjack"; } + void focus() override { dummy.focus(); } + void paint(Painter& painter) override; + void frame_sync(); + bool on_encoder(const EncoderEvent event) override; + bool on_key(KeyEvent key) override; + + // Public for timer callback + GameState game_state = GameState::MENU; + void update_game(); + + private: + NavigationView& nav_; + bool initialized = false; + + // Game variables + static constexpr uint8_t MAX_CARDS_IN_HAND = 11; // Maximum possible cards before bust + uint8_t deck[52]; + uint8_t deck_position = 0; + + uint8_t player_cards[MAX_CARDS_IN_HAND]; + uint8_t player_card_count = 0; + + uint8_t dealer_cards[MAX_CARDS_IN_HAND]; + uint8_t dealer_card_count = 0; + + // Game state variables + uint32_t cash = 100; + uint32_t bet = 10; + uint32_t wins = 0; + uint32_t losses = 0; + uint32_t high_score = 100; + bool dealer_hidden = true; + + // UI state + uint8_t menu_selection = 0; + bool blink_state = true; + uint32_t blink_counter = 0; + uint32_t dealer_timer = 0; + + // Timer + Ticker game_timer; + + // Methods + void init_deck(); + void shuffle_deck(); + uint8_t draw_card(); + void deal_cards(); + int calculate_hand_value(uint8_t* cards, uint8_t count); + int get_card_value(uint8_t card); + uint8_t get_card_suit(uint8_t card); + std::string get_card_string(uint8_t card); + void player_hit(); + void player_stay(); + void dealer_turn(); + void check_game_over(); + void reset_game(); + + // Drawing methods + void draw_menu(); + void draw_menu_static(); + void draw_stats(); + void draw_game(); + void draw_betting(); + void draw_card(int x, int y, uint8_t card, bool hidden = false); + void draw_hand(int x, int y, uint8_t* cards, uint8_t count, bool is_dealer = false); + void draw_suit_symbol(int x, int y, uint8_t suit, Color color, bool large); + void clear_screen(); + + // Settings + app_settings::SettingsManager settings_{ + "blackjack", + app_settings::Mode::NO_RF, + {{"cash"sv, &cash}, + {"wins"sv, &wins}, + {"losses"sv, &losses}, + {"highscore"sv, &high_score}}}; + + Button dummy{ + {240, 0, 0, 0}, + ""}; + + MessageHandlerRegistration message_handler_frame_sync{ + Message::ID::DisplayFrameSync, + [this](const Message* const) { + this->frame_sync(); + }}; +}; + +} // namespace ui::external_app::blackjack + +#endif /* __UI_BLACKJACK_H__ */ diff --git a/firmware/application/external/blespam/ui_blespam.hpp b/firmware/application/external/blespam/ui_blespam.hpp index e5831d2f7..73640328b 100644 --- a/firmware/application/external/blespam/ui_blespam.hpp +++ b/firmware/application/external/blespam/ui_blespam.hpp @@ -119,7 +119,7 @@ class BLESpamView : public View { #ifdef BLESPMUSECONSOLE Console console{ - {0, 70, 240, 220}}; + {0, 70, screen_width, 220}}; #endif OptionsField options_atkmode{ {0 * 8, 2 * 8}, diff --git a/firmware/application/external/breakout/main.cpp b/firmware/application/external/breakout/main.cpp new file mode 100644 index 000000000..a4e31c860 --- /dev/null +++ b/firmware/application/external/breakout/main.cpp @@ -0,0 +1,70 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +#include "ui.hpp" +#include "ui_breakout.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::breakout { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::breakout + +extern "C" { + +__attribute__((section(".external_app.app_breakout.application_information"), used)) application_information_t _application_information_breakout = { + (uint8_t*)0x00000000, + ui::external_app::breakout::initialize_app, + CURRENT_HEADER_VERSION, + VERSION_MD5, + + "Breakout", + { + 0x00, + 0x00, + 0x7F, + 0x7F, + 0x7F, + 0x7F, + 0x7F, + 0x7F, + 0x00, + 0x00, + 0xF7, + 0xF7, + 0xF7, + 0xF7, + 0xF7, + 0xF7, + 0x00, + 0x00, + 0x7F, + 0x7F, + 0x7F, + 0x7F, + 0x7F, + 0x7F, + 0x00, + 0x00, + 0xF7, + 0xF7, + 0xF7, + 0xF7, + 0xF7, + 0xF7, + }, + ui::Color::green().v, + app_location_t::GAMES, + -1, + + {0, 0, 0, 0}, + 0x00000000, +}; +} // namespace ui::external_app::breakout \ No newline at end of file diff --git a/firmware/application/external/breakout/ui_breakout.cpp b/firmware/application/external/breakout/ui_breakout.cpp new file mode 100644 index 000000000..2287a457f --- /dev/null +++ b/firmware/application/external/breakout/ui_breakout.cpp @@ -0,0 +1,552 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +#include "ui_breakout.hpp" + +namespace ui::external_app::breakout { + +Ticker game_timer; + +int paddle_x = 0; +float ball_x = 0; +float ball_y = GAME_AREA_BOTTOM - PADDLE_HEIGHT - BALL_SIZE - 1; +float ball_dx = 1.5f; +float ball_dy = -2.0f; +int score = 0; +int lives = 3; +int level = 1; +int game_state = STATE_MENU; +bool initialized = false; +bool ball_attached = true; +unsigned int brick_count = 0; + +bool menu_initialized = false; +bool blink_state = true; +uint32_t blink_counter = 0; +int16_t prompt_x = 0; + +bool gameover_initialized = false; +bool gameover_blink_state = true; +uint32_t gameover_blink_counter = 0; +int16_t restart_x = 0; + +bool bricks[BRICK_ROWS][BRICK_COLS]; +int brick_colors[BRICK_ROWS]; + +const Color pp_colors[] = { + Color::white(), + Color::blue(), + Color::yellow(), + Color::purple(), + Color::green(), + Color::red(), + Color::magenta(), + Color::orange(), + Color::black(), +}; + +Painter painter; + +bool but_RIGHT = false; +bool but_LEFT = false; +bool but_SELECT = false; + +static Callback game_update_callback = nullptr; +static uint32_t game_update_timeout = 0; +static uint32_t game_update_counter = 0; + +void cls() { + painter.fill_rectangle({0, 0, portapack::display.width(), portapack::display.height()}, Color::black()); +} + +void background(int color) { + (void)color; +} + +void fillrect(int x1, int y1, int x2, int y2, int color) { + painter.fill_rectangle({x1, y1, x2 - x1, y2 - y1}, pp_colors[color]); +} + +void rect(int x1, int y1, int x2, int y2, int color) { + painter.draw_rectangle({x1, y1, x2 - x1, y2 - y1}, pp_colors[color]); +} + +void check_game_timer() { + if (game_update_callback) { + if (++game_update_counter >= game_update_timeout) { + game_update_counter = 0; + game_update_callback(); + } + } +} + +void Ticker::attach(Callback func, double delay_sec) { + game_update_callback = func; + game_update_timeout = delay_sec * 60; +} + +void Ticker::detach() { + game_update_callback = nullptr; +} + +void game_timer_check() { + if (game_state == STATE_PLAYING) { + update_game(); + } else if (game_state == STATE_MENU) { + show_menu(); + } else if (game_state == STATE_GAME_OVER) { + show_game_over(); + } +} + +void init_game() { + paddle_x = (screen_width - PADDLE_WIDTH) / 2; + score = 0; + lives = 3; + level = 1; + + brick_colors[0] = Red; + brick_colors[1] = Orange; + brick_colors[2] = Yellow; + brick_colors[3] = Green; + brick_colors[4] = Purple; + + init_level(); + + game_state = STATE_MENU; + menu_initialized = false; + blink_state = true; + blink_counter = 0; +} + +void init_level() { + ball_x = paddle_x + (PADDLE_WIDTH / 2) - (BALL_SIZE / 2); + ball_y = GAME_AREA_BOTTOM - PADDLE_HEIGHT - BALL_SIZE - 1; + + float speed_multiplier = (level == 1) ? 1.0f : 1.0f + ((level - 1) * BALL_SPEED_INCREASE); + ball_dx = (ball_dx > 0 ? 1.5f : -1.5f) * speed_multiplier; + ball_dy = -2.0f * speed_multiplier; + + ball_attached = true; + + brick_count = 0; + for (int row = 0; row < BRICK_ROWS; row++) { + for (int col = 0; col < BRICK_COLS; col++) { + bricks[row][col] = true; + brick_count++; + } + } +} + +void draw_screen() { + cls(); + background(COLOR_BACKGROUND); + + draw_borders(); + draw_bricks(); + draw_paddle(); + draw_ball(); + draw_score(); + draw_lives(); + draw_level(); +} + +void draw_borders() { + rect(0, GAME_AREA_TOP - 1, screen_width, GAME_AREA_TOP, COLOR_BORDER); +} + +void draw_bricks() { + for (int row = 0; row < BRICK_ROWS; row++) { + for (int col = 0; col < BRICK_COLS; col++) { + if (bricks[row][col]) { + int x = col * (BRICK_WIDTH + BRICK_GAP); + int y = GAME_AREA_TOP + row * (BRICK_HEIGHT + BRICK_GAP) + 5; + fillrect(x, y, x + BRICK_WIDTH, y + BRICK_HEIGHT, brick_colors[row]); + rect(x, y, x + BRICK_WIDTH, y + BRICK_HEIGHT, Black); + } + } + } +} + +void draw_paddle() { + fillrect(paddle_x, PADDLE_Y, paddle_x + PADDLE_WIDTH, PADDLE_Y + PADDLE_HEIGHT, COLOR_PADDLE); +} + +void draw_ball() { + fillrect(ball_x, ball_y, ball_x + BALL_SIZE, ball_y + BALL_SIZE, COLOR_BALL); +} + +void draw_score() { + auto style = *ui::Theme::getInstance()->fg_green; + painter.draw_string({5, 10}, style, "Score: " + std::to_string(score)); +} + +void draw_lives() { + auto style = *ui::Theme::getInstance()->fg_red; + painter.draw_string({5, 30}, style, "Lives: " + std::to_string(lives)); +} + +void draw_level() { + auto style = *ui::Theme::getInstance()->fg_yellow; + painter.draw_string({80, 30}, style, "Level: " + std::to_string(level)); +} + +void move_paddle_left() { + if (paddle_x > 0) { + fillrect(paddle_x, PADDLE_Y, paddle_x + PADDLE_WIDTH, PADDLE_Y + PADDLE_HEIGHT, COLOR_BACKGROUND); + if (ball_attached) { + fillrect(ball_x, ball_y, ball_x + BALL_SIZE, ball_y + BALL_SIZE, COLOR_BACKGROUND); + } + + paddle_x -= 10; + if (paddle_x < 0) paddle_x = 0; + + if (ball_attached) { + ball_x = paddle_x + (PADDLE_WIDTH / 2) - (BALL_SIZE / 2); + } + + draw_paddle(); + if (ball_attached) { + draw_ball(); + } + } +} + +void move_paddle_right() { + if (paddle_x < screen_width - PADDLE_WIDTH) { + fillrect(paddle_x, PADDLE_Y, paddle_x + PADDLE_WIDTH, PADDLE_Y + PADDLE_HEIGHT, COLOR_BACKGROUND); + if (ball_attached) { + fillrect(ball_x, ball_y, ball_x + BALL_SIZE, ball_y + BALL_SIZE, COLOR_BACKGROUND); + } + + paddle_x += 10; + if (paddle_x > screen_width - PADDLE_WIDTH) paddle_x = screen_width - PADDLE_WIDTH; + + if (ball_attached) { + ball_x = paddle_x + (PADDLE_WIDTH / 2) - (BALL_SIZE / 2); + } + + draw_paddle(); + if (ball_attached) { + draw_ball(); + } + } +} + +void launch_ball() { + if (ball_attached) { + ball_attached = false; + ball_x = paddle_x + (PADDLE_WIDTH / 2) - (BALL_SIZE / 2); + ball_y = GAME_AREA_BOTTOM - PADDLE_HEIGHT - BALL_SIZE - 1; + float speed_multiplier = (level == 1) ? 1.0f : 1.0f + ((level - 1) * BALL_SPEED_INCREASE); + ball_dx = 1.5f * speed_multiplier; + ball_dy = -2.0f * speed_multiplier; + } +} + +void update_game() { + if (ball_attached) { + return; + } + + fillrect(ball_x, ball_y, ball_x + BALL_SIZE, ball_y + BALL_SIZE, COLOR_BACKGROUND); + + float next_ball_y = ball_y + ball_dy; + if (next_ball_y > GAME_AREA_BOTTOM) { + lives--; + draw_lives(); + if (lives <= 0) { + handle_game_over(); + } else { + ball_attached = true; + ball_x = paddle_x + (PADDLE_WIDTH / 2) - (BALL_SIZE / 2); + ball_y = GAME_AREA_BOTTOM - PADDLE_HEIGHT - BALL_SIZE - 1; + draw_ball(); + } + return; + } + + ball_x += ball_dx; + ball_y = next_ball_y; + + if (ball_x < 0) { + ball_x = 0; + ball_dx = -ball_dx; + } else if (ball_x > screen_width - BALL_SIZE) { + ball_x = screen_width - BALL_SIZE; + ball_dx = -ball_dx; + } + + if (ball_y < GAME_AREA_TOP) { + ball_y = GAME_AREA_TOP; + ball_dy = -ball_dy; + } + + if (ball_y + BALL_SIZE >= PADDLE_Y && ball_y <= PADDLE_Y + PADDLE_HEIGHT) { + if (ball_x + BALL_SIZE >= paddle_x && ball_x <= paddle_x + PADDLE_WIDTH) { + ball_y = PADDLE_Y - BALL_SIZE; + float hit_position = (ball_x + (BALL_SIZE / 2)) - paddle_x; + float angle = (hit_position / PADDLE_WIDTH) - 0.5f; + ball_dx = angle * 4.0f; + if (ball_dx > -0.5f && ball_dx < 0.5f) { + ball_dx = (ball_dx > 0) ? 0.5f : -0.5f; + } + ball_dy = -ball_dy; + } + } + + check_collisions(); + + draw_ball(); + + if (check_level_complete()) { + next_level(); + } +} + +void check_collisions() { + int grid_x = ball_x / (BRICK_WIDTH + BRICK_GAP); + int grid_y = (ball_y - GAME_AREA_TOP - 5) / (BRICK_HEIGHT + BRICK_GAP); + + for (int row = grid_y - 1; row <= grid_y + 1; row++) { + for (int col = grid_x - 1; col <= grid_x + 1; col++) { + if (row >= 0 && row < BRICK_ROWS && col >= 0 && col < BRICK_COLS) { + if (bricks[row][col] && check_brick_collision(row, col)) { + return; + } + } + } + } +} + +bool check_brick_collision(int row, int col) { + int brick_x = col * (BRICK_WIDTH + BRICK_GAP); + int brick_y = GAME_AREA_TOP + row * (BRICK_HEIGHT + BRICK_GAP) + 5; + + if (ball_x + BALL_SIZE >= brick_x && ball_x <= brick_x + BRICK_WIDTH && + ball_y + BALL_SIZE >= brick_y && ball_y <= brick_y + BRICK_HEIGHT) { + fillrect(brick_x, brick_y, brick_x + BRICK_WIDTH, brick_y + BRICK_HEIGHT, COLOR_BACKGROUND); + + bricks[row][col] = false; + brick_count--; + + score += (5 - row) * 10; + draw_score(); + + float center_x = brick_x + BRICK_WIDTH / 2; + float center_y = brick_y + BRICK_HEIGHT / 2; + float ball_center_x = ball_x + BALL_SIZE / 2; + float ball_center_y = ball_y + BALL_SIZE / 2; + float dx = std::abs(ball_center_x - center_x); + float dy = std::abs(ball_center_y - center_y); + + if (dx * BRICK_HEIGHT > dy * BRICK_WIDTH) { + ball_dx = -ball_dx; + } else { + ball_dy = -ball_dy; + } + + return true; + } + + return false; +} + +bool check_level_complete() { + return brick_count == 0; +} + +void next_level() { + level++; + init_level(); + draw_screen(); +} + +void handle_game_over() { + game_state = STATE_GAME_OVER; + gameover_initialized = false; + show_game_over(); +} + +void init_menu() { + cls(); + background(COLOR_BACKGROUND); + + auto style_yellow = *ui::Theme::getInstance()->fg_yellow; + auto style_blue = *ui::Theme::getInstance()->fg_blue; + auto style_cyan = *ui::Theme::getInstance()->fg_cyan; + + int16_t screen_width = ui::screen_width; + int16_t title_x = (screen_width - 17 * 8) / 2; + int16_t divider_width = 24 * 8; + int16_t divider_x = (screen_width - divider_width) / 2; + int16_t instruction_width = 22 * 8; + int16_t instruction_x = (screen_width - instruction_width) / 2; + int16_t prompt_width = 16 * 8; + prompt_x = (screen_width - prompt_width) / 2; + + painter.fill_rectangle({0, 30, screen_width, 30}, Color::black()); + painter.draw_string({title_x + 2, 42}, style_yellow, "*** BREAKOUT ***"); + painter.draw_string({divider_x, 70}, style_blue, "========================"); + painter.fill_rectangle({instruction_x - 5, 110, instruction_width + 10, 70}, Color::black()); + painter.draw_rectangle({instruction_x - 5, 110, instruction_width + 10, 70}, Color::white()); + painter.draw_string({instruction_x, 120}, style_cyan, " ROTARY: MOVE PADDLE"); + painter.draw_string({instruction_x, 150}, style_cyan, " SELECT: START/LAUNCH"); + painter.draw_string({divider_x, 190}, style_blue, "========================"); + + menu_initialized = true; +} + +void show_menu() { + if (!menu_initialized) { + init_menu(); + } + + auto style_red = *ui::Theme::getInstance()->fg_red; + + if (++blink_counter >= 30) { + blink_counter = 0; + blink_state = !blink_state; + + painter.fill_rectangle({prompt_x - 2, 228, 16 * 8 + 4, 20}, Color::black()); + + if (blink_state) { + painter.draw_string({prompt_x, 230}, style_red, "* PRESS SELECT *"); + } + } +} + +void init_game_over() { + cls(); + background(COLOR_BACKGROUND); + + auto style_red = *ui::Theme::getInstance()->fg_red; + auto style_yellow = *ui::Theme::getInstance()->fg_yellow; + + // int16_t screen_width = screen_width; + int16_t title_width = 9 * 8; + int16_t title_x = (screen_width - title_width) / 2; + int16_t score_text_width = (16 + std::to_string(score).length()) * 8; + int16_t score_x = (screen_width - score_text_width) / 2; + + painter.draw_rectangle({20, 80, screen_width - 40, 160}, Color::red()); + painter.draw_rectangle({22, 82, screen_width - 44, 156}, Color::white()); + + painter.draw_string({title_x, 100}, style_red, "GAME OVER"); + + painter.fill_rectangle({40, 140, screen_width - 80, 30}, Color::black()); + painter.draw_rectangle({40, 140, screen_width - 80, 30}, Color::yellow()); + painter.draw_string({score_x, 150}, style_yellow, " FINAL SCORE: " + std::to_string(score)); + + int16_t restart_width = 12 * 8; + restart_x = (screen_width - restart_width) / 2; + + gameover_initialized = true; + gameover_blink_state = true; + gameover_blink_counter = 0; +} + +void show_game_over() { + if (!gameover_initialized) { + init_game_over(); + } + + auto style_green = *ui::Theme::getInstance()->fg_green; + + if (++gameover_blink_counter >= 30) { + gameover_blink_counter = 0; + gameover_blink_state = !gameover_blink_state; + + painter.fill_rectangle({restart_x - 2, 198, 12 * 8 + 4, 20}, Color::black()); + + if (gameover_blink_state) { + painter.draw_string({restart_x, 200}, style_green, "PRESS SELECT"); + } + } +} + +void reset_game() { + level = 1; + score = 0; + lives = 3; + game_state = STATE_PLAYING; + init_level(); + draw_screen(); + gameover_initialized = false; + gameover_blink_state = true; + gameover_blink_counter = 0; +} + +BreakoutView::BreakoutView(NavigationView& nav) + : nav_{nav} { + paddle_x = (screen_width - PADDLE_WIDTH) / 2; + ball_x = screen_width / 2; + add_children({&dummy}); + game_timer.attach(&game_timer_check, 1.0 / 60.0); +} + +void BreakoutView::on_show() { +} + +void BreakoutView::paint(Painter& painter) { + (void)painter; + + if (!initialized) { + initialized = true; + std::srand(LPC_RTC->CTIME0); + init_game(); + } +} + +void BreakoutView::frame_sync() { + check_game_timer(); + set_dirty(); +} + +bool BreakoutView::on_encoder(const EncoderEvent delta) { + if (game_state == STATE_PLAYING) { + if (delta > 0) { + move_paddle_right(); + set_dirty(); + } else if (delta < 0) { + move_paddle_left(); + set_dirty(); + } + } + return true; +} + +bool BreakoutView::on_key(const KeyEvent key) { + but_SELECT = (key == KeyEvent::Select); + but_LEFT = (key == KeyEvent::Left); + but_RIGHT = (key == KeyEvent::Right); + + if (key == KeyEvent::Select) { + if (game_state == STATE_MENU) { + game_state = STATE_PLAYING; + reset_game(); + } else if (game_state == STATE_PLAYING && ball_attached) { + launch_ball(); + } else if (game_state == STATE_GAME_OVER) { + reset_game(); + } + } else if (key == KeyEvent::Left) { + if (game_state == STATE_PLAYING) { + move_paddle_left(); + } + } else if (key == KeyEvent::Right) { + if (game_state == STATE_PLAYING) { + move_paddle_right(); + } + } + + set_dirty(); + return true; +} + +} // namespace ui::external_app::breakout \ No newline at end of file diff --git a/firmware/application/external/breakout/ui_breakout.hpp b/firmware/application/external/breakout/ui_breakout.hpp new file mode 100644 index 000000000..1ff303595 --- /dev/null +++ b/firmware/application/external/breakout/ui_breakout.hpp @@ -0,0 +1,154 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +#ifndef __UI_BREAKOUT_H__ +#define __UI_BREAKOUT_H__ + +#include "ui.hpp" +#include "ui_navigation.hpp" +#include "event_m0.hpp" +#include "message.hpp" +#include "irq_controls.hpp" +#include "random.hpp" +#include "lpc43xx_cpp.hpp" +#include "ui_widget.hpp" + +namespace ui::external_app::breakout { + +enum { + White, + Blue, + Yellow, + Purple, + Green, + Red, + Maroon, + Orange, + Black, +}; + +extern const Color pp_colors[]; +extern Painter painter; +extern bool but_RIGHT; +extern bool but_LEFT; +extern bool but_SELECT; + +void cls(); +void background(int color); +void fillrect(int x1, int y1, int x2, int y2, int color); +void rect(int x1, int y1, int x2, int y2, int color); + +#define wait(x) chThdSleepMilliseconds(x * 1000) + +using Callback = void (*)(void); + +void check_game_timer(); + +class Ticker { + public: + Ticker() = default; + void attach(Callback func, double delay_sec); + void detach(); +}; + +#define PADDLE_WIDTH 40 +#define PADDLE_HEIGHT 10 +#define BALL_SIZE 8 +#define BRICK_WIDTH 20 +#define BRICK_HEIGHT 10 +#define BRICK_ROWS 5 +#define BRICK_COLS 10 +#define BRICK_GAP 2 +#define GAME_AREA_TOP 50 +#define GAME_AREA_BOTTOM 310 +#define PADDLE_Y (GAME_AREA_BOTTOM - PADDLE_HEIGHT) +#define BALL_SPEED_INCREASE 0.1f + +#define STATE_MENU 0 +#define STATE_PLAYING 1 +#define STATE_GAME_OVER 3 + +#define COLOR_BACKGROUND Black +#define COLOR_PADDLE Blue +#define COLOR_BALL White +#define COLOR_BORDER White +#define COLOR_BRICK_COLORS \ + { Red, Orange, Yellow, Green, Purple } + +extern Ticker game_timer; + +extern int paddle_x; +extern float ball_x; +extern float ball_y; +extern float ball_dx; +extern float ball_dy; +extern int score; +extern int lives; +extern int level; +extern int game_state; +extern bool initialized; +extern bool ball_attached; +extern unsigned int brick_count; +extern bool bricks[BRICK_ROWS][BRICK_COLS]; +extern int brick_colors[BRICK_ROWS]; + +void game_timer_check(); +void init_game(); +void init_level(); +void draw_screen(); +void draw_bricks(); +void draw_paddle(); +void draw_ball(); +void draw_score(); +void draw_lives(); +void draw_level(); +void draw_borders(); +void move_paddle_left(); +void move_paddle_right(); +void launch_ball(); +void update_game(); +void check_collisions(); +bool check_brick_collision(int row, int col); +void handle_game_over(); +void show_menu(); +void show_game_over(); +bool check_level_complete(); +void next_level(); +void reset_game(); + +class BreakoutView : public View { + public: + BreakoutView(NavigationView& nav); + void on_show() override; + + std::string title() const override { return "Breakout"; } + + void focus() override { dummy.focus(); } + void paint(Painter& painter) override; + void frame_sync(); + bool on_encoder(const EncoderEvent event) override; + bool on_key(KeyEvent key) override; + + private: + bool initialized = false; + NavigationView& nav_; + + Button dummy{ + {screen_width, 0, 0, 0}, + ""}; + + MessageHandlerRegistration message_handler_frame_sync{ + Message::ID::DisplayFrameSync, + [this](const Message* const) { + this->frame_sync(); + }}; +}; + +} // namespace ui::external_app::breakout + +#endif /* __UI_BREAKOUT_H__ */ \ No newline at end of file diff --git a/firmware/application/external/cvs_spam/cvs_spam.cpp b/firmware/application/external/cvs_spam/cvs_spam.cpp index 3486d7192..862fe6b52 100644 --- a/firmware/application/external/cvs_spam/cvs_spam.cpp +++ b/firmware/application/external/cvs_spam/cvs_spam.cpp @@ -81,8 +81,6 @@ void CVSSpamView::start_tx(const uint32_t id) { return; } - const uint32_t sample_rate = 250000; - current_file = cvsfiles_dir / file_list[id].filename(); File capture_file; @@ -99,20 +97,13 @@ void CVSSpamView::start_tx(const uint32_t id) { return; } - auto metadata_path = get_metadata_path(current_file); - auto metadata = read_metadata_file(metadata_path); - if (!metadata) { - metadata = capture_metadata{transmitter_model.target_frequency(), sample_rate}; - } - - auto file_size = capture_file.size(); capture_file.close(); replay_thread.reset(); transmitter_model.disable(); ready_signal = false; - baseband::set_sample_rate(metadata->sample_rate, get_oversample_rate(metadata->sample_rate)); + baseband::set_sample_rate(SAMPLE_RATE, get_oversample_rate(SAMPLE_RATE)); auto reader = std::make_unique(); if (auto error = reader->open(current_file)) { @@ -120,10 +111,7 @@ void CVSSpamView::start_tx(const uint32_t id) { "Cannot read C16 data.\n" "Check file format/perms.\n" "Rate: " + - to_string_dec_uint(metadata->sample_rate) + - "\n" - "Size: " + - to_string_dec_uint(file_size) + + to_string_dec_uint(SAMPLE_RATE) + "\n" "Error: " + std::to_string(static_cast(error))); @@ -132,9 +120,9 @@ void CVSSpamView::start_tx(const uint32_t id) { progressbar.set_value(0); - transmitter_model.set_sampling_rate(get_actual_sample_rate(metadata->sample_rate)); - transmitter_model.set_baseband_bandwidth(metadata->sample_rate <= 500000 ? 1750000 : 2500000); - transmitter_model.set_target_frequency(metadata->center_frequency); + transmitter_model.set_sampling_rate(get_actual_sample_rate(SAMPLE_RATE)); + transmitter_model.set_baseband_bandwidth(SAMPLE_RATE <= 500000 ? 1750000 : 2500000); + transmitter_model.set_target_frequency(TARGET_FREQUENCY); transmitter_model.enable(); chThdSleepMilliseconds(100); @@ -164,7 +152,6 @@ void CVSSpamView::start_random_tx() { lfsr_v = lfsr_iterate(lfsr_v); size_t random_index = lfsr_v % file_list.size(); - const uint32_t sample_rate = 250000; current_file = cvsfiles_dir / file_list[random_index].filename(); File capture_file; @@ -174,19 +161,13 @@ void CVSSpamView::start_random_tx() { return; } - auto metadata_path = get_metadata_path(current_file); - auto metadata = read_metadata_file(metadata_path); - if (!metadata) { - metadata = capture_metadata{transmitter_model.target_frequency(), sample_rate}; - } - capture_file.close(); replay_thread.reset(); transmitter_model.disable(); ready_signal = false; - baseband::set_sample_rate(metadata->sample_rate, get_oversample_rate(metadata->sample_rate)); + baseband::set_sample_rate(SAMPLE_RATE, get_oversample_rate(SAMPLE_RATE)); auto reader = std::make_unique(); if (auto error = reader->open(current_file)) { @@ -196,9 +177,9 @@ void CVSSpamView::start_random_tx() { progressbar.set_value(0); - transmitter_model.set_sampling_rate(get_actual_sample_rate(metadata->sample_rate)); - transmitter_model.set_baseband_bandwidth(metadata->sample_rate <= 500000 ? 1750000 : 2500000); - transmitter_model.set_target_frequency(metadata->center_frequency); + transmitter_model.set_sampling_rate(get_actual_sample_rate(SAMPLE_RATE)); + transmitter_model.set_baseband_bandwidth(SAMPLE_RATE <= 500000 ? 1750000 : 2500000); + transmitter_model.set_target_frequency(TARGET_FREQUENCY); transmitter_model.enable(); chThdSleepMilliseconds(100); diff --git a/firmware/application/external/cvs_spam/cvs_spam.hpp b/firmware/application/external/cvs_spam/cvs_spam.hpp index 77320d4c7..07396df9b 100644 --- a/firmware/application/external/cvs_spam/cvs_spam.hpp +++ b/firmware/application/external/cvs_spam/cvs_spam.hpp @@ -16,6 +16,9 @@ using namespace portapack; namespace ui::external_app::cvs_spam { +constexpr uint32_t SAMPLE_RATE = 250000; +constexpr uint64_t TARGET_FREQUENCY = 433920000; + class CVSSpamView : public View { public: explicit CVSSpamView(NavigationView& nav); @@ -50,7 +53,7 @@ class CVSSpamView : public View { std::vector file_list{}; MenuView menu_view{ - {0, 0, 240, 180}, + {0, 0, screen_width, 180}, true}; Text text_empty{ @@ -81,7 +84,7 @@ class CVSSpamView : public View { LanguageHelper::currentMessages[LANG_STOP]}; ProgressBar progressbar{ - {0, 256, 240, 44}}; + {0, 256, screen_width, 44}}; MessageHandlerRegistration message_handler_fifo_signal{ Message::ID::RequestSignal, diff --git a/firmware/application/external/debug_pmem/main.cpp b/firmware/application/external/debug_pmem/main.cpp new file mode 100644 index 000000000..69bc458ee --- /dev/null +++ b/firmware/application/external/debug_pmem/main.cpp @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2023 Bernd Herzog + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui.hpp" +#include "ui_debug_pmem.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::debug_pmem { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::debug_pmem + +extern "C" { + +__attribute__((section(".external_app.app_debug_pmem.application_information"), used)) application_information_t _application_information_debug_pmem = { + /*.memory_location = */ (uint8_t*)0x00000000, + /*.externalAppEntry = */ ui::external_app::debug_pmem::initialize_app, + /*.header_version = */ CURRENT_HEADER_VERSION, + /*.app_version = */ VERSION_MD5, + + /*.app_name = */ "DebugPMem", + /*.bitmap_data = */ { + 0x54, + 0x15, + 0x54, + 0x15, + 0xFF, + 0x7F, + 0xFC, + 0x1F, + 0xFF, + 0x7F, + 0xCC, + 0x19, + 0xAF, + 0x7A, + 0x6C, + 0x1B, + 0xEF, + 0x7B, + 0xEC, + 0x1B, + 0xFF, + 0x7F, + 0xFC, + 0x1F, + 0xFF, + 0x7F, + 0x54, + 0x15, + 0x54, + 0x15, + 0x00, + 0x00, + }, + /*.icon_color = */ ui::Color::cyan().v, + /*.menu_location = */ app_location_t::DEBUG, + /*.desired_menu_position = */ -1, + + /*.m4_app_tag = portapack::spi_flash::image_tag_none */ {0, 0, 0, 0}, + /*.m4_app_offset = */ 0x00000000, // will be filled at compile time +}; +} diff --git a/firmware/application/external/debug_pmem/ui_debug_pmem.cpp b/firmware/application/external/debug_pmem/ui_debug_pmem.cpp new file mode 100644 index 000000000..8356569f2 --- /dev/null +++ b/firmware/application/external/debug_pmem/ui_debug_pmem.cpp @@ -0,0 +1,213 @@ +/* + * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * Copyright (C) 2018 Furrtek + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui_debug_pmem.hpp" + +namespace ui::external_app::debug_pmem { + +// Dump pmem, receiver and transmitter models internals in human readable format +bool DebugDumpView::debug_dump_func() { + std::string debug_dir = "DEBUG"; + std::filesystem::path filename{}; + File pmem_dump_file{}; + // create new dump file name and DEBUG directory + ensure_directory(debug_dir); + filename = next_filename_matching_pattern(debug_dir + "/DEBUG_DUMP_????.TXT"); + if (filename.empty()) { + dump_output.set("COULD NOT GET DUMP NAME !"); + dump_output.set_style(ui::Theme::getInstance()->fg_red); + return false; + } + // dump data fo filename + auto error = pmem_dump_file.create(filename); + if (error) { + dump_output.set("ERROR DUMPING " + filename.filename().string() + " !"); + dump_output.set_style(ui::Theme::getInstance()->fg_red); + return false; + } + pmem_dump_file.write_line("FW version: " VERSION_STRING); + pmem_dump_file.write_line("Ext APPS version req'd: 0x" + to_string_hex(VERSION_MD5)); + pmem_dump_file.write_line("GCC version: " + to_string_dec_int(__GNUC__) + "." + to_string_dec_int(__GNUC_MINOR__) + "." + to_string_dec_int(__GNUC_PATCHLEVEL__)); + + // firmware checksum + pmem_dump_file.write_line("Firmware calculated checksum: 0x" + to_string_hex(simple_checksum(FLASH_STARTING_ADDRESS, FLASH_ROM_SIZE), 8)); + + // write persistent memory + pmem_dump_file.write_line("\n[Persistent Memory]"); + + // full variables + pmem_dump_file.write_line("structure_version: 0x" + to_string_hex(get_data_structure_version(), 8)); + pmem_dump_file.write_line("target_frequency: " + to_string_dec_int(target_frequency())); + pmem_dump_file.write_line("correction_ppb: " + to_string_dec_int(correction_ppb())); + pmem_dump_file.write_line("modem_def_index: " + to_string_dec_uint(get_modem_def_index())); + pmem_dump_file.write_line("serial_format.data_bit: " + to_string_dec_uint(serial_format().data_bits)); + pmem_dump_file.write_line("serial_format.parity: " + to_string_dec_uint(serial_format().parity)); + pmem_dump_file.write_line("serial_format.stop_bits: " + to_string_dec_uint(serial_format().stop_bits)); + pmem_dump_file.write_line("serial_format.bit_order: " + to_string_dec_uint(serial_format().bit_order)); + pmem_dump_file.write_line("modem_bw: " + to_string_dec_int(modem_bw())); + pmem_dump_file.write_line("afsk_mark_freq: " + to_string_dec_int(afsk_mark_freq())); + pmem_dump_file.write_line("afsk_space_freq: " + to_string_dec_int(afsk_space_freq())); + pmem_dump_file.write_line("modem_baudrate: " + to_string_dec_int(modem_baudrate())); + pmem_dump_file.write_line("modem_repeat: " + to_string_dec_int(modem_repeat())); + pmem_dump_file.write_line("pocsag_last_address: " + to_string_dec_uint(pocsag_last_address())); + pmem_dump_file.write_line("pocsag_ignore_address: " + to_string_dec_uint(pocsag_ignore_address())); + pmem_dump_file.write_line("tone_mix: " + to_string_dec_uint(tone_mix())); + pmem_dump_file.write_line("hardware_config: " + to_string_dec_uint(config_cpld())); + pmem_dump_file.write_line("recon_config: 0x" + to_string_hex(get_recon_config(), 16)); + pmem_dump_file.write_line("recon_repeat_nb: " + to_string_dec_int(recon_repeat_nb())); + pmem_dump_file.write_line("recon_repeat_gain: " + to_string_dec_int(recon_repeat_gain())); + pmem_dump_file.write_line("recon_repeat_delay: " + to_string_dec_int(recon_repeat_delay())); + pmem_dump_file.write_line("converter: " + to_string_dec_int(config_converter())); + pmem_dump_file.write_line("updown_converter: " + to_string_dec_int(config_updown_converter())); + pmem_dump_file.write_line("updown_frequency_rx_correction: " + to_string_dec_int(config_freq_rx_correction_updown())); + pmem_dump_file.write_line("updown_frequency_tx_correction: " + to_string_dec_int(config_freq_tx_correction_updown())); + pmem_dump_file.write_line("lcd_normally_black: " + to_string_dec_uint(config_lcd_normally_black())); + pmem_dump_file.write_line("converter_frequency_offset: " + to_string_dec_int(config_converter_freq())); + pmem_dump_file.write_line("frequency_rx_correction: " + to_string_dec_uint(config_freq_rx_correction())); + pmem_dump_file.write_line("frequency_tx_correction: " + to_string_dec_uint(config_freq_tx_correction())); + pmem_dump_file.write_line("encoder_dial_sensitivity: " + to_string_dec_uint(encoder_dial_sensitivity())); + pmem_dump_file.write_line("encoder_rate_multiplier: " + to_string_dec_uint(encoder_rate_multiplier())); + pmem_dump_file.write_line("encoder_dial_direction: " + to_string_dec_uint(encoder_dial_direction())); // 0 = normal, 1 = reverse + pmem_dump_file.write_line("config_mode_storage: 0x" + to_string_hex(config_mode_storage_direct(), 8)); + pmem_dump_file.write_line("dst_config: 0x" + to_string_hex((uint32_t)config_dst().v, 8)); + pmem_dump_file.write_line("fake_brightness_level: " + to_string_dec_uint(fake_brightness_level())); + pmem_dump_file.write_line("menu_color: 0x" + to_string_hex(menu_color().v, 4)); + pmem_dump_file.write_line("touchscreen_threshold: " + to_string_dec_uint(touchscreen_threshold())); + + // ui_config bits + const auto backlight_timer = portapack::persistent_memory::config_backlight_timer(); + pmem_dump_file.write_line("ui_config clkout_freq: " + to_string_dec_uint(clkout_freq())); + pmem_dump_file.write_line("ui_config backlight_timer.timeout_enabled: " + to_string_dec_uint(backlight_timer.timeout_enabled())); + pmem_dump_file.write_line("ui_config backlight_timer.timeout_seconds: " + to_string_dec_uint(backlight_timer.timeout_seconds())); + pmem_dump_file.write_line("ui_config show_gui_return_icon: " + to_string_dec_uint(show_gui_return_icon())); + pmem_dump_file.write_line("ui_config load_app_settings: " + to_string_dec_uint(load_app_settings())); + pmem_dump_file.write_line("ui_config save_app_settings: " + to_string_dec_uint(save_app_settings())); + pmem_dump_file.write_line("ui_config disable_touchscreen: " + to_string_dec_uint(disable_touchscreen())); + pmem_dump_file.write_line("ui_config hide_clock: " + to_string_dec_uint(hide_clock())); + pmem_dump_file.write_line("ui_config clock_with_date: " + to_string_dec_uint(clock_with_date())); + pmem_dump_file.write_line("ui_config clkout_enabled: " + to_string_dec_uint(clkout_enabled())); + pmem_dump_file.write_line("ui_config apply_fake_brightness: " + to_string_dec_uint(apply_fake_brightness())); + pmem_dump_file.write_line("ui_config stealth_mode: " + to_string_dec_uint(stealth_mode())); + pmem_dump_file.write_line("ui_config config_login: " + to_string_dec_uint(config_login())); + pmem_dump_file.write_line("ui_config config_splash: " + to_string_dec_uint(config_splash())); + + // ui_config2 bits + pmem_dump_file.write_line("ui_config2 hide_speaker: " + to_string_dec_uint(ui_hide_speaker())); + pmem_dump_file.write_line("ui_config2 hide_converter: " + to_string_dec_uint(ui_hide_converter())); + pmem_dump_file.write_line("ui_config2 hide_stealth: " + to_string_dec_uint(ui_hide_stealth())); + pmem_dump_file.write_line("ui_config2 hide_camera: " + to_string_dec_uint(ui_hide_camera())); + pmem_dump_file.write_line("ui_config2 hide_sleep: " + to_string_dec_uint(ui_hide_sleep())); + pmem_dump_file.write_line("ui_config2 hide_bias_tee: " + to_string_dec_uint(ui_hide_bias_tee())); + pmem_dump_file.write_line("ui_config2 hide_clock: " + to_string_dec_uint(ui_hide_clock())); + pmem_dump_file.write_line("ui_config2 hide_sd_card: " + to_string_dec_uint(ui_hide_sd_card())); + pmem_dump_file.write_line("ui_config2 hide_mute: " + to_string_dec_uint(ui_hide_mute())); + pmem_dump_file.write_line("ui_config2 hide_fake_brightness: " + to_string_dec_uint(ui_hide_fake_brightness())); + pmem_dump_file.write_line("ui_config2 hide_battery_icon: " + to_string_dec_uint(ui_hide_battery_icon())); + pmem_dump_file.write_line("ui_config2 hide_numeric_battery: " + to_string_dec_uint(ui_hide_numeric_battery())); + pmem_dump_file.write_line("ui_config2 theme_id: " + to_string_dec_uint(ui_theme_id())); + pmem_dump_file.write_line("ui_config2 override_batt_calc: " + to_string_dec_uint(ui_override_batt_calc())); + pmem_dump_file.write_line("ui_config2 button_repeat_delay: " + to_string_dec_uint(ui_button_repeat_delay())); + pmem_dump_file.write_line("ui_config2 button_repeat_speed: " + to_string_dec_uint(ui_button_repeat_speed())); + pmem_dump_file.write_line("ui_config2 button_long_press_delay: " + to_string_dec_uint(ui_button_long_press_delay())); + pmem_dump_file.write_line("ui_config2 battery_charge_hint: " + to_string_dec_uint(ui_battery_charge_hint())); + + // misc_config bits + pmem_dump_file.write_line("misc_config config_audio_mute: " + to_string_dec_int(config_audio_mute())); + pmem_dump_file.write_line("misc_config config_speaker_disable: " + to_string_dec_int(config_speaker_disable())); + pmem_dump_file.write_line("misc_config config_disable_external_tcxo: " + to_string_dec_uint(config_disable_external_tcxo())); + pmem_dump_file.write_line("misc_config config_sdcard_high_speed_io: " + to_string_dec_uint(config_sdcard_high_speed_io())); + pmem_dump_file.write_line("misc_config config_disable_config_mode: " + to_string_dec_uint(config_disable_config_mode())); + pmem_dump_file.write_line("misc_config beep_on_packets: " + to_string_dec_int(beep_on_packets())); + + // receiver_model + pmem_dump_file.write_line("\n[Receiver Model]"); + pmem_dump_file.write_line("target_frequency: " + to_string_dec_uint(receiver_model.target_frequency())); + pmem_dump_file.write_line("frequency_step: " + to_string_dec_uint(receiver_model.frequency_step())); + pmem_dump_file.write_line("lna: " + to_string_dec_int(receiver_model.lna())); + pmem_dump_file.write_line("vga: " + to_string_dec_int(receiver_model.vga())); + pmem_dump_file.write_line("rf_amp: " + to_string_dec_int(receiver_model.rf_amp())); + pmem_dump_file.write_line("baseband_bandwidth: " + to_string_dec_uint(receiver_model.baseband_bandwidth())); + pmem_dump_file.write_line("sampling_rate: " + to_string_dec_uint(receiver_model.sampling_rate())); + switch (receiver_model.modulation()) { + case ReceiverModel::Mode::AMAudio: + pmem_dump_file.write_line("modulation: Mode::AMAudio"); + break; + case ReceiverModel::Mode::NarrowbandFMAudio: + pmem_dump_file.write_line("modulation: Mode::NarrowbandFMAudio"); + break; + case ReceiverModel::Mode::WidebandFMAudio: + pmem_dump_file.write_line("modulation: Mode::WidebandFMAudio"); + break; + case ReceiverModel::Mode::WFMAudioAMApt: + pmem_dump_file.write_line("modulation: Mode::WFMAudioAMApt"); + break; + case ReceiverModel::Mode::SpectrumAnalysis: + pmem_dump_file.write_line("modulation: Mode::SpectrumAnalysis"); + break; + case ReceiverModel::Mode::Capture: + pmem_dump_file.write_line("modulation: Mode::Capture"); + break; + case ReceiverModel::Mode::AMAudioFMApt: + pmem_dump_file.write_line("modulation: Mode::AMAudioFMApt"); + break; + default: + pmem_dump_file.write_line("modulation: !!unknown mode!!"); + break; + } + pmem_dump_file.write_line("headphone_volume.centibel: " + to_string_dec_int(receiver_model.headphone_volume().centibel())); + pmem_dump_file.write_line("normalized_headphone_volume: " + to_string_dec_uint(receiver_model.normalized_headphone_volume())); + pmem_dump_file.write_line("am_configuration: " + to_string_dec_uint(receiver_model.am_configuration())); + pmem_dump_file.write_line("nbfm_configuration: " + to_string_dec_uint(receiver_model.nbfm_configuration())); + pmem_dump_file.write_line("wfm_configuration: " + to_string_dec_uint(receiver_model.wfm_configuration())); + + // transmitter_model + pmem_dump_file.write_line("\n[Transmitter Model]"); + pmem_dump_file.write_line("target_frequency: " + to_string_dec_uint(transmitter_model.target_frequency())); + pmem_dump_file.write_line("rf_amp: " + to_string_dec_int(transmitter_model.rf_amp())); + pmem_dump_file.write_line("baseband_bandwidth: " + to_string_dec_uint(transmitter_model.baseband_bandwidth())); + pmem_dump_file.write_line("sampling_rate: " + to_string_dec_uint(transmitter_model.sampling_rate())); + pmem_dump_file.write_line("tx_gain: " + to_string_dec_int(transmitter_model.tx_gain())); + pmem_dump_file.write_line("channel_bandwidth: " + to_string_dec_uint(transmitter_model.channel_bandwidth())); + // on screen information + dump_output.set(filename.filename().string() + " DUMPED !"); + dump_output.set_style(ui::Theme::getInstance()->fg_green); + + return true; +} + +DebugDumpView::DebugDumpView(NavigationView& nav) + : nav_{nav} { + add_children({&dump_output, + &button_exit}); + + debug_dump_func(); + + button_exit.on_select = [this](Button&) { + nav_.pop(); + }; +} + +void DebugDumpView::focus() { + button_exit.focus(); +} + +} // namespace ui::external_app::debug_pmem diff --git a/firmware/application/external/debug_pmem/ui_debug_pmem.hpp b/firmware/application/external/debug_pmem/ui_debug_pmem.hpp new file mode 100644 index 000000000..f5ebedd97 --- /dev/null +++ b/firmware/application/external/debug_pmem/ui_debug_pmem.hpp @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * Copyright (C) 2018 Furrtek + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __UI_DEBUG_PMEM_APP_H__ +#define __UI_DEBUG_PMEM_APP_H__ + +#include "portapack_persistent_memory.hpp" +#include "ui_flash_utility.hpp" + +using namespace portapack; +using namespace portapack::persistent_memory; + +namespace ui::external_app::debug_pmem { + +class DebugDumpView : public View { + public: + DebugDumpView(NavigationView& nav); + + void focus() override; + + std::string title() const override { return "DebugPMem"; }; + bool debug_dump_func(); + + private: + NavigationView& nav_; + + Text dump_output{ + {0 * 8, 19 * 8, screen_width, 16}, + ""}; + + Button button_exit{ + {22 * 8, 34 * 8, 8 * 8, 32}, + "Exit"}; +}; + +} // namespace ui::external_app::debug_pmem + +#endif /*__UI_DEBUG_PMEM_APP_H__*/ diff --git a/firmware/application/external/detector_rx/main.cpp b/firmware/application/external/detector_rx/main.cpp new file mode 100644 index 000000000..2745f970e --- /dev/null +++ b/firmware/application/external/detector_rx/main.cpp @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2023 Bernd Herzog + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui.hpp" +#include "ui_detector_rx.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::detector_rx { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::detector_rx + +extern "C" { + +__attribute__((section(".external_app.app_detector_rx.application_information"), used)) application_information_t _application_information_detector_rx = { + /*.memory_location = */ (uint8_t*)0x00000000, + /*.externalAppEntry = */ ui::external_app::detector_rx::initialize_app, + /*.header_version = */ CURRENT_HEADER_VERSION, + /*.app_version = */ VERSION_MD5, + + /*.app_name = */ "Detector", + /*.bitmap_data = */ + { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x20, + 0x12, + 0x48, + 0x8A, + 0x51, + 0xCA, + 0x53, + 0xCA, + 0x53, + 0x8A, + 0x51, + 0x12, + 0x48, + 0x84, + 0x21, + 0xC0, + 0x03, + 0x40, + 0x02, + 0x60, + 0x06, + 0x20, + 0x04, + 0x30, + 0x0C, + 0xF0, + 0x0F}, + /*.icon_color = */ ui::Color::orange().v, + /*.menu_location = */ app_location_t::RX, + /*.desired_menu_position = */ -1, + + // this has to be the biggest baseband used by the app. SPEC + /*.m4_app_tag = portapack::spi_flash::image_tag_nfm */ {'P', 'W', 'F', 'M'}, + /*.m4_app_offset = */ 0x00000000, // will be filled at compile time +}; +} diff --git a/firmware/application/external/detector_rx/ui_detector_rx.cpp b/firmware/application/external/detector_rx/ui_detector_rx.cpp new file mode 100644 index 000000000..a1dd3b935 --- /dev/null +++ b/firmware/application/external/detector_rx/ui_detector_rx.cpp @@ -0,0 +1,177 @@ +/* + * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * Copyright (C) 2018 Furrtek + * Copyright (C) 2023 gullradriel, Nilorea Studio Inc. + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui_detector_rx.hpp" +#include "ui_fileman.hpp" +#include "ui_freqman.hpp" +#include "baseband_api.hpp" +#include "file.hpp" +#include "oversample.hpp" +#include "ui_font_fixed_8x16.hpp" + +using namespace portapack; +using namespace tonekey; +using portapack::memory::map::backup_ram; + +namespace ui::external_app::detector_rx { + +// Function to map the value from one range to another +int32_t DetectorRxView::map(int32_t value, int32_t fromLow, int32_t fromHigh, int32_t toLow, int32_t toHigh) { + return toLow + (value - fromLow) * (toHigh - toLow) / (fromHigh - fromLow); +} + +void DetectorRxView::focus() { + field_lna.focus(); +} + +DetectorRxView::~DetectorRxView() { + // reset performance counters request to default + shared_memory.request_m4_performance_counter = 0; + receiver_model.disable(); + audio::output::stop(); + baseband::shutdown(); +} + +void DetectorRxView::on_timer() { + freq_index++; + if (freq_mode == 0 && freq_index >= tetra_uplink_monitoring_frequencies_hz.size()) freq_index = 0; // TETRA UP + if (freq_mode == 1 && freq_index >= lora_monitoring_frequencies_hz.size()) freq_index = 0; // Lora + if (freq_mode == 2 && freq_index >= remotes_monitoring_frequencies_hz.size()) freq_index = 0; // Remotes + + if (freq_mode == 2) + freq_ = remotes_monitoring_frequencies_hz[freq_index]; + else if (freq_mode == 1) + freq_ = lora_monitoring_frequencies_hz[freq_index]; + else + freq_ = tetra_uplink_monitoring_frequencies_hz[freq_index]; + receiver_model.set_target_frequency(freq_); +} + +DetectorRxView::DetectorRxView(NavigationView& nav) + : nav_{nav} { + add_children({ + &labels, + &field_lna, + &field_vga, + &field_rf_amp, + &field_volume, + &text_frequency, + &freq_stats_rssi, + &freq_stats_db, + &text_beep_squelch, + &field_beep_squelch, + &rssi, + &rssi_graph, + &field_mode, + }); + + // activate vertical bar mode + rssi.set_vertical_rssi(true); + + freq_ = receiver_model.target_frequency(); + + field_beep_squelch.set_value(beep_squelch); + field_beep_squelch.on_change = [this](int32_t v) { + beep_squelch = v; + }; + + rssi_graph.set_nb_columns(256); + + change_mode(); + rssi.set_peak(true, 3000); + + // FILL STEP OPTIONS + freq_stats_rssi.set_style(Theme::getInstance()->bg_darkest); + freq_stats_db.set_style(Theme::getInstance()->bg_darkest); + + field_mode.on_change = [this](size_t, int32_t value) { + freq_mode = value; + freq_index = 0; + switch (value) { + case 1: // Lora + text_frequency.set(" 433, 868, 915 Mhz"); + break; + case 2: // Remotes + text_frequency.set(" 433, 315 Mhz"); + break; + default: + case 0: // TETRA UP + text_frequency.set(" 380-390 Mhz"); + break; + } + }; +} + +void DetectorRxView::on_statistics_update(const ChannelStatistics& statistics) { + static int16_t last_max_db = 0; + static uint8_t last_min_rssi = 0; + static uint8_t last_avg_rssi = 0; + static uint8_t last_max_rssi = 0; + + rssi_graph.add_values(rssi.get_min(), rssi.get_avg(), rssi.get_max(), statistics.max_db); + + // refresh db + if (last_max_db != statistics.max_db) { + last_max_db = statistics.max_db; + freq_stats_db.set("Power: " + to_string_dec_int(statistics.max_db) + " db"); + rssi.set_db(statistics.max_db); + } + // refresh rssi + if (last_min_rssi != rssi_graph.get_graph_min() || last_avg_rssi != rssi_graph.get_graph_avg() || last_max_rssi != rssi_graph.get_graph_max()) { + last_min_rssi = rssi_graph.get_graph_min(); + last_avg_rssi = rssi_graph.get_graph_avg(); + last_max_rssi = rssi_graph.get_graph_max(); + freq_stats_rssi.set("RSSI: " + to_string_dec_uint(last_min_rssi) + "/" + to_string_dec_uint(last_avg_rssi) + "/" + to_string_dec_uint(last_max_rssi)); + } + + if (statistics.max_db > beep_squelch) { + baseband::request_audio_beep(map(statistics.max_db, -100, 20, 400, 2600), 24000, 150); + } + +} /* on_statistic_updates */ + +size_t DetectorRxView::change_mode() { + audio::output::stop(); + receiver_model.disable(); + baseband::shutdown(); + + audio_sampling_rate = audio::Rate::Hz_24000; + baseband::run_image(portapack::spi_flash::image_tag_capture); + receiver_model.set_modulation(ReceiverModel::Mode::Capture); + + baseband::set_sample_rate(DETECTOR_BW, get_oversample_rate(DETECTOR_BW)); + // The radio needs to know the effective sampling rate. + auto actual_sampling_rate = get_actual_sample_rate(DETECTOR_BW); + receiver_model.set_sampling_rate(actual_sampling_rate); + receiver_model.set_baseband_bandwidth(filter_bandwidth_for_sampling_rate(actual_sampling_rate)); + + audio::set_rate(audio_sampling_rate); + audio::output::start(); + receiver_model.set_headphone_volume(receiver_model.headphone_volume()); // WM8731 hack. + + receiver_model.enable(); + + return 0; +} + +} // namespace ui::external_app::detector_rx diff --git a/firmware/application/external/detector_rx/ui_detector_rx.hpp b/firmware/application/external/detector_rx/ui_detector_rx.hpp new file mode 100644 index 000000000..4814f297f --- /dev/null +++ b/firmware/application/external/detector_rx/ui_detector_rx.hpp @@ -0,0 +1,201 @@ +/* + * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * Copyright (C) 2018 Furrtek + * Copyright (C) 2023 gullradriel, Nilorea Studio Inc. + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef _UI_DETECTOR_RX +#define _UI_DETECTOR_RX + +#include "analog_audio_app.hpp" +#include "app_settings.hpp" +#include "audio.hpp" +#include "baseband_api.hpp" +#include "file.hpp" +#include "freqman_db.hpp" +#include "portapack_persistent_memory.hpp" +#include "radio_state.hpp" +#include "receiver_model.hpp" +#include "string_format.hpp" +#include "ui.hpp" +#include "ui_mictx.hpp" +#include "ui_receiver.hpp" +#include "ui_spectrum.hpp" + +namespace ui::external_app::detector_rx { + +#define DETECTOR_BW 750000 + +class DetectorRxView : public View { + public: + DetectorRxView(NavigationView& nav); + ~DetectorRxView(); + + void focus() override; + + std::string title() const override { return "Detector RX"; }; + + private: + NavigationView& nav_; + + RxRadioState radio_state_{}; + + int32_t map(int32_t value, int32_t fromLow, int32_t fromHigh, int32_t toLow, int32_t toHigh); + size_t change_mode(); + void on_statistics_update(const ChannelStatistics& statistics); + void set_display_freq(int64_t freq); + void on_timer(); + + uint8_t freq_index = 0; + rf::Frequency freq_ = {433920000}; + int32_t beep_squelch = 0; + audio::Rate audio_sampling_rate = audio::Rate::Hz_48000; + uint8_t freq_mode = 0; + + app_settings::SettingsManager settings_{ + "rx_detector", + app_settings::Mode::RX, + { + {"beep_squelch"sv, &beep_squelch}, + }}; + + Labels labels{ + {{UI_POS_X(0), UI_POS_Y(0)}, "LNA: VGA: AMP: VOL: ", Theme::getInstance()->fg_light->foreground}}; + + LNAGainField field_lna{ + {UI_POS_X(4), UI_POS_Y(0)}}; + + VGAGainField field_vga{ + {UI_POS_X(11), UI_POS_Y(0)}}; + + RFAmpField field_rf_amp{ + {UI_POS_X(18), UI_POS_Y(0)}}; + + AudioVolumeField field_volume{ + {UI_POS_X(24), UI_POS_Y(0)}}; + + OptionsField field_mode{ + {UI_POS_X(0), UI_POS_Y(1)}, + 9, + { + {"TETRA UP", 0}, + {"Lora", 1}, + {"Remotes", 2}, + }}; + + Text text_frequency{ + {UI_POS_X_RIGHT(20), UI_POS_Y(1), UI_POS_WIDTH(20), UI_POS_DEFAULT_HEIGHT}, + ""}; + + Text text_beep_squelch{ + {UI_POS_X_RIGHT(9), UI_POS_Y(2), UI_POS_WIDTH(4), UI_POS_DEFAULT_HEIGHT}, + "Bip>"}; + + NumberField field_beep_squelch{ + {UI_POS_X_RIGHT(5), UI_POS_Y(2)}, + 4, + {-100, 20}, + 1, + ' ', + }; + + // RSSI: XX/XX/XXX + Text freq_stats_rssi{ + {UI_POS_X(0), UI_POS_Y(2), UI_POS_WIDTH(15), UI_POS_DEFAULT_HEIGHT}, + }; + + // Power: -XXX db + Text freq_stats_db{ + {UI_POS_X(0), UI_POS_Y(3), UI_POS_WIDTH(15), UI_POS_DEFAULT_HEIGHT}, + }; + + RSSIGraph rssi_graph{ + {UI_POS_X(0), UI_POS_Y(5), UI_POS_WIDTH_REMAINING(5), UI_POS_HEIGHT_REMAINING(6)}, + }; + + RSSI rssi{ + {UI_POS_X_RIGHT(5), UI_POS_Y(5), UI_POS_WIDTH(5), UI_POS_HEIGHT_REMAINING(6)}, + }; + + MessageHandlerRegistration message_handler_stats{ + Message::ID::ChannelStatistics, + [this](const Message* const p) { + this->on_statistics_update(static_cast(p)->statistics); + }}; + + MessageHandlerRegistration message_handler_frame_sync{ + Message::ID::DisplayFrameSync, + [this](const Message* const) { + this->on_timer(); + }}; + + const std::vector remotes_monitoring_frequencies_hz = { + // Around 315 MHz (common for older remotes, key fobs in some regions) + // Window centered on 315 MHz, covers 314.625 - 315.375 MHz + 315000000, + + // Around 433.92 MHz (very common for remotes, sensors, key fobs globally) + // Window centered on 433.92 MHz, covers 433.545 - 434.295 MHz + 433920000, + }; + const std::vector lora_monitoring_frequencies_hz = { + // EU433 Band (Europe, typically 433.05 MHz to 434.79 MHz) + // Scanning the approximate range 433.0 MHz to 434.8 MHz with 750kHz steps + 433375000, // Covers 433.000 - 433.750 MHz + 434125000, // Covers 433.750 - 434.500 MHz (includes 433.92 MHz) + 434875000, // Covers 434.500 - 435.250 MHz (covers up to 434.79 MHz) + + // EU868 Band (Europe, typically 863 MHz to 870 MHz, specific channels around 868 MHz) + // Targeting common LoRaWAN channel groups (approx 867.0 - 868.6 MHz) with 750kHz steps + 867375000, // Covers 867.000 - 867.750 MHz + 868125000, // Covers 867.750 - 868.500 MHz + 868875000, // Covers 868.500 - 869.250 MHz (covers up to 868.6 MHz) + + // US915 Band (North America, typically 902 MHz to 928 MHz, specific channels around 915 MHz) + // Providing a few sample windows around the 915 MHz area with 750kHz steps. + // This band is wide; a full scan would require many more frequencies. + 914250000, // Covers 913.875 - 914.625 MHz + 915000000, // Covers 914.625 - 915.375 MHz (Centered on 915 MHz) + 915750000, // Covers 915.375 - 916.125 MHz + }; + const std::vector tetra_uplink_monitoring_frequencies_hz = { + // Band starts at 380,000,000 Hz, ends at 390,000,000 Hz. + // First center: 380,000,000 + 375,000 = 380,375,000 Hz + // Last center: 380,375,000 + 13 * 750,000 = 390,125,000 Hz (14 frequencies total for this band) + 380375000, // Covers 380.000 - 380.750 MHz + 381125000, // Covers 380.750 - 381.500 MHz + 381875000, // Covers 381.500 - 382.250 MHz + 382625000, // Covers 382.250 - 383.000 MHz + 383375000, // Covers 383.000 - 383.750 MHz + 384125000, // Covers 383.750 - 384.500 MHz + 384875000, // Covers 384.500 - 385.250 MHz + 385625000, // Covers 385.250 - 386.000 MHz + 386375000, // Covers 386.000 - 386.750 MHz + 387125000, // Covers 386.750 - 387.500 MHz + 387875000, // Covers 387.500 - 388.250 MHz + 388625000, // Covers 388.250 - 389.000 MHz + 389375000, // Covers 389.000 - 389.750 MHz + 390125000, // Covers 389.750 - 390.500 MHz + }; +}; + +} // namespace ui::external_app::detector_rx + +#endif diff --git a/firmware/application/external/dinogame/main.cpp b/firmware/application/external/dinogame/main.cpp new file mode 100644 index 000000000..66126b7d4 --- /dev/null +++ b/firmware/application/external/dinogame/main.cpp @@ -0,0 +1,58 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + * + * Chrome Dino Game for Portapack Mayhem + * Based on the original DinoGame by various contributors + */ + +#include "ui.hpp" +#include "ui_dinogame.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::dinogame { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::dinogame + +extern "C" { + +__attribute__((section(".external_app.app_dinogame.application_information"), used)) application_information_t _application_information_dinogame = { + (uint8_t*)0x00000000, + ui::external_app::dinogame::initialize_app, + CURRENT_HEADER_VERSION, + VERSION_MD5, + + "Dino Game", + { + // Cactus icon 16x16 + 0x00, 0x00, // ................ + 0x80, 0x01, // .......##....... + 0x80, 0x01, // .......##....... + 0x80, 0x01, // .......##....... + 0x98, 0x19, // ...##..##..##... + 0x98, 0x19, // ...##..##..##... + 0x98, 0x19, // ...##..##..##... + 0x98, 0x19, // ...##..##..##... + 0xF8, 0x1F, // ...##########... + 0xF0, 0x0F, // ....########.... + 0x80, 0x01, // .......##....... + 0x80, 0x01, // .......##....... + 0x80, 0x01, // .......##....... + 0x80, 0x01, // .......##....... + 0x80, 0x01, // .......##....... + 0x00, 0x00, // ................ + }, + ui::Color::green().v, + app_location_t::GAMES, + -1, + + {0, 0, 0, 0}, + 0x00000000, +}; +} \ No newline at end of file diff --git a/firmware/application/external/dinogame/sprites/dino.h b/firmware/application/external/dinogame/sprites/dino.h new file mode 100644 index 000000000..d9cb148c0 --- /dev/null +++ b/firmware/application/external/dinogame/sprites/dino.h @@ -0,0 +1,447 @@ +/* + standing - 34x36 + ducking - 46x24 +*/ +const uint16_t dino_default[] PROGMEM = { + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0030 (48) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0040 (64) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0050 (80) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0060 (96) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0070 (112) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0080 (128) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0090 (144) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, // 0x00A0 (160) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00B0 (176) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x00C0 (192) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00D0 (208) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x00E0 (224) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00F0 (240) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0100 (256) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, // 0x0110 (272) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0120 (288) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0130 (304) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0140 (320) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0150 (336) + 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0160 (352) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0170 (368) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0180 (384) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0190 (400) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01A0 (416) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01B0 (432) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01C0 (448) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01D0 (464) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, // 0x01E0 (480) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01F0 (496) + 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0200 (512) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0210 (528) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0220 (544) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0230 (560) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0240 (576) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0250 (592) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0260 (608) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x0270 (624) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, // 0x0280 (640) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0290 (656) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02A0 (672) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x02B0 (688) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, // 0x02C0 (704) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x02D0 (720) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x02E0 (736) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x02F0 (752) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0300 (768) + 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0310 (784) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0320 (800) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0330 (816) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0340 (832) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0350 (848) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0360 (864) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0370 (880) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0380 (896) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0390 (912) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x03A0 (928) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03B0 (944) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03D0 (976) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, // 0x0410 (1040) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0420 (1056) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0430 (1072) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0440 (1088) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0450 (1104) + 0xFFFF, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0460 (1120) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, // 0x0470 (1136) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0480 (1152) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x0490 (1168) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04A0 (1184) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04B0 (1200) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04C0 (1216) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}; + +const uint16_t dino_leftstep[] PROGMEM = { + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0030 (48) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0040 (64) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0050 (80) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0060 (96) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0070 (112) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0080 (128) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0090 (144) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, // 0x00A0 (160) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00B0 (176) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x00C0 (192) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00D0 (208) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x00E0 (224) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00F0 (240) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0100 (256) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, // 0x0110 (272) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0120 (288) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0130 (304) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0140 (320) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0150 (336) + 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0160 (352) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0170 (368) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0180 (384) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0190 (400) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01A0 (416) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01B0 (432) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01C0 (448) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01D0 (464) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, // 0x01E0 (480) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01F0 (496) + 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0200 (512) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0210 (528) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0220 (544) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0230 (560) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0240 (576) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0250 (592) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0260 (608) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x0270 (624) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, // 0x0280 (640) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0290 (656) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02A0 (672) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x02B0 (688) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, // 0x02C0 (704) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x02D0 (720) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x02E0 (736) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x02F0 (752) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0300 (768) + 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0310 (784) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0320 (800) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0330 (816) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0340 (832) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0350 (848) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0360 (864) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0370 (880) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0380 (896) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0390 (912) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x03A0 (928) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03B0 (944) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03D0 (976) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, // 0x0410 (1040) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0420 (1056) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0430 (1072) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0440 (1088) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0450 (1104) + 0xFFFF, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0460 (1120) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0470 (1136) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0480 (1152) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0490 (1168) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04A0 (1184) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04B0 (1200) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04C0 (1216) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}; + +const uint16_t dino_rightstep[] PROGMEM = { + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0030 (48) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0040 (64) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0050 (80) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0060 (96) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0070 (112) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0080 (128) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0090 (144) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, // 0x00A0 (160) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00B0 (176) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x00C0 (192) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00D0 (208) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x00E0 (224) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00F0 (240) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0100 (256) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, // 0x0110 (272) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0120 (288) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0130 (304) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0140 (320) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0150 (336) + 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0160 (352) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0170 (368) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0180 (384) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0190 (400) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01A0 (416) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01B0 (432) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01C0 (448) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01D0 (464) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, // 0x01E0 (480) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01F0 (496) + 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0200 (512) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0210 (528) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0220 (544) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0230 (560) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0240 (576) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0250 (592) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0260 (608) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x0270 (624) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, // 0x0280 (640) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0290 (656) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02A0 (672) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x02B0 (688) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, // 0x02C0 (704) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x02D0 (720) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x02E0 (736) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x02F0 (752) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0300 (768) + 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0310 (784) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0320 (800) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0330 (816) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0340 (832) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0350 (848) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0360 (864) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0370 (880) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0380 (896) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0390 (912) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x03A0 (928) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03B0 (944) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03D0 (976) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, // 0x0410 (1040) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0420 (1056) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0430 (1072) + 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0440 (1088) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0450 (1104) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0460 (1120) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, // 0x0470 (1136) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0480 (1152) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x0490 (1168) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04A0 (1184) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04B0 (1200) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04C0 (1216) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}; + +const uint16_t dino_ducking_leftstep[] PROGMEM = { + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, // 0x0030 (48) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0050 (80) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, // 0x0060 (96) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0070 (112) + 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0080 (128) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0090 (144) + 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x00A0 (160) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x00B0 (176) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x00C0 (192) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x00D0 (208) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x00E0 (224) + 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x00F0 (240) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0100 (256) + 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, // 0x0110 (272) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0120 (288) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0130 (304) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, // 0x0140 (320) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0150 (336) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0160 (352) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0170 (368) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0180 (384) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0190 (400) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01A0 (416) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01B0 (432) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01C0 (448) + 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01D0 (464) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01E0 (480) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01F0 (496) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0200 (512) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0210 (528) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0220 (544) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0230 (560) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0240 (576) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0250 (592) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0260 (608) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0270 (624) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0280 (640) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x0290 (656) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02A0 (672) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, 0xFFFF, // 0x02B0 (688) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02C0 (704) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02D0 (720) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, // 0x02E0 (736) + 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02F0 (752) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0300 (768) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, // 0x0310 (784) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0320 (800) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0330 (816) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0340 (832) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0350 (848) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0360 (864) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0370 (880) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0390 (912) + 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03A0 (928) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03B0 (944) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x03C0 (960) + 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03D0 (976) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}; + +const uint16_t dino_ducking_rightstep[] PROGMEM = { + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, // 0x0030 (48) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0050 (80) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, // 0x0060 (96) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0070 (112) + 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0080 (128) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0090 (144) + 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x00A0 (160) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x00B0 (176) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x00C0 (192) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x00D0 (208) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x00E0 (224) + 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x00F0 (240) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0100 (256) + 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, // 0x0110 (272) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0120 (288) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0130 (304) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, // 0x0140 (320) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0150 (336) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0160 (352) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0170 (368) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0180 (384) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0190 (400) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01A0 (416) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01B0 (432) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01C0 (448) + 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01D0 (464) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01E0 (480) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01F0 (496) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0200 (512) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0210 (528) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0220 (544) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0230 (560) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0240 (576) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0250 (592) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0260 (608) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0270 (624) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0280 (640) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x0290 (656) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02A0 (672) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, // 0x02B0 (688) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02C0 (704) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02D0 (720) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, // 0x02E0 (736) + 0xFFFF, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02F0 (752) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0300 (768) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, // 0x0310 (784) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0320 (800) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0330 (816) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, // 0x0340 (832) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0350 (848) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0360 (864) + 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0370 (880) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, // 0x0390 (912) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03A0 (928) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03B0 (944) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03D0 (976) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}; + +const uint16_t dino_gameover[] PROGMEM = { + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0030 (48) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0040 (64) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0050 (80) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0060 (96) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0070 (112) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x0080 (128) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0090 (144) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0x528A, 0xFFFF, 0x528A, // 0x00A0 (160) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00B0 (176) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, // 0x00C0 (192) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00D0 (208) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x00E0 (224) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00F0 (240) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0100 (256) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, // 0x0110 (272) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0120 (288) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0130 (304) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0140 (320) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0150 (336) + 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0160 (352) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0170 (368) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0180 (384) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0190 (400) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01A0 (416) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01B0 (432) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01C0 (448) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01D0 (464) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, // 0x01E0 (480) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01F0 (496) + 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0200 (512) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0210 (528) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0220 (544) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0230 (560) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0240 (576) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0250 (592) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0260 (608) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x0270 (624) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, // 0x0280 (640) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0290 (656) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02A0 (672) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x02B0 (688) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, // 0x02C0 (704) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x02D0 (720) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x02E0 (736) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x02F0 (752) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0300 (768) + 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0310 (784) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0320 (800) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0330 (816) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0340 (832) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0350 (848) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0360 (864) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0370 (880) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0380 (896) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0390 (912) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x03A0 (928) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03B0 (944) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03D0 (976) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, // 0x0410 (1040) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0420 (1056) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0430 (1072) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0440 (1088) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0450 (1104) + 0xFFFF, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0460 (1120) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, // 0x0470 (1136) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0480 (1152) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x0490 (1168) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04A0 (1184) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04B0 (1200) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04C0 (1216) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}; \ No newline at end of file diff --git a/firmware/application/external/dinogame/sprites/pterodactyl.h b/firmware/application/external/dinogame/sprites/pterodactyl.h new file mode 100644 index 000000000..39f0485f4 --- /dev/null +++ b/firmware/application/external/dinogame/sprites/pterodactyl.h @@ -0,0 +1,121 @@ +// 34x27 + +const uint16_t pterodactyl_upflop[] PROGMEM = { + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0xFFFF, // 0x0010 (16) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0030 (48) + 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0050 (80) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0060 (96) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0070 (112) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, // 0x0090 (144) + 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00A0 (160) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, // 0x00B0 (176) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x00D0 (208) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, // 0x00E0 (224) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00F0 (240) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0100 (256) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0110 (272) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x0120 (288) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0130 (304) + 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0140 (320) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0150 (336) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0160 (352) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0170 (368) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0180 (384) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, // 0x0190 (400) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01A0 (416) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01B0 (432) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01C0 (448) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01D0 (464) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01E0 (480) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01F0 (496) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0200 (512) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0210 (528) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, // 0x0220 (544) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x0230 (560) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0240 (576) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0250 (592) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0260 (608) + 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0270 (624) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0280 (640) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0290 (656) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02A0 (672) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02B0 (688) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02C0 (704) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02D0 (720) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02E0 (736) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02F0 (752) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0300 (768) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0310 (784) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0320 (800) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0330 (816) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0340 (832) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0350 (848) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0360 (864) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0370 (880) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0390 (912) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}; + +const uint16_t pterodactyl_downflop[] PROGMEM = { + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0030 (48) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0050 (80) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0060 (96) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0070 (112) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, // 0x0090 (144) + 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00A0 (160) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, // 0x00B0 (176) + 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x00D0 (208) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00E0 (224) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00F0 (240) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0100 (256) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0110 (272) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0120 (288) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0130 (304) + 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0140 (320) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0150 (336) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0160 (352) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0170 (368) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0180 (384) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, // 0x0190 (400) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01A0 (416) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01B0 (432) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01C0 (448) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01D0 (464) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01E0 (480) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x01F0 (496) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0200 (512) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0210 (528) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, // 0x0220 (544) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x0230 (560) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0240 (576) + 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0250 (592) + 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0260 (608) + 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0270 (624) + 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, // 0x0280 (640) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0290 (656) + 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02A0 (672) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02B0 (688) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02C0 (704) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02D0 (720) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02E0 (736) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02F0 (752) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, // 0x0300 (768) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0310 (784) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, 0xFFFF, 0xFFFF, // 0x0320 (800) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0330 (816) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, 0x528A, 0x528A, // 0x0340 (832) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0350 (848) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x528A, // 0x0360 (864) + 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0370 (880) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) + 0xFFFF, 0x528A, 0x528A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0390 (912) + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}; \ No newline at end of file diff --git a/firmware/application/external/dinogame/ui_dinogame.cpp b/firmware/application/external/dinogame/ui_dinogame.cpp new file mode 100644 index 000000000..f9c456637 --- /dev/null +++ b/firmware/application/external/dinogame/ui_dinogame.cpp @@ -0,0 +1,808 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +/* + * Chrome Dino Game for Portapack Mayhem + * Based on the original DinoGame by various contributors + */ + +#include "ui_dinogame.hpp" + +namespace ui::external_app::dinogame { + +#define PROGMEM +#include "sprites/dino.h" +#include "sprites/pterodactyl.h" + +#undef PROGMEM + +// Global variables +Ticker game_timer; +Painter painter; +static Callback game_update_callback = nullptr; +static uint32_t game_update_timeout = 0; +static uint32_t game_update_counter = 0; +static DinoGameView* current_instance = nullptr; + +const Color pp_colors[] = { + Color::white(), + Color::blue(), + Color::yellow(), + Color::purple(), + Color::green(), + Color::red(), + Color::magenta(), + Color::orange(), + Color::black(), +}; + +// Drawing functions +void cls() { + painter.fill_rectangle({0, 0, portapack::display.width(), portapack::display.height()}, Color::black()); +} + +void fillrect(int x1, int y1, int x2, int y2, int color) { + painter.fill_rectangle({x1, y1, x2 - x1, y2 - y1}, pp_colors[color]); +} + +void rect(int x1, int y1, int x2, int y2, int color) { + painter.draw_rectangle({x1, y1, x2 - x1, y2 - y1}, pp_colors[color]); +} + +// Timer implementation +void check_game_timer() { + if (game_update_callback) { + if (++game_update_counter >= game_update_timeout) { + game_update_counter = 0; + game_update_callback(); + } + } +} + +void Ticker::attach(Callback func, double delay_sec) { + game_update_callback = func; + game_update_timeout = delay_sec * 60; +} + +void Ticker::detach() { + game_update_callback = nullptr; +} + +// String helper +std::string DinoGameView::score_to_string(uint32_t score) { + std::string score_s = std::to_string(score); + if (score_s.length() < 5) { + std::string temp = ""; + for (uint8_t i = 0; i < 5 - score_s.length(); ++i) temp += "0"; + temp += score_s; + score_s = temp; + } + return score_s; +} + +// Game timer callback +void game_timer_check() { + if (current_instance) { + if (current_instance->game_state == GameState::PLAYING) { + current_instance->game_loop(); + } else if (current_instance->game_state == GameState::MENU) { + current_instance->show_menu(); + } + } +} + +DinoGameView::DinoGameView(NavigationView& nav) + : nav_{nav}, bird_info{}, game_timer{} { + add_children({&dummy, &button_difficulty}); + current_instance = this; + game_timer.attach(&game_timer_check, 1.0 / 60.0); + + button_difficulty.on_select = [this](Button&) { + easy_mode = !easy_mode; + button_difficulty.set_text(easy_mode ? "Mode: EASY" : "Mode: HARD"); + }; +} + +void DinoGameView::on_show() { +} + +void DinoGameView::paint(Painter& painter) { + (void)painter; + + if (!initialized) { + initialized = true; + std::srand(LPC_RTC->CTIME0); + init_game(); + } +} + +void DinoGameView::frame_sync() { + check_game_timer(); + set_dirty(); +} + +void DinoGameView::init_game() { + game_state = GameState::MENU; + menu_initialized = false; + blink_state = true; + blink_counter = 0; + new_game(); +} + +void DinoGameView::new_game() { + steps = 0; + score = 0; + collided = false; + ducking = false; + duck_timer = 0; + displayedGameOver = false; + bird_info.inGame = false; + bird_info.x_offset = 320; + bird_info.y_offset = 0; + bird_info.y_velocity = 0; + jumping = false; + falling = false; + jumpHeight = 0; + last_dino_y = DINO_Y; + last_bird_x = -1; + last_bird_y = -1; + last_ducking = false; + last_runstate = false; + ground_offset = 0; + speed_modifier = 0; + runstate = false; + score_drawn = false; + last_score = 999999; + obstacle_spawn_timer = 100; // Initial delay before first obstacle + + // Initialize obstacles + for (int i = 0; i < MAX_OBSTACLES; i++) { + obstacles[i].active = false; + obstacles[i].x = -100; + obstacles[i].last_x = -100; + } + + cls(); +} + +void DinoGameView::show_menu() { + if (!menu_initialized) { + cls(); + + auto style = *ui::Theme::getInstance()->fg_medium; + auto style_title = *ui::Theme::getInstance()->fg_light; + + // Draw title + painter.draw_string({80, 60}, style_title, "DINO GAME"); + + // Draw instructions + painter.draw_string({45, 130}, style, "SELECT: Jump/Start"); + painter.draw_string({65, 150}, style, "DOWN: Duck"); + painter.draw_string({50, 170}, style, "Avoid obstacles!"); + + // Draw high score + draw_high_score(); + + menu_initialized = true; + } + + // Show difficulty button + button_difficulty.hidden(false); + + // Animate the menu dino + bool menu_run_frame = (blink_counter / 15) % 2; + + // Clear previous dino position + fillrect(103, 90, 103 + DINO_WIDTH, 90 + DINO_HEIGHT, Black); + + // Draw animated dino + draw_dino_at(103, 90, false, menu_run_frame); + + // Blinking start prompt + auto style_prompt = *ui::Theme::getInstance()->fg_light; + if (++blink_counter >= 30) { + blink_counter = 0; + blink_state = !blink_state; + + painter.fill_rectangle({55, 258, 130, 20}, Color::black()); + if (blink_state) { + painter.draw_string({55, 260}, style_prompt, "* PRESS SELECT *"); + } + } +} + +void DinoGameView::show_game_over() { + if (!displayedGameOver) { + displayedGameOver = true; + + // Clear the last normal dino position + if (last_ducking) { + fillrect(DINO_X, last_dino_y, DINO_X + DINO_DUCK_WIDTH, last_dino_y + DINO_DUCK_HEIGHT, Black); + } else { + fillrect(DINO_X, last_dino_y, DINO_X + DINO_WIDTH, last_dino_y + DINO_HEIGHT, Black); + } + + // Draw the game over dino sprite + draw_dino_sprite(DINO_X, DINO_Y, dino_gameover); + + auto style = *ui::Theme::getInstance()->fg_light; + auto style_score = *ui::Theme::getInstance()->fg_medium; + + // Game over text + painter.draw_string({85, 70}, style, "GAME OVER"); + + // Show final score + std::string score_text = "SCORE: " + score_to_string(score); + int score_x = (240 - score_text.length() * 8) / 2; + painter.draw_string({score_x, 90}, style_score, score_text); + + painter.draw_string({65, 110}, style, "SELECT TO RETRY"); + + // Update high score + if (score > highScore) { + highScore = score; + painter.draw_string({55, 130}, style, "NEW HIGH SCORE!"); + } + } +} + +void DinoGameView::game_loop() { + button_difficulty.hidden(true); + + if (collided && game_state == GameState::PLAYING) { + game_state = GameState::GAME_OVER; + show_game_over(); + return; + } + + // Update ground animation + ground_offset = (ground_offset + GAME_SPEED_BASE + speed_modifier) % 20; + + // Clear only the game area (not the whole screen to reduce flicker) + draw_ground(); + + // Update and draw obstacles + update_obstacles(); + + // Manage bird + manage_bird(); + + // Handle jumping + if (jumping) { + if (!falling) jumpHeight += JUMP_SPEED + speed_modifier; + if (jumpHeight > JUMP_MAX_HEIGHT && !falling) falling = true; + if (falling) jumpHeight -= JUMP_SPEED + speed_modifier; + if (jumpHeight < 0) { + falling = false; + jumping = false; + jumpHeight = 0; + } + } + + // Handle auto-stand from duck + if (ducking && duck_timer > 0) { + duck_timer--; + if (duck_timer == 0) { + stand(); + } + } + + // Update run animation + if (get_steps() % (10 - speed_modifier) == 0) runstate = !runstate; + + // Draw dino with minimal redraw + int current_dino_y = jumping ? (DINO_Y - jumpHeight) : (ducking ? DINO_DUCK_Y : DINO_Y); + + // Clear old dino position more precisely + if (current_dino_y != last_dino_y || runstate != last_runstate || ducking != last_ducking) { + // Clear based on last state + if (last_ducking) { + fillrect(DINO_X, last_dino_y, DINO_X + DINO_DUCK_WIDTH, last_dino_y + DINO_DUCK_HEIGHT, Black); + } else { + fillrect(DINO_X, last_dino_y, DINO_X + DINO_WIDTH, last_dino_y + DINO_HEIGHT, Black); + } + } + + // Draw dino at new position + if (jumping) { + draw_dino_sprite(DINO_X, current_dino_y, dino_default); + } else if (ducking) { + if (runstate) + draw_dino_sprite(DINO_X, current_dino_y, dino_ducking_leftstep); + else + draw_dino_sprite(DINO_X, current_dino_y, dino_ducking_rightstep); + } else { + if (runstate) + draw_dino_sprite(DINO_X, current_dino_y, dino_leftstep); + else + draw_dino_sprite(DINO_X, current_dino_y, dino_rightstep); + } + + // Update last state + last_dino_y = current_dino_y; + last_ducking = ducking; + last_runstate = runstate; + + // Check collisions + check_collision(); + + // Update score + score = get_steps() / 10; + if (score % 100 == 0 && score > 0 && get_steps() % 1000 == 0) { + if (speed_modifier < 5) speed_modifier++; + } + + step(); + draw_current_score(); + draw_high_score(); +} + +void DinoGameView::draw_ground() { + int ground_y = GAME_AREA_TOP + GAME_AREA_HEIGHT - GROUND_HEIGHT; + + // Clear ground area + fillrect(0, ground_y, 320, ground_y + GROUND_HEIGHT, Black); + + // Draw ground line + painter.draw_hline({0, ground_y}, 320, Color::white()); + painter.draw_hline({0, ground_y + 1}, 320, Color::dark_grey()); + + // Draw ground texture + for (int x = -ground_offset; x < 320; x += 20) { + painter.draw_hline({x, ground_y + 3}, 10, Color::dark_grey()); + painter.draw_hline({x + 5, ground_y + 5}, 5, Color::dark_grey()); + } +} + +void DinoGameView::update_obstacles() { + // Move obstacles + for (int i = 0; i < MAX_OBSTACLES; i++) { + if (obstacles[i].active) { + // Clear old position + if (obstacles[i].last_x != obstacles[i].x && obstacles[i].last_x < 320) { + clear_obstacle_area(obstacles[i].last_x, obstacles[i].width + 10, obstacles[i].height + 10); + } + + obstacles[i].last_x = obstacles[i].x; + obstacles[i].x -= GAME_SPEED_BASE + speed_modifier; + + // Remove off-screen obstacles + if (obstacles[i].x < -50) { + obstacles[i].active = false; + clear_obstacle_area(obstacles[i].last_x, obstacles[i].width + 10, obstacles[i].height + 10); + } else { + // Draw obstacle at new position + draw_obstacle(obstacles[i]); + } + } + } + + // Decrement spawn timer + if (obstacle_spawn_timer > 0) { + obstacle_spawn_timer -= GAME_SPEED_BASE + speed_modifier; + } + + // Check if we should spawn a new obstacle + if (obstacle_spawn_timer <= 0) { + // Try to spawn an obstacle + bool spawned = false; + for (int i = 0; i < MAX_OBSTACLES; i++) { + if (!obstacles[i].active) { + obstacles[i].active = true; + obstacles[i].x = 320; + obstacles[i].last_x = 320; + obstacles[i].type = rand() % 4; + + // Set obstacle dimensions based on type + switch (obstacles[i].type) { + case 0: // Small cactus + obstacles[i].width = 15; + obstacles[i].height = 25; + break; + case 1: // Large cactus + obstacles[i].width = 20; + obstacles[i].height = 35; + break; + case 2: // Double cactus + obstacles[i].width = 35; + obstacles[i].height = 30; + break; + case 3: // Triple cactus + obstacles[i].width = 45; + obstacles[i].height = 28; + break; + } + + spawned = true; + break; + } + } + + if (spawned) { + // Set timer for next obstacle with random variation + obstacle_spawn_timer = MIN_OBSTACLE_DISTANCE + (rand() % (MAX_OBSTACLE_DISTANCE - MIN_OBSTACLE_DISTANCE)); + } + } +} + +void DinoGameView::clear_obstacle_area(int x, int width, int height) { + int ground_y = GAME_AREA_TOP + GAME_AREA_HEIGHT - GROUND_HEIGHT; + // Only clear the obstacle area, not the entire vertical space + fillrect(x - 5, ground_y - height - 5, x + width + 5, ground_y, Black); +} + +void DinoGameView::draw_obstacle(const SimpleObstacle& obstacle) { + if (!obstacle.active) return; + + int ground_y = GAME_AREA_TOP + GAME_AREA_HEIGHT - GROUND_HEIGHT; + int y = ground_y - obstacle.height; + + // Draw cactus with green color + switch (obstacle.type) { + case 0: // Small single cactus + fillrect(obstacle.x + 5, y, obstacle.x + 10, ground_y, Green); + fillrect(obstacle.x, y + 8, obstacle.x + 5, y + 15, Green); + fillrect(obstacle.x + 10, y + 12, obstacle.x + 15, y + 19, Green); + // Add darker edges for definition + painter.draw_vline({obstacle.x + 4, y + 8}, 7, Color::dark_green()); + painter.draw_vline({obstacle.x + 10, y + 12}, 7, Color::dark_green()); + break; + + case 1: // Large single cactus + fillrect(obstacle.x + 7, y, obstacle.x + 13, ground_y, Green); + fillrect(obstacle.x, y + 10, obstacle.x + 7, y + 20, Green); + fillrect(obstacle.x + 13, y + 15, obstacle.x + 20, y + 25, Green); + fillrect(obstacle.x + 5, y + 5, obstacle.x + 7, y + 12, Green); + fillrect(obstacle.x + 13, y + 8, obstacle.x + 15, y + 15, Green); + // Add darker edges + painter.draw_vline({obstacle.x + 6, y}, ground_y - y, Color::dark_green()); + painter.draw_vline({obstacle.x + 13, y}, ground_y - y, Color::dark_green()); + break; + + case 2: // Double cactus + fillrect(obstacle.x + 5, y + 5, obstacle.x + 10, ground_y, Green); + fillrect(obstacle.x + 20, y, obstacle.x + 25, ground_y, Green); + fillrect(obstacle.x, y + 12, obstacle.x + 5, y + 18, Green); + fillrect(obstacle.x + 10, y + 15, obstacle.x + 15, y + 22, Green); + fillrect(obstacle.x + 25, y + 10, obstacle.x + 30, y + 17, Green); + // Darker outlines + painter.draw_vline({obstacle.x + 4, y + 5}, ground_y - y - 5, Color::dark_green()); + painter.draw_vline({obstacle.x + 19, y}, ground_y - y, Color::dark_green()); + break; + + case 3: // Triple cactus + fillrect(obstacle.x + 5, y + 8, obstacle.x + 10, ground_y, Green); + fillrect(obstacle.x + 20, y, obstacle.x + 25, ground_y, Green); + fillrect(obstacle.x + 35, y + 5, obstacle.x + 40, ground_y, Green); + fillrect(obstacle.x, y + 15, obstacle.x + 5, y + 20, Green); + fillrect(obstacle.x + 25, y + 8, obstacle.x + 30, y + 15, Green); + fillrect(obstacle.x + 40, y + 12, obstacle.x + 45, y + 18, Green); + // Darker outlines + painter.draw_vline({obstacle.x + 4, y + 8}, ground_y - y - 8, Color::dark_green()); + painter.draw_vline({obstacle.x + 19, y}, ground_y - y, Color::dark_green()); + painter.draw_vline({obstacle.x + 34, y + 5}, ground_y - y - 5, Color::dark_green()); + break; + } +} + +void DinoGameView::manage_bird() { + if (!bird_info.inGame) { + // Only spawn bird if no obstacles are too close + bool obstacle_nearby = false; + for (int i = 0; i < MAX_OBSTACLES; i++) { + if (obstacles[i].active && obstacles[i].x > 200) { + obstacle_nearby = true; + break; + } + } + + // Randomly spawn bird if no nearby obstacles + if (!obstacle_nearby && rand() % 400 == 0 && get_steps() > 100) { + bird_info.inGame = true; + bird_info.x_offset = 320; + bird_info.y_offset = 0; + bird_info.y_velocity = easy_mode ? 0 : (rand() % 3) - 1; // No vertical movement in easy mode + bird_info.y_position = BirdPosition::DOWN; // Always spawn at standing height in easy mode + } + } else { + // Calculate bird Y position + int base_y = (bird_info.y_position == BirdPosition::UP) ? BIRD_Y_UP : BIRD_Y_DOWN; + int current_y = base_y + bird_info.y_offset; + + // Clear previous bird position + if (last_bird_x < 320 && last_bird_x >= -BIRD_WIDTH) { + int clear_start_x = last_bird_x; + int clear_end_x = last_bird_x + BIRD_WIDTH; + + if (clear_start_x < 0) clear_start_x = 0; + if (clear_end_x > 320) clear_end_x = 320; + + if (clear_end_x > clear_start_x) { + fillrect(clear_start_x, last_bird_y, clear_end_x, last_bird_y + BIRD_HEIGHT, Black); + } + } + + // Move bird + bird_info.x_offset -= GAME_SPEED_BASE + speed_modifier + 1; + + // Update vertical position only in hard mode + if (!easy_mode) { + bird_info.y_offset += bird_info.y_velocity; + if (rand() % 30 == 0) { + bird_info.y_velocity = (rand() % 3) - 1; + } + + // Keep bird within bounds + if (current_y < GAME_AREA_TOP + 10) { + current_y = GAME_AREA_TOP + 10; + bird_info.y_offset = current_y - base_y; + bird_info.y_velocity = 1; + } else if (current_y > GAME_AREA_TOP + GAME_AREA_HEIGHT - GROUND_HEIGHT - BIRD_HEIGHT - 10) { + current_y = GAME_AREA_TOP + GAME_AREA_HEIGHT - GROUND_HEIGHT - BIRD_HEIGHT - 10; + bird_info.y_offset = current_y - base_y; + bird_info.y_velocity = -1; + } + } else { + // In easy mode, keep bird at perfect ducking height + // Bird should hit standing dino but miss ducking dino + current_y = DINO_Y - 10; // Position bird just above ducking height + } + + // Animate wings + if (get_steps() % 15 == 0) bird_info.flop = !bird_info.flop; + + // Draw bird only if any part is visible + if (bird_info.x_offset > -BIRD_WIDTH && bird_info.x_offset < 320) { + if (bird_info.flop) { + draw_bird_sprite(bird_info.x_offset, current_y, pterodactyl_upflop); + } else { + draw_bird_sprite(bird_info.x_offset, current_y, pterodactyl_downflop); + } + } + + // Update last position + last_bird_x = bird_info.x_offset; + last_bird_y = current_y; + + // Remove bird only when completely off screen + if (bird_info.x_offset < -BIRD_WIDTH - 5) { + bird_info.inGame = false; + last_bird_x = -1; + last_bird_y = -1; + } + } +} + +void DinoGameView::draw_dino_sprite(int x, int y, const uint16_t* sprite) { + int height, width; + + // Determine dimensions based on which sprite we're drawing + if (sprite == dino_ducking_leftstep || sprite == dino_ducking_rightstep) { + height = DINO_DUCK_HEIGHT; + width = DINO_DUCK_WIDTH; + } else { + height = DINO_HEIGHT; + width = DINO_WIDTH; + } + + for (int dy = 0; dy < height; dy++) { + int run_start = -1; + uint16_t run_color = 0; + + for (int dx = 0; dx < width; dx++) { + uint16_t pixel = sprite[dy * width + dx]; + + if (pixel != TRANSPARENT_COLOR) { + if (run_start == -1 || pixel != run_color) { + // Draw previous run if any + if (run_start != -1) { + painter.fill_rectangle({x + run_start, y + dy, dx - run_start, 1}, Color(run_color)); + } + run_start = dx; + run_color = pixel; + } + } else { + // Draw previous run if any + if (run_start != -1) { + painter.fill_rectangle({x + run_start, y + dy, dx - run_start, 1}, Color(run_color)); + run_start = -1; + } + } + } + + // Draw final run if any + if (run_start != -1) { + painter.fill_rectangle({x + run_start, y + dy, width - run_start, 1}, Color(run_color)); + } + } +} + +void DinoGameView::draw_bird_sprite(int x, int y, const uint16_t* sprite) { + for (int dy = 0; dy < BIRD_HEIGHT; dy++) { + int run_start = -1; + uint16_t run_color = 0; + + for (int dx = 0; dx < BIRD_WIDTH; dx++) { + // Skip pixels that would be off-screen + if (x + dx < 0 || x + dx >= 320) { + // End any current run + if (run_start != -1) { + painter.fill_rectangle({x + run_start, y + dy, dx - run_start, 1}, Color(run_color)); + run_start = -1; + } + continue; + } + + uint16_t pixel = sprite[dy * BIRD_WIDTH + dx]; + + if (pixel != TRANSPARENT_COLOR) { + if (pixel == SPRITE_COLOR) { + pixel = Color::red().v; + } + + if (run_start == -1 || pixel != run_color) { + if (run_start != -1) { + painter.fill_rectangle({x + run_start, y + dy, dx - run_start, 1}, Color(run_color)); + } + run_start = dx; + run_color = pixel; + } + } else { + if (run_start != -1) { + painter.fill_rectangle({x + run_start, y + dy, dx - run_start, 1}, Color(run_color)); + run_start = -1; + } + } + } + + if (run_start != -1 && x + run_start < 320) { + int width = BIRD_WIDTH - run_start; + if (x + run_start + width > 320) { + width = 320 - (x + run_start); + } + if (width > 0) { + painter.fill_rectangle({x + run_start, y + dy, width, 1}, Color(run_color)); + } + } + } +} + +void DinoGameView::draw_dino_at(int x, int y, bool is_ducking, bool run_frame) { + if (is_ducking) { + if (run_frame) { + draw_dino_sprite(x, y, dino_ducking_leftstep); + } else { + draw_dino_sprite(x, y, dino_ducking_rightstep); + } + } else { + if (run_frame) { + draw_dino_sprite(x, y, dino_leftstep); + } else { + draw_dino_sprite(x, y, dino_default); + } + } +} + +void DinoGameView::check_collision() { + int dino_left = DINO_X; + int dino_right = DINO_X + (ducking ? DINO_DUCK_WIDTH : DINO_WIDTH); + int dino_top = ducking ? DINO_DUCK_Y : (DINO_Y - jumpHeight); + int dino_bottom = dino_top + (ducking ? DINO_DUCK_HEIGHT : DINO_HEIGHT); + + // Give a small hitbox reduction for fairness + dino_left += 5; + dino_right -= 5; + dino_top += 5; + dino_bottom -= 5; + + // Check cactus collisions + for (int i = 0; i < MAX_OBSTACLES; i++) { + if (obstacles[i].active) { + int ground_y = GAME_AREA_TOP + GAME_AREA_HEIGHT - GROUND_HEIGHT; + int obs_top = ground_y - obstacles[i].height; + int obs_bottom = ground_y; + + if (dino_right > obstacles[i].x && + dino_left < obstacles[i].x + obstacles[i].width && + dino_bottom > obs_top && + dino_top < obs_bottom) { + collided = true; + return; + } + } + } + + // Check bird collision + if (bird_info.inGame) { + int base_y = (bird_info.y_position == BirdPosition::UP) ? BIRD_Y_UP : BIRD_Y_DOWN; + int bird_y = base_y + bird_info.y_offset; + + if (dino_right > bird_info.x_offset + 5 && + dino_left < bird_info.x_offset + BIRD_WIDTH - 5 && + dino_bottom > bird_y + 5 && + dino_top < bird_y + BIRD_HEIGHT - 5) { + collided = true; + } + } +} + +void DinoGameView::draw_current_score() { + auto style = *ui::Theme::getInstance()->fg_medium; + + if (last_score != score) { + painter.fill_rectangle({10, 28, 60, 14}, Color::black()); + painter.draw_string({10, 30}, style, score_to_string(score)); + last_score = score; + } +} + +void DinoGameView::draw_high_score() { + auto style = *ui::Theme::getInstance()->fg_light; + painter.fill_rectangle({152, 28, 100, 14}, Color::black()); + painter.draw_string({152, 30}, style, "HI " + score_to_string(highScore)); +} + +void DinoGameView::jump() { + if (!jumping) { + jumping = true; + // If we're ducking when we jump, stand up + if (ducking) { + stand(); + } + } +} + +void DinoGameView::duck() { + if (!jumping) { + ducking = true; + duck_timer = 60; // 1 second at 60 FPS + } +} + +void DinoGameView::stand() { + ducking = false; + duck_timer = 0; +} + +void DinoGameView::step() { + ++steps; +} + +bool DinoGameView::on_key(const KeyEvent key) { + if (key == KeyEvent::Select) { + if (game_state == GameState::MENU) { + game_state = GameState::PLAYING; + new_game(); + draw_high_score(); + } else if (game_state == GameState::PLAYING && !collided) { + jump(); + } else if (game_state == GameState::GAME_OVER || collided) { + game_state = GameState::PLAYING; // Restart immediately + new_game(); + draw_high_score(); + } + } else if (key == KeyEvent::Down) { + if (game_state == GameState::PLAYING && !collided) { + duck(); + } + } else if (key == KeyEvent::Up) { + if (game_state == GameState::PLAYING && !collided) { + stand(); + } + } + + set_dirty(); + return true; +} + +bool DinoGameView::on_encoder(const EncoderEvent delta) { + (void)delta; + return true; +} + +} // namespace ui::external_app::dinogame diff --git a/firmware/application/external/dinogame/ui_dinogame.hpp b/firmware/application/external/dinogame/ui_dinogame.hpp new file mode 100644 index 000000000..a8d51e574 --- /dev/null +++ b/firmware/application/external/dinogame/ui_dinogame.hpp @@ -0,0 +1,254 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +/* + * Chrome Dino Game for Portapack Mayhem + * Based on the original DinoGame by various contributors + */ + +#ifndef __UI_DINOGAME_H__ +#define __UI_DINOGAME_H__ + +#include "ui.hpp" +#include "ui_navigation.hpp" +#include "event_m0.hpp" +#include "message.hpp" +#include "irq_controls.hpp" +#include "random.hpp" +#include "lpc43xx_cpp.hpp" +#include "ui_widget.hpp" +#include "file.hpp" +#include +#include "app_settings.hpp" + +namespace ui::external_app::dinogame { + +// Color definitions +enum { + White, + Blue, + Yellow, + Purple, + Green, + Red, + Maroon, + Orange, + Black, +}; + +// Game constants +#define DINO_WIDTH 34 +#define DINO_HEIGHT 36 +#define DINO_DUCK_WIDTH 45 +#define DINO_DUCK_HEIGHT 22 +#define BIRD_WIDTH 34 +#define BIRD_HEIGHT 27 +#define GROUND_HEIGHT 10 +#define GAME_AREA_TOP 78 +#define GAME_AREA_HEIGHT 160 +#define DINO_X 30 +#define DINO_Y (GAME_AREA_TOP + GAME_AREA_HEIGHT - GROUND_HEIGHT - DINO_HEIGHT) +#define DINO_DUCK_Y (GAME_AREA_TOP + GAME_AREA_HEIGHT - GROUND_HEIGHT - DINO_DUCK_HEIGHT) +#define BIRD_Y_UP (GAME_AREA_TOP + 20) +#define BIRD_Y_DOWN (GAME_AREA_TOP + 60) +#define JUMP_MAX_HEIGHT 70 +#define JUMP_SPEED 3 +#define GAME_SPEED_BASE 3 +#define SPRITE_COLOR 0x528A +#define TRANSPARENT_COLOR 0xFFFF +#define MIN_OBSTACLE_DISTANCE 300 +#define MAX_OBSTACLE_DISTANCE 600 + +// Game states +enum class GameState { + MENU, + PLAYING, + GAME_OVER +}; + +// Walk styles +enum class WalkStyle { + WALKING, + DUCKING +}; + +// Bird position +enum class BirdPosition { + UP, + DOWN +}; + +// Structures +struct Pterodactyl { + bool inGame = false; + BirdPosition y_position = BirdPosition::UP; + int16_t x_offset = 320; + int16_t y_offset = 0; + int8_t y_velocity = 0; + bool flop = false; +}; + +// Simple obstacle structure with proper initialization +struct SimpleObstacle { + bool active; + int16_t x; + int16_t last_x; + uint8_t width; + uint8_t height; + uint8_t type; // 0=small, 1=large, 2=double, 3=triple + + SimpleObstacle() + : active(false), x(0), last_x(0), width(0), height(0), type(0) {} +}; + +// External references to sprite data +extern const uint16_t dino_default[]; +extern const uint16_t dino_leftstep[]; +extern const uint16_t dino_rightstep[]; +extern const uint16_t dino_ducking_leftstep[]; +extern const uint16_t dino_ducking_rightstep[]; +extern const uint16_t dino_gameover[]; +extern const uint16_t pterodactyl_upflop[]; +extern const uint16_t pterodactyl_downflop[]; + +// Global painter +extern Painter painter; + +// Function declarations +void cls(); +void fillrect(int x1, int y1, int x2, int y2, int color); +void rect(int x1, int y1, int x2, int y2, int color); +void check_game_timer(); +void game_timer_check(); + +// Ticker class +using Callback = void (*)(void); + +class Ticker { + public: + Ticker() = default; + void attach(Callback func, double delay_sec); + void detach(); +}; + +// Main view class +class DinoGameView : public View { + public: + DinoGameView(NavigationView& nav); + void on_show() override; + + std::string title() const override { return "Dino Game"; } + + void focus() override { dummy.focus(); } + void paint(Painter& painter) override; + void frame_sync(); + bool on_encoder(const EncoderEvent event) override; + bool on_key(KeyEvent key) override; + + // Public for timer callback + GameState game_state = GameState::MENU; + void game_loop(); + void show_menu(); + + private: + bool initialized = false; + NavigationView& nav_; + + // Game variables + static constexpr uint8_t MAX_OBSTACLES = 1; + SimpleObstacle obstacles[MAX_OBSTACLES]; + Pterodactyl bird_info; + + int16_t jumpHeight = 0; + uint8_t ground_offset = 0; + uint8_t speed_modifier = 0; + bool runstate = false; + bool jumping = false; + bool falling = false; + bool collided = false; + bool ducking = false; + bool displayedGameOver = false; + bool last_ducking = false; + bool last_runstate = false; + + uint32_t steps = 0; + uint32_t score = 0; + uint32_t highScore = 0; + uint32_t last_score = 999999; // Initialize to impossible value + int32_t next_obstacle_distance = 100; + int16_t last_obstacle_x = 320; // Track position of last spawned obstacle + int32_t obstacle_spawn_timer = 0; + + // Position tracking for minimal redraw + int16_t last_dino_y = DINO_Y; + int16_t last_bird_x = -1; + int16_t last_bird_y = -1; + uint8_t duck_timer = 0; + + // Menu animation + bool menu_initialized = false; + bool blink_state = true; + uint32_t blink_counter = 0; + + // Current Score + bool score_drawn = false; + + // Game timer + Ticker game_timer; + + // Private methods + void init_game(); + void new_game(); + void update_obstacles(); + void spawn_obstacle(); + void draw_screen(); + void draw_ground(); + void draw_obstacle(const SimpleObstacle& obstacle); + void clear_obstacle_area(int x, int width, int height); + void draw_dino_sprite(int x, int y, const uint16_t* sprite); + void draw_bird_sprite(int x, int y, const uint16_t* sprite); + void draw_dino_at(int x, int y, bool is_ducking, bool run_frame); + void manage_bird(); + void draw_score(); + void draw_high_score(); + void draw_current_score(); + void show_game_over(); + void jump(); + void duck(); + void stand(); + void check_collision(); + void step(); + uint32_t get_steps() { return steps; } + std::string score_to_string(uint32_t score); + + bool easy_mode = false; + + Button button_difficulty{ + {70, 195, 100, 20}, + "Mode: HARD"}; + + app_settings::SettingsManager settings_{ + "dinogame", + app_settings::Mode::NO_RF, + {{"highscore"sv, &highScore}, + {"easy_mode"sv, &easy_mode}}}; + + Button dummy{ + {screen_width, 0, 0, 0}, + ""}; + + MessageHandlerRegistration message_handler_frame_sync{ + Message::ID::DisplayFrameSync, + [this](const Message* const) { + this->frame_sync(); + }}; +}; + +} // namespace ui::external_app::dinogame + +#endif /* __UI_DINOGAME_H__ */ diff --git a/firmware/application/external/doom/main.cpp b/firmware/application/external/doom/main.cpp new file mode 100644 index 000000000..417b7c625 --- /dev/null +++ b/firmware/application/external/doom/main.cpp @@ -0,0 +1,67 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +#include "ui_doom.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::doom { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::doom + +extern "C" { + +__attribute__((section(".external_app.app_doom.application_information"), used)) application_information_t _application_information_doom = { + (uint8_t*)0x00000000, + ui::external_app::doom::initialize_app, + CURRENT_HEADER_VERSION, + VERSION_MD5, + "Doom", + { + 0x00, + 0x00, + 0x00, + 0x00, + 0x77, + 0xDF, + 0xFF, + 0xDF, + 0xD9, + 0xFD, + 0x89, + 0xF8, + 0x89, + 0xE8, + 0x89, + 0xA8, + 0x89, + 0xA8, + 0xD9, + 0xAD, + 0x79, + 0xAF, + 0x2D, + 0xAA, + 0x07, + 0xA8, + 0x03, + 0xA0, + 0x01, + 0x80, + 0x00, + 0x00, + }, + ui::Color::red().v, + app_location_t::GAMES, + -1, + {0, 0, 0, 0}, + 0x00000000, +}; +} diff --git a/firmware/application/external/doom/ui_doom.cpp b/firmware/application/external/doom/ui_doom.cpp new file mode 100644 index 000000000..dc63b60a8 --- /dev/null +++ b/firmware/application/external/doom/ui_doom.cpp @@ -0,0 +1,1141 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +#include "ui_doom.hpp" +#include "ui.hpp" + +namespace ui::external_app::doom { + +//clang-format off +int SCREEN_WIDTH = 0; +int SCREEN_HEIGHT = 0; +int RENDER_HEIGHT = 0; +int HALF_WIDTH = 0; +int HALF_HEIGHT = 0; +#define LEVEL_WIDTH_BASE 6 +#define LEVEL_WIDTH (1 << LEVEL_WIDTH_BASE) +#define LEVEL_HEIGHT 57 +#define LEVEL_SIZE (LEVEL_WIDTH / 2 * LEVEL_HEIGHT) +#define MAX_RENDER_DEPTH 12 +#define MIN_ENTITIES 15 +#define MAX_ENTITIES 25 +#define RES_DIVIDER 2 +#define DISTANCE_MULTIPLIER 20 +#define ROT_SPEED 0.25 +#define MOV_SPEED 1.0 +#define JOGGING_SPEED 1.2 +#define MAX_ENTITY_DISTANCE 200 +#define ITEM_COLLIDER_DIST 6 +#define PI 3.14159265358979323846 +#define GUN_WIDTH 30 +#define GUN_HEIGHT 40 +#define GUN_TARGET_POS 24 +#define GUN_SHOT_POS (GUN_TARGET_POS + 6) +#define ENEMY_SIZE 16 +#define ENEMY_SPEED 0.03 +#define ENEMY_MELEE_DIST 20 +#define ENEMY_MELEE_DAMAGE 2 +#define GUN_MAX_DAMAGE 15 + +#define ACTIVATION_RADIUS 120 +#define STATE_INACTIVE 6 + +#define COLOR_BACKGROUND Black +#define COLOR_WALL_LIGHT Green +#define COLOR_WALL_DARK Maroon +#define COLOR_FLOOR_DARK Black +//clang-format on + +// Stole this level map from Flipper Zero Doom, but he stole it from a guy who stole it and that guy probably stole it too. Argh! +static const uint8_t level[LEVEL_SIZE] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x02, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x2F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x02, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x90, 0xFF, 0xFF, 0xFF, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xF2, 0x00, 0x00, 0x09, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x4F, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x00, 0x40, 0x00, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x20, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xF0, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xF0, 0x00, 0xFF, 0x00, 0x02, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xF0, 0x00, 0x05, 0x00, 0x00, 0x90, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0xFF, + 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xF0, 0x00, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xF0, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x08, 0x00, 0xFF, + 0xF0, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF2, 0x02, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x00, 0x40, 0x80, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0xFF, 0xFF, + 0xF0, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xF0, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x40, 0x00, 0x02, 0x00, 0x90, 0xFF, 0xFF, + 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xF0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x50, 0x00, 0x20, 0x00, 0x7F, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0xFF, 0xFF, + 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x0F, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x40, 0x00, 0x40, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; + +struct Coords { + double x, y; +}; + +struct Player { + Coords pos; + Coords dir; + Coords plane; + double velocity; + uint8_t health; + uint8_t keys; + uint8_t ammo; +}; + +struct Entity { + uint16_t uid; + Coords pos; + Coords death_pos; + uint8_t state; + uint8_t health; + uint8_t distance; + uint8_t timer; +}; + +static Ticker game_timer; +static Player player; +static Entity entities[MAX_ENTITIES]; +static uint8_t num_entities = 0; +static uint16_t kills = 0; +static uint8_t scene = 0; +static bool up, down, left, right, fired; +static double jogging, view_height; +static bool needs_redraw = false; +static bool needs_gun_redraw = false; +static uint8_t gun_pos = GUN_TARGET_POS; +static bool gun_fired = false; +static int prev_gun_x = 0; +static int prev_gun_y = 0; + +Coords create_coords(double x, double y) { + Coords c; + c.x = x; + c.y = y; + return c; +} + +Player create_player(double x, double y) { + Player p; + p.pos = create_coords(x + 0.5, y + 0.5); + p.dir = create_coords(1, 0); + p.plane = create_coords(0, -0.66); + p.velocity = 0; + p.health = 100; + p.keys = 0; + p.ammo = 99; + return p; +} + +Entity create_entity(uint8_t type, uint8_t x, uint8_t y, uint8_t state, uint8_t health) { + Entity e; + e.uid = ((y << 6) | x) << 4 | type; + e.pos = create_coords(x + 0.5, y + 0.5); + e.death_pos = create_coords(x + 0.5, y + 0.5); + e.state = state; + e.health = health; + e.distance = 0; + e.timer = 0; + return e; +} + +uint8_t get_block_at(uint8_t x, uint8_t y) { + if (x >= LEVEL_WIDTH || y >= LEVEL_HEIGHT) return 0xF; + return level[((LEVEL_HEIGHT - 1 - y) * LEVEL_WIDTH + x) / 2] >> (!(x % 2) * 4) & 0b1111; +} + +Coords translate_into_view(Coords pos) { + double sprite_x = pos.x - player.pos.x; + double sprite_y = pos.y - player.pos.y; + double inv_det = 1.0 / (player.plane.x * player.dir.y - player.dir.x * player.plane.y); + double transform_x = inv_det * (player.dir.y * sprite_x - player.dir.x * sprite_y); + double transform_y = inv_det * (-player.plane.y * sprite_x + player.plane.x * sprite_y); + return create_coords(transform_x, transform_y); +} + +void spawn_entity(uint8_t type, uint8_t x, uint8_t y) { + if (num_entities >= MAX_ENTITIES) return; + entities[num_entities] = create_entity(type, x, y, STATE_INACTIVE, 50); + num_entities++; +} + +void spawn_random_entity(uint8_t type) { + if (num_entities >= MAX_ENTITIES) return; + std::srand(LPC_RTC->CTIME0); + uint8_t spawn_x, spawn_y; + do { + spawn_x = std::rand() % LEVEL_WIDTH; + spawn_y = std::rand() % LEVEL_HEIGHT; + } while (get_block_at(spawn_x, spawn_y) == 0xF || + (spawn_x == (uint8_t)player.pos.x && spawn_y == (uint8_t)player.pos.y)); + + entities[num_entities] = create_entity(type, spawn_x, spawn_y, STATE_INACTIVE, 50); + num_entities++; +} + +void remove_entity(uint8_t index) { + for (uint8_t i = index; i < num_entities - 1; i++) { + entities[i] = entities[i + 1]; + } + num_entities--; + + if (num_entities < MIN_ENTITIES) { + uint8_t attempts = 0; + bool spawned = false; + + while (!spawned && attempts < 50) { + std::srand(LPC_RTC->CTIME0 + attempts); + uint8_t spawn_x = std::rand() % LEVEL_WIDTH; + uint8_t spawn_y = std::rand() % LEVEL_HEIGHT; + + int16_t dx = (int16_t)spawn_x - (int16_t)player.pos.x; + int16_t dy = (int16_t)spawn_y - (int16_t)player.pos.y; + uint16_t dist_squared = dx * dx + dy * dy; + + if (dist_squared >= 64 && + get_block_at(spawn_x, spawn_y) != 0xF && + !(spawn_x == (uint8_t)player.pos.x && spawn_y == (uint8_t)player.pos.y)) { + entities[num_entities] = create_entity(0x2, spawn_x, spawn_y, STATE_INACTIVE, 50); + entities[num_entities].pos.x = (double)spawn_x + 0.5; + entities[num_entities].pos.y = (double)spawn_y + 0.5; + entities[num_entities].death_pos.x = (double)spawn_x + 0.5; + entities[num_entities].death_pos.y = (double)spawn_y + 0.5; + + if (get_block_at((uint8_t)entities[num_entities].pos.x, (uint8_t)entities[num_entities].pos.y) != 0xF) { + num_entities++; + spawned = true; + } + } + attempts++; + } + } +} + +void initialize_level() { + for (uint8_t y = LEVEL_HEIGHT - 1; y > 0; y--) { + for (uint8_t x = 0; x < LEVEL_WIDTH; x++) { + uint8_t block = get_block_at(x, y); + if (block == 0x1) { + player = create_player(x, y); + break; + } + } + } + num_entities = 0; + + uint8_t initial_enemies = 0; + uint8_t attempts = 0; + + while (initial_enemies < 2 && num_entities < MAX_ENTITIES && attempts < 50) { + std::srand(LPC_RTC->CTIME0 + attempts); + int8_t offset_x = (std::rand() % 11) - 5; + int8_t offset_y = (std::rand() % 11) - 5; + + if (abs(offset_x) < 3 && abs(offset_y) < 3) { + attempts++; + continue; + } + + int16_t temp_x = (int16_t)player.pos.x + offset_x; + int16_t temp_y = (int16_t)player.pos.y + offset_y; + uint8_t spawn_x = (temp_x < 0) ? 0 : (temp_x >= LEVEL_WIDTH) ? LEVEL_WIDTH - 1 + : temp_x; + uint8_t spawn_y = (temp_y < 0) ? 0 : (temp_y >= LEVEL_HEIGHT) ? LEVEL_HEIGHT - 1 + : temp_y; + + if (get_block_at(spawn_x, spawn_y) != 0xF && + !(spawn_x == (uint8_t)player.pos.x && spawn_y == (uint8_t)player.pos.y)) { + entities[num_entities] = create_entity(0x2, spawn_x, spawn_y, STATE_INACTIVE, 50); + entities[num_entities].pos.x = (double)spawn_x + 0.5; + entities[num_entities].pos.y = (double)spawn_y + 0.5; + entities[num_entities].death_pos.x = (double)spawn_x + 0.5; + entities[num_entities].death_pos.y = (double)spawn_y + 0.5; + + if (get_block_at((uint8_t)entities[num_entities].pos.x, (uint8_t)entities[num_entities].pos.y) == 0xF) { + attempts++; + continue; + } + + num_entities++; + initial_enemies++; + } + attempts++; + } + + attempts = 0; + while (num_entities < MIN_ENTITIES && attempts < 100) { + std::srand(LPC_RTC->CTIME0 + attempts + 100); + + uint8_t spawn_x = std::rand() % LEVEL_WIDTH; + uint8_t spawn_y = std::rand() % LEVEL_HEIGHT; + + int16_t dx = (int16_t)spawn_x - (int16_t)player.pos.x; + int16_t dy = (int16_t)spawn_y - (int16_t)player.pos.y; + uint16_t dist_squared = dx * dx + dy * dy; + + if (dist_squared >= 25 && + get_block_at(spawn_x, spawn_y) != 0xF && + !(spawn_x == (uint8_t)player.pos.x && spawn_y == (uint8_t)player.pos.y)) { + entities[num_entities] = create_entity(0x2, spawn_x, spawn_y, STATE_INACTIVE, 50); + entities[num_entities].pos.x = (double)spawn_x + 0.5; + entities[num_entities].pos.y = (double)spawn_y + 0.5; + entities[num_entities].death_pos.x = (double)spawn_x + 0.5; + entities[num_entities].death_pos.y = (double)spawn_y + 0.5; + + if (get_block_at((uint8_t)entities[num_entities].pos.x, (uint8_t)entities[num_entities].pos.y) == 0xF) { + attempts++; + continue; + } + + num_entities++; + } + attempts++; + } +} + +void fire() { + if (player.ammo > 0) { + uint8_t closest_i = 255; + double min_dist = 1000.0; + for (uint8_t i = 0; i < num_entities; i++) { + if (entities[i].state == 5) continue; + double dx = entities[i].pos.x - player.pos.x; + double dy = entities[i].pos.y - player.pos.y; + double dist = sqrt(dx * dx + dy * dy) * DISTANCE_MULTIPLIER; + double dot = dx * player.dir.x + dy * player.dir.y; + double angle = acos(dot / (dist / DISTANCE_MULTIPLIER)); + if (dist < 100 && angle < 0.2 && dot > 0 && dist < min_dist) { + closest_i = i; + min_dist = dist; + } + } + if (closest_i != 255) { + uint8_t damage = fmin(GUN_MAX_DAMAGE, GUN_MAX_DAMAGE * (100 - min_dist) / 100); + if (damage > 0) { + entities[closest_i].health = fmax(0, entities[closest_i].health - damage); + entities[closest_i].state = 4; + entities[closest_i].timer = 4; + needs_redraw = true; + } + } + player.ammo--; + } +} + +void update_entities() { + uint8_t i = 0; + while (i < num_entities) { + entities[i].distance = sqrt(pow(player.pos.x - entities[i].pos.x, 2) + pow(player.pos.y - entities[i].pos.y, 2)) * DISTANCE_MULTIPLIER; + + if (entities[i].state != 5) { + if (entities[i].distance > ACTIVATION_RADIUS && entities[i].state != STATE_INACTIVE) { + entities[i].state = STATE_INACTIVE; + needs_redraw = true; + } else if (entities[i].distance <= ACTIVATION_RADIUS && entities[i].state == STATE_INACTIVE) { + entities[i].state = 0; + needs_redraw = true; + } + } + + if (entities[i].timer > 0) entities[i].timer--; + + if (entities[i].health == 0 && entities[i].state == 5 && entities[i].timer == 0) { + kills++; + remove_entity(i); + continue; + } + if (entities[i].health == 0 && entities[i].state != 5) { + entities[i].state = 5; + entities[i].timer = 6; + entities[i].death_pos = entities[i].pos; + needs_redraw = true; + } + if (entities[i].state == 4 && entities[i].timer == 0) { + entities[i].state = 0; + needs_redraw = true; + } + + if (entities[i].state != STATE_INACTIVE && entities[i].state != 4 && entities[i].state != 5) { + double dx = player.pos.x - entities[i].pos.x; + double dy = player.pos.y - entities[i].pos.y; + double dist = sqrt(dx * dx + dy * dy); + + if (dist <= (ENEMY_MELEE_DIST / DISTANCE_MULTIPLIER) && entities[i].timer == 0) { + entities[i].state = 3; + player.health = fmax(0, player.health - ENEMY_MELEE_DAMAGE); + entities[i].timer = 30; + needs_redraw = true; + } + + double move_dist = fmin(ENEMY_SPEED, dist - 0.2); + + bool moved = false; + + double new_x = entities[i].pos.x + (dx / dist) * move_dist; + double new_y = entities[i].pos.y + (dy / dist) * move_dist; + if (get_block_at((uint8_t)new_x, (uint8_t)entities[i].pos.y) != 0xF) { + entities[i].pos.x = new_x; + moved = true; + } + if (get_block_at((uint8_t)entities[i].pos.x, (uint8_t)new_y) != 0xF) { + entities[i].pos.y = new_y; + moved = true; + } + + if (!moved) { + bool wall_x_pos = get_block_at((uint8_t)entities[i].pos.x + 1, (uint8_t)entities[i].pos.y) == 0xF; + bool wall_x_neg = get_block_at((uint8_t)entities[i].pos.x - 1, (uint8_t)entities[i].pos.y) == 0xF; + bool wall_y_pos = get_block_at((uint8_t)entities[i].pos.x, (uint8_t)entities[i].pos.y + 1) == 0xF; + bool wall_y_neg = get_block_at((uint8_t)entities[i].pos.x, (uint8_t)entities[i].pos.y - 1) == 0xF; + + uint8_t dir_choice = (entities[i].uid + LPC_RTC->CTIME0) % 4; + + if (wall_x_pos || wall_x_neg) { + double try_y = entities[i].pos.y + (dir_choice < 2 ? 1 : -1) * move_dist; + if (get_block_at((uint8_t)entities[i].pos.x, (uint8_t)try_y) != 0xF) { + entities[i].pos.y = try_y; + moved = true; + } + } else if (wall_y_pos || wall_y_neg) { + double try_x = entities[i].pos.x + (dir_choice < 2 ? 1 : -1) * move_dist; + if (get_block_at((uint8_t)try_x, (uint8_t)entities[i].pos.y) != 0xF) { + entities[i].pos.x = try_x; + moved = true; + } + } + + if (!moved) { + double angle = (entities[i].uid * 17 + LPC_RTC->CTIME0) % 628 / 100.0; + double try_x = entities[i].pos.x + cos(angle) * move_dist; + double try_y = entities[i].pos.y + sin(angle) * move_dist; + + if (get_block_at((uint8_t)try_x, (uint8_t)entities[i].pos.y) != 0xF) { + entities[i].pos.x = try_x; + moved = true; + } + if (get_block_at((uint8_t)entities[i].pos.x, (uint8_t)try_y) != 0xF) { + entities[i].pos.y = try_y; + moved = true; + } + } + } + + for (int dx = -1; dx <= 1; dx++) { + for (int dy = -1; dy <= 1; dy++) { + if (dx == 0 && dy == 0) continue; + if (get_block_at((uint8_t)(entities[i].pos.x + dx * 0.3), (uint8_t)(entities[i].pos.y + dy * 0.3)) == 0xF) { + entities[i].pos.x -= dx * 0.05; + entities[i].pos.y -= dy * 0.05; + } + } + } + + if (dist > (ENEMY_MELEE_DIST / DISTANCE_MULTIPLIER)) entities[i].state = 0; + } + i++; + } +} + +void update_game() { + bool state_changed = false; + bool gun_only_change = false; + + if (scene == 1) { + if (player.health > 0) { + if (up) { + player.velocity += (MOV_SPEED - player.velocity) * 0.4; + jogging = fabs(player.velocity) * 5; + up = false; + state_changed = true; + } else if (down) { + player.velocity += (-MOV_SPEED - player.velocity) * 0.4; + jogging = fabs(player.velocity) * 5; + down = false; + state_changed = true; + } else { + double old_velocity = player.velocity; + player.velocity *= 0.5; + jogging = fabs(player.velocity) * 5; + if (fabs(player.velocity) < 0.001) player.velocity = 0; + if (old_velocity != player.velocity) state_changed = true; + } + + if (right) { + double old_dir_x = player.dir.x; + player.dir.x = player.dir.x * cos(-ROT_SPEED) - player.dir.y * sin(-ROT_SPEED); + player.dir.y = old_dir_x * sin(-ROT_SPEED) + player.dir.y * cos(-ROT_SPEED); + double old_plane_x = player.plane.x; + player.plane.x = player.plane.x * cos(-ROT_SPEED) - player.plane.y * sin(-ROT_SPEED); + player.plane.y = old_plane_x * sin(-ROT_SPEED) + player.plane.y * cos(-ROT_SPEED); + right = false; + state_changed = true; + } else if (left) { + double old_dir_x = player.dir.x; + player.dir.x = player.dir.x * cos(ROT_SPEED) - player.dir.y * sin(ROT_SPEED); + player.dir.y = old_dir_x * sin(ROT_SPEED) + player.dir.y * cos(ROT_SPEED); + double old_plane_x = player.plane.x; + player.plane.x = player.plane.x * cos(ROT_SPEED) - player.plane.y * sin(ROT_SPEED); + player.plane.y = old_plane_x * sin(ROT_SPEED) + player.plane.y * cos(ROT_SPEED); + left = false; + state_changed = true; + } + + if (player.velocity != 0) { + view_height = fabs(sin(LPC_RTC->CTIME0 * JOGGING_SPEED)) * 6 * jogging; + } else { + view_height = 0; + } + + if (fabs(player.velocity) > 0.003) { + double new_x = player.pos.x + player.dir.x * player.velocity; + double new_y = player.pos.y + player.dir.y * player.velocity; + bool can_move_x = get_block_at((uint8_t)new_x, (uint8_t)player.pos.y) != 0xF; + bool can_move_y = get_block_at((uint8_t)player.pos.x, (uint8_t)new_y) != 0xF; + for (uint8_t i = 0; i < num_entities; i++) { + if (entities[i].state != 5 && entities[i].state != STATE_INACTIVE) { + double dx = new_x - entities[i].pos.x; + double dy = player.pos.y - entities[i].pos.y; + if (sqrt(dx * dx + dy * dy) < 0.5) { + can_move_x = false; + } + dx = player.pos.x - entities[i].pos.x; + dy = new_y - entities[i].pos.y; + if (sqrt(dx * dx + dy * dy) < 0.5) { + can_move_y = false; + } + } + } + if (can_move_x) { + player.pos.x = new_x; + state_changed = true; + } + if (can_move_y) { + player.pos.y = new_y; + state_changed = true; + } + } else if (player.velocity != 0) { + player.velocity = 0; + state_changed = true; + } + + if (gun_pos > GUN_TARGET_POS) { + gun_pos -= 1; + gun_only_change = true; + } else if (gun_pos < GUN_TARGET_POS) { + gun_pos += 2; + gun_only_change = true; + } else if (fired) { + gun_pos = GUN_SHOT_POS; + fire(); + needs_gun_redraw = true; + gun_only_change = true; + fired = false; + } + } else { + if (view_height > -10) { + view_height--; + state_changed = true; + } + if (gun_pos > 1) { + gun_pos -= 2; + gun_only_change = true; + } + } + update_entities(); + } + + if (state_changed && !gun_only_change) + needs_redraw = true; + else if (gun_only_change) + needs_gun_redraw = true; +} + +static void game_timer_check() { + if (scene == 1) update_game(); +} + +void render_gun(Painter& painter, uint8_t gun_pos, double jogging) { + int x = HALF_WIDTH - GUN_WIDTH / 2 + sin(LPC_RTC->CTIME0 * JOGGING_SPEED) * 10 * jogging; + int y = RENDER_HEIGHT - gun_pos - 29 + fabs(cos(LPC_RTC->CTIME0 * JOGGING_SPEED)) * 8 * jogging; + + prev_gun_x = x; + prev_gun_y = y; + + int recoil = gun_pos > GUN_TARGET_POS ? (gun_pos - GUN_TARGET_POS) / 2 : 0; + + // Gun body - shotgun style with more detail + painter.fill_rectangle({x + 8, y + 8, 18, 12}, pp_colors[Green]); + painter.fill_rectangle({x + 6, y + 10, 2, 8}, pp_colors[Black]); + painter.fill_rectangle({x + 26, y + 10, 2, 8}, pp_colors[Black]); + + // Barrel + painter.fill_rectangle({x + 12, y - 4, 8, 12}, pp_colors[Green]); + painter.fill_rectangle({x + 14, y - 6, 4, 2}, pp_colors[Green]); + + // Barrel shading + painter.fill_rectangle({x + 12, y - 4, 2, 12}, pp_colors[White]); + painter.fill_rectangle({x + 18, y - 4, 2, 12}, pp_colors[Black]); + + // Handle + painter.fill_rectangle({x + 12, y + 20, 8, 20}, pp_colors[Maroon]); + painter.fill_rectangle({x + 10, y + 20, 2, 18}, pp_colors[White]); + painter.fill_rectangle({x + 20, y + 20, 2, 18}, pp_colors[Black]); + + // Trigger guard + painter.fill_rectangle({x + 10, y + 20, 12, 2}, pp_colors[Green]); + painter.fill_rectangle({x + 10, y + 20, 2, 6}, pp_colors[Green]); + painter.fill_rectangle({x + 20, y + 20, 2, 6}, pp_colors[Green]); + painter.fill_rectangle({x + 10, y + 26, 12, 2}, pp_colors[Green]); + + // Trigger + painter.fill_rectangle({x + 14, y + 22 + recoil / 2, 4, 4}, pp_colors[Black]); + + // Pump action + painter.fill_rectangle({x + 8, y + 4, 16, 4}, pp_colors[Maroon]); + painter.fill_rectangle({x + 7, y + 4, 1, 4}, pp_colors[White]); + painter.fill_rectangle({x + 24, y + 4, 1, 4}, pp_colors[Black]); + + // Action slide rails + painter.fill_rectangle({x + 10, y + 8, 1, 8 + recoil}, pp_colors[White]); + painter.fill_rectangle({x + 21, y + 8, 1, 8 + recoil}, pp_colors[Black]); + + // Ammo chamber + painter.fill_rectangle({x + 24, y + 12, 4, 4}, pp_colors[Black]); + + // Muzzle flash + if (gun_pos > GUN_TARGET_POS) { + int flash_size = 10 + (gun_pos - GUN_TARGET_POS) * 2; + int flash_center_x = x + 16; + int flash_center_y = y - 6; + + // Core of flash + painter.fill_rectangle({flash_center_x - flash_size / 4, flash_center_y - flash_size / 2, + flash_size / 2, flash_size}, + pp_colors[White]); + + // Outer yellow glow + painter.fill_rectangle({flash_center_x - flash_size / 2, flash_center_y - flash_size / 4, + flash_size, flash_size / 2}, + pp_colors[Yellow]); + + // Left spike + painter.fill_rectangle({flash_center_x - flash_size, flash_center_y - 2, + flash_size / 2, 4}, + pp_colors[Yellow]); + + // Right spike + painter.fill_rectangle({flash_center_x + flash_size / 2, flash_center_y - 2, + flash_size / 2, 4}, + pp_colors[Yellow]); + + // Top spike + painter.fill_rectangle({flash_center_x - 2, flash_center_y - flash_size, + 4, flash_size / 2}, + pp_colors[Yellow]); + + // Small random sparks + if (LPC_RTC->CTIME0 % 2) { + painter.fill_rectangle({flash_center_x - flash_size / 2 - 2, flash_center_y - flash_size / 2 - 2, + 2, 2}, + pp_colors[Yellow]); + painter.fill_rectangle({flash_center_x + flash_size / 3, flash_center_y - flash_size / 3, + 2, 2}, + pp_colors[Yellow]); + } else { + painter.fill_rectangle({flash_center_x + flash_size / 3, flash_center_y - flash_size / 2, + 2, 2}, + pp_colors[Yellow]); + painter.fill_rectangle({flash_center_x - flash_size / 4, flash_center_y + flash_size / 4, + 2, 2}, + pp_colors[Yellow]); + } + + // Smoke effect + if (gun_pos > GUN_TARGET_POS + 2) { + int smoke_y = flash_center_y - flash_size - 4; + painter.fill_rectangle({flash_center_x - 6, smoke_y, 12, 4}, pp_colors[White]); + painter.fill_rectangle({flash_center_x - 8, smoke_y - 4, 16, 4}, pp_colors[White]); + painter.fill_rectangle({flash_center_x - 6, smoke_y - 8, 12, 4}, pp_colors[White]); + } + } + + // Shell ejection + if (gun_pos > GUN_TARGET_POS && gun_pos < GUN_TARGET_POS + 6) { + int shell_x = x + 24 + (gun_pos - GUN_TARGET_POS) * 2; + int shell_y = y + 10 - (gun_pos - GUN_TARGET_POS); + + painter.fill_rectangle({shell_x, shell_y, 4, 2}, pp_colors[Yellow]); + painter.fill_rectangle({shell_x + 1, shell_y - 1, 2, 4}, pp_colors[Yellow]); + } +} + +void render_entities(Painter& painter) { + for (uint8_t i = 0; i < num_entities; i++) { + if (entities[i].state == STATE_INACTIVE) continue; + Coords transform = translate_into_view(entities[i].state == 5 ? entities[i].death_pos : entities[i].pos); + if (transform.y <= 0.1 || transform.y > MAX_RENDER_DEPTH) continue; + + int16_t sprite_x = HALF_WIDTH * (1.0 + transform.x / transform.y); + int16_t sprite_y = HALF_HEIGHT + view_height / transform.y; + uint8_t base_size = ENEMY_SIZE / fmax(0.1, transform.y); + + if (sprite_x < -base_size || sprite_x > SCREEN_WIDTH + base_size || sprite_y < 0 || sprite_y > RENDER_HEIGHT) continue; + + uint8_t size = base_size * 2; + int16_t half_size = size / 2; + int16_t x_start = sprite_x - half_size; + int16_t y_start = sprite_y - half_size; + + Color body_color = Color(180, 40, 20); + Color spine_color = Color(120, 20, 10); + Color eye_color = Color(255, 165, 0); + Color pupil_color = Color(255, 0, 0); + Color claw_color = Color(60, 60, 60); + Color teeth_color = Color(220, 220, 220); + Color blood_color = Color(150, 0, 0); + Color horn_color = Color(90, 30, 10); + + if (entities[i].state == 5) { + // Death animation - gibbed/flattened demon + uint8_t death_phase = entities[i].timer / 5; + if (death_phase > 3) death_phase = 3; + + if (death_phase == 0) { + // Initial death - falling apart + painter.fill_rectangle({x_start + size / 5, sprite_y, size * 3 / 5, size / 3}, body_color); + painter.fill_rectangle({x_start + size * 2 / 5, sprite_y - size / 6, size / 5, size / 4}, horn_color); + painter.fill_rectangle({x_start + size / 3, sprite_y + size / 8, size / 8, size / 6}, blood_color); + painter.fill_rectangle({x_start + size / 2, sprite_y + size / 6, size / 6, size / 8}, blood_color); + painter.fill_rectangle({x_start + size / 4, sprite_y + size / 4, size / 5, size / 10}, claw_color); + painter.fill_rectangle({x_start + size * 3 / 5, sprite_y + size / 5, size / 5, size / 10}, claw_color); + } else if (death_phase == 1) { + // More splattered + painter.fill_rectangle({x_start + size / 6, sprite_y, size * 2 / 3, size / 4}, body_color); + painter.fill_rectangle({x_start + size / 4, sprite_y + size / 8, size / 6, size / 6}, blood_color); + painter.fill_rectangle({x_start + size / 2, sprite_y + size / 10, size / 6, size / 8}, blood_color); + painter.fill_rectangle({x_start + size * 2 / 3, sprite_y + size / 12, size / 8, size / 8}, blood_color); + } else { + // Final gore puddle + painter.fill_rectangle({x_start + size / 8, sprite_y, size * 3 / 4, size / 5}, body_color); + painter.fill_rectangle({x_start + size / 6, sprite_y - size / 20, size * 2 / 3, size / 10}, blood_color); + painter.fill_rectangle({x_start + size / 4, sprite_y + size / 10, size / 5, size / 12}, blood_color); + painter.fill_rectangle({x_start + size / 2, sprite_y + size / 12, size / 4, size / 10}, blood_color); + } + } else { + // Body + painter.fill_rectangle({x_start + size / 3, y_start + size / 4, size / 3, size * 3 / 4}, body_color); + + // Spine/backbone + painter.fill_rectangle({x_start + size * 5 / 12, y_start + size / 6, size / 6, size / 2}, spine_color); + + // Head + painter.fill_rectangle({x_start + size * 3 / 8, y_start, size * 5 / 16, size / 3}, body_color); + + // Horns + painter.fill_rectangle({x_start + size / 4, y_start - size / 6, size / 8, size / 5}, horn_color); + painter.fill_rectangle({x_start + size * 5 / 8, y_start - size / 6, size / 8, size / 5}, horn_color); + + // Eyes + if (entities[i].state != 4) { + uint8_t eye_anim = (LPC_RTC->CTIME0 % 8 == 0) ? 1 : 0; + + painter.fill_rectangle({x_start + size * 5 / 12, y_start + size / 12, size / 6, size / 6 - eye_anim}, eye_color); + painter.fill_rectangle({x_start + size * 7 / 16, y_start + size / 8, size / 20, size / 20}, pupil_color); + + painter.fill_rectangle({x_start + size * 7 / 16, y_start + size / 12, size / 6, size / 6 - eye_anim}, eye_color); + painter.fill_rectangle({x_start + size * 17 / 32, y_start + size / 8, size / 20, size / 20}, pupil_color); + } else { + // Damaged eye + painter.fill_rectangle({x_start + size * 5 / 12, y_start + size / 12, size / 6, size / 6}, eye_color); + painter.fill_rectangle({x_start + size * 7 / 16, y_start + size / 8, size / 20, size / 20}, pupil_color); + + // Blood from damaged eye + painter.fill_rectangle({x_start + size * 7 / 16, y_start + size / 6, size / 10, size / 8}, blood_color); + painter.fill_rectangle({x_start + size / 2, y_start + size / 3, size / 12, size / 12}, blood_color); + } + + // Teeth/mouth + painter.fill_rectangle({x_start + size * 7 / 16, y_start + size * 5 / 16, size / 20, size / 16}, teeth_color); + painter.fill_rectangle({x_start + size / 2, y_start + size * 5 / 16, size / 20, size / 16}, teeth_color); + painter.fill_rectangle({x_start + size * 9 / 16, y_start + size * 5 / 16, size / 20, size / 16}, teeth_color); + + // Attacking state - claws extended + if (entities[i].state == 3) { + uint8_t claw_anim = (LPC_RTC->CTIME0 % 4) / 2; + + if (claw_anim == 0) { + // Claws forward + painter.fill_rectangle({x_start - size / 8, y_start + size * 5 / 12, size / 3, size / 6}, claw_color); + painter.fill_rectangle({x_start - size / 12, y_start + size / 2, size / 5, size / 4}, claw_color); + painter.fill_rectangle({x_start + size * 3 / 4, y_start + size * 5 / 12, size / 3, size / 6}, claw_color); + painter.fill_rectangle({x_start + size * 3 / 4, y_start + size / 2, size / 5, size / 4}, claw_color); + } else { + // Claws slashing + painter.fill_rectangle({x_start, y_start + size * 4 / 12, size / 4, size / 5}, claw_color); + painter.fill_rectangle({x_start + size / 12, y_start + size * 6 / 12, size / 5, size / 3}, claw_color); + painter.fill_rectangle({x_start + size * 3 / 4, y_start + size * 4 / 12, size / 4, size / 5}, claw_color); + painter.fill_rectangle({x_start + size * 2 / 3, y_start + size * 6 / 12, size / 5, size / 3}, claw_color); + } + } else { + // Normal claws + painter.fill_rectangle({x_start + size / 6, y_start + size / 2, size / 5, size / 5}, claw_color); + painter.fill_rectangle({x_start + size * 3 / 5, y_start + size / 2, size / 5, size / 5}, claw_color); + } + + // Legs animation + uint8_t leg_anim = (LPC_RTC->CTIME0 % 4) / 2; + if (entities[i].state == 0 && leg_anim == 0) { + // Walking animation frame 1 + painter.fill_rectangle({x_start + size / 4, y_start + size * 5 / 6, size / 6, size / 5}, body_color); + painter.fill_rectangle({x_start + size / 3, y_start + size * 11 / 12, size / 10, size / 10}, spine_color); + painter.fill_rectangle({x_start + size * 7 / 12, y_start + size * 3 / 4, size / 6, size / 4}, body_color); + painter.fill_rectangle({x_start + size * 2 / 3, y_start + size * 5 / 6, size / 10, size / 5}, spine_color); + } else { + // Walking animation frame 2 + painter.fill_rectangle({x_start + size / 4, y_start + size * 3 / 4, size / 6, size / 4}, body_color); + painter.fill_rectangle({x_start + size / 3, y_start + size * 5 / 6, size / 10, size / 5}, spine_color); + painter.fill_rectangle({x_start + size * 7 / 12, y_start + size * 5 / 6, size / 6, size / 5}, body_color); + painter.fill_rectangle({x_start + size * 2 / 3, y_start + size * 11 / 12, size / 10, size / 10}, spine_color); + } + + // Injury effects for damaged state + if (entities[i].state == 4) { + painter.fill_rectangle({x_start + size / 2, y_start + size / 3, size / 10, size / 8}, blood_color); + painter.fill_rectangle({x_start + size * 5 / 12, y_start + size * 7 / 12, size / 8, size / 8}, blood_color); + painter.fill_rectangle({x_start + size * 3 / 5, y_start + size / 2, size / 10, size / 10}, blood_color); + } + } + } +} + +void render_map(Painter& painter, bool full_clear, int16_t x_start = 0, int16_t x_end = SCREEN_WIDTH) { + if (full_clear) { + painter.fill_rectangle({0, 0, SCREEN_WIDTH, RENDER_HEIGHT / 2}, Color(64, 64, 128)); + painter.fill_rectangle({0, RENDER_HEIGHT / 2, SCREEN_WIDTH, RENDER_HEIGHT / 2}, Color(32, 32, 32)); + } + + for (uint8_t x = x_start; x < x_end; x += RES_DIVIDER) { + double camera_x = 2 * (double)x / SCREEN_WIDTH - 1; + double ray_x = player.dir.x + player.plane.x * camera_x; + double ray_y = player.dir.y + player.plane.y * camera_x; + + if (fabs(ray_x) < 0.00001) ray_x = 0.00001; + if (fabs(ray_y) < 0.00001) ray_y = 0.00001; + + uint8_t map_x = (uint8_t)player.pos.x; + uint8_t map_y = (uint8_t)player.pos.y; + double delta_x = fabs(1 / ray_x); + double delta_y = fabs(1 / ray_y); + + int8_t step_x, step_y; + double side_x, side_y; + + if (ray_x < 0) { + step_x = -1; + side_x = (player.pos.x - map_x) * delta_x; + } else { + step_x = 1; + side_x = (map_x + 1.0 - player.pos.x) * delta_x; + } + if (ray_y < 0) { + step_y = -1; + side_y = (player.pos.y - map_y) * delta_y; + } else { + step_y = 1; + side_y = (map_y + 1.0 - player.pos.y) * delta_y; + } + + uint8_t depth = 0; + bool hit = false; + bool side = false; + double perpWallDist = 0.0; + + bool close_wall_handled = false; + uint8_t current_block = get_block_at(map_x, map_y); + if (current_block == 0xF) { + hit = true; + perpWallDist = 0.1; + close_wall_handled = true; + } else { + uint8_t check_blocks[4][3] = { + {(uint8_t)(map_x + 1), map_y, 0}, + {(uint8_t)(map_x - 1), map_y, 0}, + {map_x, (uint8_t)(map_y + 1), 1}, + {map_x, (uint8_t)(map_y - 1), 1}}; + + for (int i = 0; i < 4; i++) { + if (get_block_at(check_blocks[i][0], check_blocks[i][1]) == 0xF) { + double dist_to_wall; + if (check_blocks[i][2] == 0) { + dist_to_wall = (check_blocks[i][0] > map_x) ? check_blocks[i][0] - player.pos.x : player.pos.x - check_blocks[i][0]; + } else { + dist_to_wall = (check_blocks[i][1] > map_y) ? check_blocks[i][1] - player.pos.y : player.pos.y - check_blocks[i][1]; + } + + if (dist_to_wall < 0.2) { + double dot_product; + if (check_blocks[i][2] == 0) { + double wall_normal_x = (check_blocks[i][0] > map_x) ? -1.0 : 1.0; + dot_product = ray_x * wall_normal_x; + } else { + double wall_normal_y = (check_blocks[i][1] > map_y) ? -1.0 : 1.0; + dot_product = ray_y * wall_normal_y; + } + + if (dot_product < 0) { + hit = true; + side = (check_blocks[i][2] == 1); + perpWallDist = fmax(0.1, dist_to_wall); + close_wall_handled = true; + break; + } + } + } + } + } + + if (!close_wall_handled) { + while (!hit && depth < MAX_RENDER_DEPTH) { + if (side_x < side_y) { + side_x += delta_x; + map_x += step_x; + side = false; + } else { + side_y += delta_y; + map_y += step_y; + side = true; + } + + uint8_t block = get_block_at(map_x, map_y); + if (block == 0xF) { + hit = true; + if (side == false) { + perpWallDist = (map_x - player.pos.x + (1 - step_x) / 2) / ray_x; + } else { + perpWallDist = (map_y - player.pos.y + (1 - step_y) / 2) / ray_y; + } + } + depth++; + } + } + + if (perpWallDist <= 0) perpWallDist = 0.1; + + int start_y = 0; + int end_y = RENDER_HEIGHT; + + if (hit) { + uint8_t line_height = fmin(255, RENDER_HEIGHT / perpWallDist); + + start_y = view_height / perpWallDist - line_height / 2 + RENDER_HEIGHT / 2; + end_y = view_height / perpWallDist + line_height / 2 + RENDER_HEIGHT / 2; + + if (start_y < 0) start_y = 0; + if (end_y > RENDER_HEIGHT) end_y = RENDER_HEIGHT; + + uint8_t brightness = fmax(64, 255 - (perpWallDist * 20)); + uint8_t noise = ((map_x * 17 + map_y * 23) & 0x0F); + + Color wall_color; + if (!side) { + wall_color = Color(brightness / 4, brightness - noise, brightness / 4); + } else { + wall_color = Color(brightness / 5, (brightness - noise) * 0.8, brightness / 5); + } + + painter.fill_rectangle({x, start_y, RES_DIVIDER, end_y - start_y}, wall_color); + } + + if (!full_clear && hit) { + if (start_y > 0) { + painter.fill_rectangle({x, 0, RES_DIVIDER, start_y}, Color(64, 64, 128)); + } + if (end_y < RENDER_HEIGHT) { + painter.fill_rectangle({x, end_y, RES_DIVIDER, RENDER_HEIGHT - end_y}, Color(32, 32, 32)); + } + } + } +} + +DoomView::DoomView(NavigationView& nav) + : nav_{nav} { + SCREEN_WIDTH = screen_width; + SCREEN_HEIGHT = screen_height; + RENDER_HEIGHT = screen_height - 40; + HALF_WIDTH = screen_width / 2; + HALF_HEIGHT = RENDER_HEIGHT / 2; + add_children({&dummy}); + game_timer.attach(&game_timer_check, 1.0 / 60.0); +} + +void DoomView::on_show() { + dummy.focus(); +} + +void DoomView::paint(Painter& painter) { + if (!initialized) { + initialized = true; + std::srand(LPC_RTC->CTIME0); + scene = 0; + up = down = left = right = fired = false; + jogging = view_height = 0; + gun_pos = GUN_TARGET_POS; + gun_fired = false; + num_entities = 0; + kills = 0; + prev_gun_x = 0; + prev_gun_y = 0; + painter.fill_rectangle({0, 0, SCREEN_WIDTH, SCREEN_HEIGHT}, pp_colors[COLOR_BACKGROUND]); + needs_redraw = true; + needs_gun_redraw = false; + } + + if (scene == 0) { + auto style_yellow = *ui::Theme::getInstance()->fg_yellow; + painter.draw_string({50, 40}, style_yellow, "* * * DOOM * * *"); + auto style_green = *ui::Theme::getInstance()->fg_green; + painter.draw_string({15, 240}, style_green, "** PRESS SELECT TO START **"); + } else if (scene == 1) { + if (needs_redraw || (needs_gun_redraw && jogging > 0)) { + bool full_clear = (player.velocity == 0 || !prev_velocity_moving); + render_map(painter, full_clear); + render_entities(painter); + render_gun(painter, gun_pos, jogging); + painter.fill_rectangle({0, RENDER_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT - RENDER_HEIGHT}, pp_colors[COLOR_BACKGROUND]); + auto style_yellow = *ui::Theme::getInstance()->fg_yellow; + auto style_red = *ui::Theme::getInstance()->fg_red; + auto style_blue = *ui::Theme::getInstance()->fg_blue; + painter.draw_string({5, RENDER_HEIGHT + 5}, style_yellow, "Health: " + std::to_string(player.health)); + painter.draw_string({100, RENDER_HEIGHT + 5}, style_red, "Kills: " + std::to_string(kills)); + painter.draw_string({170, RENDER_HEIGHT + 5}, style_blue, "Ammo: " + std::to_string(player.ammo)); + prev_velocity_moving = (player.velocity != 0); + needs_redraw = false; + needs_gun_redraw = false; + } else if (needs_gun_redraw) { + int current_x = HALF_WIDTH - GUN_WIDTH / 2 + sin(LPC_RTC->CTIME0 * JOGGING_SPEED) * 10 * jogging; + int current_y = RENDER_HEIGHT - gun_pos - 29 + fabs(cos(LPC_RTC->CTIME0 * JOGGING_SPEED)) * 8 * jogging; + int flash_height = (gun_pos > GUN_TARGET_POS) ? (gun_pos - GUN_TARGET_POS) * 2 + 10 : 0; + int flash_width = (gun_pos > GUN_TARGET_POS) ? GUN_WIDTH + (gun_pos - GUN_TARGET_POS) * 2 : GUN_WIDTH; + int min_x = fmin(current_x, prev_gun_x) - 10; + int min_y = fmin(current_y, prev_gun_y) - flash_height - 10; + int max_x = fmax(current_x, prev_gun_x) + flash_width + 10; + int max_y = fmax(current_y, prev_gun_y) + GUN_HEIGHT + 10; + min_x = fmax(0, min_x); + min_y = fmax(0, min_y); + max_x = fmin(SCREEN_WIDTH, max_x); + max_y = fmin(RENDER_HEIGHT, max_y); + render_map(painter, false, min_x, max_x); + render_entities(painter); + render_gun(painter, gun_pos, jogging); + painter.fill_rectangle({0, RENDER_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT - RENDER_HEIGHT}, pp_colors[COLOR_BACKGROUND]); + auto style_yellow = *ui::Theme::getInstance()->fg_yellow; + auto style_red = *ui::Theme::getInstance()->fg_red; + auto style_blue = *ui::Theme::getInstance()->fg_blue; + painter.draw_string({5, RENDER_HEIGHT + 5}, style_yellow, "Health: " + std::to_string(player.health)); + painter.draw_string({100, RENDER_HEIGHT + 5}, style_red, "Kills: " + std::to_string(kills)); + painter.draw_string({170, RENDER_HEIGHT + 5}, style_blue, "Ammo: " + std::to_string(player.ammo)); + needs_gun_redraw = false; + } + } +} + +void DoomView::frame_sync() { + if (scene == 1) { + update_game(); + if (needs_redraw || needs_gun_redraw) set_dirty(); + } +} + +bool DoomView::on_key(const KeyEvent key) { + if (key == KeyEvent::Select && scene == 0) { + scene = 1; + initialize_level(); + needs_redraw = true; + set_dirty(); + return true; + } + if (scene == 1) { + if (player.health > 0) { + if (key == KeyEvent::Up) { + up = true; + needs_redraw = true; + set_dirty(); + return true; + } + if (key == KeyEvent::Down) { + down = true; + needs_redraw = true; + set_dirty(); + return true; + } + if (key == KeyEvent::Left) { + left = true; + needs_redraw = true; + set_dirty(); + return true; + } + if (key == KeyEvent::Right) { + right = true; + needs_redraw = true; + set_dirty(); + return true; + } + if (key == KeyEvent::Select) { + fired = true; + set_dirty(); + return true; + } + } else if (key == KeyEvent::Select) { + scene = 0; + initialized = false; + needs_redraw = true; + set_dirty(); + return true; + } + } + return false; +} + +} // namespace ui::external_app::doom \ No newline at end of file diff --git a/firmware/application/external/doom/ui_doom.hpp b/firmware/application/external/doom/ui_doom.hpp new file mode 100644 index 000000000..6fa4fcc9c --- /dev/null +++ b/firmware/application/external/doom/ui_doom.hpp @@ -0,0 +1,84 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +#ifndef __UI_DOOM_H__ +#define __UI_DOOM_H__ + +#include "ui_widget.hpp" +#include "ui_navigation.hpp" +#include "message.hpp" + +namespace ui::external_app::doom { +using Callback = void (*)(); + +class Ticker { + public: + Ticker() {} + void attach(Callback func, double delay_sec) { + game_update_callback = func; + game_update_timeout = delay_sec * 60; + } + void detach() { + game_update_callback = nullptr; + } + + private: + Callback game_update_callback = nullptr; + uint32_t game_update_timeout = 0; +}; + +extern ui::Painter painter; + +enum { + White, + Blue, + Yellow, + Purple, + Green, + Red, + Maroon, + Orange, + Black, +}; + +static const Color pp_colors[] = { + Color::white(), + Color::blue(), + Color::yellow(), + Color::purple(), + Color::green(), + Color::red(), + Color::magenta(), + Color::orange(), + Color::black(), +}; + +class DoomView : public View { + public: + DoomView(NavigationView& nav); + void on_show() override; + std::string title() const override { return "Doom"; } + void focus() override { dummy.focus(); } + void paint(Painter& painter) override; + void frame_sync(); + bool on_key(const KeyEvent key) override; + + private: + NavigationView& nav_; + Button dummy{{screen_width, 0, 0, 0}, ""}; + bool initialized{false}; + bool prev_velocity_moving{false}; + MessageHandlerRegistration message_handler_frame_sync{ + Message::ID::DisplayFrameSync, + [this](const Message* const) { + this->frame_sync(); + }}; +}; +} // namespace ui::external_app::doom + +#endif /*__UI_DOOM_H__*/ \ No newline at end of file diff --git a/firmware/application/external/external.cmake b/firmware/application/external/external.cmake index 03fbffad0..8f8385f6a 100644 --- a/firmware/application/external/external.cmake +++ b/firmware/application/external/external.cmake @@ -1,9 +1,5 @@ set(EXTCPPSRC - #tetris - external/tetris/main.cpp - external/tetris/ui_tetris.cpp - #afsk_rx external/afsk_rx/main.cpp external/afsk_rx/ui_afsk_rx.cpp @@ -59,6 +55,10 @@ set(EXTCPPSRC external/keyfob/ui_keyfob.cpp external/keyfob/ui_keyfob.hpp + #tetris + external/tetris/main.cpp + external/tetris/ui_tetris.cpp + #extsensors external/extsensors/main.cpp external/extsensors/ui_extsensors.cpp @@ -107,9 +107,19 @@ set(EXTCPPSRC external/acars_rx/main.cpp external/acars_rx/acars_app.cpp + #wefax_rx + external/wefax_rx/main.cpp + external/wefax_rx/ui_wefax_rx.cpp + + #noaaapt_rx + external/noaaapt_rx/main.cpp + external/noaaapt_rx/ui_noaaapt_rx.cpp + + + #shoppingcart_lock external/shoppingcart_lock/main.cpp - external/shoppingcart_lock/shoppingcart_lock.cpp + external/shoppingcart_lock/shoppingcart_lock.cpp #ookbrute external/ookbrute/main.cpp @@ -121,8 +131,8 @@ set(EXTCPPSRC #cvs_spam external/cvs_spam/main.cpp - external/cvs_spam/cvs_spam.cpp - + external/cvs_spam/cvs_spam.cpp + #flippertx external/flippertx/main.cpp external/flippertx/ui_flippertx.cpp @@ -134,18 +144,94 @@ set(EXTCPPSRC #mcu_temperature external/mcu_temperature/main.cpp external/mcu_temperature/mcu_temperature.cpp - + #fmradio external/fmradio/main.cpp external/fmradio/ui_fmradio.cpp - + #tuner external/tuner/main.cpp external/tuner/ui_tuner.cpp - + #metronome external/metronome/main.cpp external/metronome/ui_metronome.cpp + + #app_manager + external/app_manager/main.cpp + external/app_manager/ui_app_manager.cpp + + #hopper + external/hopper/main.cpp + external/hopper/ui_hopper.cpp + + # whip calculator + external/antenna_length/main.cpp + external/antenna_length/ui_whipcalc.cpp + + # wav viewer + external/wav_view/main.cpp + external/wav_view/ui_view_wav.cpp + + # wipe sdcard + external/sd_wipe/main.cpp + external/sd_wipe/ui_sd_wipe.cpp + + # playlist editor + external/playlist_editor/main.cpp + external/playlist_editor/ui_playlist_editor.cpp + + #snake + external/snake/main.cpp + external/snake/ui_snake.cpp + + #stopwatch + external/stopwatch/main.cpp + external/stopwatch/ui_stopwatch.cpp + + #breakout + external/breakout/main.cpp + external/breakout/ui_breakout.cpp + + #dinogame + external/dinogame/main.cpp + external/dinogame/ui_dinogame.cpp + + #doom + external/doom/main.cpp + external/doom/ui_doom.cpp + + #debug_pmem + external/debug_pmem/main.cpp + external/debug_pmem/ui_debug_pmem.cpp + + #scanner + external/scanner/main.cpp + external/scanner/ui_scanner.cpp + + #level + external/level/main.cpp + external/level/ui_level.cpp + + #gfxEQ + external/gfxeq/main.cpp + external/gfxeq/ui_gfxeq.cpp + + #detector_rx + external/detector_rx/main.cpp + external/detector_rx/ui_detector_rx.cpp + + #space_invaders + external/spaceinv/main.cpp + external/spaceinv/ui_spaceinv.cpp + + #blackjack + external/blackjack/main.cpp + external/blackjack/ui_blackjack.cpp + + #battleship + external/battleship/main.cpp + external/battleship/ui_battleship.cpp ) set(EXTAPPLIST @@ -177,6 +263,8 @@ set(EXTAPPLIST #acars_rx ookbrute ook_editor + wefax_rx + noaaapt_rx shoppingcart_lock flippertx remote @@ -184,4 +272,23 @@ set(EXTAPPLIST fmradio tuner metronome + app_manager + hopper + antenna_length + view_wav + sd_wipe + playlist_editor + snake + stopwatch + breakout + dinogame + doom + debug_pmem + scanner + level + gfxeq + detector_rx + spaceinv + blackjack + battleship ) diff --git a/firmware/application/external/external.ld b/firmware/application/external/external.ld index 51a24ea56..1bc6c4be0 100644 --- a/firmware/application/external/external.ld +++ b/firmware/application/external/external.ld @@ -26,38 +26,59 @@ MEMORY ram_external_app_afsk_rx (rwx) : org = 0xADB10000, len = 32k ram_external_app_calculator (rwx) : org = 0xADB20000, len = 32k ram_external_app_font_viewer(rwx) : org = 0xADB30000, len = 32k - ram_external_app_blespam(rwx) : org = 0xADB40000, len = 32k - ram_external_app_analogtv(rwx) : org = 0xADB50000, len = 32k - ram_external_app_nrf_rx(rwx) : org = 0xADB60000, len = 32k - ram_external_app_coasterp(rwx) : org = 0xADB70000, len = 32k - ram_external_app_lge(rwx) : org = 0xADB80000, len = 32k - ram_external_app_lcr(rwx) : org = 0xADB90000, len = 32k - ram_external_app_jammer(rwx) : org = 0xADBA0000, len = 32k - ram_external_app_gpssim(rwx) : org = 0xADBB0000, len = 32k - ram_external_app_spainter(rwx) : org = 0xADBC0000, len = 32k - ram_external_app_keyfob(rwx) : org = 0xADBD0000, len = 32k - ram_external_app_tetris(rwx) : org = 0xADBE0000, len = 32k - ram_external_app_extsensors(rwx) : org = 0xADBF0000, len = 32k - ram_external_app_foxhunt_rx(rwx) : org = 0xADC00000, len = 32k - ram_external_app_audio_test(rwx) : org = 0xADC10000, len = 32k + ram_external_app_blespam (rwx) : org = 0xADB40000, len = 32k + ram_external_app_analogtv (rwx) : org = 0xADB50000, len = 32k + ram_external_app_nrf_rx (rwx) : org = 0xADB60000, len = 32k + ram_external_app_coasterp (rwx) : org = 0xADB70000, len = 32k + ram_external_app_lge (rwx) : org = 0xADB80000, len = 32k + ram_external_app_lcr (rwx) : org = 0xADB90000, len = 32k + ram_external_app_jammer (rwx) : org = 0xADBA0000, len = 32k + ram_external_app_gpssim (rwx) : org = 0xADBB0000, len = 32k + ram_external_app_spainter (rwx) : org = 0xADBC0000, len = 32k + ram_external_app_keyfob (rwx) : org = 0xADBD0000, len = 32k + ram_external_app_tetris (rwx) : org = 0xADBE0000, len = 32k + ram_external_app_extsensors (rwx) : org = 0xADBF0000, len = 32k + ram_external_app_foxhunt_rx (rwx) : org = 0xADC00000, len = 32k + ram_external_app_audio_test (rwx) : org = 0xADC10000, len = 32k ram_external_app_wardrivemap(rwx) : org = 0xADC20000, len = 32k - ram_external_app_tpmsrx(rwx) : org = 0xADC30000, len = 32k - ram_external_app_protoview(rwx) : org = 0xADC40000, len = 32k - ram_external_app_adsbtx(rwx) : org = 0xADC50000, len = 32k - ram_external_app_morse_tx(rwx) : org = 0xADC60000, len = 32k - ram_external_app_sstvtx(rwx) : org = 0xADC70000, len = 32k - ram_external_app_random_password(rwx) : org = 0xADC80000, len = 32k - ram_external_app_acars_rx(rwx) : org = 0xADC90000, len = 32k - ram_external_app_shoppingcart_lock(rwx) : org = 0xADCA0000, len = 32k - ram_external_app_cvs_spam(rwx) : org = 0xADCB0000, len = 32k - ram_external_app_ookbrute(rwx) : org = 0xADCC0000, len = 32k - ram_external_app_flippertx(rwx) : org = 0xADCD0000, len = 32k - ram_external_app_ook_editor(rwx) : org = 0xADCE0000, len = 32k - ram_external_app_remote(rwx) : org = 0xADCF0000, len = 32k - ram_external_app_mcu_temperature(rwx) : org = 0xADD00000, len = 32k - ram_external_app_fmradio(rwx) : org = 0xADD10000, len = 32k - ram_external_app_tuner(rwx) : org = 0xADD20000, len = 32k - ram_external_app_metronome(rwx) : org = 0xADD30000, len = 32k + ram_external_app_tpmsrx (rwx) : org = 0xADC30000, len = 32k + ram_external_app_protoview (rwx) : org = 0xADC40000, len = 32k + ram_external_app_adsbtx (rwx) : org = 0xADC50000, len = 32k + ram_external_app_morse_tx (rwx) : org = 0xADC60000, len = 32k + ram_external_app_sstvtx (rwx) : org = 0xADC70000, len = 32k + ram_external_app_random_password(rwx): org = 0xADC80000, len = 32k + ram_external_app_acars_rx (rwx) : org = 0xADC90000, len = 32k + ram_external_app_shoppingcart_lock(rwx): org = 0xADCA0000, len = 32k + ram_external_app_cvs_spam (rwx) : org = 0xADCB0000, len = 32k + ram_external_app_ookbrute (rwx) : org = 0xADCC0000, len = 32k + ram_external_app_flippertx (rwx) : org = 0xADCD0000, len = 32k + ram_external_app_ook_editor (rwx) : org = 0xADCE0000, len = 32k + ram_external_app_remote (rwx) : org = 0xADCF0000, len = 32k + ram_external_app_mcu_temperature(rwx): org = 0xADD00000, len = 32k + ram_external_app_fmradio (rwx) : org = 0xADD10000, len = 32k + ram_external_app_tuner (rwx) : org = 0xADD20000, len = 32k + ram_external_app_metronome (rwx) : org = 0xADD30000, len = 32k + ram_external_app_app_manager(rwx) : org = 0xADD40000, len = 32k + ram_external_app_hopper (rwx) : org = 0xADD50000, len = 32k + ram_external_app_antenna_length(rwx): org = 0xADD60000, len = 32k + ram_external_app_view_wav (rwx) : org = 0xADD70000, len = 32k + ram_external_app_sd_wipe (rwx) : org = 0xADD80000, len = 32k + ram_external_app_playlist_editor(rwx): org = 0xADD90000, len = 32k + ram_external_app_snake (rwx) : org = 0xADDA0000, len = 32k + ram_external_app_stopwatch (rwx) : org = 0xADDB0000, len = 32k + ram_external_app_wefax_rx (rwx) : org = 0xADDC0000, len = 32k + ram_external_app_breakout (rwx) : org = 0xADDD0000, len = 32k + ram_external_app_doom (rwx) : org = 0xADDE0000, len = 32k + ram_external_app_debug_pmem (rwx) : org = 0xADDF0000, len = 32k + ram_external_app_scanner (rwx) : org = 0xADE00000, len = 32k + ram_external_app_level (rwx) : org = 0xADE10000, len = 32k + ram_external_app_gfxeq (rwx) : org = 0xADE20000, len = 32k + ram_external_app_noaaapt_rx (rwx) : org = 0xADE30000, len = 32k + ram_external_app_detector_rx (rwx) : org = 0xADE40000, len = 32k + ram_external_app_dinogame (rwx) : org = 0xADE50000, len = 32k + ram_external_app_spaceinv (rwx) : org = 0xADE60000, len = 32k + ram_external_app_blackjack (rwx) : org = 0xADE70000, len = 32k + ram_external_app_battleship (rwx) : org = 0xADE80000, len = 32k } SECTIONS @@ -188,7 +209,6 @@ SECTIONS *(*ui*external_app*adsbtx*); } > ram_external_app_adsbtx - .external_app_morse_tx : ALIGN(4) SUBALIGN(4) { KEEP(*(.external_app.app_morse_tx.application_information)); @@ -254,13 +274,13 @@ SECTIONS KEEP(*(.external_app.app_mcu_temperature.application_information)); *(*ui*external_app*mcu_temperature*); } > ram_external_app_mcu_temperature - + .external_app_fmradio : ALIGN(4) SUBALIGN(4) { KEEP(*(.external_app.app_fmradio.application_information)); *(*ui*external_app*fmradio*); } > ram_external_app_fmradio - + .external_app_tuner : ALIGN(4) SUBALIGN(4) { KEEP(*(.external_app.app_tuner.application_information)); @@ -272,4 +292,132 @@ SECTIONS KEEP(*(.external_app.app_metronome.application_information)); *(*ui*external_app*metronome*); } > ram_external_app_metronome + + .external_app_app_manager : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_app_manager.application_information)); + *(*ui*external_app*app_manager*); + } > ram_external_app_app_manager + + .external_app_hopper : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_hopper.application_information)); + *(*ui*external_app*hopper*); + } > ram_external_app_hopper + + .external_app_antenna_length : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_antenna_length.application_information)); + *(*ui*external_app*antenna_length*); + } > ram_external_app_antenna_length + + .external_app_view_wav : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_view_wav.application_information)); + *(*ui*external_app*view_wav*); + } > ram_external_app_view_wav + + .external_app_sd_wipe : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_sd_wipe.application_information)); + *(*ui*external_app*sd_wipe*); + } > ram_external_app_sd_wipe + + .external_app_playlist_editor : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_playlist_editor.application_information)); + *(*ui*external_app*playlist_editor*); + } > ram_external_app_playlist_editor + + .external_app_snake : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_snake.application_information)); + *(*ui*external_app*snake*); + } > ram_external_app_snake + + .external_app_stopwatch : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_stopwatch.application_information)); + *(*ui*external_app*stopwatch*); + } > ram_external_app_stopwatch + + .external_app_wefax_rx : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_wefax_rx.application_information)); + *(*ui*external_app*wefax_rx*); + } > ram_external_app_wefax_rx + + .external_app_noaaapt_rx : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_noaaapt_rx.application_information)); + *(*ui*external_app*noaaapt_rx*); + } > ram_external_app_noaaapt_rx + + .external_app_breakout : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_breakout.application_information)); + *(*ui*external_app*breakout*); + } > ram_external_app_breakout + + .external_app_doom : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_doom.application_information)); + *(*ui*external_app*doom*); + } > ram_external_app_doom + + .external_app_debug_pmem : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_debug_pmem.application_information)); + *(*ui*external_app*debug_pmem*); + } > ram_external_app_debug_pmem + + .external_app_scanner : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_scanner.application_information)); + *(*ui*external_app*scanner*); + } > ram_external_app_scanner + + .external_app_level : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_level.application_information)); + *(*ui*external_app*level*); + } > ram_external_app_level + + .external_app_gfxeq : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_gfxeq.application_information)); + *(*ui*external_app*gfxeq*); + } > ram_external_app_gfxeq + + .external_app_detector_rx : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_detector_rx.application_information)); + *(*ui*external_app*detector_rx*); + } > ram_external_app_detector_rx + + .external_app_dinogame : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_dinogame.application_information)); + *(*ui*external_app*dinogame*); + } > ram_external_app_dinogame + + .external_app_spaceinv : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_spaceinv.application_information)); + *(*ui*external_app*spaceinv*); + } > ram_external_app_spaceinv + + .external_app_blackjack : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_blackjack.application_information)); + *(*ui*external_app*blackjack*); + } > ram_external_app_blackjack + + .external_app_battleship : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.external_app.app_battleship.application_information)); + *(*ui*external_app*battleship*); + } > ram_external_app_battleship + } + diff --git a/firmware/application/external/extsensors/ui_extsensors.hpp b/firmware/application/external/extsensors/ui_extsensors.hpp index 555e576b3..f222f8a8e 100644 --- a/firmware/application/external/extsensors/ui_extsensors.hpp +++ b/firmware/application/external/extsensors/ui_extsensors.hpp @@ -60,7 +60,7 @@ class ExtSensorsView : public View { {{0 * 8, 5 * 16}, "ORI:", Theme::getInstance()->fg_light->foreground}, {{0 * 8, 7 * 16}, "ENV:", Theme::getInstance()->fg_light->foreground}}; - Text text_info{{0 * 8, 0 * 8, 30 * 8, 16 * 1}, "Connect a compatible module..."}; + Text text_info{{0 * 8, 0 * 8, screen_width, 16 * 1}, "Connect a compatible module..."}; Text text_gps{{5 * 8, 3 * 16, 24 * 8, 16}, "-"}; Text text_orientation{{5 * 8, 5 * 16, 24 * 8, 16}, "-"}; Text text_envl1{{5 * 8, 7 * 16, 24 * 8, 16}, "-"}; diff --git a/firmware/application/external/flippertx/ui_flippertx.hpp b/firmware/application/external/flippertx/ui_flippertx.hpp index a1e058779..b28eca3cc 100644 --- a/firmware/application/external/flippertx/ui_flippertx.hpp +++ b/firmware/application/external/flippertx/ui_flippertx.hpp @@ -89,8 +89,6 @@ class FlipperTxView : public View { std::unique_ptr replay_thread{}; Optional submeta{}; - const std::filesystem::path subghz_dir = u"subghz"; - MessageHandlerRegistration message_handler_tx_progress{ Message::ID::TXProgress, [this](const Message* const p) { diff --git a/firmware/application/external/fmradio/main.cpp b/firmware/application/external/fmradio/main.cpp index 040fbe8c5..8f2f2c98f 100644 --- a/firmware/application/external/fmradio/main.cpp +++ b/firmware/application/external/fmradio/main.cpp @@ -38,7 +38,7 @@ __attribute__((section(".external_app.app_fmradio.application_information"), use /*.header_version = */ CURRENT_HEADER_VERSION, /*.app_version = */ VERSION_MD5, - /*.app_name = */ "FM Radio", + /*.app_name = */ "Radio", /*.bitmap_data = */ { 0x00, 0x00, diff --git a/firmware/application/external/fmradio/ui_fmradio.cpp b/firmware/application/external/fmradio/ui_fmradio.cpp index ece1d2119..73927a89e 100644 --- a/firmware/application/external/fmradio/ui_fmradio.cpp +++ b/firmware/application/external/fmradio/ui_fmradio.cpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2024 HTotoo + * Copyright (C) 2025 RocketGod * * This file is part of PortaPack. * @@ -26,6 +27,7 @@ #include "baseband_api.hpp" #include "string_format.hpp" #include "portapack_persistent_memory.hpp" +#include "oversample.hpp" using namespace portapack; using namespace modems; @@ -33,20 +35,118 @@ using namespace ui; namespace ui::external_app::fmradio { +#include "external/ui_grapheq.cpi" + void FmRadioView::focus() { field_frequency.focus(); } +void FmRadioView::show_hide_gfx(bool show) { + gr.hidden(!show); + gr.set_paused(!show); + waveform.set_paused(show); + btn_fav_0.hidden(show); + btn_fav_1.hidden(show); + btn_fav_2.hidden(show); + btn_fav_3.hidden(show); + btn_fav_4.hidden(show); + btn_fav_5.hidden(show); + btn_fav_6.hidden(show); + btn_fav_7.hidden(show); + btn_fav_8.hidden(show); + btn_fav_9.hidden(show); + txt_save_help.hidden(show); + btn_fav_save.hidden(show); + field_bw.hidden(show); + field_modulation.hidden(show); + text_mode_label.hidden(show); + set_dirty(); +} + +void FmRadioView::change_mode(int32_t mod) { + field_bw.on_change = [this](size_t n, OptionsField::value_t) { (void)n; }; + + audio::output::stop(); + receiver_model.disable(); + baseband::shutdown(); + + audio_spectrum_update = false; // Reset spectrum update flag + std::fill(audio_spectrum, audio_spectrum + 128, 0); // Clear spectrum buffer + waveform.set_dirty(); + receiver_mode = static_cast(mod); + bool is_ssb = (mod == static_cast(ReceiverModel::Mode::AMAudio) && + (field_modulation.selected_index() == 3 || field_modulation.selected_index() == 4)); + + switch (mod) { + case static_cast(ReceiverModel::Mode::AMAudio): + audio_sampling_rate = audio::Rate::Hz_24000; // Increased to 24 kHz for better AM/SSB audio + freqman_set_bandwidth_option(0, field_bw); // AM_MODULATION + baseband::run_image(portapack::spi_flash::image_tag_am_audio); + receiver_mode = ReceiverModel::Mode::AMAudio; + field_bw.set_by_value(0); // DSB default + receiver_model.set_modulation(receiver_mode); + if (is_ssb) { + receiver_model.set_am_configuration(field_modulation.selected_index() == 3 ? 1 : 2); // 1=USB, 2=LSB + } else { + receiver_model.set_am_configuration(0); // DSB + } + field_bw.on_change = [this](size_t index, OptionsField::value_t n) { + radio_bw = index; + receiver_model.set_am_configuration(n); + }; + show_hide_gfx(false); + break; + case static_cast(ReceiverModel::Mode::NarrowbandFMAudio): + audio_sampling_rate = audio::Rate::Hz_24000; + freqman_set_bandwidth_option(1, field_bw); // NFM_MODULATION + baseband::run_image(portapack::spi_flash::image_tag_nfm_audio); + receiver_mode = ReceiverModel::Mode::NarrowbandFMAudio; + field_bw.set_by_value(2); // 16k default + receiver_model.set_nbfm_configuration(field_bw.selected_index_value()); + field_bw.on_change = [this](size_t index, OptionsField::value_t n) { + radio_bw = index; + receiver_model.set_nbfm_configuration(n); + }; + show_hide_gfx(false); + break; + case static_cast(ReceiverModel::Mode::WidebandFMAudio): + audio_sampling_rate = audio::Rate::Hz_48000; + freqman_set_bandwidth_option(2, field_bw); // WFM_MODULATION + baseband::run_image(portapack::spi_flash::image_tag_wfm_audio); + receiver_mode = ReceiverModel::Mode::WidebandFMAudio; + field_bw.set_by_value(0); // 200k default + receiver_model.set_wfm_configuration(field_bw.selected_index_value()); + field_bw.on_change = [this](size_t index, OptionsField::value_t n) { + radio_bw = index; + receiver_model.set_wfm_configuration(n); + }; + break; + default: + break; + } + + receiver_model.set_modulation(receiver_mode); + + receiver_model.set_sampling_rate(3072000); + receiver_model.set_baseband_bandwidth(1750000); + audio::set_rate(audio_sampling_rate); + audio::output::start(); + receiver_model.set_headphone_volume(receiver_model.headphone_volume()); // WM8731 hack + receiver_model.enable(); +} + FmRadioView::FmRadioView(NavigationView& nav) : nav_{nav} { baseband::run_image(portapack::spi_flash::image_tag_wfm_audio); - add_children({&rssi, - &field_rf_amp, + add_children({&field_rf_amp, &field_lna, &field_vga, &field_volume, &field_frequency, + &field_bw, + &text_mode_label, + &field_modulation, &btn_fav_save, &txt_save_help, &btn_fav_0, @@ -60,12 +160,16 @@ FmRadioView::FmRadioView(NavigationView& nav) &btn_fav_8, &btn_fav_9, &audio, - &waveform}); + &waveform, + &rssi, + &gr}); + txt_save_help.set_focusable(false); txt_save_help.visible(false); for (uint8_t i = 0; i < 12; ++i) { - if (freq_fav_list[i] == 0) { - freq_fav_list[i] = 87000000; + if (freq_fav_list[i].frequency == 0) { + freq_fav_list[i].frequency = 87000000; + freq_fav_list[i].modulation = static_cast(ReceiverModel::Mode::WidebandFMAudio); } } @@ -73,42 +177,20 @@ FmRadioView::FmRadioView(NavigationView& nav) field_frequency.set_value(87000000); } - receiver_model.set_modulation(ReceiverModel::Mode::WidebandFMAudio); - field_frequency.set_step(25000); - receiver_model.enable(); - audio::output::start(); + change_mode(static_cast(ReceiverModel::Mode::WidebandFMAudio)); + field_modulation.set_by_value(static_cast(ReceiverModel::Mode::WidebandFMAudio)); - btn_fav_0.on_select = [this](Button&) { - on_btn_clicked(0); - }; - btn_fav_1.on_select = [this](Button&) { - on_btn_clicked(1); - }; - btn_fav_2.on_select = [this](Button&) { - on_btn_clicked(2); - }; - btn_fav_3.on_select = [this](Button&) { - on_btn_clicked(3); - }; - btn_fav_4.on_select = [this](Button&) { - on_btn_clicked(4); - }; - btn_fav_5.on_select = [this](Button&) { - on_btn_clicked(5); - }; - btn_fav_6.on_select = [this](Button&) { - on_btn_clicked(6); - }; - btn_fav_7.on_select = [this](Button&) { - on_btn_clicked(7); - }; - btn_fav_8.on_select = [this](Button&) { - on_btn_clicked(8); - }; - btn_fav_9.on_select = [this](Button&) { - on_btn_clicked(9); - }; + btn_fav_0.on_select = [this](Button&) { on_btn_clicked(0); }; + btn_fav_1.on_select = [this](Button&) { on_btn_clicked(1); }; + btn_fav_2.on_select = [this](Button&) { on_btn_clicked(2); }; + btn_fav_3.on_select = [this](Button&) { on_btn_clicked(3); }; + btn_fav_4.on_select = [this](Button&) { on_btn_clicked(4); }; + btn_fav_5.on_select = [this](Button&) { on_btn_clicked(5); }; + btn_fav_6.on_select = [this](Button&) { on_btn_clicked(6); }; + btn_fav_7.on_select = [this](Button&) { on_btn_clicked(7); }; + btn_fav_8.on_select = [this](Button&) { on_btn_clicked(8); }; + btn_fav_9.on_select = [this](Button&) { on_btn_clicked(9); }; btn_fav_save.on_select = [this](Button&) { save_fav = !save_fav; @@ -117,20 +199,44 @@ FmRadioView::FmRadioView(NavigationView& nav) txt_save_help.set_dirty(); }; + field_modulation.on_change = [this](size_t index, int32_t mod) { + change_mode(mod); + if (index == 3 || index == 4) { // USB or LSB + receiver_model.set_am_configuration(index == 3 ? 1 : 2); // 1=USB, 2=LSB + } + }; + + waveform.on_select = [this](Waveform&) { + if (receiver_mode != ReceiverModel::Mode::WidebandFMAudio) { // only there is spectrum message + return; + } + show_hide_gfx(!btn_fav_0.hidden()); + }; + gr.set_theme(themes[current_theme].base_color, themes[current_theme].peak_color); + gr.on_select = [this](GraphEq&) { + current_theme = (current_theme + 1) % themes.size(); + gr.set_theme(themes[current_theme].base_color, themes[current_theme].peak_color); + gr.set_paused(false); + }; update_fav_btn_texts(); + show_hide_gfx(false); } void FmRadioView::on_btn_clicked(uint8_t i) { if (save_fav) { save_fav = false; - freq_fav_list[i] = field_frequency.value(); + freq_fav_list[i].frequency = field_frequency.value(); + freq_fav_list[i].modulation = field_modulation.selected_index_value(); + freq_fav_list[i].bandwidth = radio_bw; update_fav_btn_texts(); txt_save_help.visible(save_fav); txt_save_help.set_text(""); txt_save_help.set_dirty(); return; } - field_frequency.set_value(freq_fav_list[i]); + field_frequency.set_value(freq_fav_list[i].frequency); + field_modulation.set_by_value(freq_fav_list[i].modulation); + change_mode(freq_fav_list[i].modulation); } std::string FmRadioView::to_nice_freq(rf::Frequency freq) { @@ -141,16 +247,16 @@ std::string FmRadioView::to_nice_freq(rf::Frequency freq) { } void FmRadioView::update_fav_btn_texts() { - btn_fav_0.set_text(to_nice_freq(freq_fav_list[0])); - btn_fav_1.set_text(to_nice_freq(freq_fav_list[1])); - btn_fav_2.set_text(to_nice_freq(freq_fav_list[2])); - btn_fav_3.set_text(to_nice_freq(freq_fav_list[3])); - btn_fav_4.set_text(to_nice_freq(freq_fav_list[4])); - btn_fav_5.set_text(to_nice_freq(freq_fav_list[5])); - btn_fav_6.set_text(to_nice_freq(freq_fav_list[6])); - btn_fav_7.set_text(to_nice_freq(freq_fav_list[7])); - btn_fav_8.set_text(to_nice_freq(freq_fav_list[8])); - btn_fav_9.set_text(to_nice_freq(freq_fav_list[9])); + btn_fav_0.set_text(to_nice_freq(freq_fav_list[0].frequency)); + btn_fav_1.set_text(to_nice_freq(freq_fav_list[1].frequency)); + btn_fav_2.set_text(to_nice_freq(freq_fav_list[2].frequency)); + btn_fav_3.set_text(to_nice_freq(freq_fav_list[3].frequency)); + btn_fav_4.set_text(to_nice_freq(freq_fav_list[4].frequency)); + btn_fav_5.set_text(to_nice_freq(freq_fav_list[5].frequency)); + btn_fav_6.set_text(to_nice_freq(freq_fav_list[6].frequency)); + btn_fav_7.set_text(to_nice_freq(freq_fav_list[7].frequency)); + btn_fav_8.set_text(to_nice_freq(freq_fav_list[8].frequency)); + btn_fav_9.set_text(to_nice_freq(freq_fav_list[9].frequency)); } FmRadioView::~FmRadioView() { @@ -160,9 +266,17 @@ FmRadioView::~FmRadioView() { } void FmRadioView::on_audio_spectrum() { - for (size_t i = 0; i < audio_spectrum_data->db.size(); i++) - audio_spectrum[i] = ((int16_t)audio_spectrum_data->db[i] - 127) * 256; - waveform.set_dirty(); + if (gr.visible() && audio_spectrum_data) gr.update_audio_spectrum(*audio_spectrum_data); + if (audio_spectrum_data && audio_spectrum_data->db.size() <= 128) { + for (size_t i = 0; i < audio_spectrum_data->db.size(); ++i) { + audio_spectrum[i] = ((int16_t)audio_spectrum_data->db[i] - 127) * 256; + } + waveform.set_dirty(); + } else { + // Fallback: Clear waveform if no valid data + std::fill(audio_spectrum, audio_spectrum + 128, 0); + waveform.set_dirty(); + } } } // namespace ui::external_app::fmradio diff --git a/firmware/application/external/fmradio/ui_fmradio.hpp b/firmware/application/external/fmradio/ui_fmradio.hpp index 74fc65eaa..4cad10c2a 100644 --- a/firmware/application/external/fmradio/ui_fmradio.hpp +++ b/firmware/application/external/fmradio/ui_fmradio.hpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2024 HTotoo + * Copyright (C) 2025 RocketGod * * This file is part of PortaPack. * @@ -38,11 +39,16 @@ #include "radio_state.hpp" #include "log_file.hpp" #include "utility.hpp" +#include "audio.hpp" +#include "freqman_db.hpp" +#include "ui_freqman.hpp" using namespace ui; namespace ui::external_app::fmradio { +#include "external/ui_grapheq.hpp" + #define FMR_BTNGRID_TOP 60 class FmRadioView : public View { @@ -54,31 +60,65 @@ class FmRadioView : public View { void focus() override; - std::string title() const override { return "FM radio"; }; + std::string title() const override { return "Radio"; }; private: NavigationView& nav_; RxRadioState radio_state_{}; int16_t audio_spectrum[128]{0}; bool audio_spectrum_update = false; + ReceiverModel::Mode receiver_mode = ReceiverModel::Mode::WidebandFMAudio; AudioSpectrum* audio_spectrum_data{nullptr}; - rf::Frequency freq_fav_list[12] = {0}; - + struct Favorite { + rf::Frequency frequency = 0; + int32_t modulation = static_cast(ReceiverModel::Mode::WidebandFMAudio); + uint8_t bandwidth = 0; + }; + Favorite freq_fav_list[12]; + audio::Rate audio_sampling_rate = audio::Rate::Hz_48000; + uint8_t radio_bw = 0; + uint32_t current_theme{0}; app_settings::SettingsManager settings_{ "rx_fmradio", app_settings::Mode::RX, - {{"favlist0"sv, &freq_fav_list[0]}, - {"favlist1"sv, &freq_fav_list[1]}, - {"favlist2"sv, &freq_fav_list[2]}, - {"favlist3"sv, &freq_fav_list[3]}, - {"favlist4"sv, &freq_fav_list[4]}, - {"favlist5"sv, &freq_fav_list[5]}, - {"favlist6"sv, &freq_fav_list[6]}, - {"favlist7"sv, &freq_fav_list[7]}, - {"favlist8"sv, &freq_fav_list[8]}, - {"favlist9"sv, &freq_fav_list[9]}, - {"favlist10"sv, &freq_fav_list[10]}, - {"favlist11"sv, &freq_fav_list[11]}}}; + {{"favlist0_freq"sv, &freq_fav_list[0].frequency}, + {"favlist1_freq"sv, &freq_fav_list[1].frequency}, + {"favlist2_freq"sv, &freq_fav_list[2].frequency}, + {"favlist3_freq"sv, &freq_fav_list[3].frequency}, + {"favlist4_freq"sv, &freq_fav_list[4].frequency}, + {"favlist5_freq"sv, &freq_fav_list[5].frequency}, + {"favlist6_freq"sv, &freq_fav_list[6].frequency}, + {"favlist7_freq"sv, &freq_fav_list[7].frequency}, + {"favlist8_freq"sv, &freq_fav_list[8].frequency}, + {"favlist9_freq"sv, &freq_fav_list[9].frequency}, + {"favlist10_freq"sv, &freq_fav_list[10].frequency}, + {"favlist11_freq"sv, &freq_fav_list[11].frequency}, + {"favlist0_mod"sv, &freq_fav_list[0].modulation}, + {"favlist1_mod"sv, &freq_fav_list[1].modulation}, + {"favlist2_mod"sv, &freq_fav_list[2].modulation}, + {"favlist3_mod"sv, &freq_fav_list[3].modulation}, + {"favlist4_mod"sv, &freq_fav_list[4].modulation}, + {"favlist5_mod"sv, &freq_fav_list[5].modulation}, + {"favlist6_mod"sv, &freq_fav_list[6].modulation}, + {"favlist7_mod"sv, &freq_fav_list[7].modulation}, + {"favlist8_mod"sv, &freq_fav_list[8].modulation}, + {"favlist9_mod"sv, &freq_fav_list[9].modulation}, + {"favlist10_mod"sv, &freq_fav_list[10].modulation}, + {"favlist11_mod"sv, &freq_fav_list[11].modulation}, + {"favlist0_bw"sv, &freq_fav_list[0].bandwidth}, + {"favlist1_bw"sv, &freq_fav_list[1].bandwidth}, + {"favlist2_bw"sv, &freq_fav_list[2].bandwidth}, + {"favlist3_bw"sv, &freq_fav_list[3].bandwidth}, + {"favlist4_bw"sv, &freq_fav_list[4].bandwidth}, + {"favlist5_bw"sv, &freq_fav_list[5].bandwidth}, + {"favlist6_bw"sv, &freq_fav_list[6].bandwidth}, + {"favlist7_bw"sv, &freq_fav_list[7].bandwidth}, + {"favlist8_bw"sv, &freq_fav_list[8].bandwidth}, + {"favlist9_bw"sv, &freq_fav_list[9].bandwidth}, + {"favlist10_bw"sv, &freq_fav_list[10].bandwidth}, + {"favlist11_bw"sv, &freq_fav_list[11].bandwidth}, + {"radio_bw"sv, &radio_bw}, + {"theme"sv, ¤t_theme}}}; RFAmpField field_rf_amp{ {13 * 8, 0 * 16}}; @@ -89,12 +129,30 @@ class FmRadioView : public View { RSSI rssi{ {21 * 8, 0, 6 * 8, 4}}; AudioVolumeField field_volume{ - {28 * 8, 0 * 16}}; + {screen_width - 2 * 8, 0 * 16}}; RxFrequencyField field_frequency{ {0 * 8, 0 * 16}, nav_}; + OptionsField field_bw{ + {10 * 8, FMR_BTNGRID_TOP + 6 * 34}, + 6, + {}}; + + Text text_mode_label{ + {20 * 8, FMR_BTNGRID_TOP + 6 * 34, 5 * 8, 1 * 28}, + "MODE:"}; + + OptionsField field_modulation{ + {26 * 8, FMR_BTNGRID_TOP + 6 * 34}, + 4, + {{"AM", static_cast(ReceiverModel::Mode::AMAudio)}, + {"NFM", static_cast(ReceiverModel::Mode::NarrowbandFMAudio)}, + {"WFM", static_cast(ReceiverModel::Mode::WidebandFMAudio)}, + {"USB", static_cast(ReceiverModel::Mode::AMAudio)}, + {"LSB", static_cast(ReceiverModel::Mode::AMAudio)}}}; + TextField txt_save_help{ {2, FMR_BTNGRID_TOP + 6 * 34 - 20, 12 * 8, 16}, " "}; @@ -103,12 +161,15 @@ class FmRadioView : public View { {21 * 8, 10, 6 * 8, 4}}; Waveform waveform{ - {0, 20, 30 * 8, 2 * 16}, + {0, 20, UI_POS_MAXWIDTH, 2 * 16}, audio_spectrum, 128, 0, false, - Theme::getInstance()->bg_darkest->foreground}; + Theme::getInstance()->bg_darkest->foreground, + true}; + + GraphEq gr{{2, FMR_BTNGRID_TOP, UI_POS_MAXWIDTH - 4, UI_POS_MAXHEIGHT - FMR_BTNGRID_TOP}, true}; Button btn_fav_0{{2, FMR_BTNGRID_TOP + 0 * 34, 10 * 8, 28}, "---"}; Button btn_fav_1{{2 + 15 * 8, FMR_BTNGRID_TOP + 0 * 34, 10 * 8, 28}, "---"}; @@ -123,10 +184,41 @@ class FmRadioView : public View { Button btn_fav_save{{2, FMR_BTNGRID_TOP + 6 * 34, 7 * 8, 1 * 28}, "Save"}; bool save_fav = false; + void on_btn_clicked(uint8_t i); void update_fav_btn_texts(); std::string to_nice_freq(rf::Frequency freq); void on_audio_spectrum(); + void change_mode(int32_t mod); + + void show_hide_gfx(bool show); + + struct ColorTheme { + Color base_color; + Color peak_color; + }; + + const std::array themes{ + ColorTheme{Color(255, 0, 255), Color(255, 255, 255)}, + ColorTheme{Color(0, 255, 0), Color(255, 0, 0)}, + ColorTheme{Color(0, 0, 255), Color(255, 255, 0)}, + ColorTheme{Color(255, 128, 0), Color(255, 0, 128)}, + ColorTheme{Color(128, 0, 255), Color(0, 255, 255)}, + ColorTheme{Color(255, 255, 0), Color(0, 255, 128)}, + ColorTheme{Color(255, 0, 0), Color(0, 128, 255)}, + ColorTheme{Color(0, 255, 128), Color(255, 128, 255)}, + ColorTheme{Color(128, 128, 128), Color(255, 255, 255)}, + ColorTheme{Color(255, 64, 0), Color(0, 255, 64)}, + ColorTheme{Color(0, 128, 128), Color(255, 192, 0)}, + ColorTheme{Color(0, 255, 0), Color(0, 128, 0)}, + ColorTheme{Color(32, 64, 32), Color(0, 255, 0)}, + ColorTheme{Color(64, 0, 128), Color(255, 0, 255)}, + ColorTheme{Color(0, 64, 0), Color(0, 255, 128)}, + ColorTheme{Color(255, 255, 255), Color(0, 0, 255)}, + ColorTheme{Color(128, 0, 0), Color(255, 128, 0)}, + ColorTheme{Color(0, 128, 255), Color(255, 255, 128)}, + ColorTheme{Color(64, 64, 64), Color(255, 0, 0)}, + ColorTheme{Color(255, 192, 0), Color(0, 64, 128)}}; MessageHandlerRegistration message_handler_audio_spectrum{ Message::ID::AudioSpectrum, diff --git a/firmware/application/external/font_viewer/ui_font_viewer.cpp b/firmware/application/external/font_viewer/ui_font_viewer.cpp index b78fbcff9..7b95a3bbd 100644 --- a/firmware/application/external/font_viewer/ui_font_viewer.cpp +++ b/firmware/application/external/font_viewer/ui_font_viewer.cpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2023 Mark Thompson + * copyleft Whiterose of the Dark Army * * This file is part of PortaPack. * @@ -32,7 +33,7 @@ namespace ui::external_app::font_viewer { /* DebugFontsView *******************************************************/ -uint16_t DebugFontsView::display_font(Painter& painter, uint16_t y_offset, const Style* font_style, std::string_view font_name) { +uint16_t DebugFontsView::display_font(Painter& painter, uint16_t y_offset, const Style* font_style, std::string_view font_name, bool is_big_font) { auto char_width{font_style->font.char_width()}; auto char_height{font_style->font.line_height()}; auto cpl{((screen_width / char_width) - 6) & 0xF8}; // Display a multiple of 8 characters per line @@ -47,7 +48,15 @@ uint16_t DebugFontsView::display_font(Painter& painter, uint16_t y_offset, const if ((c % cpl) == 0) painter.draw_string({0, line_pos}, *font_style, "Ox" + to_string_hex(c + 0x20, 2)); - painter.draw_char({((c % cpl) + 5) * char_width, line_pos}, *font_style, (char)(c + 0x20)); + Style highlight_style_big = *Theme::getInstance()->fg_red; + Style highlight_style_small = *Theme::getInstance()->bg_important_small; + if (c == field_cursor.value()) { + painter.draw_char({((c % cpl) + 5) * char_width, line_pos}, + is_big_font ? highlight_style_big : highlight_style_small, + (char)(c + 0x20)); + } else { + painter.draw_char({((c % cpl) + 5) * char_width, line_pos}, *font_style, (char)(c + 0x20)); + } } return line_pos + char_height; @@ -56,13 +65,43 @@ uint16_t DebugFontsView::display_font(Painter& painter, uint16_t y_offset, const void DebugFontsView::paint(Painter& painter) { int16_t line_pos; - line_pos = display_font(painter, 32, Theme::getInstance()->bg_darkest, "Fixed 8x16"); - display_font(painter, line_pos + 16, Theme::getInstance()->bg_darkest_small, "Fixed 5x8"); + line_pos = display_font(painter, 32, Theme::getInstance()->bg_darkest, "Fixed 8x16", true); + display_font(painter, line_pos + 16, Theme::getInstance()->bg_darkest_small, "Fixed 5x8", false); + paint_zoomed_text(painter); +} + +void DebugFontsView::update_address_text() { + uint8_t ascii_value = field_cursor.value() + 0x20; + text_address.set("0x" + to_string_hex(ascii_value, 2)); +} + +void DebugFontsView::paint_zoomed_text(Painter& painter) { + if (field_zoom_level.value() == 0) return; + uint8_t cursor_pos = field_cursor.value(); + painter.draw_char({screen_width / 2, screen_height / 2}, + *Theme::getInstance()->bg_darkest, + (char)(cursor_pos + 0x20), field_zoom_level.value()); } DebugFontsView::DebugFontsView(NavigationView& nav) : nav_{nav} { + add_children({&field_cursor, + &text_address, + &field_zoom_level}); set_focusable(true); + + field_cursor.on_change = [&](int32_t) { + update_address_text(); + set_dirty(); + }; + + field_zoom_level.on_change = [&](int32_t) { + set_dirty(); + }; +} + +void DebugFontsView::focus() { + field_cursor.focus(); } } /* namespace ui::external_app::font_viewer */ diff --git a/firmware/application/external/font_viewer/ui_font_viewer.hpp b/firmware/application/external/font_viewer/ui_font_viewer.hpp index 72afcb58b..73347f0a4 100644 --- a/firmware/application/external/font_viewer/ui_font_viewer.hpp +++ b/firmware/application/external/font_viewer/ui_font_viewer.hpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2023 Mark Thompson + * copyleft Whiterose of the Dark Army * * This file is part of PortaPack. * @@ -39,10 +40,30 @@ class DebugFontsView : public View { public: DebugFontsView(NavigationView& nav); void paint(Painter& painter) override; + void focus() override; std::string title() const override { return "Fonts"; }; private: - uint16_t display_font(Painter& painter, uint16_t y_offset, const Style* font_style, std::string_view font_name); + uint16_t display_font(Painter& painter, uint16_t y_offset, const Style* font_style, std::string_view font_name, bool is_big_font); + void update_address_text(); + void paint_zoomed_text(Painter& painter); + + NumberField field_cursor{ + {0 * 8, 0 * 8}, + 4, + {0, 1000}, + 1, + ' '}; + NumberField field_zoom_level{ + {6 * 8, 0 * 8}, + 4, + {0, 1000}, + 1, + ' '}; + Text text_address{ + {screen_width / 2, 0 * 16, screen_width / 2, 16}, + "0x20", + }; NavigationView& nav_; }; diff --git a/firmware/application/external/foxhunt/ui_foxhunt_rx.hpp b/firmware/application/external/foxhunt/ui_foxhunt_rx.hpp index ed61336fd..25d48c0c3 100644 --- a/firmware/application/external/foxhunt/ui_foxhunt_rx.hpp +++ b/firmware/application/external/foxhunt/ui_foxhunt_rx.hpp @@ -62,7 +62,7 @@ class FoxhuntRxView : public View { RSSI rssi{ {21 * 8, 0, 6 * 8, 4}}; AudioVolumeField field_volume{ - {28 * 8, 0 * 16}}; + {screen_width - 2 * 8, 0 * 16}}; RxFrequencyField field_frequency{ {0 * 8, 0 * 16}, @@ -73,7 +73,7 @@ class FoxhuntRxView : public View { {0 * 8, 2 * 16 + 4, 14 * 8, 14}, }; RSSIGraph rssi_graph{ - {0, 50, 240, 30}, + {0, 50, screen_width, 30}, }; Button clear_markers{ @@ -84,7 +84,7 @@ class FoxhuntRxView : public View { {2, 18, 7 * 8, 16}, "Mark"}; - GeoMap geomap{{0, 80, 240, 240}}; + GeoMap geomap{{0, 80, screen_width, screen_height - 80}}; MessageHandlerRegistration message_handler_gps{ Message::ID::GPSPosData, diff --git a/firmware/application/external/gfxeq/main.cpp b/firmware/application/external/gfxeq/main.cpp new file mode 100644 index 000000000..984e55be8 --- /dev/null +++ b/firmware/application/external/gfxeq/main.cpp @@ -0,0 +1,36 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +#include "ui_gfxeq.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::gfxeq { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::gfxeq + +extern "C" { +__attribute__((section(".external_app.app_gfxeq.application_information"), used)) application_information_t _application_information_gfxeq = { + (uint8_t*)0x00000000, + ui::external_app::gfxeq::initialize_app, + CURRENT_HEADER_VERSION, + VERSION_MD5, + "gfxEQ", + {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, + ui::Color::green().v, + app_location_t::RX, + -1, + {'P', 'W', 'F', 'M'}, + 0x00000000, +}; + +} // namespace ui::external_app::gfxeq diff --git a/firmware/application/external/gfxeq/ui_gfxeq.cpp b/firmware/application/external/gfxeq/ui_gfxeq.cpp new file mode 100644 index 000000000..51f1ca99a --- /dev/null +++ b/firmware/application/external/gfxeq/ui_gfxeq.cpp @@ -0,0 +1,98 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +#include "ui_gfxeq.hpp" +#include "ui.hpp" +#include "ui_freqman.hpp" +#include "tone_key.hpp" +#include "analog_audio_app.hpp" +#include "portapack.hpp" +#include "audio.hpp" +#include "baseband_api.hpp" +#include "dsp_fir_taps.hpp" + +using namespace portapack; + +namespace ui::external_app::gfxeq { + +#include "external/ui_grapheq.cpi" + +gfxEQView::gfxEQView(NavigationView& nav) + : nav_{nav} { + add_children({&button_frequency, &field_rf_amp, &field_lna, &field_vga, + &button_mood, &field_volume, &gr}); + + audio::output::stop(); + receiver_model.disable(); + baseband::shutdown(); + + baseband::run_image(portapack::spi_flash::image_tag_wfm_audio); + + receiver_model.set_modulation(ReceiverModel::Mode::WidebandFMAudio); + receiver_model.set_wfm_configuration(1); // 200k => 0 , 180k => 1 , 80k => 2. Set to 1 or 2 for better reception + receiver_model.set_sampling_rate(3072000); + receiver_model.set_baseband_bandwidth(1750000); + + audio::set_rate(audio::Rate::Hz_48000); + audio::output::start(); + receiver_model.set_headphone_volume(receiver_model.headphone_volume()); // WM8731 hack + // + receiver_model.enable(); + + receiver_model.set_target_frequency(frequency_value); // Retune to actual freq + button_frequency.set_text("<" + to_string_short_freq(frequency_value) + ">"); + + button_frequency.on_select = [this, &nav](ButtonWithEncoder& button) { + auto new_view = nav_.push(frequency_value); + new_view->on_changed = [this, &button](rf::Frequency f) { + frequency_value = f; + receiver_model.set_target_frequency(f); // Retune to actual freq + button_frequency.set_text("<" + to_string_short_freq(frequency_value) + ">"); + }; + }; + + button_frequency.on_change = [this]() { + int64_t def_step = 25000; + frequency_value = frequency_value + (button_frequency.get_encoder_delta() * def_step); + if (frequency_value < 1) { + frequency_value = 1; + } + if (frequency_value > (MAX_UFREQ - def_step)) { + frequency_value = MAX_UFREQ; + } + button_frequency.set_encoder_delta(0); + receiver_model.set_target_frequency(frequency_value); // Retune to actual freq + button_frequency.set_text("<" + to_string_short_freq(frequency_value) + ">"); + }; + + button_mood.on_select = [this](Button&) { this->cycle_theme(); }; + gr.set_theme(themes[current_theme].base_color, themes[current_theme].peak_color); +} + +// needed to answer usb serial frequency set +void gfxEQView::on_freqchg(int64_t freq) { + receiver_model.set_target_frequency(freq); // Retune to actual freq + button_frequency.set_text("<" + to_string_short_freq(freq) + ">"); +} + +gfxEQView::~gfxEQView() { + audio::output::stop(); + receiver_model.disable(); + baseband::shutdown(); +} + +void gfxEQView::focus() { + button_frequency.focus(); +} + +void gfxEQView::cycle_theme() { + current_theme = (current_theme + 1) % themes.size(); + gr.set_theme(themes[current_theme].base_color, themes[current_theme].peak_color); +} + +} // namespace ui::external_app::gfxeq \ No newline at end of file diff --git a/firmware/application/external/gfxeq/ui_gfxeq.hpp b/firmware/application/external/gfxeq/ui_gfxeq.hpp new file mode 100644 index 000000000..a94ec7e20 --- /dev/null +++ b/firmware/application/external/gfxeq/ui_gfxeq.hpp @@ -0,0 +1,108 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +#ifndef __UI_GFXEQ_HPP__ +#define __UI_GFXEQ_HPP__ + +#include "ui_widget.hpp" +#include "ui_navigation.hpp" +#include "ui_receiver.hpp" +#include "message.hpp" +#include "baseband_api.hpp" +#include "portapack.hpp" +#include "ui_spectrum.hpp" +#include "ui_freq_field.hpp" +#include "app_settings.hpp" +#include "radio_state.hpp" + +namespace ui::external_app::gfxeq { + +#include "external/ui_grapheq.hpp" + +class gfxEQView : public View { + public: + gfxEQView(NavigationView& nav); + ~gfxEQView(); + + gfxEQView(const gfxEQView&) = delete; + gfxEQView& operator=(const gfxEQView&) = delete; + + void focus() override; + std::string title() const override { return "gfxEQ"; } + + void on_freqchg(int64_t freq); + + private: + struct ColorTheme { + Color base_color; + Color peak_color; + }; + + NavigationView& nav_; + + uint32_t current_theme{0}; + const std::array themes{ + ColorTheme{Color(255, 0, 255), Color(255, 255, 255)}, + ColorTheme{Color(0, 255, 0), Color(255, 0, 0)}, + ColorTheme{Color(0, 0, 255), Color(255, 255, 0)}, + ColorTheme{Color(255, 128, 0), Color(255, 0, 128)}, + ColorTheme{Color(128, 0, 255), Color(0, 255, 255)}, + ColorTheme{Color(255, 255, 0), Color(0, 255, 128)}, + ColorTheme{Color(255, 0, 0), Color(0, 128, 255)}, + ColorTheme{Color(0, 255, 128), Color(255, 128, 255)}, + ColorTheme{Color(128, 128, 128), Color(255, 255, 255)}, + ColorTheme{Color(255, 64, 0), Color(0, 255, 64)}, + ColorTheme{Color(0, 128, 128), Color(255, 192, 0)}, + ColorTheme{Color(0, 255, 0), Color(0, 128, 0)}, + ColorTheme{Color(32, 64, 32), Color(0, 255, 0)}, + ColorTheme{Color(64, 0, 128), Color(255, 0, 255)}, + ColorTheme{Color(0, 64, 0), Color(0, 255, 128)}, + ColorTheme{Color(255, 255, 255), Color(0, 0, 255)}, + ColorTheme{Color(128, 0, 0), Color(255, 128, 0)}, + ColorTheme{Color(0, 128, 255), Color(255, 255, 128)}, + ColorTheme{Color(64, 64, 64), Color(255, 0, 0)}, + ColorTheme{Color(255, 192, 0), Color(0, 64, 128)}}; + + ButtonWithEncoder button_frequency{{0 * 8, 0 * 16 + 4, 11 * 8, 1 * 8}, ""}; + RFAmpField field_rf_amp{{13 * 8, 0 * 16}}; + LNAGainField field_lna{{15 * 8, 0 * 16}}; + VGAGainField field_vga{{18 * 8, 0 * 16}}; + Button button_mood{{21 * 8, 0, 6 * 8, 16}, "MOOD"}; + AudioVolumeField field_volume{{screen_width - 2 * 8, 0 * 16}}; + GraphEq gr{{2, UI_POS_DEFAULT_HEIGHT, UI_POS_MAXWIDTH - 4, UI_POS_HEIGHT_REMAINING(2)}, false}; + + rf::Frequency frequency_value{93100000}; + + RxRadioState rx_radio_state_{}; + + app_settings::SettingsManager settings_{ + "rx_gfx_eq", + app_settings::Mode::RX, + {{"theme", ¤t_theme}, + {"frequency", &frequency_value}}}; + + void cycle_theme(); + + MessageHandlerRegistration message_handler_audio_spectrum{ + Message::ID::AudioSpectrum, + [this](const Message* const p) { + const auto message = *reinterpret_cast(p); + this->gr.update_audio_spectrum(*message.data); + }}; + + MessageHandlerRegistration message_handler_freqchg{ + Message::ID::FreqChangeCommand, + [this](Message* const p) { + const auto message = static_cast(p); + this->on_freqchg(message->freq); + }}; +}; + +} // namespace ui::external_app::gfxeq + +#endif \ No newline at end of file diff --git a/firmware/application/external/gpssim/gps_sim_app.hpp b/firmware/application/external/gpssim/gps_sim_app.hpp index ba967177d..42b4906ea 100644 --- a/firmware/application/external/gpssim/gps_sim_app.hpp +++ b/firmware/application/external/gpssim/gps_sim_app.hpp @@ -112,7 +112,7 @@ class GpsSimAppView : public View { LanguageHelper::currentMessages[LANG_LOOP], true}; ImageButton button_play{ - {28 * 8, 2 * 16, 2 * 8, 1 * 16}, + {screen_width - 2 * 8, 2 * 16, 2 * 8, 1 * 16}, &bitmap_play, Theme::getInstance()->fg_green->foreground, Theme::getInstance()->fg_green->background}; diff --git a/firmware/application/external/hopper/main.cpp b/firmware/application/external/hopper/main.cpp new file mode 100644 index 000000000..16412fdd6 --- /dev/null +++ b/firmware/application/external/hopper/main.cpp @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2023 Bernd Herzog + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui.hpp" +#include "ui_hopper.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::hopper { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::hopper + +extern "C" { + +__attribute__((section(".external_app.app_hopper.application_information"), used)) application_information_t _application_information_hopper = { + /*.memory_location = */ (uint8_t*)0x00000000, + /*.externalAppEntry = */ ui::external_app::hopper::initialize_app, + /*.header_version = */ CURRENT_HEADER_VERSION, + /*.app_version = */ VERSION_MD5, + + /*.app_name = */ "Hopper", + /*.bitmap_data = */ { + 0xE0, + 0x07, + 0xF8, + 0x1F, + 0x1C, + 0x38, + 0x0E, + 0x78, + 0x06, + 0x7C, + 0x03, + 0xCE, + 0x03, + 0xC7, + 0x83, + 0xC3, + 0xC3, + 0xC1, + 0xE3, + 0xC0, + 0x73, + 0xC0, + 0x3E, + 0x60, + 0x1E, + 0x70, + 0x1C, + 0x38, + 0xF8, + 0x1F, + 0xE0, + 0x07, + }, + /*.icon_color = */ ui::Color::green().v, + /*.menu_location = */ app_location_t::TX, + /*.desired_menu_position = */ -1, + + /*.m4_app_tag = portapack::spi_flash::image_tag_jammer */ {'P', 'J', 'A', 'M'}, + /*.m4_app_offset = */ 0x00000000, // will be filled at compile time +}; +} diff --git a/firmware/application/external/hopper/ui_hopper.cpp b/firmware/application/external/hopper/ui_hopper.cpp new file mode 100644 index 000000000..fd8a983ad --- /dev/null +++ b/firmware/application/external/hopper/ui_hopper.cpp @@ -0,0 +1,362 @@ +/* + * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * Copyright (C) 2016 Furrtek + * Copyright (C) 2020 euquiq + * copyleft mr.r0b0t from the F society + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui_hopper.hpp" +#include "ui_receiver.hpp" +#include "ui_freqman.hpp" +#include "ui_fileman.hpp" +#include "file_path.hpp" +#include "file_reader.hpp" +#include "convert.hpp" + +#include "baseband_api.hpp" +#include "string_format.hpp" + +using namespace portapack; + +namespace ui::external_app::hopper { + +void HopperView::focus() { + button_load_list.focus(); +} + +HopperView::~HopperView() { + transmitter_model.disable(); + baseband::shutdown(); +} + +void HopperView::update_freq_list_menu_view() { + menu_freq_list.clear(); + uint8_t list_count = freq_list.size(); + + if (list_count == 0) { + menu_freq_list.add_item({"Add freq or load list", + Theme::getInstance()->bg_darkest->foreground, + nullptr, + nullptr}); + } + + for (uint8_t i = 0; i < list_count; i++) { + menu_freq_list.add_item({to_string_rounded_freq(freq_list[i], INT8_MAX), + Theme::getInstance()->bg_darkest->foreground, + nullptr, + nullptr}); + } + + set_dirty(); +} + +void HopperView::on_retune(const rf::Frequency freq, const uint32_t range) { + if (freq) { + transmitter_model.set_target_frequency(freq); + text_range_number.set(to_string_dec_uint(range, 2)); + } +} + +void HopperView::set_hopper_channel(uint32_t i, uint32_t width, uint64_t center, uint32_t duration) { + hopper_channels[i].enabled = true; + hopper_channels[i].width = (width * 0xFFFFFFULL) / 1536000; + hopper_channels[i].center = center; + hopper_channels[i].duration = duration ? 3072 * duration : 10; +} + +void HopperView::start_tx() { + uint32_t c, i = 0; + bool out_of_ranges = false; + + size_t hop_value = options_hop.selected_index_value(); + + // Disable all channels by default + for (c = 0; c < JAMMER_MAX_CH; c++) + hopper_channels[c].enabled = false; + + uint8_t channel_count = freq_list.size(); + + if (channel_count <= JAMMER_MAX_CH) { + for (c = 0; c < channel_count; c++) { + if (i >= JAMMER_MAX_CH) { + out_of_ranges = true; + break; + } + set_hopper_channel(i, JAMMER_CH_WIDTH, freq_list[c], hop_value); + i++; + } + } else { + out_of_ranges = true; + } + + if (!out_of_ranges && i) { + text_range_total.set("/" + to_string_dec_uint(i, 2)); + + jamming = true; + button_transmit.set_style(&style_cancel); + button_transmit.set_text("STOP"); + + transmitter_model.set_rf_amp(field_amp.value()); + transmitter_model.set_tx_gain(field_gain.value()); + transmitter_model.set_baseband_bandwidth(28'000'000); // Although tx is narrowband , let's use Max TX LPF . + transmitter_model.enable(); + + baseband::set_jammer(true, (JammerType)options_type.selected_index(), options_speed.selected_index_value()); + mscounter = 0; // euquiq: Reset internal ms counter for do_timer() + } else { + if (out_of_ranges) + nav_.display_modal("Error", "Jam freq too much."); + } +} + +void HopperView::stop_tx() { + button_transmit.set_style(&style_val); + button_transmit.set_text("START"); + transmitter_model.disable(); + baseband::set_jammer(false, JammerType::TYPE_FSK, 0); + jamming = false; + cooling = false; +} + +// called each 1/60th of second +void HopperView::on_timer() { + if (++mscounter == 60) { + mscounter = 0; + if (jamming) { + if (cooling) { + if (++seconds >= field_timepause.value()) { // Re-start TX + transmitter_model.set_baseband_bandwidth(28'000'000); // Although tx is narrowband , let's use Max TX LPF . + transmitter_model.enable(); + button_transmit.set_text("STOP"); + baseband::set_jammer(true, (JammerType)options_type.selected_index(), options_speed.selected_index_value()); + + int32_t jitter_amount = field_jitter.value(); + if (jitter_amount) { + lfsr_v = lfsr_iterate(lfsr_v); + jitter_amount = (jitter_amount / 2) - (lfsr_v & jitter_amount); + mscounter += jitter_amount; + } + + cooling = false; + seconds = 0; + } + } else { + if (++seconds >= field_timetx.value()) // Start cooling period: + { + transmitter_model.disable(); + button_transmit.set_text("PAUSED"); + baseband::set_jammer(false, JammerType::TYPE_FSK, 0); + + int32_t jitter_amount = field_jitter.value(); + if (jitter_amount) { + lfsr_v = lfsr_iterate(lfsr_v); + jitter_amount = (jitter_amount / 2) - (lfsr_v & jitter_amount); + mscounter += jitter_amount; + } + + cooling = true; + seconds = 0; + } + } + } + } +} + +void HopperView::load_list() { + freq_list.clear(); + + auto open_view = nav_.push(".PHOP"); + open_view->push_dir(hopper_dir); + open_view->on_changed = [this](std::filesystem::path path) { + File f; + auto error = f.open(path); + if (error) { + nav_.display_modal("Err", "Can't open."); + update_freq_list_menu_view(); + return; + } + + freq_list.clear(); + + auto reader = FileLineReader(f); + for (const auto& line : reader) { + if (line.length() == 0 || line[0] == '#') + continue; + + rf::Frequency freq; + if (parse_int(line, freq)) { + if (freq_list.size() >= JAMMER_MAX_CH) { + break; + } + freq_list.push_back(freq); + } + } + update_freq_list_menu_view(); + }; + + update_freq_list_menu_view(); +} + +void HopperView::save_list() { + if (freq_list.empty()) { + nav_.display_modal("Err", "Nothing to save"); + return; + } + + ensure_directory(hopper_dir); + + filename_buffer = ""; + text_prompt( + nav_, + filename_buffer, + 64, + ENTER_KEYBOARD_MODE_ALPHA, + [this](std::string& value) { + auto path = hopper_dir / (value + ".PHOP"); + + File f; + auto error = f.create(path); + if (error) { + nav_.display_modal("Err", "Create fail."); + return; + } + + for (const auto& freq : freq_list) { + auto freq_str = to_string_dec_uint(freq) + "\n"; + f.write(freq_str.c_str(), freq_str.length()); + } + + text_range_number.set("Saved: " + path.filename().string()); + }); +} + +HopperView::HopperView( + NavigationView& nav) + : nav_{nav} { + // baseband::run_image(portapack::spi_flash::image_tag_jammer); + baseband::run_prepared_image(portapack::memory::map::m4_code.base()); + + add_children({&menu_freq_list, + &button_load_list, + &button_add_freq, + &button_delete_freq, + &button_save_list, + &button_clear, + &labels, + &options_type, + &text_range_number, + &text_range_total, + &options_speed, + &options_hop, + &field_timetx, + &field_timepause, + &field_jitter, + &field_gain, + &field_amp, + &button_transmit}); + + options_type.set_selected_index(3); // Rand CW + options_speed.set_selected_index(3); // 10kHz + options_hop.set_selected_index(3); // 50ms + button_transmit.set_style(&style_val); + + field_timetx.set_value(30); + field_timepause.set_value(1); + field_gain.set_value(transmitter_model.tx_gain()); + field_amp.set_value(transmitter_model.rf_amp()); + + button_load_list.on_select = [this]() { + load_list(); + update_freq_list_menu_view(); + }; + + button_add_freq.on_select = [this]() { + if (freq_list.size() < JAMMER_MAX_CH) { + auto kb_view = nav_.push(0); + kb_view->on_changed = [this](rf::Frequency freq) { + freq_list.push_back(freq); + update_freq_list_menu_view(); + }; + + } else { + nav_.display_modal("Err", "No more."); + } + update_freq_list_menu_view(); + }; + + button_delete_freq.on_select = [this]() { + auto i = menu_freq_list.highlighted_index(); + if (i < freq_list.size()) { + freq_list.erase(freq_list.begin() + i); + } + update_freq_list_menu_view(); + }; + + button_save_list.on_select = [this]() { + save_list(); + update_freq_list_menu_view(); + }; + + button_clear.on_select = [this]() { + // clang-format off + nav_.display_modal("Del:", "Clean all?\n", YESNO, [this](bool choice) { + if (choice){ + freq_list.clear(); + update_freq_list_menu_view(); + } }, TRUE); + // clang-format on + + update_freq_list_menu_view(); + }; + + button_transmit.on_select = [this](Button&) { + if (jamming || cooling) { + stop_tx(); + } else { + // if hop speed is 0, alert the user that this will cause a freeze on UI + if (options_hop.selected_index_value() == 0) { + nav_.display_modal( + "Warning", "Hopping set to 0ms (fastest).\n\nTHIS WILL FREEZE THE HACKRF,\npress RESET button to stop\n\nAre you sure?", YESNO, [this](bool choice) { + if (choice) { + // Wait for UI update before the freeze + chThdSleepMilliseconds(50); + start_tx(); + } + }, + TRUE); + } else { + // if hop speed is not 0, just start the transmission + start_tx(); + } + } + }; + + menu_freq_list.on_left = [this]() { + button_load_list.focus(); + }; + + menu_freq_list.on_right = [this]() { + button_load_list.focus(); + }; + + update_freq_list_menu_view(); +} + +} // namespace ui::external_app::hopper diff --git a/firmware/application/external/hopper/ui_hopper.hpp b/firmware/application/external/hopper/ui_hopper.hpp new file mode 100644 index 000000000..f77623b00 --- /dev/null +++ b/firmware/application/external/hopper/ui_hopper.hpp @@ -0,0 +1,242 @@ +/* + * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * Copyright (C) 2016 Furrtek + * Copyright (C) 2020 euquiq + * copyleft mr.r0b0t from the F society + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui.hpp" +#include "ui_language.hpp" +#include "ui_widget.hpp" +#include "ui_navigation.hpp" +#include "ui_tabview.hpp" +#include "transmitter_model.hpp" +#include "message.hpp" +#include "jammer.hpp" +#include "lfsr_random.hpp" +#include "radio_state.hpp" + +using namespace jammer; + +namespace ui::external_app::hopper { + +class HopperView : public View { + public: + HopperView(NavigationView& nav); + ~HopperView(); + + HopperView(const HopperView&) = delete; + HopperView(HopperView&&) = delete; + HopperView& operator=(const HopperView&) = delete; + HopperView& operator=(HopperView&&) = delete; + + void focus() override; + void update_freq_list_menu_view(); + + std::string title() const override { return "Hopper"; }; + + std::vector freq_list{315000000, 433920000}; + + private: + NavigationView& nav_; + TxRadioState radio_state_{ + 0 /* frequency */, + 3500000 /* bandwidth */, + 3072000 /* sampling rate */ + }; + + void start_tx(); + void on_timer(); + void stop_tx(); + void set_hopper_channel(uint32_t i, uint32_t width, uint64_t center, uint32_t duration); + void on_retune(const rf::Frequency freq, const uint32_t range); + void load_list(); + void save_list(); + void on_file_save_write(const std::string& value); + + HopperChannel* hopper_channels = (HopperChannel*)shared_memory.bb_data.data; + bool jamming{false}; + bool cooling{false}; // euquiq: Indicates jammer in cooldown + uint16_t seconds = 0; // euquiq: seconds counter for toggling tx / cooldown + int16_t mscounter = 0; // euquiq: Internal ms counter for do_timer() + lfsr_word_t lfsr_v = 1; // euquiq: Used to generate "random" Jitter + + std::string filename_buffer = ""; + + const Style& style_val = *Theme::getInstance()->fg_green; + const Style& style_cancel = *Theme::getInstance()->fg_red; + + MenuView menu_freq_list{ + {0, 0, screen_width, 8 * 16}, + false}; + + NewButton button_load_list{ + {0 * 8, 9 * 16 + 4, 4 * 8, 32}, + {}, + &bitmap_icon_load, + Color::dark_blue(), + /*vcenter*/ true}; + + NewButton button_save_list{ + {4 * 8, 9 * 16 + 4, 4 * 8, 32}, + {}, + &bitmap_icon_save, + Color::dark_blue(), + /*vcenter*/ true}; + + NewButton button_add_freq{ + {8 * 8 + 4, 9 * 16 + 4, 4 * 8, 32}, + {}, + &bitmap_icon_add, + Color::dark_green(), + /*vcenter*/ true}; + + NewButton button_delete_freq{ + {12 * 8 + 4, 9 * 16 + 4, 4 * 8, 32}, + {}, + &bitmap_icon_trash, + Color::dark_red(), + /*vcenter*/ true}; + + NewButton button_clear{ + {screen_width - 4 * 8, 9 * 16 + 4, 4 * 8, 32}, + {}, + &bitmap_icon_tools_wipesd, + Color::red(), + /*vcenter*/ true}; + + Labels labels{ + {{2 * 8, 23 * 8}, "Type:", Theme::getInstance()->fg_light->foreground}, + {{1 * 8, 25 * 8}, "Speed:", Theme::getInstance()->fg_light->foreground}, + {{3 * 8, 27 * 8}, "Hop:", Theme::getInstance()->fg_light->foreground}, + {{4 * 8, 29 * 8}, "TX:", Theme::getInstance()->fg_light->foreground}, + {{1 * 8, 31 * 8}, "Sle3p:", Theme::getInstance()->fg_light->foreground}, // euquiq: Token of appreciation to TheSle3p, which made this ehnancement a reality with his bounty. + {{0 * 8, 33 * 8}, "Jitter:", Theme::getInstance()->fg_light->foreground}, // Maybe the repository curator can keep the "mystype" for some versions. + {{11 * 8, 29 * 8}, "Secs.", Theme::getInstance()->fg_light->foreground}, + {{11 * 8, 31 * 8}, "Secs.", Theme::getInstance()->fg_light->foreground}, + {{11 * 8, 33 * 8}, "/60", Theme::getInstance()->fg_light->foreground}, + {{2 * 8, 35 * 8}, "Gain:", Theme::getInstance()->fg_light->foreground}, + {{11 * 8, 35 * 8}, "A:", Theme::getInstance()->fg_light->foreground}}; + + OptionsField options_type{ + {7 * 8, 23 * 8}, + 8, + { + {"Rand FSK", 0}, + {"FM tone", 1}, + {"CW sweep", 2}, + {"Rand CW", 3}, + {"Sine", 4}, + {"Square", 5}, + {"Sawtooth", 6}, + {"Triangle", 7}, + {"Chirp", 8}, + {"Gauss", 9}, + {"Brute", 10}, + }}; + + Text text_range_number{ + {16 * 8, 23 * 8, 2 * 8, 16}, + "--"}; + Text text_range_total{ + {18 * 8, 23 * 8, 3 * 8, 16}, + "/--"}; + + OptionsField options_speed{ + {7 * 8, 25 * 8}, + 6, + {{"10Hz ", 10}, + {"100Hz ", 100}, + {"1kHz ", 1000}, + {"10kHz ", 10000}, + {"100kHz", 100000}}}; + + OptionsField options_hop{ + {7 * 8, 27 * 8}, + 6, + {{"0ms !!", 0}, + {"1ms ", 1}, + {"10ms ", 10}, + {"50ms ", 50}, + {"100ms", 100}, + {"1s ", 1000}, + {"2s ", 2000}, + {"5s ", 5000}, + {"10s ", 10000}}}; + + NumberField field_timetx{ + {7 * 8, 29 * 8}, + 3, + {1, 180}, + 1, + ' ', + }; + + NumberField field_timepause{ + {8 * 8, 31 * 8}, + 2, + {1, 60}, + 1, + ' ', + }; + + NumberField field_jitter{ + {8 * 8, 33 * 8}, + 2, + {1, 60}, + 1, + ' ', + }; + + NumberField field_gain{ + {8 * 8, 35 * 8}, + 2, + {0, 47}, + 1, + ' ', + }; + + NumberField field_amp{ + {13 * 8, 35 * 8}, + 1, + {0, 1}, + 1, + ' ', + }; + + Button button_transmit{ + {148, 216, 80, 80}, + LanguageHelper::currentMessages[LANG_START]}; + + MessageHandlerRegistration message_handler_retune{ + Message::ID::Retune, + [this](Message* const p) { + const auto message = static_cast(p); + this->on_retune(message->freq, message->range); + }}; + + MessageHandlerRegistration message_handler_frame_sync{ + Message::ID::DisplayFrameSync, + [this](const Message* const) { + this->on_timer(); + }}; +}; + +} // namespace ui::external_app::hopper diff --git a/firmware/application/external/jammer/ui_jammer.cpp b/firmware/application/external/jammer/ui_jammer.cpp index c8c43f819..fc3e097a4 100644 --- a/firmware/application/external/jammer/ui_jammer.cpp +++ b/firmware/application/external/jammer/ui_jammer.cpp @@ -1,6 +1,7 @@ /* * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. * Copyright (C) 2016 Furrtek + * Copyright (C) 2025 RocketGod - Added modes from my Flipper Zero RF Jammer App - https://betaskynet.com * * This file is part of PortaPack. * @@ -36,7 +37,6 @@ void RangeView::focus() { } void RangeView::update_start(rf::Frequency f) { - // Change everything except max frequency_range.min = f; button_start.set_text(to_string_short_freq(f)); @@ -48,7 +48,6 @@ void RangeView::update_start(rf::Frequency f) { } void RangeView::update_stop(rf::Frequency f) { - // Change everything except min frequency_range.max = f; button_stop.set_text(to_string_short_freq(f)); @@ -60,7 +59,6 @@ void RangeView::update_stop(rf::Frequency f) { } void RangeView::update_center(rf::Frequency f) { - // Change min/max/center, keep width center = f; button_center.set_text(to_string_short_freq(center)); @@ -75,7 +73,6 @@ void RangeView::update_center(rf::Frequency f) { } void RangeView::update_width(uint32_t w) { - // Change min/max/width, keep center width = w; button_width.set_text(to_string_short_freq(width)); @@ -91,7 +88,6 @@ void RangeView::update_width(uint32_t w) { } void RangeView::paint(Painter&) { - // Draw lines and arrows Rect r; Point p; Coord c; @@ -162,7 +158,7 @@ RangeView::RangeView(NavigationView& nav) { auto load_view = nav.push(); load_view->on_frequency_loaded = [this](rf::Frequency value) { update_center(value); - update_width(100000); // 100kHz default jamming bandwidth when loading unique frequency + update_width(100000); }; load_view->on_range_loaded = [this](rf::Frequency start, rf::Frequency stop) { update_start(start); @@ -193,10 +189,37 @@ void JammerView::set_jammer_channel(uint32_t i, uint32_t width, uint64_t center, jammer_channels[i].enabled = true; jammer_channels[i].width = (width * 0xFFFFFFULL) / 1536000; jammer_channels[i].center = center; - jammer_channels[i].duration = 30720 * duration; + jammer_channels[i].duration = duration ? 30720 * duration : 3000; } void JammerView::start_tx() { + if (update_config()) { + jamming = true; + button_transmit.set_style(&style_cancel); + button_transmit.set_text("STOP"); + + transmitter_model.set_rf_amp(field_amp.value()); + transmitter_model.set_tx_gain(field_gain.value()); + transmitter_model.set_baseband_bandwidth(28'000'000); + transmitter_model.enable(); + + baseband::set_jammer(true, (JammerType)options_type.selected_index(), options_speed.selected_index_value()); + mscounter = 0; + } +} + +void JammerView::stop_tx() { + button_transmit.set_style(&style_val); + button_transmit.set_text("START"); + transmitter_model.disable(); + baseband::set_jammer(false, JammerType::TYPE_FSK, 0); + jamming = false; + cooling = false; + seconds = 0; + mscounter = 0; +} + +bool JammerView::update_config() { uint32_t c, i = 0; size_t num_channels; rf::Frequency start_freq, range_bw, range_bw_sub, ch_width; @@ -204,24 +227,19 @@ void JammerView::start_tx() { size_t hop_value = options_hop.selected_index_value(); - // Disable all channels by default for (c = 0; c < JAMMER_MAX_CH; c++) jammer_channels[c].enabled = false; - // Generate jamming channels with JAMMER_MAX_CH maximum width - // Convert ranges min/max to center/bw for (size_t r = 0; r < 3; r++) { if (range_views[r]->frequency_range.enabled) { range_bw = abs(range_views[r]->frequency_range.max - range_views[r]->frequency_range.min); - // Get lower bound if (range_views[r]->frequency_range.min < range_views[r]->frequency_range.max) start_freq = range_views[r]->frequency_range.min; else start_freq = range_views[r]->frequency_range.max; if (range_bw >= JAMMER_CH_WIDTH) { - // Split range in multiple channels num_channels = 0; range_bw_sub = range_bw; @@ -241,7 +259,6 @@ void JammerView::start_tx() { i++; } } else { - // Range fits in a single channel if (i >= JAMMER_MAX_CH) { out_of_ranges = true; } else { @@ -254,43 +271,24 @@ void JammerView::start_tx() { if (!out_of_ranges && i) { text_range_total.set("/" + to_string_dec_uint(i, 2)); - - jamming = true; - button_transmit.set_style(&style_cancel); - button_transmit.set_text("STOP"); - - transmitter_model.set_rf_amp(field_amp.value()); - transmitter_model.set_tx_gain(field_gain.value()); - transmitter_model.set_baseband_bandwidth(28'000'000); // Although tx is narrowband , let's use Max TX LPF . - transmitter_model.enable(); - - baseband::set_jammer(true, (JammerType)options_type.selected_index(), options_speed.selected_index_value()); - mscounter = 0; // euquiq: Reset internal ms counter for do_timer() + return true; } else { if (out_of_ranges) nav_.display_modal("Error", "Jamming bandwidth too large.\nMust be less than 24MHz."); else nav_.display_modal("Error", "No range enabled."); + return false; } } -void JammerView::stop_tx() { - button_transmit.set_style(&style_val); - button_transmit.set_text("START"); - transmitter_model.disable(); - baseband::set_jammer(false, JammerType::TYPE_FSK, 0); - jamming = false; - cooling = false; -} - -// called each 1/60th of second void JammerView::on_timer() { - if (++mscounter == 60) { + if (++mscounter >= 60) { mscounter = 0; if (jamming) { + int32_t timepause = field_timepause.value(); if (cooling) { - if (++seconds >= field_timepause.value()) { // Re-start TX - transmitter_model.set_baseband_bandwidth(28'000'000); // Although tx is narrowband , let's use Max TX LPF . + if (timepause == 0 || ++seconds >= timepause) { + transmitter_model.set_baseband_bandwidth(28'000'000); transmitter_model.enable(); button_transmit.set_text("STOP"); baseband::set_jammer(true, (JammerType)options_type.selected_index(), options_speed.selected_index_value()); @@ -306,8 +304,7 @@ void JammerView::on_timer() { seconds = 0; } } else { - if (++seconds >= field_timetx.value()) // Start cooling period: - { + if (timepause && ++seconds >= field_timetx.value()) { transmitter_model.disable(); button_transmit.set_text("PAUSED"); baseband::set_jammer(false, JammerType::TYPE_FSK, 0); @@ -327,11 +324,9 @@ void JammerView::on_timer() { } } -JammerView::JammerView( - NavigationView& nav) +JammerView::JammerView(NavigationView& nav) : nav_{nav} { - Rect view_rect = {0, 3 * 8, 240, 80}; - // baseband::run_image(portapack::spi_flash::image_tag_jammer); + Rect view_rect = {0, 3 * 8, screen_width, 80}; baseband::run_prepared_image(portapack::memory::map::m4_code.base()); add_children({&tab_view, @@ -355,15 +350,101 @@ JammerView::JammerView( view_range_b.set_parent_rect(view_rect); view_range_c.set_parent_rect(view_rect); - options_type.set_selected_index(3); // Rand CW - options_speed.set_selected_index(3); // 10kHz - options_hop.set_selected_index(1); // 50ms - button_transmit.set_style(&style_val); + view_range_a.check_enabled.set_value(true); + view_range_a.frequency_range.enabled = true; + view_range_a.update_center(315'000'000); + view_range_a.update_width(1'000'000); + options_type.set_selected_index(3); + options_speed.set_selected_index(3); + options_hop.set_selected_index(0); field_timetx.set_value(30); - field_timepause.set_value(1); + field_timepause.set_value(0); + field_jitter.set_value(0); field_gain.set_value(transmitter_model.tx_gain()); field_amp.set_value(transmitter_model.rf_amp()); + button_transmit.set_style(&style_val); + + options_type.on_change = [this](size_t, OptionsField::value_t) { + if (jamming) update_config(); + if (jamming && !cooling) baseband::set_jammer(true, (JammerType)options_type.selected_index(), options_speed.selected_index_value()); + }; + + options_speed.on_change = [this](size_t, OptionsField::value_t) { + if (jamming) update_config(); + if (jamming && !cooling) baseband::set_jammer(true, (JammerType)options_type.selected_index(), options_speed.selected_index_value()); + }; + + options_hop.on_change = [this](size_t, OptionsField::value_t) { + if (jamming) update_config(); + }; + + field_timetx.on_change = [this](int32_t) { + if (jamming) update_config(); + }; + + field_timepause.on_change = [this](int32_t) { + if (jamming) update_config(); + }; + + field_jitter.on_change = [this](int32_t) { + if (jamming) update_config(); + }; + + field_gain.on_change = [this](int32_t v) { + if (jamming) transmitter_model.set_tx_gain(v); + }; + + field_amp.on_change = [this](int32_t v) { + if (jamming) transmitter_model.set_rf_amp(v); + }; + + for (auto range_view : range_views) { + range_view->check_enabled.on_select = [this](Checkbox&, bool) { + if (jamming) update_config(); + }; + range_view->button_start.on_select = [this, range_view](Button&) { + auto new_view = nav_.push(range_view->frequency_range.min); + new_view->on_changed = [this, range_view](rf::Frequency f) { + range_view->update_start(f); + if (jamming) update_config(); + }; + }; + range_view->button_stop.on_select = [this, range_view](Button&) { + auto new_view = nav_.push(range_view->frequency_range.max); + new_view->on_changed = [this, range_view](rf::Frequency f) { + range_view->update_stop(f); + if (jamming) update_config(); + }; + }; + range_view->button_center.on_select = [this, range_view](Button&) { + auto new_view = nav_.push(range_view->center); + new_view->on_changed = [this, range_view](rf::Frequency f) { + range_view->update_center(f); + if (jamming) update_config(); + }; + }; + range_view->button_width.on_select = [this, range_view](Button&) { + auto new_view = nav_.push(range_view->width); + new_view->on_changed = [this, range_view](rf::Frequency f) { + range_view->update_width(f); + if (jamming) update_config(); + }; + }; + range_view->button_load_range.on_select = [this, range_view](Button&) { + auto load_view = nav_.push(); + load_view->on_frequency_loaded = [this, range_view](rf::Frequency value) { + range_view->update_center(value); + range_view->update_width(100000); + if (jamming) update_config(); + }; + load_view->on_range_loaded = [this, range_view](rf::Frequency start, rf::Frequency stop) { + range_view->update_start(start); + range_view->update_stop(stop); + if (jamming) update_config(); + }; + }; + } button_transmit.on_select = [this](Button&) { if (jamming || cooling) diff --git a/firmware/application/external/jammer/ui_jammer.hpp b/firmware/application/external/jammer/ui_jammer.hpp index 3a34dbf2c..b338cdd47 100644 --- a/firmware/application/external/jammer/ui_jammer.hpp +++ b/firmware/application/external/jammer/ui_jammer.hpp @@ -1,6 +1,7 @@ /* * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. * Copyright (C) 2016 Furrtek + * Copyright (C) 2025 RocketGod - Added modes from my Flipper Zero RF Jammer App - https://betaskynet.com * * This file is part of PortaPack. * @@ -40,27 +41,12 @@ class RangeView : public View { RangeView(NavigationView& nav); void focus() override; - void paint(Painter&) override; + void paint(Painter& painter) override; jammer_range_t frequency_range{false, 0, 0}; - - private: - void update_start(rf::Frequency f); - void update_stop(rf::Frequency f); - void update_center(rf::Frequency f); - void update_width(uint32_t w); - uint32_t width{}; rf::Frequency center{}; - const Style& style_info = *Theme::getInstance()->fg_medium; - - Labels labels{ - {{2 * 8, 8 * 8 + 4}, LanguageHelper::currentMessages[LANG_START], Theme::getInstance()->fg_light->foreground}, - {{23 * 8, 8 * 8 + 4}, LanguageHelper::currentMessages[LANG_STOP], Theme::getInstance()->fg_light->foreground}, - {{12 * 8, 5 * 8 - 4}, "Center", Theme::getInstance()->fg_light->foreground}, - {{12 * 8 + 4, 13 * 8}, "Width", Theme::getInstance()->fg_light->foreground}}; - Checkbox check_enabled{ {1 * 8, 4}, 12, @@ -73,15 +59,32 @@ class RangeView : public View { Button button_start{ {0 * 8, 11 * 8, 11 * 8, 28}, ""}; + Button button_stop{ {19 * 8, 11 * 8, 11 * 8, 28}, ""}; + Button button_center{ {76, 4 * 15 - 4, 11 * 8, 28}, ""}; + Button button_width{ {76, 8 * 15, 11 * 8, 28}, ""}; + + void update_start(rf::Frequency f); + void update_stop(rf::Frequency f); + void update_center(rf::Frequency f); + void update_width(uint32_t w); + + private: + const Style& style_info = *Theme::getInstance()->fg_medium; + + Labels labels{ + {{2 * 8, 8 * 8 + 4}, LanguageHelper::currentMessages[LANG_START], Theme::getInstance()->fg_light->foreground}, + {{23 * 8, 8 * 8 + 4}, LanguageHelper::currentMessages[LANG_STOP], Theme::getInstance()->fg_light->foreground}, + {{12 * 8, 5 * 8 - 4}, "Center", Theme::getInstance()->fg_light->foreground}, + {{12 * 8 + 4, 13 * 8}, "Width", Theme::getInstance()->fg_light->foreground}}; }; class JammerView : public View { @@ -109,15 +112,16 @@ class JammerView : public View { void start_tx(); void on_timer(); void stop_tx(); + bool update_config(); void set_jammer_channel(uint32_t i, uint32_t width, uint64_t center, uint32_t duration); void on_retune(const rf::Frequency freq, const uint32_t range); JammerChannel* jammer_channels = (JammerChannel*)shared_memory.bb_data.data; bool jamming{false}; - bool cooling{false}; // euquiq: Indicates jammer in cooldown - uint16_t seconds = 0; // euquiq: seconds counter for toggling tx / cooldown - int16_t mscounter = 0; // euquiq: Internal ms counter for do_timer() - lfsr_word_t lfsr_v = 1; // euquiq: Used to generate "random" Jitter + bool cooling{false}; + uint16_t seconds{0}; + int16_t mscounter{0}; + lfsr_word_t lfsr_v{1}; const Style& style_val = *Theme::getInstance()->fg_green; const Style& style_cancel = *Theme::getInstance()->fg_red; @@ -139,8 +143,8 @@ class JammerView : public View { {{1 * 8, 25 * 8}, "Speed:", Theme::getInstance()->fg_light->foreground}, {{3 * 8, 27 * 8}, "Hop:", Theme::getInstance()->fg_light->foreground}, {{4 * 8, 29 * 8}, "TX:", Theme::getInstance()->fg_light->foreground}, - {{1 * 8, 31 * 8}, "Sle3p:", Theme::getInstance()->fg_light->foreground}, // euquiq: Token of appreciation to TheSle3p, which made this ehnancement a reality with his bounty. - {{0 * 8, 33 * 8}, "Jitter:", Theme::getInstance()->fg_light->foreground}, // Maybe the repository curator can keep the "mystype" for some versions. + {{1 * 8, 31 * 8}, "Sleep:", Theme::getInstance()->fg_light->foreground}, + {{0 * 8, 33 * 8}, "Jitter:", Theme::getInstance()->fg_light->foreground}, {{11 * 8, 29 * 8}, "Secs.", Theme::getInstance()->fg_light->foreground}, {{11 * 8, 31 * 8}, "Secs.", Theme::getInstance()->fg_light->foreground}, {{11 * 8, 33 * 8}, "/60", Theme::getInstance()->fg_light->foreground}, @@ -150,12 +154,17 @@ class JammerView : public View { OptionsField options_type{ {7 * 8, 23 * 8}, 8, - { - {"Rand FSK", 0}, - {"FM tone", 1}, - {"CW sweep", 2}, - {"Rand CW", 3}, - }}; + {{"Rand FSK", 0}, + {"FM tone", 1}, + {"CW sweep", 2}, + {"Noise", 3}, + {"Sine", 4}, + {"Square", 5}, + {"Sawtooth", 6}, + {"Triangle", 7}, + {"Chirp", 8}, + {"Gauss", 9}, + {"Brute", 10}}}; Text text_range_number{ {16 * 8, 23 * 8, 2 * 8, 16}, @@ -176,7 +185,8 @@ class JammerView : public View { OptionsField options_hop{ {7 * 8, 27 * 8}, 5, - {{"10ms ", 1}, + {{"Off ", 0}, + {"10ms ", 1}, {"50ms ", 5}, {"100ms", 10}, {"1s ", 100}, @@ -195,7 +205,7 @@ class JammerView : public View { NumberField field_timepause{ {8 * 8, 31 * 8}, 2, - {1, 60}, + {0, 60}, 1, ' ', }; @@ -203,7 +213,7 @@ class JammerView : public View { NumberField field_jitter{ {8 * 8, 33 * 8}, 2, - {1, 60}, + {0, 60}, 1, ' ', }; diff --git a/firmware/application/external/lcr/ui_lcr.cpp b/firmware/application/external/lcr/ui_lcr.cpp index 6181dbcf6..f704f3c22 100644 --- a/firmware/application/external/lcr/ui_lcr.cpp +++ b/firmware/application/external/lcr/ui_lcr.cpp @@ -189,6 +189,7 @@ void LCRView::on_button_set_am(NavigationView& nav, int16_t button_id) { nav, litteral[button_id], 7, + ENTER_KEYBOARD_MODE_ALPHA, [this, button_id](std::string& buffer) { texts[button_id].set(buffer); }); @@ -257,6 +258,7 @@ LCRView::LCRView(NavigationView& nav) { nav, rgsb, 4, + ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& buffer) { button_set_rgsb.set_text(buffer); }); diff --git a/firmware/application/external/level/main.cpp b/firmware/application/external/level/main.cpp new file mode 100644 index 000000000..d3388be53 --- /dev/null +++ b/firmware/application/external/level/main.cpp @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2023 Bernd Herzog + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui.hpp" +#include "ui_level.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::level { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::level + +extern "C" { + +__attribute__((section(".external_app.app_level.application_information"), used)) application_information_t _application_information_level = { + /*.memory_location = */ (uint8_t*)0x00000000, + /*.externalAppEntry = */ ui::external_app::level::initialize_app, + /*.header_version = */ CURRENT_HEADER_VERSION, + /*.app_version = */ VERSION_MD5, + + /*.app_name = */ "Level", + /*.bitmap_data = */ + { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x20, + 0x12, + 0x48, + 0x8A, + 0x51, + 0xCA, + 0x53, + 0xCA, + 0x53, + 0x8A, + 0x51, + 0x12, + 0x48, + 0x84, + 0x21, + 0xC0, + 0x03, + 0x40, + 0x02, + 0x60, + 0x06, + 0x20, + 0x04, + 0x30, + 0x0C, + 0xF0, + 0x0F}, + /*.icon_color = */ ui::Color::green().v, + /*.menu_location = */ app_location_t::RX, + /*.desired_menu_position = */ -1, + + // this has to be the biggest baseband used by the app. Level is using AM,WFM,NFM,AMFM,SPEC and WFM is the biggest + /*.m4_app_tag = portapack::spi_flash::image_tag_nfm */ {'P', 'W', 'F', 'M'}, + /*.m4_app_offset = */ 0x00000000, // will be filled at compile time +}; +} diff --git a/firmware/application/apps/ui_level.cpp b/firmware/application/external/level/ui_level.cpp similarity index 96% rename from firmware/application/apps/ui_level.cpp rename to firmware/application/external/level/ui_level.cpp index e5aa5ef7f..e8034f31d 100644 --- a/firmware/application/apps/ui_level.cpp +++ b/firmware/application/external/level/ui_level.cpp @@ -33,7 +33,7 @@ using namespace portapack; using namespace tonekey; using portapack::memory::map::backup_ram; -namespace ui { +namespace ui::external_app::level { // Function to map the value from one range to another int32_t LevelView::map(int32_t value, int32_t fromLow, int32_t fromHigh, int32_t toLow, int32_t toHigh) { @@ -130,9 +130,16 @@ LevelView::LevelView(NavigationView& nav) freqman_set_modulation_option(field_mode); field_mode.on_change = [this](size_t, OptionsField::value_t v) { - if (v != -1) { - change_mode(v); + static freqman_index_t last_mode = WFM_MODULATION; + if (v > SPEC_MODULATION) { + if (last_mode == SPEC_MODULATION) + v = AM_MODULATION; + else + v = SPEC_MODULATION; + field_mode.set_selected_index(v); } + last_mode = v; + change_mode(v); }; field_mode.set_by_value(radio_mode); // Reflect the mode into the manual selector field_bw.set_selected_index(radio_bw); @@ -329,4 +336,4 @@ void LevelView::on_freqchg(int64_t freq) { button_frequency.set_text("<" + to_string_short_freq(freq) + " MHz>"); } -} /* namespace ui */ +} // namespace ui::external_app::level diff --git a/firmware/application/apps/ui_level.hpp b/firmware/application/external/level/ui_level.hpp similarity index 96% rename from firmware/application/apps/ui_level.hpp rename to firmware/application/external/level/ui_level.hpp index b2d03b3ef..e08a46087 100644 --- a/firmware/application/apps/ui_level.hpp +++ b/firmware/application/external/level/ui_level.hpp @@ -39,7 +39,7 @@ #include "ui_receiver.hpp" #include "ui_spectrum.hpp" -namespace ui { +namespace ui::external_app::level { class LevelView : public View { public: @@ -178,12 +178,12 @@ class LevelView : public View { RSSIGraph rssi_graph{ // 240x320 => - {0, 6 * 16 + 8, 240 - 5 * 8, 320 - (6 * 16)}, + {0, 6 * 16 + 8, screen_width - 5 * 8, screen_height - (6 * 16)}, }; RSSI rssi{ // 240x320 => - {240 - 5 * 8, 6 * 16 + 8, 5 * 8, 320 - (6 * 16)}, + {screen_width - 5 * 8, 6 * 16 + 8, 5 * 8, screen_height - (6 * 16)}, }; void handle_coded_squelch(const uint32_t value); @@ -211,6 +211,6 @@ class LevelView : public View { }}; }; -} /* namespace ui */ +} // namespace ui::external_app::level #endif diff --git a/firmware/application/external/lge/lge_app.cpp b/firmware/application/external/lge/lge_app.cpp index 97e561635..82a0446c0 100644 --- a/firmware/application/external/lge/lge_app.cpp +++ b/firmware/application/external/lge/lge_app.cpp @@ -311,6 +311,7 @@ LGEView::LGEView(NavigationView& nav) { nav, nickname, 15, + ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& buffer) { button_text.set_text(buffer); }); diff --git a/firmware/application/external/lge/lge_app.hpp b/firmware/application/external/lge/lge_app.hpp index fdef3807f..2e612a7ec 100644 --- a/firmware/application/external/lge/lge_app.hpp +++ b/firmware/application/external/lge/lge_app.hpp @@ -171,7 +171,7 @@ class LGEView : public View { '0'}; Console console{ - {0, 18 * 8, 30 * 8, 7 * 16}}; + {0, 18 * 8, screen_width, 7 * 16}}; TransmitterView tx_view{ 16 * 16, diff --git a/firmware/application/external/mcu_temperature/mcu_temperature.hpp b/firmware/application/external/mcu_temperature/mcu_temperature.hpp index a8cbb617f..217ab9a25 100644 --- a/firmware/application/external/mcu_temperature/mcu_temperature.hpp +++ b/firmware/application/external/mcu_temperature/mcu_temperature.hpp @@ -72,16 +72,16 @@ class McuTemperatureView : public View { private: Text text_title{ - {76, 16, 240, 16}, + {76, 16, screen_width, 16}, "Temperature", }; McuTemperatureWidget temperature_widget{ - {0, 40, 240, 180}, + {0, 40, screen_width, 180}, }; Button button_done{ - {72, 264, 96, 24}, + {72, screen_height - 56, 96, 24}, "Done"}; }; diff --git a/firmware/application/external/metronome/ui_metronome.cpp b/firmware/application/external/metronome/ui_metronome.cpp index 75dca3b38..3436be9cc 100644 --- a/firmware/application/external/metronome/ui_metronome.cpp +++ b/firmware/application/external/metronome/ui_metronome.cpp @@ -23,6 +23,7 @@ #include "baseband_api.hpp" #include "audio.hpp" #include "portapack.hpp" +#include "ui_textentry.hpp" using namespace portapack; @@ -42,6 +43,7 @@ MetronomeView::MetronomeView(NavigationView& nav) &field_unaccent_beep_tune, &field_beep_flash_duration, &field_bpm, + &button_enter_tap_tempo, &progressbar, }); @@ -59,6 +61,14 @@ MetronomeView::MetronomeView(NavigationView& nav) } }; + button_enter_tap_tempo.on_select = [this](Button&) { + auto tap_tempo_view = nav_.push(field_bpm.value()); + + tap_tempo_view->on_apply = [this](uint16_t bpm) { + field_bpm.set_value(bpm); + }; + }; + field_volume.set_value(0); // seems that a change is required to force update, so setting to 0 first field_volume.set_value(99); @@ -174,4 +184,116 @@ void MetronomeView::run() { } } +MetronomeTapTempoView::MetronomeTapTempoView(NavigationView& nav, uint16_t bpm) + : nav_{nav}, + bpm_{bpm} { + add_children({ + &button_input, + &button_tap, + &button_cancel, + &button_apply, + }); + + bpm_when_entered_ = bpm; // save for if user cancel + + // im aware that we have duplicated painter which means in this app, weo have two painter instances + // here is the reason why this is necessary: + // We need to draw the bpm big font once when enter, which would be at bad timing in constructor, + // cuz it happened before the view is pushed to nav, which casued it actually didn't draw + // which leads me have to override the paint func from father and draw inside of it. + // + // BUT I can't completely package the draw logic inside of the paint func, + // cuz set_dirty has flaw and cause screen flicker during the char changes, if i just package there and use set_dirty() + Painter painter_instance_2; + + button_input.on_select = [this](Button&) { + input_buffer = to_string_dec_uint(bpm_); + text_prompt( + nav_, + input_buffer, + 3, + ENTER_KEYBOARD_MODE_DIGITS, + [this](std::string& buffer) { + if (buffer.empty()) { + return; + } + bpm_ = atoi(buffer.c_str()); + + if (on_apply) { + on_apply(bpm_); + } + }); + }; + + button_tap.on_select = [&](Button&) { + on_tap(painter_instance_2); + }; + + button_apply.on_select = [this](Button&) { + // it's dynamically applied in tap handler + // the design allow user to hear changes before apply + nav_.pop(); + }; + + button_cancel.on_select = [this](Button&) { + bpm_ = bpm_when_entered_; + if (on_apply) { + on_apply(bpm_); + } + nav_.pop(); + }; +} + +void MetronomeTapTempoView::focus() { + button_tap.focus(); +} + +void MetronomeTapTempoView::paint(Painter& painter) { + View::paint(painter); + painter.draw_char({(0 * 16) * 4 + 2 * 16, 3 * 16}, *Theme::getInstance()->fg_light, '0' + bpm_ / 100, 4); + painter.draw_char({(1 * 16) * 4 + 2 * 16, 3 * 16}, *Theme::getInstance()->fg_light, '0' + (bpm_ / 10) % 10, 4); + painter.draw_char({(2 * 16) * 4 + 2 * 16, 3 * 16}, *Theme::getInstance()->fg_light, '0' + bpm_ % 10, 4); +} + +/* +NB: i don't really know if the cpu clock is 1000Hz AKA 1ms per tick for chTimeNow() + but it should be, refering to the stop watch app. + and also i compared with my real metronome and it's very close + so I assume it's 1ms per tick +*/ +void MetronomeTapTempoView::on_tap(Painter& painter) { + /* ^ NB: this painter accepted from painter_instance_2*/ + systime_t current_time = chTimeNow(); + if (last_tap_time > 0) { + uint32_t interval_ms = current_time - last_tap_time; + + if (interval_ms > 100) { + uint16_t this_time_bpm = 60000 / interval_ms; + + if (this_time_bpm > 0 && this_time_bpm < 400) { + bpms_deque.push_back(this_time_bpm); + if (bpms_deque.size() > 4) { // one bar length cuz most music tempo is quarter note as 1 beat + bpms_deque.pop_front(); + } + + // avg + uint32_t sum = 0; + for (auto& bpm : bpms_deque) { + sum += bpm; + } + bpm_ = sum / bpms_deque.size(); + + if (on_apply) { + on_apply(bpm_); + } + + painter.draw_char({(0 * 16) * 4 + 2 * 16, 3 * 16}, *Theme::getInstance()->fg_light, '0' + bpm_ / 100, 4); + painter.draw_char({(1 * 16) * 4 + 2 * 16, 3 * 16}, *Theme::getInstance()->fg_light, '0' + (bpm_ / 10) % 10, 4); + painter.draw_char({(2 * 16) * 4 + 2 * 16, 3 * 16}, *Theme::getInstance()->fg_light, '0' + bpm_ % 10, 4); + } + } + } + last_tap_time = current_time; +} + } // namespace ui::external_app::metronome \ No newline at end of file diff --git a/firmware/application/external/metronome/ui_metronome.hpp b/firmware/application/external/metronome/ui_metronome.hpp index d813146da..04604b573 100644 --- a/firmware/application/external/metronome/ui_metronome.hpp +++ b/firmware/application/external/metronome/ui_metronome.hpp @@ -27,6 +27,8 @@ #include "audio.hpp" #include "ch.h" +#include + namespace ui::external_app::metronome { class MetronomeView : public View { @@ -73,6 +75,11 @@ class MetronomeView : public View { 1, ' '}; + Button button_enter_tap_tempo{ + {(sizeof("BPM:") + 6) * 8, 1 * 16, (sizeof("Tap Tempo") + 3) * 8, 16}, + "Tap Tempo", + }; + NumberField field_rythm_unaccent_time{// e.g. 3 in 3/4 beat {(sizeof("Rhythm:") + 1) * 8, 4 * 16}, 2, @@ -121,6 +128,45 @@ class MetronomeView : public View { {0 * 16, 8 * 16, screen_width, screen_height - 14 * 16}}; }; +class MetronomeTapTempoView : public View { + public: + std::function on_apply{}; + + MetronomeTapTempoView(NavigationView& nav, uint16_t bpm); + + std::string title() const override { return "Tap.T"; }; + void focus() override; + void paint(Painter& painter) override; + + private: + void on_tap(Painter& painter); + + NavigationView& nav_; + + uint16_t bpm_{0}; + uint16_t bpm_when_entered_{0}; // this pass from MetronomeView and need to restore if user cancel + std::deque bpms_deque = {0}; // take average for recent taps to debounce + uint32_t last_tap_time{0}; + + std::string input_buffer{""}; // needed by text_prompt + + Button button_input{ + {0, 0, screen_width, 2 * 16}, + "Input BPM"}; + + Button button_tap{ + {0, 8 * 16, screen_width, 7 * 16}, + "Tap BPM"}; + + Button button_cancel{ + {1, 17 * 16, screen_width / 2 - 4, 2 * 16}, + "Cancel"}; + + Button button_apply{ + {1 + screen_width / 2 + 1, 17 * 16, screen_width / 2 - 4, 2 * 16}, + "Apply"}; +}; + } // namespace ui::external_app::metronome #endif /*__UI_METRONOME_H__*/ \ No newline at end of file diff --git a/firmware/application/external/morse_tx/ui_morse.cpp b/firmware/application/external/morse_tx/ui_morse.cpp index e6421ab00..054eee695 100644 --- a/firmware/application/external/morse_tx/ui_morse.cpp +++ b/firmware/application/external/morse_tx/ui_morse.cpp @@ -98,8 +98,33 @@ static msg_t loopthread_fn(void* arg) { return 0; } +void MorseView::on_set_tone(NavigationView& nav) { + tone_input_buffer = to_string_dec_uint(tone); + + text_prompt(nav, tone_input_buffer, 4, ENTER_KEYBOARD_MODE_DIGITS, [this](std::string& buffer) { + bool is_digit_only = true; + for (size_t i = 0; i < tone_input_buffer.size(); ++i) { + if (tone_input_buffer[i] < '0' || tone_input_buffer[i] > '9') { + is_digit_only = false; + break; + } + } + if (!buffer.empty() && is_digit_only) { + int new_tone = atoi(buffer.c_str()); + if (new_tone >= 100 && new_tone <= 9999) { + tone = new_tone; + field_tone.set_value(tone); + update_tx_duration(); + } else { + nav_.display_modal("Out of range", "Tone must be between 100 and 9999 Hz"); + } + } else { + nav_.display_modal("Invalid input", "Please enter digits only"); + } + }); +} void MorseView::on_set_text(NavigationView& nav) { - text_prompt(nav, buffer, 28); + text_prompt(nav, buffer, 28, ENTER_KEYBOARD_MODE_ALPHA); } void MorseView::focus() { @@ -250,6 +275,10 @@ MorseView::MorseView( tone = value; }; + field_tone.on_select = [this, &nav](NumberField&) { + this->on_set_tone(nav); + }; + button_message.on_select = [this, &nav](Button&) { this->on_set_text(nav); }; diff --git a/firmware/application/external/morse_tx/ui_morse.hpp b/firmware/application/external/morse_tx/ui_morse.hpp index 57da2cad7..fb54fcd7a 100644 --- a/firmware/application/external/morse_tx/ui_morse.hpp +++ b/firmware/application/external/morse_tx/ui_morse.hpp @@ -72,6 +72,7 @@ class MorseView : public View { NavigationView& nav_; std::string message{}; uint32_t time_units{0}; + std::string tone_input_buffer{}; // Holds the tone value while the text prompt is open TxRadioState radio_state_{ 0 /* frequency */, @@ -100,6 +101,7 @@ class MorseView : public View { bool start_tx(); void update_tx_duration(); + void on_set_tone(NavigationView& nav); void on_set_text(NavigationView& nav); void set_foxhunt(size_t i); diff --git a/firmware/application/external/noaaapt_rx/main.cpp b/firmware/application/external/noaaapt_rx/main.cpp new file mode 100644 index 000000000..0e4c8e8fb --- /dev/null +++ b/firmware/application/external/noaaapt_rx/main.cpp @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2025 HTotoo + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui.hpp" +#include "ui_noaaapt_rx.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::noaaapt_rx { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::noaaapt_rx + +extern "C" { + +__attribute__((section(".external_app.app_noaaapt_rx.application_information"), used)) application_information_t _application_information_noaaapt_rx = { + /*.memory_location = */ (uint8_t*)0x00000000, + /*.externalAppEntry = */ ui::external_app::noaaapt_rx::initialize_app, + /*.header_version = */ CURRENT_HEADER_VERSION, + /*.app_version = */ VERSION_MD5, + + /*.app_name = */ "NOAA APT", + /*.bitmap_data = */ { + 0x1C, + 0x80, + 0x3C, + 0x40, + 0x78, + 0x18, + 0xF0, + 0x20, + 0xE0, + 0x26, + 0x00, + 0x0F, + 0x80, + 0x0F, + 0xC0, + 0x07, + 0xE1, + 0x1B, + 0xC5, + 0x39, + 0x95, + 0x78, + 0x35, + 0xF0, + 0x09, + 0xE0, + 0x72, + 0xC0, + 0x04, + 0x00, + 0x78, + 0x00, + }, + /*.icon_color = */ ui::Color::orange().v, + /*.menu_location = */ app_location_t::RX, + /*.desired_menu_position = */ -1, + + /*.m4_app_tag = portapack::spi_flash::image_tag_noaaapt_rx */ {'P', 'N', 'O', 'A'}, + /*.m4_app_offset = */ 0x00000000, // will be filled at compile time +}; +} diff --git a/firmware/application/external/noaaapt_rx/ui_noaaapt_rx.cpp b/firmware/application/external/noaaapt_rx/ui_noaaapt_rx.cpp new file mode 100644 index 000000000..ff7e93ffd --- /dev/null +++ b/firmware/application/external/noaaapt_rx/ui_noaaapt_rx.cpp @@ -0,0 +1,155 @@ +/* + * Copyright (C) 2025 HTotoo + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +/* +TODOS LATER: + - add load data from wav file (maybe to a separate app, not this) + - AGC?!? + - Auto doppler correction + - fix and enable sync detection + - auto start / stop bmp save on each image +*/ + +#include "ui_noaaapt_rx.hpp" + +#include "audio.hpp" +#include "rtc_time.hpp" +#include "baseband_api.hpp" +#include "string_format.hpp" +#include "portapack_persistent_memory.hpp" +#include "lcd_ili9341.hpp" + +using namespace portapack; +using namespace modems; +using namespace ui; + +namespace ui::external_app::noaaapt_rx { + +void NoaaAptRxView::focus() { + field_frequency.focus(); +} + +NoaaAptRxView::NoaaAptRxView(NavigationView& nav) + : nav_{nav} { + baseband::run_prepared_image(portapack::memory::map::m4_code.base()); + add_children({&rssi, + &field_rf_amp, + &field_lna, + &field_vga, + &field_volume, + &field_frequency, + &txt_status, + //&check_wav, // enable this or the record view, but not both. yet it has some error, says "Invalid object" a lot. so disabled it + //&record_view, // + &button_ss}); + + record_view.set_filename_date_frequency(true); + record_view.on_error = [&nav](std::string message) { + nav.display_modal("Error", message); + }; + record_view.set_sampling_rate(12000); + + field_frequency.set_step(100); + field_frequency.on_edit_shown = [this]() { + paused = true; + }; + field_frequency.on_edit_hidden = [this]() { + paused = false; + }; + audio::set_rate(audio::Rate::Hz_12000); + audio::output::start(); + receiver_model.set_hidden_offset(NOAAAPT_FREQ_OFFSET); + receiver_model.set_baseband_bandwidth(1750000); + receiver_model.set_sampling_rate(3072000); + receiver_model.enable(); + txt_status.set("Waiting for signal."); + + button_ss.on_select = [this](Button&) { + if (bmp.is_loaded()) { + bmp.close(); + button_ss.set_text(LanguageHelper::currentMessages[LANG_START]); + if (check_wav.value()) { + record_view.stop(); + } + return; + } + if (check_wav.value()) { + record_view.start(); + } + ensure_directory("/BMP"); + bmp.create("/BMP/noaa_" + to_string_timestamp(rtc_time::now()) + ".bmp", NOAAAPT_PX_SIZE, 1); + + button_ss.set_text(LanguageHelper::currentMessages[LANG_STOP]); + }; + on_settings_changed(); +} + +NoaaAptRxView::~NoaaAptRxView() { + stopping = true; + receiver_model.set_hidden_offset(0); + bmp.close(); + receiver_model.disable(); + baseband::shutdown(); + audio::output::stop(); + record_view.stop(); +} + +void NoaaAptRxView::on_settings_changed() { + baseband::set_noaaapt_config(); +} + +void NoaaAptRxView::on_status(NoaaAptRxStatusDataMessage msg) { + (void)msg; + std::string tmp = ""; + if (msg.state == 0) { + tmp = "Waiting for signal."; + } else if (msg.state == 1) { + tmp = "Synced."; + } else if (msg.state == 2) { + tmp = "Image arriving."; + } + txt_status.set(tmp); +} + +// this stores and displays the image. keep it as simple as you can. a bit more complexity will kill the sync +void NoaaAptRxView::on_image(NoaaAptRxImageDataMessage msg) { + if ((line_num) >= UI_POS_HEIGHT_REMAINING(NOAA_IMG_START_ROW)) line_num = 0; // for draw reset + + for (uint16_t i = 0; i < msg.cnt; i += 1) { + Color pxl = {msg.image[i], msg.image[i], msg.image[i]}; + bmp.write_next_px(pxl); + line_in_part++; + if (line_in_part == NOAAAPT_PX_SIZE) { + line_in_part = 0; + line_num++; + bmp.expand_y_delta(1); + } + + uint16_t xpos = line_in_part / (NOAAAPT_PX_SIZE / 240); + if (xpos >= 240) xpos = 239; + line_buffer[xpos] = pxl; + if ((line_in_part == 0)) { + portapack::display.render_line({0, line_num + NOAA_IMG_START_ROW * 16}, 240, line_buffer); + } + } +} + +} // namespace ui::external_app::noaaapt_rx diff --git a/firmware/application/external/noaaapt_rx/ui_noaaapt_rx.hpp b/firmware/application/external/noaaapt_rx/ui_noaaapt_rx.hpp new file mode 100644 index 000000000..a2db6b9bb --- /dev/null +++ b/firmware/application/external/noaaapt_rx/ui_noaaapt_rx.hpp @@ -0,0 +1,139 @@ +/* + * Copyright (C) 2025 HTotoo + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __UI_noaaapt_RX_H__ +#define __UI_noaaapt_RX_H__ + +#include "ui.hpp" +#include "ui_language.hpp" +#include "ui_navigation.hpp" +#include "ui_receiver.hpp" +#include "ui_geomap.hpp" +#include "ui_freq_field.hpp" +#include "ui_record_view.hpp" +#include "app_settings.hpp" +#include "radio_state.hpp" +#include "log_file.hpp" +#include "utility.hpp" +#include "ui_fileman.hpp" +#include "bmpfile.hpp" +#include "file_path.hpp" + +using namespace ui; + +namespace ui::external_app::noaaapt_rx { + +#define NOAAAPT_PX_SIZE 2080 + +#define NOAAAPT_FREQ_OFFSET 0 + +#define NOAA_IMG_START_ROW 4 + +class NoaaAptRxView : public View { + public: + NoaaAptRxView(NavigationView& nav); + ~NoaaAptRxView(); + + void focus() override; + + std::string title() const override { return "NOAA APT"; }; + + private: + void on_settings_changed(); + void on_status(NoaaAptRxStatusDataMessage msg); + void on_image(NoaaAptRxImageDataMessage msg); + + bool stopping = false; + + uint16_t line_num = 0; // nth line + uint16_t line_in_part = 0; // got multiple parts of a line, so keep track of it + uint8_t delayer = 0; + ui::Color line_buffer[240]; + std::filesystem::path filetohandle = ""; + + bool paused = false; // when freq field is shown for example, we need to pause + + BMPFile bmp{}; + + NavigationView& nav_; + RxRadioState radio_state_{}; + app_settings::SettingsManager settings_{ + "rx_noaaapt", + app_settings::Mode::RX, + {}}; + + RFAmpField field_rf_amp{ + {UI_POS_X(13), UI_POS_Y(0)}}; + LNAGainField field_lna{ + {UI_POS_X(15), UI_POS_Y(0)}}; + VGAGainField field_vga{ + {UI_POS_X(18), UI_POS_Y(0)}}; + RSSI rssi{ + {UI_POS_X(21), UI_POS_Y(0), UI_POS_WIDTH(6), 4}}; + AudioVolumeField field_volume{ + {UI_POS_X_RIGHT(2), UI_POS_Y(0)}}; + + RxFrequencyField field_frequency{ + {UI_POS_X(0), UI_POS_Y(0)}, + nav_}; + + RecordView record_view{ + {UI_POS_X(0), UI_POS_Y(2), UI_POS_MAXWIDTH, UI_POS_DEFAULT_HEIGHT}, + u"AUD", + u"AUDIO", + RecordView::FileType::WAV, + 4096, + 4}; + + Checkbox check_wav{ + {UI_POS_X(0), UI_POS_Y(2)}, + 12, + "Save WAV too", + true}; + + Text txt_status{ + {UI_POS_X(0), UI_POS_Y(1), UI_POS_WIDTH(20), UI_POS_DEFAULT_HEIGHT}, + }; + + Button button_ss{ + {UI_POS_X_RIGHT(6), UI_POS_Y(1), UI_POS_WIDTH(5), UI_POS_DEFAULT_HEIGHT}, + LanguageHelper::currentMessages[LANG_START]}; + + MessageHandlerRegistration message_handler_stats{ + Message::ID::NoaaAptRxStatusData, + [this](const Message* const p) { + if (stopping || paused) return; + const auto message = *reinterpret_cast(p); + on_status(message); + }}; + + MessageHandlerRegistration message_handler_image{ + Message::ID::NoaaAptRxImageData, + [this](const Message* const p) { + if (stopping || paused) return; + const auto message = *reinterpret_cast(p); + on_image(message); + }}; +}; + +} // namespace ui::external_app::noaaapt_rx + +#endif /*__UI_noaaapt_RX_H__*/ diff --git a/firmware/application/external/nrf_rx/ui_nrf_rx.hpp b/firmware/application/external/nrf_rx/ui_nrf_rx.hpp index 15b255253..0401604bd 100644 --- a/firmware/application/external/nrf_rx/ui_nrf_rx.hpp +++ b/firmware/application/external/nrf_rx/ui_nrf_rx.hpp @@ -77,11 +77,11 @@ class NRFRxView : public View { nav_}; Button button_modem_setup{ - {240 - 12 * 8, 1 * 16, 96, 24}, + {screen_width - 12 * 8, 1 * 16, 96, 24}, LanguageHelper::currentMessages[LANG_MODEM_SETUP]}; Console console{ - {0, 4 * 16, 240, 240}}; + {0, 4 * 16, screen_width, screen_height - 80}}; MessageHandlerRegistration message_handler_packet{ Message::ID::AFSKData, diff --git a/firmware/application/external/ook_editor/ui_ook_editor.cpp b/firmware/application/external/ook_editor/ui_ook_editor.cpp index a4e53cccc..e78c0aacb 100644 --- a/firmware/application/external/ook_editor/ui_ook_editor.cpp +++ b/firmware/application/external/ook_editor/ui_ook_editor.cpp @@ -1,5 +1,7 @@ /* * Copyright (C) 2024 Samir Sánchez Garnica @sasaga92 + * copyleft Elliot Alderson from F society + * copyleft Darlene Alderson from F society * * This file is part of PortaPack. * @@ -178,7 +180,8 @@ OOKEditorAppView::OOKEditorAppView(NavigationView& nav) &label_waveform, &waveform, &button_open, - &button_save}); + &button_save, + &button_bug_key}); // Initialize default values for controls field_symbol_rate.set_value(100); @@ -207,6 +210,7 @@ OOKEditorAppView::OOKEditorAppView(NavigationView& nav) nav, outputFileBuffer, 64, + ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& buffer) { on_save_file(buffer); }); @@ -260,6 +264,7 @@ OOKEditorAppView::OOKEditorAppView(NavigationView& nav) nav, ook_data.payload, 100, + ENTER_KEYBOARD_MODE_DIGITS, [this](std::string& s) { text_payload.set(s); draw_waveform(); @@ -267,6 +272,16 @@ OOKEditorAppView::OOKEditorAppView(NavigationView& nav) }); }; + button_bug_key.on_select = [&](Button&) { + auto bug_key_input_view = nav_.push(ook_data.payload); + + bug_key_input_view->on_save = [this](std::string p) { + ook_data.payload = p; + text_payload.set(ook_data.payload); + draw_waveform(); + }; + }; + // Configure button to start or stop the transmission button_send_stop.on_select = [this](Button&) { if (!is_transmitting) { @@ -280,4 +295,145 @@ OOKEditorAppView::OOKEditorAppView(NavigationView& nav) // initial waveform drawing (should be a single line) draw_waveform(); } + +/*************** bug key view ****************/ + +OOKEditorBugKeyView::OOKEditorBugKeyView(NavigationView& nav, std::string payload) + : nav_{nav}, + payload_{payload} { + add_children({&labels, + &field_primary_step, + &field_secondary_step, + &console, + &button_insert_high_level_long, + &button_insert_high_level_short, + &button_insert_low_level_long, + &button_insert_low_level_short, + &button_delete, + &button_save}); + + button_insert_low_level_short.on_select = [this](Button&) { + on_insert(InsertType::LOW_LEVEL_SHORT); + }; + + button_insert_low_level_long.on_select = [this](Button&) { + on_insert(InsertType::LOW_LEVEL_LONG); + }; + + button_insert_high_level_short.on_select = [this](Button&) { + on_insert(InsertType::HIGH_LEVEL_SHORT); + }; + + button_insert_high_level_long.on_select = [this](Button&) { + on_insert(InsertType::HIGH_LEVEL_LONG); + }; + + button_delete.on_select = [this](Button&) { + on_delete(); + }; + + button_save.on_select = [this](Button&) { + if (on_save) on_save(build_payload()); + nav_.pop(); + }; + + auto update_step_buttons = [this](int32_t value, Button& btnLow, Button& btnHigh) { + std::string low_level_btn_str; + std::string high_level_btn_str; + if (value <= 14) { // the button width allow max 14 chars + for (int i = 0; i < value; i++) { + low_level_btn_str.push_back('0'); + high_level_btn_str.push_back('1'); + } + } else { + low_level_btn_str = to_string_dec_int(value) + " * \"0\""; + high_level_btn_str = to_string_dec_int(value) + " * \"1\""; + } + btnLow.set_text(" "); // set_dirty broken console. this is work around + btnHigh.set_text(" "); + btnLow.set_text(low_level_btn_str); + btnHigh.set_text(high_level_btn_str); + }; + + field_primary_step.on_change = [&](int32_t) { + update_step_buttons(field_primary_step.value(), + button_insert_low_level_short, + button_insert_high_level_short); + update_console(); + }; + + field_secondary_step.on_change = [&](int32_t) { + update_step_buttons(field_secondary_step.value(), + button_insert_low_level_long, + button_insert_high_level_long); + update_console(); + }; + + field_primary_step.set_value(1); + field_secondary_step.set_value(2); + update_step_buttons(field_primary_step.value(), + button_insert_low_level_short, + button_insert_high_level_short); + update_console(); +} + +void OOKEditorBugKeyView::on_insert(InsertType type) { + auto promise_length = 0; + std::string promose_level = "0"; + switch (type) { + case InsertType::LOW_LEVEL_SHORT: + promise_length = field_primary_step.value(); + promose_level = "0"; + break; + case InsertType::LOW_LEVEL_LONG: + promise_length = field_secondary_step.value(); + promose_level = "0"; + break; + case InsertType::HIGH_LEVEL_SHORT: + promise_length = field_primary_step.value(); + promose_level = "1"; + break; + case InsertType::HIGH_LEVEL_LONG: + promise_length = field_secondary_step.value(); + promose_level = "1"; + break; + } + + for (auto i = 0; i < promise_length; i++) { + payload_ += promose_level; + } + + update_console(); +} + +void OOKEditorBugKeyView::on_delete() { + // I'm aware that if user inputted like: [long high][long high][short high], this will delete a pile of them + // but this doesnt matter because: + // 1. they should not do it, high or low shoudl cross each other, don't repeat + // 2. don't have too much RAM to trach the input trace + if (payload_.length() > 0) { + size_t len = payload_.length(); + char last_char = payload_[len - 1]; + size_t pos = len - 1; + while (pos > 0 && payload_[pos - 1] == last_char) { + pos--; + } + payload_.erase(pos); + update_console(); + } +} + +void OOKEditorBugKeyView::update_console() { + console.clear(true); + console.write(payload_); +} + +std::string OOKEditorBugKeyView::build_payload() { + return payload_; +} + +void OOKEditorBugKeyView::focus() { + button_save.focus(); +} + } // namespace ui::external_app::ook_editor diff --git a/firmware/application/external/ook_editor/ui_ook_editor.hpp b/firmware/application/external/ook_editor/ui_ook_editor.hpp index 343763342..ddcd15da6 100644 --- a/firmware/application/external/ook_editor/ui_ook_editor.hpp +++ b/firmware/application/external/ook_editor/ui_ook_editor.hpp @@ -1,5 +1,7 @@ /* * Copyright (C) 2024 Samir Sánchez Garnica @sasaga92 + * copyleft Elliot Alderson from F society + * copyleft Darlene Alderson from F society * * This file is part of PortaPack. * @@ -29,6 +31,8 @@ namespace ui::external_app::ook_editor { #define TRANSMISSION_FREQUENCY_DEFAULT 433920000U // Sets the default transmission frequency (27 MHz). #define WAVEFORM_BUFFER_SIZE 550 +/*****************Editor View ******************/ + class OOKEditorAppView : public View { public: void focus() override; @@ -105,7 +109,7 @@ class OOKEditorAppView : public View { Labels label_waveform{{{0, 188}, "Waveform:", Theme::getInstance()->fg_light->foreground}}; // Text field to display the various status message of the app - Text text_app_status{{0, 160, 30 * 8, 16}, ""}; + Text text_app_status{{0, 160, screen_width, 16}, ""}; // OptionsField for selectable sample rates. OptionsField field_sample_rate{{96, 20}, 7, {{"250k", 250000U}, {"1M", 1000000U}, {"2M", 2000000U}, {"5M", 5000000U}, {"10M", 10000000U}, {"20M", 20000000U}}}; @@ -117,19 +121,96 @@ class OOKEditorAppView : public View { NumberField field_repeat{{210, 40}, 3, {1, 999}, 1, '0', false}; // Text field to display the payload data. - Text text_payload{{0 * 8, 100, 30 * 8, 16}, ""}; + Text text_payload{{0 * 8, 100, screen_width, 16}, ""}; // Buttons for setting configurations, opening files, and starting transmission. Button button_set{{0, 125, 60, 28}, LanguageHelper::currentMessages[LANG_SET]}; Button button_open{{68, 125, 80, 28}, LanguageHelper::currentMessages[LANG_OPEN_FILE]}; Button button_save{{154, 125, 80, 28}, LanguageHelper::currentMessages[LANG_SAVE_FILE]}; + Button button_bug_key{{0, 125 + 28 + 3, screen_width, 28}, "Bug Key"}; Button button_send_stop{{80, 273, 80, 32}, LanguageHelper::currentMessages[LANG_SEND]}; // Progress bar to display transmission progress. ProgressBar progressbar{{2 * 8, 250, 208, 16}}; // Waveform display using waveform buffer and yellow theme color. - Waveform waveform{{0, 208, 240, 32}, waveform_buffer, 0, 0, true, Theme::getInstance()->fg_yellow->foreground}; + Waveform waveform{{0, 208, screen_width, 32}, waveform_buffer, 0, 0, true, Theme::getInstance()->fg_yellow->foreground}; +}; + +/******** bug key input view **********/ + +enum InsertType { + LOW_LEVEL_SHORT, + LOW_LEVEL_LONG, + HIGH_LEVEL_SHORT, + HIGH_LEVEL_LONG +}; + +class OOKEditorBugKeyView : public View { + public: + std::function on_save{}; + + OOKEditorBugKeyView(NavigationView& nav, std::string payload); + + std::string title() const override { return "Bug.K"; }; + void focus() override; + + private: + NavigationView& nav_; + std::string payload_ = ""; + std::string path_ = ""; + uint32_t delay_{0}; + std::string delay_str{""}; // needed by text_prompt + + void on_insert(InsertType type); + void on_delete(); + void update_console(); + std::string build_payload(); + + Labels labels{ + {{0 * 8, 0 * 16}, "Primary Step", Theme::getInstance()->fg_light->foreground}, + {{(screen_width / 2), 0 * 16}, "Secondary Step", Theme::getInstance()->fg_light->foreground}}; + + NumberField field_primary_step{ + {0 * 8, 1 * 16}, + 3, + {0, 550}, + 1, + ' '}; + + NumberField field_secondary_step{ + {(screen_width / 2), 1 * 16}, + 3, + {0, 550}, + 1, + ' '}; + + Console console{ + {0, 3 * 16, screen_width, screen_height - 10 * 16}}; + + Button button_insert_low_level_long{ + {0 * 8, 13 * 16, screen_width / 2, 2 * 16}, + "00"}; + + Button button_insert_low_level_short{ + {0 * 8, 15 * 16, screen_width / 2, 2 * 16}, + "0"}; + + Button button_insert_high_level_long{ + {(screen_width / 2), 13 * 16, screen_width / 2, 2 * 16}, + "11"}; + + Button button_insert_high_level_short{ + {(screen_width / 2), 15 * 16, screen_width / 2, 2 * 16}, + "1"}; + + Button button_delete{ + {1, 17 * 16, screen_width / 2 - 4, 2 * 16}, + "fg_light->foreground}, + {{0 * 8, 7 * 16}, "Stop Position:", Theme::getInstance()->fg_light->foreground}, + {{0 * 8, 13 * 16}, "Encoder Type:", Theme::getInstance()->fg_light->foreground}}; + Button button_startstop{ - {0, 3 * 16, 96, 24}, + {8, screen_height - 48 - 16, screen_width - 2 * 8, 48}, LanguageHelper::currentMessages[LANG_START]}; + Button button_input_start_position{ + {8, 4 * 16, screen_width - 2 * 8, 24}, + "Input Start Pos"}; + + Button button_input_stop_position{ + {8, 9 * 16, screen_width - 2 * 8, 24}, + "Input Stop Pos"}; + NumberField field_start{ - {0 * 8, 1 * 16}, + {0 * 8, 3 * 16}, 8, {0, 2500}, 1, @@ -65,15 +79,16 @@ class OOKBruteView : public View { true}; NumberField field_stop{ - {11 * 8, 1 * 16}, + {0, 8 * 16}, 9, {0, 2500}, 1, ' ', true}; + // NB: when add new encoder here you should also change the char count limit for input range buttons by it's digits in DEC OptionsField options_atkmode{ - {0 * 8, 2 * 16}, + {0, 14 * 16}, 12, {{"Came12", 0}, {"Came24", 1}, @@ -86,6 +101,8 @@ class OOKBruteView : public View { uint32_t counter = 0; // for packet change + std::string text_input_buffer{}; // this is needed by the text_prompt func + void start(); void stop(); diff --git a/firmware/application/external/playlist_editor/main.cpp b/firmware/application/external/playlist_editor/main.cpp new file mode 100644 index 000000000..3ffe23c5b --- /dev/null +++ b/firmware/application/external/playlist_editor/main.cpp @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2024 Bernd Herzog + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui.hpp" +#include "ui_playlist_editor.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::playlist_editor { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::playlist_editor + +extern "C" { + +__attribute__((section(".external_app.app_playlist_editor.application_information"), used)) application_information_t _application_information_playlist_editor = { + /*.memory_location = */ (uint8_t*)0x00000000, + /*.externalAppEntry = */ ui::external_app::playlist_editor::initialize_app, + /*.header_version = */ CURRENT_HEADER_VERSION, + /*.app_version = */ VERSION_MD5, + + /*.app_name = */ "PlaylistEdit", + /*.bitmap_data = */ { + 0x03, + 0x00, + 0x00, + 0x00, + 0x03, + 0x00, + 0x00, + 0x00, + 0x0F, + 0x00, + 0x00, + 0x00, + 0x03, + 0x01, + 0x80, + 0x01, + 0xC3, + 0x00, + 0xE0, + 0xFF, + 0xEF, + 0xFF, + 0xC0, + 0x00, + 0x83, + 0x01, + 0x00, + 0x01, + 0x03, + 0x00, + 0x00, + 0x00, + + }, + /*.icon_color = */ ui::Color::cyan().v, + /*.menu_location = */ app_location_t::UTILITIES, + /*.desired_menu_position = */ -1, + + /*.m4_app_tag = portapack::spi_flash::image_tag_none */ {0, 0, 0, 0}, + /*.m4_app_offset = */ 0x00000000, // will be filled at compile time +}; +} \ No newline at end of file diff --git a/firmware/application/external/playlist_editor/ui_playlist_editor.cpp b/firmware/application/external/playlist_editor/ui_playlist_editor.cpp new file mode 100644 index 000000000..6b9567a56 --- /dev/null +++ b/firmware/application/external/playlist_editor/ui_playlist_editor.cpp @@ -0,0 +1,369 @@ +/* + * copyleft Elliot Alderson from F society + * copyleft Darlene Alderson from F society + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui_playlist_editor.hpp" +#include "ui_navigation.hpp" +#include "ui_external_items_menu_loader.hpp" + +#include "file.hpp" +#include "ui_fileman.hpp" +#include "file_path.hpp" +#include "string_format.hpp" + +namespace fs = std::filesystem; + +#include "string_format.hpp" + +#include "file_reader.hpp" + +using namespace portapack; + +namespace ui::external_app::playlist_editor { + +/*********menu**********/ +PlaylistEditorView::PlaylistEditorView(NavigationView& nav) + : nav_{nav} { + portapack::async_tx_enabled = true; + add_children({&labels, + &button_new, + &text_current_ppl_file, + &menu_view, + &text_hint, + &button_open_playlist, + &button_edit, + &button_insert, + &button_save_playlist}); + + menu_view.set_parent_rect({0, 2 * 8, screen_width, 24 * 8}); + + menu_view.on_highlight = [this]() { + text_hint.set("Edit:" + + playlist[menu_view.highlighted_index()].substr(playlist[menu_view.highlighted_index()].find_last_of('/') + 1, + playlist[menu_view.highlighted_index()].find(',') - + playlist[menu_view.highlighted_index()].find_last_of('/') - 1)); + }; + + button_new.on_select = [this](Button&) { + if (on_create_ppl()) { + swap_opened_file_or_new_button(DisplayFilenameOrNewButton::DISPLAY_FILENAME); + refresh_interface(); + } + }; + + button_open_playlist.on_select = [this](Button&) { + open_file(); + }; + + button_edit.on_select = [this](Button&) { + on_edit_item(); + }; + + button_insert.on_select = [this](Button&) { + on_insert_item(); + }; + + button_save_playlist.on_select = [this](Button&) { + save_ppl(); + }; + + swap_opened_file_or_new_button(DisplayFilenameOrNewButton::DISPLAY_NEW_BUTTON); +} + +void PlaylistEditorView::focus() { + menu_view.focus(); +} + +void PlaylistEditorView::open_file() { + auto open_view = nav_.push(".PPL"); + open_view->push_dir(playlist_dir); + open_view->on_changed = [this](fs::path new_file_path) { + current_ppl_path = new_file_path; + on_file_changed(new_file_path); + }; +} + +void PlaylistEditorView::swap_opened_file_or_new_button(DisplayFilenameOrNewButton d) { + if (d == DisplayFilenameOrNewButton::DISPLAY_NEW_BUTTON) { + button_new.hidden(false); + text_current_ppl_file.hidden(true); + } else { + button_new.hidden(true); + text_current_ppl_file.hidden(false); + text_current_ppl_file.set(current_ppl_name_buffer); + } + refresh_interface(); +} + +/* +NB: same name would became as "open file" +*/ +bool PlaylistEditorView::on_create_ppl() { + bool success = false; + text_prompt( + nav_, + current_ppl_name_buffer, + 100, + ENTER_KEYBOARD_MODE_ALPHA, + [&](std::string& s) { + current_ppl_name_buffer = s; + + success = true; + current_ppl_name_buffer += ".PPL"; + current_ppl_path = playlist_dir / std::filesystem::path(current_ppl_name_buffer); + + File f; + f.open(current_ppl_path, true, true); // prob safer here as standalone obj as read only and then open again in process func + f.close(); + on_file_changed(current_ppl_path); + }); + + return success; +} + +void PlaylistEditorView::on_file_changed(const fs::path& new_file_path) { + File playlist_file; + auto error = playlist_file.open(new_file_path.string()); + + if (error) return; + + menu_view.clear(); + auto reader = FileLineReader(playlist_file); + + for (const auto& line : reader) { + playlist.push_back(line); + } + + for (auto& line : playlist) { + // remove empty lines + if (line == "\n" || line == "\r\n" || line == "\r") { + playlist.erase(std::remove(playlist.begin(), playlist.end(), line), playlist.end()); + } + + // remove line end \n etc + if (line.length() > 0 && (line[line.length() - 1] == '\n' || line[line.length() - 1] == '\r')) { + line = line.substr(0, line.length() - 1); + } + } + text_hint.set("Highlight an entry"); + + text_current_ppl_file.set(new_file_path.string()); + + ever_opened = true; + + swap_opened_file_or_new_button(DisplayFilenameOrNewButton::DISPLAY_FILENAME); + + refresh_menu_view(); +} + +void PlaylistEditorView::refresh_menu_view() { + menu_view.clear(); + + for (const auto& line : playlist) { + if (line.length() == 0 || line[0] == '#') { + menu_view.add_item({line, + ui::Color::grey(), + &bitmap_icon_notepad, + [this](KeyEvent) { + button_insert.focus(); + }}); + } else { + const auto filename = line.substr(line.find_last_of('/') + 1, line.find(',') - line.find_last_of('/') - 1); + menu_view.add_item({filename, + ui::Color::white(), + &bitmap_icon_cwgen, + [this](KeyEvent) { + button_edit.focus(); + }}); + } + } +} + +void PlaylistEditorView::on_edit_item() { + if (!ever_opened || playlist.empty()) { + nav_.display_modal("Err", "No entry"); + return; + } + auto edit_view = nav_.push( + playlist[menu_view.highlighted_index()]); + + edit_view->set_on_delete([this]() { + playlist.erase(playlist.begin() + menu_view.highlighted_index()); + refresh_interface(); + }); + + edit_view->on_save = [this](std::string new_item) { + playlist[menu_view.highlighted_index()] = new_item; + refresh_interface(); + }; +} + +void PlaylistEditorView::on_insert_item() { + // if (current_ppl_path.empty() || current_ppl_path.string().find_first_not_of(" \t\n\r") == std::string::npos) { + if (!ever_opened) { // TODO: this is a workaround because the above line is not working and I took one hour and didn't find the issue + nav_.display_modal("Err", "No playlist file loaded"); + return; + } + + auto edit_view = nav_.push( + ""); + + edit_view->on_save = [&](std::string new_item) { + if (playlist.empty()) { + playlist.push_back(new_item); + } else { + playlist.insert(playlist.begin() + menu_view.highlighted_index() + 1, new_item); + } + refresh_interface(); + }; +} + +void PlaylistEditorView::refresh_interface() { + const auto previous_index = menu_view.highlighted_index(); + refresh_menu_view(); + set_dirty(); + menu_view.set_highlighted(previous_index); +} + +void PlaylistEditorView::save_ppl() { + if (current_ppl_path.empty()) { + nav_.display_modal("Err", "No playlist file loaded"); + return; + } else if (playlist.empty()) { + nav_.display_modal("Err", "List is empty"); + return; + } + + File playlist_file; + auto error = playlist_file.open(current_ppl_path.string(), false, false); + + if (error) { + nav_.display_modal("Err", "open err"); + return; + } + + // clear file + playlist_file.seek(0); + playlist_file.truncate(); + + // write new data + for (const auto& entry : playlist) { + playlist_file.write_line(entry); + } + + nav_.display_modal("Save", "Saved playlist\n" + current_ppl_path.string()); +} + +/*********edit**********/ + +PlaylistItemEditView::PlaylistItemEditView( + NavigationView& nav, + std::string item) + : nav_{nav}, + original_item_{item} { + add_children({&labels, + &field_path, + &field_delay, + &button_browse, + &button_input_delay, + &button_delete, + &button_save}); + + button_browse.on_select = [this, &nav](Button&) { + auto open_view = nav.push(".C16"); + open_view->push_dir(captures_dir); + open_view->on_changed = [this](fs::path path) { + field_path.set_text(path.string()); + path_ = path.string(); + }; + field_delay.on_change = [&](auto) { + delay_ = field_delay.value(); + }; + }; + + button_input_delay.on_select = [this](Button&) { + delay_str = to_string_dec_uint(delay_); + if (delay_str == "0") { + delay_str = ""; + } + text_prompt( + nav_, + delay_str, + 100, + ENTER_KEYBOARD_MODE_ALPHA, + [&](std::string& s) { + delay_ = atoi(s.c_str()); + field_delay.set_value(delay_); + refresh_ui(); + }); + }; + + button_delete.on_select = [this](Button&) { + if (on_delete) on_delete(); + nav_.pop(); + }; + + button_save.on_select = [&](Button&) { + if (path_.empty()) { + nav_.display_modal("Err", "Select a file\n or press back to cancel"); + return; + } + if (on_save) on_save(build_item()); + nav_.pop(); + }; + + if (!on_delete) { + button_delete.hidden(true); + } + + parse_item(item); + refresh_ui(); +} + +void PlaylistItemEditView::focus() { + button_save.focus(); +} + +void PlaylistItemEditView::refresh_ui() { + field_path.set_text(path_); + field_delay.set_value(delay_); +} + +void PlaylistItemEditView::parse_item(std::string item) { + // Parse format: path,delay + if (item.empty()) { + return; + } + auto parts = split_string(item, ','); + if (parts.size() >= 1) { + path_ = std::string{parts[0]}; + } + if (parts.size() >= 2) { + delay_ = atoi(std::string{parts[1]}.c_str()); + } +} + +std::string PlaylistItemEditView::build_item() const { + const auto v = path_ + "," + to_string_dec_uint(field_delay.value()); + return path_ + "," + to_string_dec_uint(field_delay.value()); +} + +} // namespace ui::external_app::playlist_editor \ No newline at end of file diff --git a/firmware/application/external/playlist_editor/ui_playlist_editor.hpp b/firmware/application/external/playlist_editor/ui_playlist_editor.hpp new file mode 100644 index 000000000..c8d70f532 --- /dev/null +++ b/firmware/application/external/playlist_editor/ui_playlist_editor.hpp @@ -0,0 +1,159 @@ +/* + * copyleft Elliot Alderson from F society + * copyleft Darlene Alderson from F society + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __UI_PLAYLIST_EDITOR_H__ +#define __UI_PLAYLIST_EDITOR_H__ + +#include "ui_navigation.hpp" +namespace fs = std::filesystem; + +namespace ui::external_app::playlist_editor { + +enum DisplayFilenameOrNewButton { + DISPLAY_FILENAME, + DISPLAY_NEW_BUTTON +}; + +class PlaylistEditorView : public View { + public: + PlaylistEditorView(NavigationView& nav); + std::string title() const override { return "PPL Edit"; }; + + private: + NavigationView& nav_; + + void focus() override; + + std::vector playlist = {}; + fs::path current_ppl_path = ""; + std::string current_ppl_name_buffer = ""; // this is because text_prompt needs it. TODO: this is so annoying, shoudl refactor that func + bool ever_opened = false; + + Labels labels{ + {{0 * 8, 0 * 16}, "PPL file:", Theme::getInstance()->fg_light->foreground}}; + + Button button_new{ + {(sizeof("PPL file:") + 1) * 8, 0 * 16, 8 * 5, 16}, + "New"}; + + Text text_current_ppl_file{ + {sizeof("PPL file:") * 8, 0 * 16, screen_width - (int)sizeof("PPL file:") * 8, 16}, + ""}; + + MenuView menu_view{}; + + Text text_hint{ + {0, 27 * 8, screen_width, 16}, + "Open a PPL file"}; + + Text text_ppl_name{ + {0, 27 * 8, screen_width, 16}, + "Highlight an app"}; + + Button button_open_playlist{ + {0, 29 * 8, screen_width / 2 - 1, 32}, + "Open PPL"}; + + Button button_edit{ + {screen_width / 2 + 2, 29 * 8, screen_width / 2 - 2, 32}, + "Edit Item"}; + + Button button_insert{ + {0, screen_height - 32 - 16, screen_width / 2 - 1, 32}, + "Ins. After"}; + + Button button_save_playlist{ + {screen_width / 2 + 2, screen_height - 32 - 16, screen_width / 2 - 2, 32}, + "Save PPL"}; + + void open_file(); + void swap_opened_file_or_new_button(DisplayFilenameOrNewButton d); + void on_file_changed(const fs::path& path); + bool on_create_ppl(); + void refresh_interface(); + void on_edit_item(); + void on_insert_item(); + void refresh_menu_view(); + void save_ppl(); +}; + +class PlaylistItemEditView : public View { + public: + std::function on_save{}; + std::function on_delete{}; + + PlaylistItemEditView(NavigationView& nav, std::string item); + + std::string title() const override { return "Edit Item"; }; + void focus() override; + + void set_on_delete(std::function callback) { + on_delete = callback; + button_delete.hidden(false); + } + + private: + NavigationView& nav_; + std::string original_item_ = ""; + std::string path_ = ""; + uint32_t delay_{0}; + std::string delay_str{""}; // needed by text_prompt + + void refresh_ui(); + void parse_item(std::string item); + std::string build_item() const; + + Labels labels{ + {{0 * 8, 1 * 16}, "Path:", Theme::getInstance()->fg_light->foreground}, + {{2 * 8, 5 * 16}, "Delay(ms):", Theme::getInstance()->fg_light->foreground}}; + + TextField field_path{ + {0, 2 * 16, screen_width, 16}, + "empty"}; + + NumberField field_delay{ + {11 * 8, 5 * 16}, + 5, + {0, 99999}, + 10, + ' '}; + + Button button_browse{ + {2 * 8, 8 * 16, 8 * 8, 3 * 16}, + "Browse"}; + + Button button_input_delay{ + {12 * 8, 8 * 16, sizeof("Input Delay") * 8, 3 * 16}, + "Input Delay"}; + + Button button_delete{ + {1, 17 * 16, screen_width / 2 - 4, 2 * 16}, + "Delete"}; + + Button button_save{ + {1 + screen_width / 2 + 1, 17 * 16, screen_width / 2 - 4, 2 * 16}, + "Save"}; +}; + +} // namespace ui::external_app::playlist_editor + +#endif // __UI_PLAYLIST_EDITOR_H__ \ No newline at end of file diff --git a/firmware/application/external/protoview/ui_protoview.hpp b/firmware/application/external/protoview/ui_protoview.hpp index b356bcf8c..ff78fa648 100644 --- a/firmware/application/external/protoview/ui_protoview.hpp +++ b/firmware/application/external/protoview/ui_protoview.hpp @@ -60,29 +60,29 @@ class ProtoView : public View { "rx_protoview", app_settings::Mode::RX}; RFAmpField field_rf_amp{ - {13 * 8, 0 * 16}}; + {UI_POS_X(13), UI_POS_Y(0)}}; LNAGainField field_lna{ - {15 * 8, 0 * 16}}; + {UI_POS_X(15), UI_POS_Y(0)}}; VGAGainField field_vga{ - {18 * 8, 0 * 16}}; + {UI_POS_X(18), UI_POS_Y(0)}}; RSSI rssi{ - {21 * 8, 0, 6 * 8, 4}}; + {UI_POS_X(21), UI_POS_Y(0), UI_POS_WIDTH(6), 4}}; AudioVolumeField field_volume{ - {28 * 8, 0 * 16}}; + {UI_POS_X_RIGHT(2), UI_POS_Y(0)}}; RxFrequencyField field_frequency{ - {0 * 8, 0 * 16}, + {UI_POS_X(0), UI_POS_Y(0)}, nav_}; // need to seperate because label shift need to hide independently Labels label_zoom{ - {{0 * 8, 1 * 16}, "Zoom: ", Theme::getInstance()->fg_light->foreground}}; + {{UI_POS_X(0), UI_POS_Y(1)}, "Zoom: ", Theme::getInstance()->fg_light->foreground}}; Labels label_shift{ - {{0 * 8, 2 * 16}, "Shift: ", Theme::getInstance()->fg_light->foreground}}; + {{UI_POS_X(0), UI_POS_Y(2)}, "Shift: ", Theme::getInstance()->fg_light->foreground}}; OptionsField options_zoom{ - {7 * 8, 1 * 16}, + {UI_POS_X(7), UI_POS_Y(1)}, 4, {{"1", 1}, {"2", 2}, @@ -96,22 +96,22 @@ class ProtoView : public View { {"1000", 1000}}}; NumberField number_shift{ - {7 * 8, 2 * 16}, + {UI_POS_X(7), UI_POS_Y(2)}, 5, {-MAXSIGNALBUFFER, MAXSIGNALBUFFER}, 1, ' '}; Button button_reset{ - {screen_width - 12 * 8, 1 * 16, 96, 24}, + {UI_POS_X_RIGHT(12), UI_POS_Y(1), UI_POS_WIDTH(12), UI_POS_HEIGHT(1.5)}, LanguageHelper::currentMessages[LANG_RESET]}; Button button_pause{ - {screen_width - 12 * 8, 1 * 16 + 24, 96, 24}, + {UI_POS_X_RIGHT(12), UI_POS_Y(2.5), UI_POS_WIDTH(12), UI_POS_HEIGHT(1.5)}, LanguageHelper::currentMessages[LANG_PAUSE]}; Waveform waveform{ - {0, 8 * 8, 240, 50}, + {UI_POS_X(0), UI_POS_Y(4), UI_POS_MAXWIDTH, (UI_POS_HEIGHT_REMAINING(5) / 4) - 4}, waveform_buffer, 0, 0, @@ -119,7 +119,7 @@ class ProtoView : public View { Theme::getInstance()->fg_yellow->foreground}; Waveform waveform2{ - {0, 8 * 8 + 55, 240, 50}, + {UI_POS_X(0), UI_POS_Y(4) + (UI_POS_HEIGHT_REMAINING(5) / 4), UI_POS_MAXWIDTH, (UI_POS_HEIGHT_REMAINING(5) / 4) - 4}, &waveform_buffer[MAXDRAWCNTPERWF], 0, 0, @@ -127,7 +127,7 @@ class ProtoView : public View { Theme::getInstance()->fg_yellow->foreground}; Waveform waveform3{ - {0, 8 * 8 + 110, 240, 50}, + {UI_POS_X(0), UI_POS_Y(4) + 2 * (UI_POS_HEIGHT_REMAINING(5) / 4), UI_POS_MAXWIDTH, (UI_POS_HEIGHT_REMAINING(5) / 4) - 4}, &waveform_buffer[MAXDRAWCNTPERWF * 2], 0, 0, @@ -135,7 +135,7 @@ class ProtoView : public View { Theme::getInstance()->fg_yellow->foreground}; Waveform waveform4{ - {0, 8 * 8 + 165, 240, 50}, + {UI_POS_X(0), UI_POS_Y(4) + 3 * (UI_POS_HEIGHT_REMAINING(5) / 4), UI_POS_MAXWIDTH, (UI_POS_HEIGHT_REMAINING(5) / 4) - 4}, &waveform_buffer[MAXDRAWCNTPERWF * 3], 0, 0, diff --git a/firmware/application/external/random_password/main.cpp b/firmware/application/external/random_password/main.cpp index f92851e10..dbd70046f 100644 --- a/firmware/application/external/random_password/main.cpp +++ b/firmware/application/external/random_password/main.cpp @@ -38,7 +38,7 @@ __attribute__((section(".external_app.app_random_password.application_informatio /*.header_version = */ CURRENT_HEADER_VERSION, /*.app_version = */ VERSION_MD5, - /*.app_name = */ "Random passwd", + /*.app_name = */ "Rand Pwd", /*.bitmap_data = */ { 0xC0, 0x03, diff --git a/firmware/application/external/random_password/ui_random_password.hpp b/firmware/application/external/random_password/ui_random_password.hpp index 24ebb63e5..8586a9733 100644 --- a/firmware/application/external/random_password/ui_random_password.hpp +++ b/firmware/application/external/random_password/ui_random_password.hpp @@ -203,7 +203,7 @@ class RandomPasswordView : public View { ' '}; OptionsField field_method{ - {(screen_width / 2) + (sizeof("method:") - 1) * 8, 7 * 16 - 2}, + {(screen_width / 2) + (int)(sizeof("method:") - 1) * 8, 7 * 16 - 2}, sizeof("R+L+R+H"), {{"R+L+R", Method::RADIO_LCG_ROLL}, {"R+L+R+H", Method::RADIO_LCG_ROLL_HASH}}}; diff --git a/firmware/application/external/remote/main.cpp b/firmware/application/external/remote/main.cpp index 358452a4b..8c0ae1592 100644 --- a/firmware/application/external/remote/main.cpp +++ b/firmware/application/external/remote/main.cpp @@ -75,7 +75,7 @@ __attribute__((section(".external_app.app_remote.application_information"), used }, /*.icon_color = */ ui::Color::green().v, /*.menu_location = */ app_location_t::HOME, - /*.desired_menu_position = */ 4, + /*.desired_menu_position = */ 6, /*.m4_app_tag = portapack::spi_flash::image_tag_replay */ {'P', 'R', 'E', 'P'}, /*.m4_app_offset = */ 0x00000000, // will be filled at compile time diff --git a/firmware/application/external/remote/ui_remote.cpp b/firmware/application/external/remote/ui_remote.cpp index b4f7f6504..e24dd3646 100644 --- a/firmware/application/external/remote/ui_remote.cpp +++ b/firmware/application/external/remote/ui_remote.cpp @@ -330,7 +330,7 @@ RemoteAppView::RemoteAppView( field_title.on_select = [this, &nav](TextField&) { temp_buffer_ = model_.name; - text_prompt(nav_, temp_buffer_, text_edit_max, [this](std::string& new_name) { + text_prompt(nav_, temp_buffer_, text_edit_max, ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& new_name) { model_.name = new_name; refresh_ui(); set_needs_save(); @@ -339,7 +339,7 @@ RemoteAppView::RemoteAppView( field_filename.on_select = [this, &nav](TextField&) { temp_buffer_ = remote_path_.stem().string(); - text_prompt(nav_, temp_buffer_, text_edit_max, [this](std::string& new_name) { + text_prompt(nav_, temp_buffer_, text_edit_max, ENTER_KEYBOARD_MODE_ALPHA, [this](std::string& new_name) { rename_remote(new_name); refresh_ui(); }); diff --git a/firmware/application/external/remote/ui_remote.hpp b/firmware/application/external/remote/ui_remote.hpp index e61834f44..b8a7ec251 100644 --- a/firmware/application/external/remote/ui_remote.hpp +++ b/firmware/application/external/remote/ui_remote.hpp @@ -292,12 +292,12 @@ class RemoteAppView : public View { bool is_sending() const { return replay_thread_ != nullptr; } void show_error(const std::string& msg) const; - static constexpr Dim button_rows = 4; - static constexpr Dim button_cols = 3; - static constexpr uint8_t max_buttons = button_rows * button_cols; - static constexpr Dim button_area_height = 200; - static constexpr Dim button_width = screen_width / button_cols; - static constexpr Dim button_height = button_area_height / button_rows; + Dim button_rows = 4; + Dim button_cols = 3; + uint8_t max_buttons = button_rows * button_cols; + Dim button_area_height = 200; + Dim button_width = screen_width / button_cols; + Dim button_height = button_area_height / button_rows; // This value is mysterious... why? static constexpr uint32_t baseband_bandwidth = 2'500'000; @@ -328,7 +328,7 @@ class RemoteAppView : public View { bool ready_signal_{}; // Used to signal ReplayThread ready. TextField field_title{ - {0 * 8, 0 * 16 + 2, 30 * 8, 1 * 16}, + {0 * 8, 0 * 16 + 2, screen_width, 1 * 16}, {}}; TransmitterView2 tx_view{ diff --git a/firmware/application/external/scanner/main.cpp b/firmware/application/external/scanner/main.cpp new file mode 100644 index 000000000..0fcc9e5c5 --- /dev/null +++ b/firmware/application/external/scanner/main.cpp @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2023 Bernd Herzog + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui.hpp" +#include "ui_scanner.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::scanner { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::scanner + +extern "C" { + +__attribute__((section(".external_app.app_scanner.application_information"), used)) application_information_t _application_information_scanner = { + /*.memory_location = */ (uint8_t*)0x00000000, + /*.externalAppEntry = */ ui::external_app::scanner::initialize_app, + /*.header_version = */ CURRENT_HEADER_VERSION, + /*.app_version = */ VERSION_MD5, + + /*.app_name = */ "Scanner", + /*.bitmap_data = */ {0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x01, 0x80, 0x01, 0xC3, 0x00, 0xE0, 0xFF, 0xEF, 0xFF, 0xC0, 0x00, 0x83, 0x01, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00}, + /*.icon_color = */ ui::Color::green().v, + /*.menu_location = */ app_location_t::RX, + /*.desired_menu_position = */ -1, + + // this has to be the biggest baseband used by the app. Scanner is using AM,WFM,NFM and WFM is the biggest + /*.m4_app_tag = portapack::spi_flash::image_tag_scanner */ {'P', 'W', 'F', 'M'}, + /*.m4_app_offset = */ 0x00000000, // will be filled at compile time +}; +} diff --git a/firmware/application/apps/ui_scanner.cpp b/firmware/application/external/scanner/ui_scanner.cpp similarity index 99% rename from firmware/application/apps/ui_scanner.cpp rename to firmware/application/external/scanner/ui_scanner.cpp index edd0d6121..8d87b6c39 100644 --- a/firmware/application/apps/ui_scanner.cpp +++ b/firmware/application/external/scanner/ui_scanner.cpp @@ -28,10 +28,11 @@ #include "ui_freqman.hpp" #include "file_path.hpp" +using namespace ui; using namespace portapack; namespace fs = std::filesystem; -namespace ui { +namespace ui::external_app::scanner { ScannerThread::ScannerThread(std::vector frequency_list) : frequency_list_{std::move(frequency_list)} { @@ -451,13 +452,14 @@ ScannerView::ScannerView( // Mode field was changed (AM/NFM/WFM) field_mode.on_change = [this](size_t, OptionsField::value_t v) { - static freqman_index_t last_mode = AM_MODULATION; + // initialize to a value under SPEC + static freqman_index_t last_mode = WFM_MODULATION; // unsupported SPEC mode fix - if (v == SPEC_MODULATION) { - if (last_mode == AM_MODULATION) - v = WFM_MODULATION; - else + if (v >= SPEC_MODULATION) { + if (last_mode == WFM_MODULATION) v = AM_MODULATION; + else + v = WFM_MODULATION; field_mode.set_selected_index(v); } last_mode = v; @@ -765,5 +767,4 @@ void ScannerView::restart_scan() { start_scan_thread(); // RESTART SCANNER THREAD in selected mode } - -} /* namespace ui */ +} // namespace ui::external_app::scanner diff --git a/firmware/application/apps/ui_scanner.hpp b/firmware/application/external/scanner/ui_scanner.hpp similarity index 97% rename from firmware/application/apps/ui_scanner.hpp rename to firmware/application/external/scanner/ui_scanner.hpp index 4ba52bc45..bb5821907 100644 --- a/firmware/application/apps/ui_scanner.hpp +++ b/firmware/application/external/scanner/ui_scanner.hpp @@ -35,12 +35,14 @@ #include "ui_mictx.hpp" #include "ui_receiver.hpp" +using namespace ui; + +namespace ui::external_app::scanner { + #define SCANNER_SLEEP_MS 50 // ms that Scanner Thread sleeps per loop #define STATISTICS_UPDATES_PER_SEC 10 #define MAX_FREQ_LOCK 10 // # of 50ms cycles scanner locks into freq when signal detected, to verify signal is not spurious -namespace ui { - // TODO: There is too much duplicated data in these classes. // ScannerThread should just use more from the View. // Or perhaps ScannerThread should just be in the View. @@ -215,7 +217,7 @@ class ScannerView : public View { NumberField field_lock_wait{ // Signal-Lost wait timer - time to wait before moving on after losing signal lock - {28 * 8, 1 * 16}, + {screen_width - 2 * 8, 1 * 16}, 2, {0, 99}, 1, @@ -236,7 +238,7 @@ class ScannerView : public View { }; Text text_current_desc{ - {0, 4 * 16, 240 - 6 * 8, 16}, + {0, 4 * 16, screen_width - 6 * 8, 16}, }; BigFrequency big_display{ @@ -314,5 +316,4 @@ class ScannerView : public View { this->on_statistics_update(static_cast(p)->statistics); }}; }; - -} /* namespace ui */ +} // namespace ui::external_app::scanner diff --git a/firmware/application/external/sd_wipe/main.cpp b/firmware/application/external/sd_wipe/main.cpp new file mode 100644 index 000000000..09a304212 --- /dev/null +++ b/firmware/application/external/sd_wipe/main.cpp @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2024 Bernd Herzog + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui.hpp" +#include "ui_sd_wipe.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::sd_wipe { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::sd_wipe + +extern "C" { + +__attribute__((section(".external_app.app_sd_wipe.application_information"), used)) application_information_t _application_information_sd_wipe = { + /*.memory_location = */ (uint8_t*)0x00000000, + /*.externalAppEntry = */ ui::external_app::sd_wipe::initialize_app, + /*.header_version = */ CURRENT_HEADER_VERSION, + /*.app_version = */ VERSION_MD5, + + /*.app_name = */ "Wipe SD card", + /*.bitmap_data = */ {0xF0, 0x3F, 0x58, 0x35, 0x5C, 0x35, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0x3C, 0x1C, 0xBC, 0xC9, 0xBC, 0xE3, 0x2C, 0x77, 0x5C, 0x3E, 0xAC, 0x1C, 0x5C, 0x3E, 0x2C, 0x77, 0x9C, 0xE3, 0xAC, 0xC1}, + /*.icon_color = */ ui::Color::red().v, + /*.menu_location = */ app_location_t::UTILITIES, + /*.desired_menu_position = */ -1, + + /*.m4_app_tag = portapack::spi_flash::image_tag_none */ {0, 0, 0, 0}, + /*.m4_app_offset = */ 0x00000000, // will be filled at compile time +}; +} diff --git a/firmware/application/apps/ui_sd_wipe.cpp b/firmware/application/external/sd_wipe/ui_sd_wipe.cpp similarity index 94% rename from firmware/application/apps/ui_sd_wipe.cpp rename to firmware/application/external/sd_wipe/ui_sd_wipe.cpp index c035691bc..a482e784a 100644 --- a/firmware/application/apps/ui_sd_wipe.cpp +++ b/firmware/application/external/sd_wipe/ui_sd_wipe.cpp @@ -22,7 +22,9 @@ #include "ui_sd_wipe.hpp" -namespace ui { +using namespace ui; + +namespace ui::external_app::sd_wipe { Thread* WipeSDView::thread{nullptr}; @@ -63,4 +65,4 @@ void WipeSDView::focus() { } } -} /* namespace ui */ +} // namespace ui::external_app::sd_wipe diff --git a/firmware/application/apps/ui_sd_wipe.hpp b/firmware/application/external/sd_wipe/ui_sd_wipe.hpp similarity index 94% rename from firmware/application/apps/ui_sd_wipe.hpp rename to firmware/application/external/sd_wipe/ui_sd_wipe.hpp index d3b873470..4ffc88b8d 100644 --- a/firmware/application/apps/ui_sd_wipe.hpp +++ b/firmware/application/external/sd_wipe/ui_sd_wipe.hpp @@ -30,7 +30,9 @@ #include -namespace ui { +using namespace ui; + +namespace ui::external_app::sd_wipe { class WipeSDView : public View { public: @@ -83,10 +85,10 @@ class WipeSDView : public View { {2 * 8, 19 * 8, 26 * 8, 24}}; Button dummy{ - {240, 0, 0, 0}, + {screen_width, 0, 0, 0}, ""}; }; -} /* namespace ui */ +} // namespace ui::external_app::sd_wipe #endif /*__UI_SD_WIPE_H__*/ diff --git a/firmware/application/external/shoppingcart_lock/main.cpp b/firmware/application/external/shoppingcart_lock/main.cpp index 7d7a6292c..300c4b217 100644 --- a/firmware/application/external/shoppingcart_lock/main.cpp +++ b/firmware/application/external/shoppingcart_lock/main.cpp @@ -1,6 +1,8 @@ +// CVS Spam app by RocketGod (@rocketgod-git) https://betaskynet.com +// Original .cu8 files by @jimilinuxguy https://github.com/jimilinuxguy/customer-assistance-buttons-sdr +// If you can read this, you're a nerd. :P +// Come join us at https://discord.gg/thepiratesreborn -// RocketGod's Shopping Cart Lock app -// https://betaskynet.com #include "ui.hpp" #include "shoppingcart_lock.hpp" #include "ui_navigation.hpp" @@ -60,7 +62,7 @@ __attribute__((section(".external_app.app_shoppingcart_lock.application_informat /*.menu_location = */ app_location_t::UTILITIES, /*.desired_menu_position = */ -1, - /*.m4_app_tag = portapack::spi_flash::image_tag_afsk_rx */ {'P', 'A', 'T', 'X'}, - /*.m4_app_offset = */ 0x00000000, // will be filled at compile time + /*.m4_app_tag = portapack::spi_flash::image_tag_audio_tx */ {'P', 'A', 'T', 'X'}, + /*.m4_app_offset = */ 0x00000000, }; } \ No newline at end of file diff --git a/firmware/application/external/shoppingcart_lock/shoppingcart_lock.cpp b/firmware/application/external/shoppingcart_lock/shoppingcart_lock.cpp index 22c42988b..9a734d278 100644 --- a/firmware/application/external/shoppingcart_lock/shoppingcart_lock.cpp +++ b/firmware/application/external/shoppingcart_lock/shoppingcart_lock.cpp @@ -1,5 +1,8 @@ -// RocketGod's Shopping Cart Lock app -// https://betaskynet.com +// CVS Spam app by RocketGod (@rocketgod-git) https://betaskynet.com +// Original .cu8 files by @jimilinuxguy https://github.com/jimilinuxguy/customer-assistance-buttons-sdr +// If you can read this, you're a nerd. :P +// Come join us at https://discord.gg/thepiratesreborn + #include "shoppingcart_lock.hpp" using namespace portapack; @@ -48,7 +51,6 @@ void ShoppingCartLock::stop() { audio::output::stop(); log_event("... Resetting State Variables"); - transmitter_model.disable(); ready_signal = false; thread_sync_complete = false; looping = false; @@ -110,18 +112,24 @@ std::string ShoppingCartLock::list_wav_files() { } void ShoppingCartLock::wait_for_thread() { - uint32_t timeout = 100; + uint32_t timeout = 1000; while (!ready_signal && timeout > 0) { chThdYield(); timeout--; } + if (!ready_signal) { + log_event("!!! Timeout waiting for ReplayThread"); + } } void ShoppingCartLock::restart_playback() { auto reader = std::make_unique(); std::string file_path = (wav_dir / current_file).string(); - if (!reader->open(file_path)) return; + if (!reader->open(file_path)) { + log_event("!!! Failed to reopen " + current_file + " for restart"); + return; + } replay_thread = std::make_unique( std::move(reader), @@ -133,9 +141,8 @@ void ShoppingCartLock::restart_playback() { EventDispatcher::send_message(message); }); - log_event(">> SENDING <<"); + log_event(">> RESTARTING AUDIO <<"); audio::output::start(); - transmitter_model.enable(); } void ShoppingCartLock::play_audio(const std::string& filename, bool loop) { @@ -166,33 +173,24 @@ void ShoppingCartLock::play_audio(const std::string& filename, bool loop) { wait_for_thread(); - log_event("... Configuring Baseband"); - - const uint32_t bb_sample_rate = 1536000; - const uint32_t decimation = bb_sample_rate / wav_sample_rate; - + baseband::set_sample_rate(wav_sample_rate); + audio::set_rate(wav_sample_rate <= 12000 ? audio::Rate::Hz_12000 : wav_sample_rate <= 24000 ? audio::Rate::Hz_24000 + : audio::Rate::Hz_48000); baseband::set_audiotx_config( - bb_sample_rate / decimation, + wav_sample_rate, + 0.0f, 0.0f, - 5.0f, wav_bits_per_sample, wav_bits_per_sample, 0, - true, + false, false, false, false); - baseband::set_sample_rate(wav_sample_rate); - - log_event("... Starting Audio Output"); audio::output::start(); - log_event("... Setting Max Volume"); - audio::headphone::set_volume(audio::headphone::volume_range().max); - - transmitter_model.enable(); - - log_event(">>> Playback Started <<<"); + volume_t max_volume = audio::headphone::volume_range().max; + audio::headphone::set_volume(max_volume); } ShoppingCartLock::ShoppingCartLock(NavigationView& nav) @@ -232,4 +230,4 @@ ShoppingCartLock::~ShoppingCartLock() { baseband::shutdown(); } -} // namespace ui::external_app::shoppingcart_lock +} // namespace ui::external_app::shoppingcart_lock \ No newline at end of file diff --git a/firmware/application/external/shoppingcart_lock/shoppingcart_lock.hpp b/firmware/application/external/shoppingcart_lock/shoppingcart_lock.hpp index abea3ca74..8bbb54e5e 100644 --- a/firmware/application/external/shoppingcart_lock/shoppingcart_lock.hpp +++ b/firmware/application/external/shoppingcart_lock/shoppingcart_lock.hpp @@ -1,5 +1,8 @@ -// RocketGod's Shopping Cart Lock app -// https://betaskynet.com +// CVS Spam app by RocketGod (@rocketgod-git) https://betaskynet.com +// Original .cu8 files by @jimilinuxguy https://github.com/jimilinuxguy/customer-assistance-buttons-sdr +// If you can read this, you're a nerd. :P +// Come join us at https://discord.gg/thepiratesreborn + #pragma once #include "ui_widget.hpp" @@ -27,8 +30,8 @@ class ShoppingCartLock : public View { void focus() override; private: - static constexpr size_t BUFFER_SIZE = 8192; - static constexpr size_t NUM_BUFFERS = 8; + static constexpr size_t BUFFER_SIZE = 512; + static constexpr size_t NUM_BUFFERS = 2; const std::string shoppingcart_lock_file{"shopping_cart_lock.wav"}; const std::string shoppingcart_unlock_file{"shopping_cart_unlock.wav"}; @@ -55,7 +58,7 @@ class ShoppingCartLock : public View { void restart_playback(); MenuView menu_view{ - {0, 0, 240, 150}, + {0, 0, screen_width, 150}, true}; Text text_empty{ diff --git a/firmware/application/external/snake/main.cpp b/firmware/application/external/snake/main.cpp new file mode 100644 index 000000000..3c93935aa --- /dev/null +++ b/firmware/application/external/snake/main.cpp @@ -0,0 +1,68 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +#include "ui.hpp" +#include "ui_snake.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::snake { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::snake + +extern "C" { + +__attribute__((section(".external_app.app_snake.application_information"), used)) application_information_t _application_information_snake = { + (uint8_t*)0x00000000, + ui::external_app::snake::initialize_app, + CURRENT_HEADER_VERSION, + VERSION_MD5, + "Snake", + { + 0x00, + 0x00, + 0x00, + 0x00, + 0xE0, + 0x09, + 0x70, + 0xC7, + 0xFC, + 0xC9, + 0x06, + 0x00, + 0x06, + 0x00, + 0x0C, + 0x00, + 0xF0, + 0x01, + 0x00, + 0x3E, + 0x00, + 0x40, + 0xFC, + 0x40, + 0x02, + 0x3F, + 0x02, + 0x00, + 0x7C, + 0x80, + 0x80, + 0x7F, + }, + ui::Color::green().v, + app_location_t::GAMES, + -1, + {0, 0, 0, 0}, + 0x00000000, +}; +} // namespace ui::external_app::snake \ No newline at end of file diff --git a/firmware/application/external/snake/ui_snake.cpp b/firmware/application/external/snake/ui_snake.cpp new file mode 100644 index 000000000..5e9f3ca4a --- /dev/null +++ b/firmware/application/external/snake/ui_snake.cpp @@ -0,0 +1,267 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +#include "ui_snake.hpp" + +namespace ui::external_app::snake { + +void SnakeView::cls() { + painter.fill_rectangle({0, 0, portapack::display.width(), portapack::display.height()}, Color::black()); +} + +void SnakeView::background(int color) { + (void)color; +} + +void SnakeView::fillrect(int x1, int y1, int x2, int y2, int color) { + painter.fill_rectangle({x1, y1, x2 - x1, y2 - y1}, pp_colors[color]); +} + +void SnakeView::rect(int x1, int y1, int x2, int y2, int color) { + painter.draw_rectangle({x1, y1, x2 - x1, y2 - y1}, pp_colors[color]); +} + +void SnakeView::check_game_timer() { + if (game_update_callback) { + if (++game_update_counter >= game_update_timeout) { + game_update_counter = 0; + game_timer_check(); + } + } +} + +void SnakeView::attach(double delay_sec) { + game_update_callback = true; + game_update_timeout = delay_sec * 60; +} + +void SnakeView::detach() { + game_update_callback = false; +} + +void SnakeView::game_timer_check() { + if (game_state == STATE_PLAYING) { + update_game(); + } +} + +void SnakeView::init_game() { + SCREEN_WIDTH = screen_width; + SCREEN_HEIGHT = screen_height; + GAME_AREA_HEIGHT = (SCREEN_HEIGHT - INFO_BAR_HEIGHT - 2); + GRID_WIDTH = ((SCREEN_WIDTH - 2) / SNAKE_SIZE); + GRID_HEIGHT = (GAME_AREA_HEIGHT / SNAKE_SIZE); + snake_x.resize(GRID_WIDTH * GRID_HEIGHT); + snake_y.resize(GRID_WIDTH * GRID_HEIGHT); + snake_x[0] = GRID_WIDTH / 2; + snake_y[0] = GRID_HEIGHT / 2; + snake_length = 1; + snake_dx = 1; + snake_dy = 0; + score = 0; + spawn_food(); + if (game_state == STATE_MENU) { + show_menu(); + } else if (game_state == STATE_PLAYING) { + draw_screen(); + } +} + +void SnakeView::spawn_food() { + bool valid; + do { + food_x = rand() % GRID_WIDTH; + food_y = rand() % GRID_HEIGHT; + valid = true; + for (int i = 0; i < snake_length; i++) { + if (snake_x[i] == food_x && snake_y[i] == food_y) { + valid = false; + break; + } + } + } while (!valid); +} + +void SnakeView::update_game() { + int new_x = snake_x[0] + snake_dx; + int new_y = snake_y[0] + snake_dy; + bool ate_food = (new_x == food_x && new_y == food_y); + + int tail_x = snake_x[snake_length - 1]; + int tail_y = snake_y[snake_length - 1]; + + for (int i = snake_length - 1; i > 0; i--) { + snake_x[i] = snake_x[i - 1]; + snake_y[i] = snake_y[i - 1]; + } + + snake_x[0] = new_x; + snake_y[0] = new_y; + + if (ate_food) { + snake_x[snake_length] = tail_x; + snake_y[snake_length] = tail_y; + snake_length++; + score += 10; + spawn_food(); + draw_food(); + } else { + erase_tail(tail_x, tail_y); + } + + draw_snake(); + draw_score(); + + if (check_collision()) { + draw_borders(); + game_state = STATE_GAME_OVER; + show_game_over(); + return; + } +} + +bool SnakeView::check_collision() { + if (snake_x[0] < 0 || snake_x[0] >= GRID_WIDTH || snake_y[0] < 0 || snake_y[0] >= GRID_HEIGHT) { + return true; + } + for (int i = 1; i < snake_length; i++) { + if (snake_x[0] == snake_x[i] && snake_y[0] == snake_y[i]) { + return true; + } + } + return false; +} + +void SnakeView::draw_screen() { + cls(); + background(COLOR_BACKGROUND); + draw_borders(); + draw_full_snake(); + draw_food(); + draw_score(); +} + +void SnakeView::draw_snake() { + fillrect(1 + snake_x[0] * SNAKE_SIZE, GAME_AREA_TOP + snake_y[0] * SNAKE_SIZE, + 1 + snake_x[0] * SNAKE_SIZE + SNAKE_SIZE, GAME_AREA_TOP + snake_y[0] * SNAKE_SIZE + SNAKE_SIZE, COLOR_SNAKE); +} + +void SnakeView::draw_full_snake() { + for (int i = 0; i < snake_length; i++) { + fillrect(1 + snake_x[i] * SNAKE_SIZE, GAME_AREA_TOP + snake_y[i] * SNAKE_SIZE, + 1 + snake_x[i] * SNAKE_SIZE + SNAKE_SIZE, GAME_AREA_TOP + snake_y[i] * SNAKE_SIZE + SNAKE_SIZE, COLOR_SNAKE); + } +} + +void SnakeView::erase_tail(int x, int y) { + fillrect(1 + x * SNAKE_SIZE, GAME_AREA_TOP + y * SNAKE_SIZE, + 1 + x * SNAKE_SIZE + SNAKE_SIZE, GAME_AREA_TOP + y * SNAKE_SIZE + SNAKE_SIZE, COLOR_BACKGROUND); +} + +void SnakeView::draw_food() { + fillrect(1 + food_x * SNAKE_SIZE, GAME_AREA_TOP + food_y * SNAKE_SIZE, + 1 + food_x * SNAKE_SIZE + SNAKE_SIZE, GAME_AREA_TOP + food_y * SNAKE_SIZE + SNAKE_SIZE, COLOR_FOOD); +} + +void SnakeView::erase_food() { + fillrect(1 + food_x * SNAKE_SIZE, GAME_AREA_TOP + food_y * SNAKE_SIZE, + 1 + food_x * SNAKE_SIZE + SNAKE_SIZE, GAME_AREA_TOP + food_y * SNAKE_SIZE + SNAKE_SIZE, COLOR_BACKGROUND); +} + +void SnakeView::draw_score() { + auto style = *ui::Theme::getInstance()->fg_blue; + painter.draw_string({5, 5}, style, "Score: " + std::to_string(score)); +} + +void SnakeView::draw_borders() { + rect(0, GAME_AREA_TOP - 1, SCREEN_WIDTH, GAME_AREA_TOP, COLOR_BORDER); + rect(0, GAME_AREA_TOP, SCREEN_WIDTH, SCREEN_HEIGHT, COLOR_BORDER); +} + +void SnakeView::show_menu() { + cls(); + background(COLOR_BACKGROUND); + auto style_yellow = *ui::Theme::getInstance()->fg_yellow; + auto style_green = *ui::Theme::getInstance()->fg_green; + auto style_blue = *ui::Theme::getInstance()->fg_blue; + painter.draw_string({50, 40}, style_yellow, "* * * SNAKE * * *"); + painter.draw_string({0, 120}, style_blue, "USE THE D-PAD TO MOVE"); + painter.draw_string({0, 150}, style_blue, "EAT THE RED SQUARES TO GROW"); + painter.draw_string({0, 180}, style_blue, "DON'T HIT THE WALLS OR SELF"); + painter.draw_string({15, 240}, style_green, "** PRESS SELECT TO START **"); +} + +void SnakeView::show_game_over() { + cls(); + background(COLOR_BACKGROUND); + auto style_red = *ui::Theme::getInstance()->fg_red; + auto style_yellow = *ui::Theme::getInstance()->fg_yellow; + auto style_green = *ui::Theme::getInstance()->fg_green; + painter.draw_string({75, 90}, style_red, "GAME OVER"); + painter.draw_string({74, 150}, style_yellow, "SCORE: " + std::to_string(score)); + painter.draw_string({20, 220}, style_green, "PRESS SELECT TO RESTART"); + wait(1); +} + +SnakeView::SnakeView(NavigationView& nav) + : nav_{nav} { + add_children({&dummy}); + attach(1.0 / 5.0); +} + +void SnakeView::on_show() { +} + +void SnakeView::paint(Painter& painter) { + (void)painter; + if (!initialized) { + initialized = true; + std::srand(LPC_RTC->CTIME0); + init_game(); + } +} + +void SnakeView::frame_sync() { + check_game_timer(); + set_dirty(); +} + +bool SnakeView::on_key(const KeyEvent key) { + if (key == KeyEvent::Select) { + if (game_state == STATE_MENU || game_state == STATE_GAME_OVER) { + game_state = STATE_PLAYING; + init_game(); + } + } else if (game_state == STATE_PLAYING) { + if (key == KeyEvent::Left) { + if (snake_dx == 0) { + snake_dx = -1; + snake_dy = 0; + } + } else if (key == KeyEvent::Right) { + if (snake_dx == 0) { + snake_dx = 1; + snake_dy = 0; + } + } else if (key == KeyEvent::Up) { + if (snake_dy == 0) { + snake_dx = 0; + snake_dy = -1; + } + } else if (key == KeyEvent::Down) { + if (snake_dy == 0) { + snake_dx = 0; + snake_dy = 1; + } + } + } + set_dirty(); + return true; +} + +} // namespace ui::external_app::snake \ No newline at end of file diff --git a/firmware/application/external/snake/ui_snake.hpp b/firmware/application/external/snake/ui_snake.hpp new file mode 100644 index 000000000..ad2f1cc23 --- /dev/null +++ b/firmware/application/external/snake/ui_snake.hpp @@ -0,0 +1,133 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +#ifndef __UI_SNAKE_H__ +#define __UI_SNAKE_H__ + +#include "ui.hpp" +#include "ui_navigation.hpp" +#include "event_m0.hpp" +#include "message.hpp" +#include "irq_controls.hpp" +#include "random.hpp" +#include "lpc43xx_cpp.hpp" +#include "ui_widget.hpp" + +namespace ui::external_app::snake { + +enum { + White, + Blue, + Yellow, + Purple, + Green, + Red, + Maroon, + Orange, + Black, +}; + +#define wait(x) chThdSleepMilliseconds(x * 1000) + +#define SNAKE_SIZE 10 +#define INFO_BAR_HEIGHT 25 +#define GAME_AREA_TOP (INFO_BAR_HEIGHT + 1) +#define STATE_MENU 0 +#define STATE_PLAYING 1 +#define STATE_GAME_OVER 2 + +#define COLOR_BACKGROUND Black +#define COLOR_SNAKE Green +#define COLOR_FOOD Red +#define COLOR_BORDER White + +class SnakeView : public View { + public: + SnakeView(NavigationView& nav); + void on_show() override; + + std::string title() const override { return "Snake"; } + + void focus() override { dummy.focus(); } + void paint(Painter& painter) override; + void frame_sync(); + bool on_key(KeyEvent key) override; + + void cls(); + void background(int color); + void fillrect(int x1, int y1, int x2, int y2, int color); + void rect(int x1, int y1, int x2, int y2, int color); + void game_timer_check(); + void init_game(); + void update_game(); + void draw_screen(); + void draw_snake(); + void draw_full_snake(); + void erase_tail(int x, int y); + void draw_food(); + void erase_food(); + void draw_score(); + void draw_borders(); + void spawn_food(); + bool check_collision(); + void show_menu(); + void show_game_over(); + void check_game_timer(); + + void attach(double delay_sec); + void detach(); + + private: + const Color pp_colors[9] = { + Color::white(), + Color::blue(), + Color::yellow(), + Color::purple(), + Color::green(), + Color::red(), + Color::magenta(), + Color::orange(), + Color::black(), + }; + NavigationView& nav_; + Painter painter{}; + + std::vector snake_x{}; //[GRID_WIDTH * GRID_HEIGHT]; + std::vector snake_y{}; //[GRID_WIDTH * GRID_HEIGHT]; + int snake_length = 1; + int snake_dx = 1; + int snake_dy = 0; + int food_x = 0, food_y = 0; + int score = 0; + int game_state = STATE_MENU; + bool initialized = false; + + int SCREEN_WIDTH = 0; + int SCREEN_HEIGHT = 0; + int GAME_AREA_HEIGHT = 0; //(SCREEN_HEIGHT - INFO_BAR_HEIGHT - 2); + int GRID_WIDTH = 0; // ((SCREEN_WIDTH - 2) / SNAKE_SIZE); + int GRID_HEIGHT = 0; //(GAME_AREA_HEIGHT / SNAKE_SIZE); + + bool game_update_callback = false; + double game_update_timeout = 0; + uint32_t game_update_counter = 0; + + Button dummy{ + {screen_width, 0, 0, 0}, + ""}; + + MessageHandlerRegistration message_handler_frame_sync{ + Message::ID::DisplayFrameSync, + [this](const Message* const) { + this->frame_sync(); + }}; +}; + +} // namespace ui::external_app::snake + +#endif /* __UI_SNAKE_H__ */ \ No newline at end of file diff --git a/firmware/application/external/spaceinv/main.cpp b/firmware/application/external/spaceinv/main.cpp new file mode 100644 index 000000000..961e9268d --- /dev/null +++ b/firmware/application/external/spaceinv/main.cpp @@ -0,0 +1,55 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +#include "ui.hpp" +#include "ui_spaceinv.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::spaceinv { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::spaceinv + +extern "C" { + +__attribute__((section(".external_app.app_spaceinv.application_information"), used)) application_information_t _application_information_spaceinv = { + (uint8_t*)0x00000000, + ui::external_app::spaceinv::initialize_app, + CURRENT_HEADER_VERSION, + VERSION_MD5, + + "Space Invaders", + { + // Space Invader alien icon 16x16 + 0x00, 0x18, // .......##....... + 0x00, 0x3C, // ......####...... + 0x00, 0x7E, // .....######..... + 0x00, 0xDB, // ....##.##.##.... + 0x00, 0xFF, // ....########.... + 0x00, 0xFF, // ....########.... + 0x00, 0x24, // ......#..#...... + 0x00, 0x66, // .....##..##..... + 0x00, 0x42, // .....#....#..... + 0x00, 0x00, // ................ + 0x00, 0x24, // ......#..#...... + 0x00, 0x18, // .......##....... + 0x00, 0x24, // ......#..#...... + 0x00, 0x42, // .....#....#..... + 0x00, 0x81, // ....#......#.... + 0x00, 0x00, // ................ + }, + ui::Color::magenta().v, + app_location_t::GAMES, + -1, + + {0, 0, 0, 0}, + 0x00000000, +}; +} // namespace ui::external_app::spaceinv \ No newline at end of file diff --git a/firmware/application/external/spaceinv/ui_spaceinv.cpp b/firmware/application/external/spaceinv/ui_spaceinv.cpp new file mode 100644 index 000000000..9c02d9dea --- /dev/null +++ b/firmware/application/external/spaceinv/ui_spaceinv.cpp @@ -0,0 +1,879 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +#include "ui_spaceinv.hpp" + +namespace ui::external_app::spaceinv { + +// Game constants +#define PLAYER_WIDTH 26 +#define PLAYER_HEIGHT 16 +#define PLAYER_Y 280 +#define BULLET_WIDTH 3 +#define BULLET_HEIGHT 10 +#define BULLET_SPEED 8 +#define MAX_BULLETS 3 +#define INVADER_WIDTH 20 +#define INVADER_HEIGHT 16 +#define INVADER_ROWS 5 // Classic 5 rows +#define INVADER_COLS 6 // Reduced for more movement space on narrow PP screen +#define INVADER_GAP_X 10 +#define INVADER_GAP_Y 8 // Gap between invaders +#define MAX_ENEMY_BULLETS 3 +#define ENEMY_BULLET_SPEED 3 + +// Game state +static int game_state = 0; // 0=menu, 1=playing, 2=game over, 3=wave_complete +static bool initialized = false; +static int player_x = 120; +static uint32_t score = 0; +static int lives = 3; +static uint32_t wave = 1; +static uint32_t speed_bonus = 0; +static uint32_t wave_complete_timer = 0; + +// Cannon Bullets +static int bullet_x[MAX_BULLETS] = {0, 0, 0}; +static int bullet_y[MAX_BULLETS] = {0, 0, 0}; +static bool bullet_active[MAX_BULLETS] = {false, false, false}; + +// Enemy bullets +static int enemy_bullet_x[MAX_ENEMY_BULLETS] = {0, 0, 0}; +static int enemy_bullet_y[MAX_ENEMY_BULLETS] = {0, 0, 0}; +static bool enemy_bullet_active[MAX_ENEMY_BULLETS] = {false, false, false}; +static uint32_t enemy_fire_counter = 0; + +// Invaders +static bool invaders[INVADER_ROWS][INVADER_COLS]; +static int invaders_x = 40; +static int invaders_y = 60; +static int invader_direction = 1; +static uint32_t invader_move_counter = 0; +static uint32_t invader_move_delay = 30; +static bool invader_animation_frame = false; + +// Menu state +static bool menu_initialized = false; +static bool game_over_initialized = false; +static bool blink_state = true; +static uint32_t blink_counter = 0; +static int16_t prompt_x = 0; + +// Timer +static Ticker game_timer; +static Callback game_update_callback = nullptr; +static uint32_t game_update_timeout = 0; +static uint32_t game_update_counter = 0; + +// Painter +static Painter painter; + +// For high score access +static SpaceInvadersView* current_instance = nullptr; + +void check_game_timer() { + if (game_update_callback) { + if (++game_update_counter >= game_update_timeout) { + game_update_counter = 0; + game_update_callback(); + } + } +} + +void Ticker::attach(Callback func, double delay_sec) { + game_update_callback = func; + game_update_timeout = delay_sec * 60; +} + +void Ticker::detach() { + game_update_callback = nullptr; +} + +static void init_invaders() { + // Initialize invader array + for (int row = 0; row < INVADER_ROWS; row++) { + for (int col = 0; col < INVADER_COLS; col++) { + invaders[row][col] = true; + } + } + invaders_x = 40; + invaders_y = 60; + invader_direction = 1; + invader_move_counter = 0; + + // Clear any active enemy bullets + for (int i = 0; i < MAX_ENEMY_BULLETS; i++) { + enemy_bullet_active[i] = false; + } + + // Clear any active player bullets + for (int i = 0; i < MAX_BULLETS; i++) { + bullet_active[i] = false; + } +} + +static void save_high_score() { + if (current_instance && score > current_instance->highScore) { + current_instance->highScore = score; + // Settings are automatically saved when the view is destroyed + } +} + +static void init_menu() { + painter.fill_rectangle({0, 0, 240, 320}, Color::black()); + + auto style_green = *ui::Theme::getInstance()->fg_green; + auto style_yellow = *ui::Theme::getInstance()->fg_yellow; + auto style_cyan = *ui::Theme::getInstance()->fg_cyan; + + int16_t screen_width = 240; + int16_t title_x = (screen_width - 15 * 8) / 2; + int16_t divider_width = 24 * 8; + int16_t divider_x = (screen_width - divider_width) / 2; + int16_t instruction_width = 22 * 8; + int16_t instruction_x = (screen_width - instruction_width) / 2; + int16_t prompt_width = 12 * 8; + prompt_x = (screen_width - prompt_width) / 2; + + painter.fill_rectangle({0, 30, screen_width, 30}, Color::black()); + painter.draw_string({title_x, 42}, style_green, "SPACE INVADERS"); + + painter.draw_string({divider_x, 70}, style_yellow, "========================"); + + painter.fill_rectangle({instruction_x - 5, 100, instruction_width + 10, 80}, Color::black()); + painter.draw_rectangle({instruction_x - 5, 100, instruction_width + 10, 80}, Color::white()); + + painter.draw_string({instruction_x, 110}, style_cyan, " ROTARY: MOVE SHIP"); + painter.draw_string({instruction_x, 130}, style_cyan, " SELECT: FIRE"); + painter.draw_string({instruction_x, 150}, style_cyan, " DEFEND EARTH!"); + + // Draw point values + auto style_purple = *ui::Theme::getInstance()->fg_magenta; + painter.draw_string({50, 190}, style_purple, "TOP ROW = 30 PTS"); + painter.draw_string({50, 205}, style_yellow, "MID ROW = 20 PTS"); + painter.draw_string({50, 220}, style_green, "BOT ROW = 10 PTS"); + + // Draw high score + if (current_instance) { + auto style_white = *ui::Theme::getInstance()->fg_light; + std::string high_score_text = "HIGH SCORE: " + std::to_string(current_instance->highScore); + int16_t high_score_x = (screen_width - high_score_text.length() * 8) / 2; + painter.draw_string({high_score_x, 240}, style_white, high_score_text); + } + + menu_initialized = true; +} + +static void init_game_over() { + painter.fill_rectangle({0, 0, 240, 320}, Color::black()); + + auto style_red = *ui::Theme::getInstance()->fg_red; + auto style_yellow = *ui::Theme::getInstance()->fg_yellow; + auto style_cyan = *ui::Theme::getInstance()->fg_cyan; + auto style_white = *ui::Theme::getInstance()->fg_light; + + int16_t screen_width = 240; + + // Game Over title + int16_t title_x = (screen_width - 9 * 8) / 2; + painter.draw_string({title_x, 42}, style_red, "GAME OVER"); + + // Divider + int16_t divider_width = 24 * 8; + int16_t divider_x = (screen_width - divider_width) / 2; + painter.draw_string({divider_x, 70}, style_yellow, "========================"); + + // Score box + int16_t box_width = 22 * 8; + int16_t box_x = (screen_width - box_width) / 2; + painter.fill_rectangle({box_x - 5, 100, box_width + 10, 80}, Color::black()); + painter.draw_rectangle({box_x - 5, 100, box_width + 10, 80}, Color::white()); + + // Display scores + std::string score_text = "SCORE: " + std::to_string(score); + int16_t score_x = (screen_width - score_text.length() * 8) / 2; + painter.draw_string({score_x, 120}, style_cyan, score_text); + + std::string wave_text = "WAVE: " + std::to_string(wave); + int16_t wave_x = (screen_width - wave_text.length() * 8) / 2; + painter.draw_string({wave_x, 140}, style_cyan, wave_text); + + // High score section + if (current_instance) { + if (score > current_instance->highScore) { + // New high score! + std::string new_high = "NEW HIGH SCORE!"; + int16_t new_high_x = (screen_width - new_high.length() * 8) / 2; + painter.draw_string({new_high_x, 200}, style_yellow, new_high); + + std::string high_score_text = std::to_string(score); + int16_t high_score_x = (screen_width - high_score_text.length() * 8) / 2; + painter.draw_string({high_score_x, 220}, style_yellow, high_score_text); + } else { + // Show existing high score + std::string high_label = "HIGH SCORE:"; + int16_t label_x = (screen_width - high_label.length() * 8) / 2; + painter.draw_string({label_x, 200}, style_white, high_label); + + std::string high_score_text = std::to_string(current_instance->highScore); + int16_t high_score_x = (screen_width - high_score_text.length() * 8) / 2; + painter.draw_string({high_score_x, 220}, style_white, high_score_text); + } + } + + game_over_initialized = true; +} + +static void draw_player() { + // Clear the entire player area + painter.fill_rectangle({0, PLAYER_Y - 4, 240, PLAYER_HEIGHT + 8}, Color::black()); + + // Draw the classic Space Invaders cannon + Color green = Color::green(); + + // Top part - the cannon barrel + painter.draw_hline({player_x + 12, PLAYER_Y}, 2, green); + painter.draw_hline({player_x + 12, PLAYER_Y + 1}, 2, green); + + // Upper body + painter.draw_hline({player_x + 11, PLAYER_Y + 2}, 4, green); + painter.draw_hline({player_x + 11, PLAYER_Y + 3}, 4, green); + painter.draw_hline({player_x + 10, PLAYER_Y + 4}, 6, green); + painter.draw_hline({player_x + 10, PLAYER_Y + 5}, 6, green); + + // Main body + painter.draw_hline({player_x + 2, PLAYER_Y + 6}, 22, green); + painter.draw_hline({player_x + 2, PLAYER_Y + 7}, 22, green); + painter.draw_hline({player_x + 1, PLAYER_Y + 8}, 24, green); + painter.draw_hline({player_x + 1, PLAYER_Y + 9}, 24, green); + painter.draw_hline({player_x, PLAYER_Y + 10}, 26, green); + painter.draw_hline({player_x, PLAYER_Y + 11}, 26, green); + painter.draw_hline({player_x, PLAYER_Y + 12}, 26, green); + painter.draw_hline({player_x, PLAYER_Y + 13}, 26, green); + painter.draw_hline({player_x, PLAYER_Y + 14}, 26, green); + painter.draw_hline({player_x, PLAYER_Y + 15}, 26, green); +} + +static void draw_invader(int row, int col) { + int x = invaders_x + col * (INVADER_WIDTH + INVADER_GAP_X); + int y = invaders_y + row * (INVADER_HEIGHT + INVADER_GAP_Y); + + // Clear the area first + painter.fill_rectangle({x, y, INVADER_WIDTH, INVADER_HEIGHT}, Color::black()); + + // Different colors and shapes for different rows + Color color; + if (row == 0) { + color = Color::red(); // Top row - 30 points + } else if (row == 1 || row == 2) { + color = Color::yellow(); // Middle rows - 20 points + } else { + color = Color::green(); // Bottom rows - 10 points + } + + // Draw different invader types based on row + if (row == 0) { + // Top row - squid-like invader (30 points) + if (invader_animation_frame) { + // Frame 1 - arms down + painter.draw_hline({x + 8, y + 2}, 4, color); + painter.draw_hline({x + 6, y + 3}, 8, color); + painter.draw_hline({x + 4, y + 4}, 12, color); + painter.draw_hline({x + 2, y + 5}, 16, color); + painter.draw_hline({x + 2, y + 6}, 16, color); + painter.draw_hline({x, y + 7}, 20, color); + painter.draw_hline({x, y + 8}, 20, color); + painter.draw_hline({x + 2, y + 9}, 2, color); + painter.draw_hline({x + 6, y + 9}, 8, color); + painter.draw_hline({x + 16, y + 9}, 2, color); + painter.draw_hline({x + 4, y + 10}, 2, color); + painter.draw_hline({x + 14, y + 10}, 2, color); + } else { + // Frame 2 - arms up + painter.draw_hline({x + 8, y + 2}, 4, color); + painter.draw_hline({x + 6, y + 3}, 8, color); + painter.draw_hline({x + 4, y + 4}, 12, color); + painter.draw_hline({x + 2, y + 5}, 16, color); + painter.draw_hline({x + 2, y + 6}, 16, color); + painter.draw_hline({x, y + 7}, 20, color); + painter.draw_hline({x, y + 8}, 20, color); + painter.draw_hline({x + 4, y + 9}, 2, color); + painter.draw_hline({x + 8, y + 9}, 4, color); + painter.draw_hline({x + 14, y + 9}, 2, color); + painter.draw_hline({x + 2, y + 10}, 2, color); + painter.draw_hline({x + 16, y + 10}, 2, color); + } + } else if (row == 1 || row == 2) { + // Middle rows - crab-like invader (20 points) + if (invader_animation_frame) { + // Frame 1 - arms in + painter.draw_hline({x + 4, y + 2}, 2, color); + painter.draw_hline({x + 14, y + 2}, 2, color); + painter.draw_hline({x + 2, y + 3}, 2, color); + painter.draw_hline({x + 6, y + 3}, 8, color); + painter.draw_hline({x + 16, y + 3}, 2, color); + painter.draw_hline({x + 2, y + 4}, 16, color); + painter.draw_hline({x, y + 5}, 6, color); + painter.draw_hline({x + 8, y + 5}, 4, color); + painter.draw_hline({x + 14, y + 5}, 6, color); + painter.draw_hline({x, y + 6}, 20, color); + painter.draw_hline({x + 2, y + 7}, 16, color); + painter.draw_hline({x + 4, y + 8}, 2, color); + painter.draw_hline({x + 14, y + 8}, 2, color); + painter.draw_hline({x + 2, y + 9}, 4, color); + painter.draw_hline({x + 14, y + 9}, 4, color); + } else { + // Frame 2 - arms out + painter.draw_hline({x + 4, y + 2}, 2, color); + painter.draw_hline({x + 14, y + 2}, 2, color); + painter.draw_hline({x + 2, y + 3}, 2, color); + painter.draw_hline({x + 6, y + 3}, 8, color); + painter.draw_hline({x + 16, y + 3}, 2, color); + painter.draw_hline({x + 2, y + 4}, 16, color); + painter.draw_hline({x, y + 5}, 6, color); + painter.draw_hline({x + 8, y + 5}, 4, color); + painter.draw_hline({x + 14, y + 5}, 6, color); + painter.draw_hline({x, y + 6}, 20, color); + painter.draw_hline({x + 2, y + 7}, 16, color); + painter.draw_hline({x + 4, y + 8}, 2, color); + painter.draw_hline({x + 14, y + 8}, 2, color); + painter.draw_hline({x, y + 9}, 2, color); + painter.draw_hline({x + 6, y + 9}, 2, color); + painter.draw_hline({x + 12, y + 9}, 2, color); + painter.draw_hline({x + 18, y + 9}, 2, color); + } + } else { + // Bottom rows - octopus-like invader (10 points) + if (invader_animation_frame) { + // Frame 1 + painter.draw_hline({x + 6, y + 2}, 8, color); + painter.draw_hline({x + 4, y + 3}, 12, color); + painter.draw_hline({x + 2, y + 4}, 16, color); + painter.draw_hline({x, y + 5}, 20, color); + painter.draw_hline({x, y + 6}, 20, color); + painter.draw_hline({x + 4, y + 7}, 4, color); + painter.draw_hline({x + 12, y + 7}, 4, color); + painter.draw_hline({x + 2, y + 8}, 4, color); + painter.draw_hline({x + 8, y + 8}, 4, color); + painter.draw_hline({x + 14, y + 8}, 4, color); + painter.draw_hline({x + 4, y + 9}, 2, color); + painter.draw_hline({x + 14, y + 9}, 2, color); + } else { + // Frame 2 + painter.draw_hline({x + 6, y + 2}, 8, color); + painter.draw_hline({x + 4, y + 3}, 12, color); + painter.draw_hline({x + 2, y + 4}, 16, color); + painter.draw_hline({x, y + 5}, 20, color); + painter.draw_hline({x, y + 6}, 20, color); + painter.draw_hline({x + 4, y + 7}, 4, color); + painter.draw_hline({x + 12, y + 7}, 4, color); + painter.draw_hline({x + 2, y + 8}, 4, color); + painter.draw_hline({x + 8, y + 8}, 4, color); + painter.draw_hline({x + 14, y + 8}, 4, color); + painter.draw_hline({x + 2, y + 9}, 2, color); + painter.draw_hline({x + 16, y + 9}, 2, color); + } + } +} + +static void draw_all_invaders() { + for (int row = 0; row < INVADER_ROWS; row++) { + for (int col = 0; col < INVADER_COLS; col++) { + if (invaders[row][col]) { + draw_invader(row, col); + } + } + } +} + +static void clear_all_invaders() { + for (int row = 0; row < INVADER_ROWS; row++) { + for (int col = 0; col < INVADER_COLS; col++) { + if (invaders[row][col]) { + int x = invaders_x + col * (INVADER_WIDTH + INVADER_GAP_X); + int y = invaders_y + row * (INVADER_HEIGHT + INVADER_GAP_Y); + painter.fill_rectangle({x, y, INVADER_WIDTH, INVADER_HEIGHT}, Color::black()); + } + } + } +} + +static void clear_all_enemy_bullets() { + // Clear any visible enemy bullets + for (int i = 0; i < MAX_ENEMY_BULLETS; i++) { + if (enemy_bullet_active[i]) { + painter.fill_rectangle({enemy_bullet_x[i], enemy_bullet_y[i], BULLET_WIDTH, BULLET_HEIGHT}, Color::black()); + enemy_bullet_active[i] = false; + } + } +} + +static void fire_enemy_bullet() { + // Find a random invader to fire from + int active_count = 0; + for (int row = 0; row < INVADER_ROWS; row++) { + for (int col = 0; col < INVADER_COLS; col++) { + if (invaders[row][col]) active_count++; + } + } + + if (active_count == 0) return; + + int shooter = rand() % active_count; + int count = 0; + + for (int row = 0; row < INVADER_ROWS; row++) { + for (int col = 0; col < INVADER_COLS; col++) { + if (invaders[row][col]) { + if (count == shooter) { + // Fire from this invader + for (int i = 0; i < MAX_ENEMY_BULLETS; i++) { + if (!enemy_bullet_active[i]) { + int x = invaders_x + col * (INVADER_WIDTH + INVADER_GAP_X); + int y = invaders_y + row * (INVADER_HEIGHT + INVADER_GAP_Y); + enemy_bullet_x[i] = x + INVADER_WIDTH / 2; + enemy_bullet_y[i] = y + INVADER_HEIGHT; + enemy_bullet_active[i] = true; + return; + } + } + } + count++; + } + } + } +} + +static void update_enemy_bullets() { + for (int i = 0; i < MAX_ENEMY_BULLETS; i++) { + if (enemy_bullet_active[i]) { + // Clear old position - but protect the border line + if (enemy_bullet_y[i] != 49) { // Don't clear if we're exactly on the border line + painter.fill_rectangle({enemy_bullet_x[i], enemy_bullet_y[i], BULLET_WIDTH, BULLET_HEIGHT}, Color::black()); + } + + enemy_bullet_y[i] += ENEMY_BULLET_SPEED; + + if (enemy_bullet_y[i] > 320) { + enemy_bullet_active[i] = false; + } else { + // Draw at new position + painter.fill_rectangle({enemy_bullet_x[i], enemy_bullet_y[i], BULLET_WIDTH, BULLET_HEIGHT}, Color::red()); + + // Check collision with player + if (enemy_bullet_x[i] >= player_x && + enemy_bullet_x[i] <= player_x + PLAYER_WIDTH && + enemy_bullet_y[i] >= PLAYER_Y && + enemy_bullet_y[i] <= PLAYER_Y + PLAYER_HEIGHT) { + // Player hit! + enemy_bullet_active[i] = false; + lives--; + + // Update lives display + auto style = *ui::Theme::getInstance()->fg_green; + painter.fill_rectangle({5, 30, 100, 20}, Color::black()); + painter.draw_string({5, 30}, style, "Lives: " + std::to_string(lives)); + + if (lives <= 0) { + game_state = 2; // Game over + save_high_score(); + } + } + } + } + } +} + +static void update_invaders() { + uint32_t adjusted_delay = (speed_bonus >= invader_move_delay) ? 1 : invader_move_delay - speed_bonus; + + if (++invader_move_counter >= adjusted_delay) { + invader_move_counter = 0; + + // Clear old positions + clear_all_invaders(); + + // Check bounds - find the actual leftmost and rightmost invaders + int leftmost = INVADER_COLS; + int rightmost = -1; + + for (int col = 0; col < INVADER_COLS; col++) { + for (int row = 0; row < INVADER_ROWS; row++) { + if (invaders[row][col]) { + if (col < leftmost) leftmost = col; + if (col > rightmost) rightmost = col; + } + } + } + + bool hit_edge = false; + if (invader_direction > 0) { + // Moving right - check rightmost invader + int right_edge = invaders_x + rightmost * (INVADER_WIDTH + INVADER_GAP_X) + INVADER_WIDTH; + if (right_edge >= 240) { + hit_edge = true; + } + } else { + // Moving left - check leftmost invader + int left_edge = invaders_x + leftmost * (INVADER_WIDTH + INVADER_GAP_X); + if (left_edge <= 0) { + hit_edge = true; + } + } + + // Move invaders + if (hit_edge) { + invaders_y += 15; // Move down + invader_direction = -invader_direction; + } else { + invaders_x += invader_direction * 8; // Horizontal movement + } + + // Toggle animation frame + invader_animation_frame = !invader_animation_frame; + + // Draw new positions + draw_all_invaders(); + } + + // Enemy firing logic - only in hard mode or always with lower frequency + if (!current_instance || !current_instance->easy_mode) { + if (++enemy_fire_counter >= 120) { // Fire every 2 seconds at 60fps + enemy_fire_counter = 0; + fire_enemy_bullet(); + } + } +} + +static void fire_bullet() { + for (int i = 0; i < MAX_BULLETS; i++) { + if (!bullet_active[i]) { + bullet_active[i] = true; + bullet_x[i] = player_x + PLAYER_WIDTH / 2 - BULLET_WIDTH / 2; + bullet_y[i] = PLAYER_Y - BULLET_HEIGHT; + break; + } + } +} + +static void update_bullets() { + for (int i = 0; i < MAX_BULLETS; i++) { + if (bullet_active[i]) { + painter.fill_rectangle({bullet_x[i], bullet_y[i], BULLET_WIDTH, BULLET_HEIGHT}, Color::black()); + + bullet_y[i] -= BULLET_SPEED; + + if (bullet_y[i] < 50) { + bullet_active[i] = false; + } else { + painter.fill_rectangle({bullet_x[i], bullet_y[i], BULLET_WIDTH, BULLET_HEIGHT}, Color::white()); + } + } + } +} + +static void check_collisions() { + for (int i = 0; i < MAX_BULLETS; i++) { + if (!bullet_active[i]) continue; + + for (int row = 0; row < INVADER_ROWS; row++) { + for (int col = 0; col < INVADER_COLS; col++) { + if (!invaders[row][col]) continue; + + int inv_x = invaders_x + col * (INVADER_WIDTH + INVADER_GAP_X); + int inv_y = invaders_y + row * (INVADER_HEIGHT + INVADER_GAP_Y); + + // Simple collision check + if (bullet_x[i] < inv_x + INVADER_WIDTH && + bullet_x[i] + BULLET_WIDTH > inv_x && + bullet_y[i] < inv_y + INVADER_HEIGHT && + bullet_y[i] + BULLET_HEIGHT > inv_y) { + // Hit! + bullet_active[i] = false; + painter.fill_rectangle({bullet_x[i], bullet_y[i], BULLET_WIDTH, BULLET_HEIGHT}, Color::black()); + + invaders[row][col] = false; + painter.fill_rectangle({inv_x, inv_y, INVADER_WIDTH, INVADER_HEIGHT}, Color::black()); + + // Score based on row: top=30, middle=20, bottom=10 + if (row == 0) { + score += 30; + } else if (row == 1 || row == 2) { + score += 20; + } else { + score += 10; + } + + return; + } + } + } + } +} + +static void check_wave_complete() { + // Check if all invaders are destroyed + bool all_destroyed = true; + for (int row = 0; row < INVADER_ROWS; row++) { + for (int col = 0; col < INVADER_COLS; col++) { + if (invaders[row][col]) { + all_destroyed = false; + break; + } + } + if (!all_destroyed) break; + } + + if (all_destroyed) { + // Next wave! + wave++; + speed_bonus = (wave - 1) * 3; // Each wave is slightly faster + if (speed_bonus > 15) speed_bonus = 15; // Cap the speed increase + + // Clear any enemy bullets before transitioning + clear_all_enemy_bullets(); + + // Set state to wave complete and start timer + game_state = 3; + wave_complete_timer = 60; // 1 second at 60fps + + // Clear screen and show wave message - but preserve the border line + painter.fill_rectangle({0, 51, 240, 269}, Color::black()); // Start at 51 to preserve line at 49 + + // Redraw the border line to ensure it's intact - stupid bullet clearing wants to damage it + painter.draw_hline({0, 49}, 240, Color::white()); + + auto style = *ui::Theme::getInstance()->fg_green; + std::string wave_text = "WAVE " + std::to_string(wave); + int wave_x = (240 - wave_text.length() * 8) / 2; + painter.draw_string({wave_x, 150}, style, wave_text); + + return; + } + + // Check if invaders reached player + for (int row = 0; row < INVADER_ROWS; row++) { + for (int col = 0; col < INVADER_COLS; col++) { + if (invaders[row][col]) { + int y = invaders_y + row * (INVADER_HEIGHT + INVADER_GAP_Y); + if (y + INVADER_HEIGHT >= PLAYER_Y) { // Actual collision with player + game_state = 2; // Game over + save_high_score(); + return; + } + } + } + } +} + +void game_timer_check() { + if (game_state == 0) { + // Menu state + if (!menu_initialized) { + init_menu(); + } + + if (++blink_counter >= 30) { + blink_counter = 0; + blink_state = !blink_state; + + auto style = *ui::Theme::getInstance()->fg_red; + if (blink_state) { + painter.draw_string({prompt_x, 260}, style, "PRESS SELECT"); + } else { + painter.fill_rectangle({prompt_x, 260, 16 * 8, 20}, Color::black()); + } + } + } else if (game_state == 1) { + // Playing state + update_bullets(); + update_enemy_bullets(); + update_invaders(); + check_collisions(); + check_wave_complete(); + + // Update score display + static uint32_t last_score = 999999; + if (score != last_score) { + last_score = score; + auto style = *ui::Theme::getInstance()->fg_green; + painter.fill_rectangle({5, 10, 100, 20}, Color::black()); + painter.draw_string({5, 10}, style, "Score: " + std::to_string(score)); + + // Redraw border line after score update (in case it was damaged) - stupid bullet clearing wants to damage it + painter.draw_hline({0, 49}, 240, Color::white()); + } + + // Periodically redraw the border line to fix any damage because it's a pain in the ass + static uint32_t border_redraw_counter = 0; + if (++border_redraw_counter >= 60) { // Once per second - might make less if causing flickering + border_redraw_counter = 0; + painter.draw_hline({0, 49}, 240, Color::white()); + } + } else if (game_state == 2) { + // Game over state + if (!game_over_initialized) { + init_game_over(); + } + + if (++blink_counter >= 30) { + blink_counter = 0; + blink_state = !blink_state; + + auto style = *ui::Theme::getInstance()->fg_red; + if (blink_state) { + painter.draw_string({prompt_x, 260}, style, "PRESS SELECT"); + } else { + painter.fill_rectangle({prompt_x, 260, 16 * 8, 20}, Color::black()); + } + } + } else if (game_state == 3) { + // Wave complete state - wait for timer + if (--wave_complete_timer <= 0) { + // Timer expired, start next wave + game_state = 1; + + // Clear and redraw game area - preserve border line + painter.fill_rectangle({0, 51, 240, 269}, Color::black()); // Start at 51 to preserve line + + // Restore UI + auto style = *ui::Theme::getInstance()->fg_green; + painter.draw_string({5, 10}, style, "Score: " + std::to_string(score)); + painter.draw_string({5, 30}, style, "Lives: " + std::to_string(lives)); + + // Redraw the border line in case it was damaged again + painter.draw_hline({0, 49}, 240, Color::white()); + + // Initialize new wave of invaders + init_invaders(); + draw_all_invaders(); + draw_player(); + } + } +} + +SpaceInvadersView::SpaceInvadersView(NavigationView& nav) + : nav_{nav} { + add_children({&dummy, &button_difficulty}); + current_instance = this; + game_timer.attach(&game_timer_check, 1.0 / 60.0); + + // Update button text based on loaded setting + button_difficulty.set_text(easy_mode ? "Mode: EASY" : "Mode: HARD"); + + button_difficulty.on_select = [this](Button&) { + easy_mode = !easy_mode; + button_difficulty.set_text(easy_mode ? "Mode: EASY" : "Mode: HARD"); + // Settings will be saved when the view is destroyed + }; +} + +SpaceInvadersView::~SpaceInvadersView() { + // Settings are automatically saved when destroyed + current_instance = nullptr; +} + +void SpaceInvadersView::on_show() { +} + +void SpaceInvadersView::paint(Painter& painter) { + (void)painter; + + if (!initialized) { + initialized = true; + game_state = 0; + menu_initialized = false; + game_over_initialized = false; + blink_state = true; + blink_counter = 0; + player_x = 107; + score = 0; + lives = 3; + wave = 1; + speed_bonus = 0; + + // Initialize arrays + for (int i = 0; i < MAX_BULLETS; i++) { + bullet_active[i] = false; + bullet_x[i] = 0; + bullet_y[i] = 0; + } + + for (int i = 0; i < MAX_ENEMY_BULLETS; i++) { + enemy_bullet_active[i] = false; + enemy_bullet_x[i] = 0; + enemy_bullet_y[i] = 0; + } + + init_invaders(); + } +} + +void SpaceInvadersView::frame_sync() { + check_game_timer(); + set_dirty(); +} + +bool SpaceInvadersView::on_encoder(const EncoderEvent delta) { + if (game_state == 1) { + if (delta > 0) { + player_x += 5; + if (player_x > 214) player_x = 214; + draw_player(); + } else if (delta < 0) { + player_x -= 5; + if (player_x < 0) player_x = 0; + draw_player(); + } + + set_dirty(); + } + return true; +} + +bool SpaceInvadersView::on_key(const KeyEvent key) { + if (key == KeyEvent::Select) { + if (game_state == 0) { + // Start game + game_state = 1; + button_difficulty.hidden(true); + score = 0; + lives = 3; + wave = 1; + speed_bonus = 0; + invader_move_delay = 30; + enemy_fire_counter = 0; + init_invaders(); + + painter.fill_rectangle({0, 0, 240, 320}, Color::black()); + painter.draw_hline({0, 49}, 240, Color::white()); + + auto style = *ui::Theme::getInstance()->fg_green; + painter.draw_string({5, 10}, style, "Score: 0"); + painter.draw_string({5, 30}, style, "Lives: 3"); + + draw_all_invaders(); + draw_player(); + + set_dirty(); + } else if (game_state == 1) { + fire_bullet(); + } else if (game_state == 2) { + // Return to menu + game_state = 0; + menu_initialized = false; + game_over_initialized = false; + button_difficulty.hidden(false); + set_dirty(); + } + } + + return true; +} + +} // namespace ui::external_app::spaceinv diff --git a/firmware/application/external/spaceinv/ui_spaceinv.hpp b/firmware/application/external/spaceinv/ui_spaceinv.hpp new file mode 100644 index 000000000..0aee4c0c9 --- /dev/null +++ b/firmware/application/external/spaceinv/ui_spaceinv.hpp @@ -0,0 +1,79 @@ +/* + * ------------------------------------------------------------ + * | Made by RocketGod | + * | Find me at https://betaskynet.com | + * | Argh matey! | + * ------------------------------------------------------------ + */ + +#ifndef __UI_SPACEINV_H__ +#define __UI_SPACEINV_H__ + +#include "ui.hpp" +#include "ui_navigation.hpp" +#include "event_m0.hpp" +#include "message.hpp" +#include "irq_controls.hpp" +#include "random.hpp" +#include "lpc43xx_cpp.hpp" +#include "ui_widget.hpp" +#include "app_settings.hpp" + +namespace ui::external_app::spaceinv { + +using Callback = void (*)(void); + +class Ticker { + public: + Ticker() = default; + void attach(Callback func, double delay_sec); + void detach(); +}; + +void check_game_timer(); +void game_timer_check(); + +class SpaceInvadersView : public View { + public: + SpaceInvadersView(NavigationView& nav); + ~SpaceInvadersView(); // Destructor will trigger settings save + void on_show() override; + + std::string title() const override { return "Space Invaders"; } + + void focus() override { dummy.focus(); } + void paint(Painter& painter) override; + void frame_sync(); + bool on_encoder(const EncoderEvent event) override; + bool on_key(KeyEvent key) override; + + uint32_t highScore = 0; + bool easy_mode = false; + + private: + NavigationView& nav_; + + Button button_difficulty{ + {70, 285, 100, 20}, + "Mode: HARD"}; + + app_settings::SettingsManager settings_{ + "spaceinv", + app_settings::Mode::NO_RF, + {{"highscore"sv, &highScore}, + {"easy_mode"sv, &easy_mode}}}; + + Button dummy{ + {240, 0, 0, 0}, + ""}; + + MessageHandlerRegistration message_handler_frame_sync{ + Message::ID::DisplayFrameSync, + [this](const Message* const) { + this->frame_sync(); + }}; +}; + +} // namespace ui::external_app::spaceinv + +#endif /* __UI_SPACEINV_H__ */ diff --git a/firmware/application/external/spainter/ui_spectrum_painter.cpp b/firmware/application/external/spainter/ui_spectrum_painter.cpp index 31cb4ce67..90b13c7da 100644 --- a/firmware/application/external/spainter/ui_spectrum_painter.cpp +++ b/firmware/application/external/spainter/ui_spectrum_painter.cpp @@ -55,7 +55,7 @@ SpectrumPainterView::SpectrumPainterView( &field_pause, }); - Rect view_rect = {0, 3 * 8, 240, 80}; + Rect view_rect = {0, 3 * 8, screen_width, 80}; input_image.set_parent_rect(view_rect); input_text.set_parent_rect(view_rect); diff --git a/firmware/application/external/spainter/ui_spectrum_painter.hpp b/firmware/application/external/spainter/ui_spectrum_painter.hpp index 63e7e9c9b..4efde91ed 100644 --- a/firmware/application/external/spainter/ui_spectrum_painter.hpp +++ b/firmware/application/external/spainter/ui_spectrum_painter.hpp @@ -89,7 +89,7 @@ class SpectrumPainterView : public View { static constexpr int32_t footer_location = 15 * 16 + 8; ProgressBar progressbar{ - {4, footer_location - 16, 240 - 8, 16}}; + {4, footer_location - 16, screen_width - 8, 16}}; Labels labels{ {{10 * 8, footer_location + 1 * 16}, "GAIN A:", Theme::getInstance()->fg_light->foreground}, @@ -121,7 +121,7 @@ class SpectrumPainterView : public View { true}; ImageButton button_play{ - {28 * 8, footer_location + 1 * 16, 2 * 8, 1 * 16}, + {screen_width - 2 * 8, footer_location + 1 * 16, 2 * 8, 1 * 16}, &bitmap_play, Theme::getInstance()->fg_green->foreground, Theme::getInstance()->fg_green->background}; diff --git a/firmware/application/external/spainter/ui_spectrum_painter_image.cpp b/firmware/application/external/spainter/ui_spectrum_painter_image.cpp index fd2e8cb18..c47c522ab 100644 --- a/firmware/application/external/spainter/ui_spectrum_painter_image.cpp +++ b/firmware/application/external/spainter/ui_spectrum_painter_image.cpp @@ -244,12 +244,12 @@ std::vector SpectrumInputImageView::get_line(uint16_t y) { void SpectrumInputImageView::paint(Painter& painter) { painter.fill_rectangle( - {{0, 40}, {240, 204}}, + {{0, 40}, {screen_width, 204}}, style().background); if (!painted) { // This is very slow for big pictures. Do only once. - this->drawBMP_scaled({{0, 40}, {240, 160}}, this->file); + this->drawBMP_scaled({{0, 40}, {screen_width, 160}}, this->file); painted = true; } } diff --git a/firmware/application/external/spainter/ui_spectrum_painter_image.hpp b/firmware/application/external/spainter/ui_spectrum_painter_image.hpp index a9c1bf622..2b0e2ee64 100644 --- a/firmware/application/external/spainter/ui_spectrum_painter_image.hpp +++ b/firmware/application/external/spainter/ui_spectrum_painter_image.hpp @@ -58,7 +58,7 @@ class SpectrumInputImageView : public View { uint32_t data_start{0}; Button button_load_image{ - {0 * 8, 11 * 16 - 4, 30 * 8, 28}, + {0 * 8, 11 * 16 - 4, screen_width, 28}, "Load Image ..."}; bool drawBMP_scaled(const ui::Rect r, const std::string file); diff --git a/firmware/application/external/spainter/ui_spectrum_painter_text.cpp b/firmware/application/external/spainter/ui_spectrum_painter_text.cpp index 8d2710977..a9cef177e 100644 --- a/firmware/application/external/spainter/ui_spectrum_painter_text.cpp +++ b/firmware/application/external/spainter/ui_spectrum_painter_text.cpp @@ -56,7 +56,7 @@ SpectrumInputTextView::~SpectrumInputTextView() { } void SpectrumInputTextView::on_set_text(NavigationView& nav) { - text_prompt(nav, buffer, 300); + text_prompt(nav, buffer, 300, ENTER_KEYBOARD_MODE_DIGITS); } void SpectrumInputTextView::focus() { @@ -73,7 +73,7 @@ void SpectrumInputTextView::paint(Painter& painter) { } painter.fill_rectangle( - {{0, 40}, {240, 204}}, + {{0, 40}, {screen_width, 204}}, style().background); } diff --git a/firmware/application/external/spainter/ui_spectrum_painter_text.hpp b/firmware/application/external/spainter/ui_spectrum_painter_text.hpp index f31305d2f..f4c91a2f3 100644 --- a/firmware/application/external/spainter/ui_spectrum_painter_text.hpp +++ b/firmware/application/external/spainter/ui_spectrum_painter_text.hpp @@ -53,43 +53,43 @@ class SpectrumInputTextView : public View { void on_set_text(NavigationView& nav); Text text_message_0{ - {0 * 8, 0 * 16, 30 * 8, 16}, + {0 * 8, 0 * 16, screen_width, 16}, ""}; Text text_message_1{ - {0 * 8, 1 * 16, 30 * 8, 16}, + {0 * 8, 1 * 16, screen_width, 16}, ""}; Text text_message_2{ - {0 * 8, 2 * 16, 30 * 8, 16}, + {0 * 8, 2 * 16, screen_width, 16}, ""}; Text text_message_3{ - {0 * 8, 3 * 16, 30 * 8, 16}, + {0 * 8, 3 * 16, screen_width, 16}, ""}; Text text_message_4{ - {0 * 8, 4 * 16, 30 * 8, 16}, + {0 * 8, 4 * 16, screen_width, 16}, ""}; Text text_message_5{ - {0 * 8, 5 * 16, 30 * 8, 16}, + {0 * 8, 5 * 16, screen_width, 16}, ""}; Text text_message_6{ - {0 * 8, 6 * 16, 30 * 8, 16}, + {0 * 8, 6 * 16, screen_width, 16}, ""}; Text text_message_7{ - {0 * 8, 7 * 16, 30 * 8, 16}, + {0 * 8, 7 * 16, screen_width, 16}, ""}; Text text_message_8{ - {0 * 8, 8 * 16, 30 * 8, 16}, + {0 * 8, 8 * 16, screen_width, 16}, ""}; Text text_message_9{ - {0 * 8, 9 * 16, 30 * 8, 16}, + {0 * 8, 9 * 16, screen_width, 16}, ""}; std::array text_message{{ @@ -106,7 +106,7 @@ class SpectrumInputTextView : public View { }}; Button button_message{ - {0 * 8, 11 * 16 - 4, 30 * 8, 28}, + {0 * 8, 11 * 16 - 4, screen_width, 28}, "Set message"}; }; diff --git a/firmware/application/external/stopwatch/main.cpp b/firmware/application/external/stopwatch/main.cpp new file mode 100644 index 000000000..1bfea6228 --- /dev/null +++ b/firmware/application/external/stopwatch/main.cpp @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2025 Mark Thompson + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui.hpp" +#include "ui_stopwatch.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::stopwatch { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::stopwatch + +extern "C" { + +__attribute__((section(".external_app.app_stopwatch.application_information"), used)) application_information_t _application_information_stopwatch = { + /*.memory_location = */ (uint8_t*)0x00000000, + /*.externalAppEntry = */ ui::external_app::stopwatch::initialize_app, + /*.header_version = */ CURRENT_HEADER_VERSION, + /*.app_version = */ VERSION_MD5, + + /*.app_name = */ "Stopwatch", + /*.bitmap_data = */ { + 0x00, + 0x00, + 0xC0, + 0x01, + 0x80, + 0x00, + 0x80, + 0x20, + 0x60, + 0x13, + 0x10, + 0x0C, + 0x88, + 0x08, + 0x84, + 0x10, + 0x84, + 0x10, + 0xC2, + 0x21, + 0x84, + 0x10, + 0x04, + 0x10, + 0x08, + 0x08, + 0x10, + 0x04, + 0x60, + 0x03, + 0x80, + 0x00, + }, + /*.icon_color = */ ui::Color::cyan().v, + /*.menu_location = */ app_location_t::UTILITIES, + /*.desired_menu_position = */ -1, + + /*.m4_app_tag = portapack::spi_flash::image_tag_none */ {0, 0, 0, 0}, + /*.m4_app_offset = */ 0x00000000, // will be filled at compile time +}; +} \ No newline at end of file diff --git a/firmware/application/external/stopwatch/ui_stopwatch.cpp b/firmware/application/external/stopwatch/ui_stopwatch.cpp new file mode 100644 index 000000000..112dc8740 --- /dev/null +++ b/firmware/application/external/stopwatch/ui_stopwatch.cpp @@ -0,0 +1,309 @@ +/* + * Copyright 2025 Mark Thompson + * copyleft Mr. Robot of F.Society + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui_stopwatch.hpp" +#include "portapack.hpp" +#include "ch.h" + +using namespace portapack; + +namespace ui::external_app::stopwatch { + +// clang-format off +// clang-format doesn't allow use as this way but it's not worth to have const var for this thing. too expensive + +// minute +#define TOTAL_M1_POS {0 * 8 * 4, 3 * 16} +#define TOTAL_M2_POS {1 * 8 * 4, 3 * 16} + +// sec +#define TOTAL_S1_POS {2 * 8 * 4 + 24, 3 * 16} +#define TOTAL_S2_POS {3 * 8 * 4 + 24, 3 * 16} + +// ms +#define TOTAL_MS1_POS {4 * 8 * 4 + 7 * 8, 3 * 16 + 24} +#define TOTAL_MS2_POS {5 * 8 * 4 + 5 * 8, 3 * 16 + 24} +#define TOTAL_MS3_POS {6 * 8 * 4 + 3 * 8, 3 * 16 + 24} + +#define LAP_Y 9 * 16 + +//lap min +#define LAP_M1_POS {0 * 8 * 4, LAP_Y} +#define LAP_M2_POS {1 * 8 * 4, LAP_Y} + +//lap sec +#define LAP_S1_POS {2 * 8 * 4 + 24, LAP_Y} +#define LAP_S2_POS {3 * 8 * 4 + 24, LAP_Y} + +//lap ms +#define LAP_MS1_POS {4 * 8 * 4 + 7 * 8, LAP_Y + 24} +#define LAP_MS2_POS {5 * 8 * 4 + 5 * 8, LAP_Y + 24} +#define LAP_MS3_POS {6 * 8 * 4 + 3 * 8, LAP_Y + 24} +// clang-format on + +StopwatchView::StopwatchView(NavigationView& nav) + : painter{} { + add_children({ + &labels, + &button_run_stop, + &button_reset_lap, + &button_done, + &options_ms_display_level, + }); + + button_run_stop.on_select = [this](Button&) { + if (running) + stop(); + else + run(); + }; + + button_reset_lap.on_select = [this](Button&) { + if (running) + lap(); + else + reset(); + }; + + button_done.on_select = [&nav](Button&) { + nav.pop(); + }; + + options_ms_display_level.on_change = [&](size_t, ui::OptionsField::value_t) { + clean_ms_display(options_ms_display_level.selected_index()); + }; + + options_ms_display_level.set_selected_index(0); + + refresh_painting(); +} + +void StopwatchView::focus() { + button_run_stop.focus(); +} + +void StopwatchView::run() { + options_ms_display_level.hidden(true); + // ^ this won't take efferts if don't set_dirty, but needed to let user can't change during ticking + if (!paused) refresh_painting(); + paused = false; + running = true; + start_time = chTimeNow() - previously_elapsed; + button_run_stop.set_text("STOP"); + button_reset_lap.set_text("LAP"); +} + +void StopwatchView::stop() { + options_ms_display_level.hidden(false); + running = false; + paused = true; + end_time = chTimeNow(); + previously_elapsed = end_time - start_time; + button_run_stop.set_text("START"); + button_reset_lap.set_text("RESET"); +} + +void StopwatchView::reset() { + lap_time = end_time = start_time = previously_elapsed = 0; + for (uint8_t i = 0; i < 7; i++) { + refresh_painting(); + } + refresh_painting(); + set_dirty(); +} + +void StopwatchView::lap() { + lap_time = chTimeNow(); +} + +void StopwatchView::paint(Painter&) { +} + +void StopwatchView::refresh_painting() { + // minute + painter.draw_char(TOTAL_M1_POS, *Theme::getInstance()->fg_light, ' ', 4); + painter.draw_char(TOTAL_M2_POS, *Theme::getInstance()->fg_light, ' ', 4); + + // sec + painter.draw_char(TOTAL_S1_POS, *Theme::getInstance()->fg_light, ' ', 4); + painter.draw_char(TOTAL_S2_POS, *Theme::getInstance()->fg_light, ' ', 4); + + // ms + painter.draw_char(TOTAL_MS1_POS, *Theme::getInstance()->fg_light, ' ', 2); + painter.draw_char(TOTAL_MS2_POS, *Theme::getInstance()->fg_light, ' ', 2); + painter.draw_char(TOTAL_MS3_POS, *Theme::getInstance()->fg_light, ' ', 2); + + // lap min + painter.draw_char(LAP_M1_POS, *Theme::getInstance()->fg_light, ' ', 4); + painter.draw_char(LAP_M2_POS, *Theme::getInstance()->fg_light, ' ', 4); + + // lap sec + painter.draw_char(LAP_S1_POS, *Theme::getInstance()->fg_light, ' ', 4); + painter.draw_char(LAP_S2_POS, *Theme::getInstance()->fg_light, ' ', 4); + + // lap ms + painter.draw_char(LAP_MS1_POS, *Theme::getInstance()->fg_light, ' ', 2); + painter.draw_char(LAP_MS2_POS, *Theme::getInstance()->fg_light, ' ', 2); + painter.draw_char(LAP_MS3_POS, *Theme::getInstance()->fg_light, ' ', 2); +} + +/*when user seted it to display more, then display less later, this prevent the remain value exist on screen*/ +void StopwatchView::clean_ms_display(uint8_t level) { + level++; + switch (level) { + case 0: + painter.draw_char(TOTAL_MS1_POS, *Theme::getInstance()->fg_light, ' ', 2); + painter.draw_char(TOTAL_MS2_POS, *Theme::getInstance()->fg_light, ' ', 2); + painter.draw_char(TOTAL_MS3_POS, *Theme::getInstance()->fg_light, ' ', 2); + break; + case 1: + painter.draw_char(TOTAL_MS2_POS, *Theme::getInstance()->fg_light, ' ', 2); + painter.draw_char(TOTAL_MS3_POS, *Theme::getInstance()->fg_light, ' ', 2); + break; + case 2: + painter.draw_char(TOTAL_MS3_POS, *Theme::getInstance()->fg_light, ' ', 2); + break; + } +} + +void StopwatchView::resume_last() { + // minute + painter.draw_char(TOTAL_M1_POS, *Theme::getInstance()->fg_light, last_displayed[0], 4); + painter.draw_char(TOTAL_M2_POS, *Theme::getInstance()->fg_light, last_displayed[1], 4); + + // sec + painter.draw_char(TOTAL_S1_POS, *Theme::getInstance()->fg_light, last_displayed[2], 4); + painter.draw_char(TOTAL_S2_POS, *Theme::getInstance()->fg_light, last_displayed[3], 4); + + // ms + painter.draw_char(TOTAL_MS1_POS, *Theme::getInstance()->fg_light, last_displayed[4], 2); + painter.draw_char(TOTAL_MS2_POS, *Theme::getInstance()->fg_light, last_displayed[5], 2); + painter.draw_char(TOTAL_MS3_POS, *Theme::getInstance()->fg_light, last_displayed[6], 2); +} + +/* NB: + * Due to the flaw of dirty management, it's using work around, to reduce screen flickering: + * + * for example when xx:15:xxx turn to xx:16:xxx, it actually only paint 6, the 1 is old, + * but not dirty, so we can see without flikering. + * + * So with these work around, it won't show false info, but bare in mind that it could be, if you add more things. + */ +void StopwatchView::frame_sync() { + uint32_t elapsed_ticks = 0; + + if (running) { + end_time = chTimeNow(); + elapsed_ticks = end_time - start_time; + } else if (previously_elapsed > 0) { + elapsed_ticks = previously_elapsed; + } + + constexpr uint32_t TICKS_PER_SECOND = CH_FREQUENCY; + constexpr uint32_t TICKS_PER_MINUTE = TICKS_PER_SECOND * 60; + + uint32_t minutes = elapsed_ticks / TICKS_PER_MINUTE; + uint32_t seconds = (elapsed_ticks % TICKS_PER_MINUTE) / TICKS_PER_SECOND; + uint32_t milliseconds = ((elapsed_ticks % TICKS_PER_SECOND) * 1000) / TICKS_PER_SECOND; + + // minute + if (last_displayed[0] != (minutes / 10) % 10) + painter.draw_char(TOTAL_M1_POS, *Theme::getInstance()->fg_red, '0' + (minutes / 10) % 10, 4); + if (last_displayed[1] != minutes % 10) + painter.draw_char(TOTAL_M2_POS, *Theme::getInstance()->fg_red, '0' + minutes % 10, 4); + + // sec + if (last_displayed[2] != (seconds / 10) % 10) + painter.draw_char(TOTAL_S1_POS, *Theme::getInstance()->fg_green, '0' + (seconds / 10) % 10, 4); + if (last_displayed[3] != seconds % 10) + painter.draw_char(TOTAL_S2_POS, *Theme::getInstance()->fg_green, '0' + seconds % 10, 4); + + // ms + /* v place holder to aligh logic*/ + if ((true) && last_displayed[4] != (milliseconds / 100) % 10) + painter.draw_char(TOTAL_MS1_POS, *Theme::getInstance()->fg_yellow, '0' + (milliseconds / 100) % 10, 2); + if ((options_ms_display_level.selected_index() >= 1) && last_displayed[5] != (milliseconds / 10) % 10) + painter.draw_char(TOTAL_MS2_POS, *Theme::getInstance()->fg_yellow, '0' + (milliseconds / 10) % 10, 2); + if ((options_ms_display_level.selected_index() >= 2) && last_displayed[6] != milliseconds % 10) + painter.draw_char(TOTAL_MS3_POS, *Theme::getInstance()->fg_yellow, '0' + milliseconds % 10, 2); + + // min + last_displayed[0] = (minutes / 10) % 10; + last_displayed[1] = minutes % 10; + // sec + last_displayed[2] = (seconds / 10) % 10; + last_displayed[3] = seconds % 10; + // ms + last_displayed[4] = (milliseconds / 100) % 10; + last_displayed[5] = (milliseconds / 10) % 10; + last_displayed[6] = milliseconds % 10; + + if (lap_time > 0) { + uint32_t lap_elapsed = lap_time - start_time; + + uint32_t lap_minutes = lap_elapsed / TICKS_PER_MINUTE; + uint32_t lap_seconds = (lap_elapsed % TICKS_PER_MINUTE) / TICKS_PER_SECOND; + uint32_t lap_milliseconds = ((lap_elapsed % TICKS_PER_SECOND) * 1000) / TICKS_PER_SECOND; + + // lap min + if (lap_last_displayed[0] == (lap_minutes / 10) % 10) { + painter.draw_char(LAP_M1_POS, *Theme::getInstance()->fg_light, '0' + (lap_minutes / 10) % 10, 4); + } + if (lap_last_displayed[1] == lap_minutes % 10) { + painter.draw_char(LAP_M2_POS, *Theme::getInstance()->fg_light, '0' + lap_minutes % 10, 4); + } + + // lap sec + if (lap_last_displayed[2] == (lap_seconds / 10) % 10) { + painter.draw_char(LAP_S1_POS, *Theme::getInstance()->fg_light, '0' + (lap_seconds / 10) % 10, 4); + } + if (lap_last_displayed[3] == lap_seconds % 10) { + painter.draw_char(LAP_S2_POS, *Theme::getInstance()->fg_light, '0' + lap_seconds % 10, 4); + } + + // lap ms + if (lap_last_displayed[4] == (lap_milliseconds / 100) % 10) { + painter.draw_char(LAP_MS1_POS, *Theme::getInstance()->fg_light, '0' + (lap_milliseconds / 100) % 10, 2); + } + if (lap_last_displayed[5] == (lap_milliseconds / 10) % 10) { + painter.draw_char(LAP_MS2_POS, *Theme::getInstance()->fg_light, '0' + (lap_milliseconds / 10) % 10, 2); + } + if (lap_last_displayed[6] == lap_milliseconds % 10) { + painter.draw_char(LAP_MS3_POS, *Theme::getInstance()->fg_light, '0' + lap_milliseconds % 10, 2); + } + + // lp m + lap_last_displayed[0] = (lap_minutes / 10) % 10; + lap_last_displayed[1] = lap_minutes % 10; + + // lp s + lap_last_displayed[2] = (lap_seconds / 10) % 10; + lap_last_displayed[3] = lap_seconds % 10; + + // lp mss + lap_last_displayed[4] = (lap_milliseconds / 100) % 10; + lap_last_displayed[5] = (lap_milliseconds / 10) % 10; + lap_last_displayed[6] = lap_milliseconds % 10; + } +} + +} // namespace ui::external_app::stopwatch \ No newline at end of file diff --git a/firmware/application/external/stopwatch/ui_stopwatch.hpp b/firmware/application/external/stopwatch/ui_stopwatch.hpp new file mode 100644 index 000000000..fa44b24c7 --- /dev/null +++ b/firmware/application/external/stopwatch/ui_stopwatch.hpp @@ -0,0 +1,94 @@ +/* + * Copyright 2025 Mark Thompson + * copyleft Mr. Robot of F.Society + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __UI_STOPWATCH_H__ +#define __UI_STOPWATCH_H__ + +#include "ui_navigation.hpp" + +namespace ui::external_app::stopwatch { + +class StopwatchView : public View { + public: + StopwatchView(NavigationView& nav); + void focus() override; + void paint(Painter& painter) override; + void frame_sync(); + std::string title() const override { return "Stopwatch"; }; + + private: + void run(); + void stop(); + void reset(); + void lap(); + void cover_display_area_with_0(); + void refresh_painting(); + void resume_last(); + void clean_ms_display(uint8_t level = 0); + + bool running{false}; + bool paused{false}; + long long start_time{0}; + long long end_time{0}; + long long lap_time{0}; + long long previously_elapsed{0}; + uint8_t last_displayed[7] = {0, 0, 0, 0, 0, 0, 0}; + /* m m s s ms ms ms*/ + uint8_t lap_last_displayed[7] = {0, 0, 0, 0, 0, 0, 0}; + /* m m s s ms ms ms*/ + + Labels labels{ + {{0 * 8, 1 * 16}, "TOTAL:", Theme::getInstance()->fg_light->foreground}, + {{0 * 8, 7 * 16}, "LAP:", Theme::getInstance()->fg_light->foreground}, + }; + + OptionsField options_ms_display_level{ + {4 * 8 * 4 + 7 * 8 + 4, 2 * 16}, + 5, + {{"& - -", 0}, + {"& & -", 1}, + {"& & &", 2}}}; + + Painter painter; + + Button button_run_stop{ + {72, 210, 96, 24}, + "START"}; + + Button button_reset_lap{ + {72, screen_height - 80, 96, 24}, + "RESET"}; + + Button button_done{ + {72, screen_height - 50, 96, 24}, + "EXIT"}; + + MessageHandlerRegistration message_handler_frame_sync{ + Message::ID::DisplayFrameSync, + [this](const Message* const) { + this->frame_sync(); + }}; +}; + +} // namespace ui::external_app::stopwatch + +#endif /*__UI_STOPWATCH_H__*/ \ No newline at end of file diff --git a/firmware/application/external/tetris/SPI_TFT_ILI9341.h b/firmware/application/external/tetris/SPI_TFT_ILI9341.h deleted file mode 100644 index 8f727f4ef..000000000 --- a/firmware/application/external/tetris/SPI_TFT_ILI9341.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (C) 2024 Mark Thompson - * - * This file is part of PortaPack. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -// "HAL" display layer for Tetris code to run on PortaPack without its original ILI9341 functions - -#ifndef __UI_SPI_TFT_ILI9341_H__ -#define __UI_SPI_TFT_ILI9341_H__ - -ui::Painter painter; - -static int x_pos{0}; -static int y_pos{0}; -static int fg_color; -static int bg_color; - -enum { - White, - Blue, - Yellow, - Purple, - Green, - Red, - Maroon, - Orange, - Black, -}; - -// pp_colors must be in same order as enums above -static const Color pp_colors[] = { - Color::white(), - Color::blue(), - Color::yellow(), - Color::purple(), - Color::green(), - Color::red(), - Color::magenta(), - Color::orange(), - Color::black(), -}; - -// NB: ELIMINATED SPI_TFT_ILI9341 DISPLAY CLASS DUE TO GLOBAL OBJECT INITIALIZATION ISSUE WITH EXTERNAL APPS - -static void claim(__FILE* x) { - (void)x; -}; - -static void cls() { - painter.fill_rectangle({0, 0, portapack::display.width(), portapack::display.height()}, Color::black()); -}; - -static void background(int color) { - bg_color = color; -}; - -static void foreground(int color) { - fg_color = color; -}; - -static void locate(int x, int y) { - x_pos = x; - y_pos = y; -}; - -static void set_orientation(int x) { - (void)x; -}; - -static void set_font(unsigned char* x) { - (void)x; -}; - -static void fillrect(int x1, int y1, int x2, int y2, int color) { - painter.fill_rectangle({x1, y1, x2 - x1, y2 - y1}, pp_colors[color]); -}; - -static void rect(int x1, int y1, int x2, int y2, int color) { - painter.draw_rectangle({x1, y1, x2 - x1, y2 - y1}, pp_colors[color]); -}; - -static void printf(std::string str) { - auto style = (fg_color == White) ? *ui::Theme::getInstance()->bg_darkest : *ui::Theme::getInstance()->bg_lightest; - painter.draw_string({x_pos, y_pos - 1}, style, str); -}; - -static void printf(std::string str, int v) { - if (str.find_first_of("%") != std::string::npos) { - str.resize(str.find_first_of("%")); // remove %d from end of string - } - printf(str + to_string_dec_uint(v)); -}; - -#endif /*__UI_SPI_TFT_ILI9341_H__*/ diff --git a/firmware/application/external/tetris/main.cpp b/firmware/application/external/tetris/main.cpp index fe66298a1..2a172b951 100644 --- a/firmware/application/external/tetris/main.cpp +++ b/firmware/application/external/tetris/main.cpp @@ -73,8 +73,8 @@ __attribute__((section(".external_app.app_tetris.application_information"), used 0xFF, 0xF1, }, - /*.icon_color = */ ui::Color::orange().v, - /*.menu_location = */ app_location_t::UTILITIES, + /*.icon_color = */ ui::Color::green().v, + /*.menu_location = */ app_location_t::GAMES, /*.desired_menu_position = */ -1, /*.m4_app_tag = portapack::spi_flash::image_tag_none */ {0, 0, 0, 0}, diff --git a/firmware/application/external/tetris/mbed.h b/firmware/application/external/tetris/mbed.h deleted file mode 100644 index c74b7b048..000000000 --- a/firmware/application/external/tetris/mbed.h +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright (C) 2024 Mark Thompson - * - * This file is part of PortaPack. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -// "HAL" layer for Tetris code to run on PortaPack without its original mbed OS -// (the dream here was to avoid modifying the original code) - -#ifndef __UI_mbed_H__ -#define __UI_mbed_H__ - -using Callback = void (*)(void); - -#define wait_us(x) (void)0 -#define wait(x) chThdSleepMilliseconds(x * 1000) -#define PullUp 1 - -enum { - dp0, - dp1, - dp2, - dp3, - dp4, - dp5, - dp6, - dp7, - dp8, - dp9, - dp10, - dp11, - dp12, - dp13, - dp14, - dp15, - dp16, - dp17, - dp18, - dp19, - dp20, - dp21, - dp22, - dp23, - dp24, - dp25, -}; - -static bool but_RIGHT; -static bool but_LEFT; -static bool but_UP; -static bool but_DOWN; -static bool but_SELECT; - -// -// AnalogIn Class -- DID NOT WORK DUE TO GLOBAL OBJECT INITIALIZER ISSUE WITH EXTERNAL APPS -- hacked original code module instead -// -// dp9 = joystick rotate button --> select button -// dp10 = joystick y --> up & down buttons -// dp11 = joystick x --> left & right buttons -// dp13 = random number generator -// -// -// class AnalogIn { -// public: -// AnalogIn(uint32_t analog_input) { -// // FIXME - THIS CODE NEVER GETS EXECUTED! -// analog_input_ = analog_input; -// }; -// -// // Tetris code only uses this function for dp13 - supposed to be a random number -// uint16_t read_u16() { -// return std::rand(); -// }; -// -// // Tetris code uses read() function for direction buttons only -// float read() { -// float retval = 0.5; -// switch (analog_input_) { -// case dp11: -// if (but_LEFT) -// retval = 0.0; -// else if (but_RIGHT) -// retval = 1.0; -// break; -// -// case dp10: -// if (but_UP) -// retval = 0.0; -// else if (but_DOWN) -// retval = 1.0; -// break; -// } -// return retval; -// }; -// -// operator float() { -// return read(); -// }; -// -// private: -// uint32_t analog_input_{INT_MAX}; -// }; - -// -// Timer Class -// (Timer object was used for unneeded button debouncing, so just returning 1000ms to indicate we've waited long enough) -// -class Timer { - public: - // NOTE: INITIALIZER CODE WON'T RUN - Timer() { (void)0; }; - void reset() { (void)0; }; - void start() { (void)0; } - uint32_t read_ms() { return 1000; }; - - private: -}; - -// -// Ticker Class -// (Ticker is timed callback, used for checking "joystick" directional switches and when time to move piece down a row) -// -// NB: Only one callback is supported per Ticker class instantiation -static Callback fall_timer_callback; -static uint32_t fall_timer_timeout; -static uint32_t fall_timer_counter; - -static Callback dir_button_callback; - -static void check_fall_timer() { - if (fall_timer_callback) { - if (++fall_timer_counter >= fall_timer_timeout) { - fall_timer_counter = 0; - fall_timer_callback(); - } - } -} - -class Ticker { - public: - // NOTE: INITIALIZER CODE WON'T RUN - Ticker() { (void)0; }; - - void attach(Callback func, double delay_sec) { - // 0.3 sec is requested only for button check -- kludge to use on_key callback for this one instead of timer - if (delay_sec == 0.3) { - dir_button_callback = func; - } else { - fall_timer_callback = func; - fall_timer_timeout = delay_sec * 60; // timer interrupts at 60 Hz - } - } - - void detach() { - // shouldn't detach both, but don't know how to tell which object is which - dir_button_callback = nullptr; - fall_timer_callback = nullptr; - } - - private: -}; - -// -// InterruptIn Class -// (just used for the Select button) -// -static Callback sel_button_callback; - -static bool check_encoder(const EncoderEvent delta) { - (void)delta; - // TODO: consider adding ability to rotate Tetronimo via encoder too - return false; -} - -static bool check_key(const KeyEvent key) { - auto switches_debounced = get_switches_state().to_ulong(); - but_RIGHT = (switches_debounced & 0x01) != 0; - but_LEFT = (switches_debounced & 0x02) != 0; - but_DOWN = (switches_debounced & 0x04) != 0; - but_UP = (switches_debounced & 0x08) != 0; - but_SELECT = (switches_debounced & 0x10) != 0; - - if (key == KeyEvent::Select) { - if (sel_button_callback) - sel_button_callback(); - } else { - if (dir_button_callback) - dir_button_callback(); - } - return true; -} - -class InterruptIn { - public: - InterruptIn(int reg) { - // NOTE: INITIALIZER CODE WON'T RUN - (void)reg; - }; - void fall(Callback func) { sel_button_callback = func; }; - void mode(int v) { (void)v; }; - - private: -}; - -#endif /*__UI_mbed_H__*/ diff --git a/firmware/application/external/tetris/tetris.cpp b/firmware/application/external/tetris/tetris.cpp deleted file mode 100644 index c6e2fb957..000000000 --- a/firmware/application/external/tetris/tetris.cpp +++ /dev/null @@ -1,548 +0,0 @@ -// Projekat Tetris -// by Vrnjak Lamija & Selimović Denis -// Elektrotehnički fakultet Sarajevo - -// clang-format off - -//////// HACKED FOR PORTAPACK -- CHANGES HIGHLIGHTED -int main(); -void pause_game(); -void Initialize(unsigned char c); -void DeleteFigure(); -void DrawFigure(); -bool InCollisionDown(char delta); -bool InCollisionLeft(); -bool InCollisionRight(); -//////// PORTAPACK - -#include "mbed.h" -#include "SPI_TFT_ILI9341.h" -#include "Arial12x12.h" - -#define dp23 P0_0 - -//////// PORTAPACK - DISABLED MOST CLASSES DUE TO GLOBAL OBJECT INITIALIZER ISSUE WITH EXTERNAL APPS: -//deklaracija display-a -//SPI_TFT_ILI9341 display(dp2, dp1, dp6, dp24, dp23, dp25, "TFT"); -// -//analogni ulazi za joystick -// AnalogIn VRx(dp11); -// AnalogIn VRy(dp10); -// -// AnalogIn random(dp13); //analogni ulaz za generisanje random vrijednosti -//////// PORTAPACK - -//taster na joysticku za rotaciju -InterruptIn taster(dp9); - -//ticker za spustanje figure -//timer za debouncing tastera na joysticku -Ticker game, joystick; -Timer debounceTaster; - -unsigned char level = 0; //mora biti tipa usigned char jer inače se može desiti da level bude manji od 0, a i da ne trošimo memoriju -const float delays[4] = {1.2, 0.7, 0.4, 0.25}; //svakih koliko se spusti jedan red, ovo provjeriti da li je presporo ili prebrzo, ovisi o levelu - -//////// PORTAPACK - DELETED UNNEEDED JOYSTICK HYSTERESIS VARIABLES -//char leftBoundary = 1, rightBoundary = 5, downBoundary = 1, upBoundary = 5;// sada je ovo tipa char -//////// PORTAPACK - -unsigned int score = 0; //stavio sam ovo unsigned int za veći opseg, mada je jako teško da se i int premaši, ali nmvz -bool firstTime = true; //ako je prvi put, figura se crta u Tickeru -bool gameStarted = false; -unsigned char nextFigure = 1; //ovo je sad globalna varijabla, da bi mogli unaprijed generisati sljedeću figuru radi prikaza - -//white - no figure -//I - BLUE -//O - YELLOW -//T - PURPLE -//S - GREEN -//Z - RED -//J - MAROON -//L - ORANGE -const int colors[8] = {White, Blue, Yellow, Purple, Green, Red, Maroon, Orange}; -const short DIMENSION = 16; -const short DIMENSION_NEXT = 12; -short board[20][10] = {0}; //matrica boja, 0 - 7 indeksi boja - -short figuresX[7][4] = {{0,0,0,0}, {0,0,1,1}, {0,1,1,1}, {1,1,0,0}, {0,1,0,1}, {1,1,1,0}, {1,1,1,0}}; -short figuresY[7][4] = {{0,1,2,3}, {1,0,0,1}, {1,1,2,0}, {0,1,1,2}, {0,1,1,2}, {2,1,0,0}, {0,1,2,2}}; - -unsigned int GenerateRandomSeed() { -//////// PORTAPACK - USE RTC FOR SEED -return LPC_RTC->CTIME0; -//////// PORTAPACK -} - -void Init() { - //ovo su zajedničke osobine za sve prikaze na display-u - //nikad se ne mijenjaju i pozvat ćemo je jednom prije petlje - claim(stdout); - set_orientation(2); // 2 ili 0, zavisi kako okrenemo display, provjerit ćemo na labu kako nam je najlakše povezat - set_font((unsigned char*) Arial12x12); -} - - -void ShowScore() { - //pomocna funkcija za prikazivanje score-a - fillrect(165, 20, 235, 50, White); //popunimo pravugaonik da obrišemo stari score - locate(200, 35); //valjda je na sredini pravougaonika - printf("%d", score); -} - -void ShowNextFigure() { - //prikaz sljedeće figure koristeći pomoćnu varijablu nextFigure - fillrect(165, 70, 235, 120, White); - int upperLeftX = 176, upperLeftY = 83; - for(int i = 0; i < 4; i++) { - int x = upperLeftX + DIMENSION_NEXT * figuresY[nextFigure - 1][i], y = upperLeftY + DIMENSION_NEXT * figuresX[nextFigure - 1][i]; - fillrect(x, y, x + DIMENSION_NEXT, y + DIMENSION_NEXT, colors[nextFigure]); - rect(x, y, x + DIMENSION_NEXT, y + DIMENSION_NEXT, Black); - } -} - -//funkcija za crtanje cursora za odabir levela -void DrawCursor(int color, unsigned char lev) { - fillrect(60, lev * 70 + 50, 72, lev * 70 + 50 + 12, color); -} - -// PORTAPACK - ADDED EXTRA LEVEL: -void ShowLevelMenu() { - //ovdje inicijalizujemo display - cls(); // brišemo prethodno - background(Black); - foreground(White); - locate(80, 50); - printf("LEVEL 1"); - locate(80, 120); - printf("LEVEL 2"); - locate(80, 190); - printf("LEVEL 3"); - locate(80, 260); - printf("LEVEL 4"); - DrawCursor(White, level); -} -//////// PORTAPACK - -//////// PORTAPACK - USE BUTTONS VS JOYSTICK: -void ReadJoystickForLevel(){ - unsigned char old = level; - if(but_UP){ - (level == 0) ? level = 3 : level--; - } - else if(but_DOWN){ - //ne radi ona prethodna varijanta jer % vraća i negastivni rezultat - //to što ne koristimo unsigned tip ne pomaže jer će doći do overflow-a - level = (level + 1) % 4; - } - DrawCursor(Black, old); //na prethodni level popunimo bojom pozadine - DrawCursor(White, level); //na novi level popunimo bijelom bojom - pozadina je crna - //koristio sam fillrect, jer njega svakako moramo koristiti, jer možda budemo morali da brišemo fillcircle iz biblioteke -} -//////// PORTAPACK - -void EndPlay() { - joystick.detach(); - score = 0; - firstTime = true; - gameStarted = false; - for(int i = 0; i < 20; i++) { - for(int j = 0; j < 10; j++) { - board[i][j] = 0; - } - } -//////// PORTAPACK - FIX TO REINITIALIZE SCREEN -// ShowLevelMenu(); -// joystick.attach(&ReadJoystickForLevel, 0.3); -main(); -//////// PORTAPACK -} - -void StartGame() -{ - cls(); // brišemo ShowLevelMenu - background(White); - foreground(Black); - fillrect(0, 0, 160, 320, White); - fillrect(160, 0, 240, 320, Black); //dio za prikazivanje rezultata će biti crni pravougaonik, a tabla je bijeli - ShowScore(); -} - -void copyCoordinates(short X[], short Y[], unsigned char index) -{ - //umjesto one prošle metode za kopiranje, ova prima index, čisto da nam olakša život - for(int i = 0; i < 4; i++) { - X[i] = figuresX[index][i]; - Y[i] = figuresY[index][i]; - } -} - -bool BottomEdge(int x){ - return x > 19; -} - -bool LeftEdge(int y){ - return y < 0; -} - -bool RightEdge(int y){ - return y > 9; -} - -bool OutOfBounds(int y, int x){ - return y < 0 || y > 9 || x > 19; -} - -void PutBorders(short x, short y) { - for(int i = x - 1; i <= x + 1; i++) { - for(int j = y - 1; j <= y + 1; j++) { - if(i < 0 || i > 9 || j < 0 || j > 19 || board[j][i] == 0) continue; - rect(i * DIMENSION, j * DIMENSION, (i + 1) * DIMENSION, (j + 1) * DIMENSION, Black); - } - } -} - -//////// PORTAPACK - ELIMINATED CLASSES DUE TO GLOBAL OBJECT INITIALIZATION ISSUE WITH EXTERNAL APPS: -//class Tetromino{ -//private: - short X[4]; - short Y[4]; - short boardX, boardY; - unsigned char colorIndex;//dodao sam colorIndex zasad, jer nema drugog načina da popunimo matricu sa indeksima boja - //ovo je najbezbolnija varijanta što se memorije tiče -//public: -// Tetromino(){ -// unsigned char r = rand() % 7 + 1; -// Initialize(r); -// } - - void Tetromino(unsigned char c) { - Initialize(c); - } - - void Initialize(unsigned char c) { - colorIndex = c; - boardX = 0; - boardY = 4; //3,4 ili 5 najbolje da vidimo kad imamo display - copyCoordinates(X, Y, c - 1); - } - - void Rotate(){ - short pivotX = X[1], pivotY = Y[1]; - //prvi elemnti u matrici su pivoti oko koje rotiramo - - short newX[4]; //pozicije blokova nakon rotiranja ako sve bude ok - short newY[4]; - - for(int i = 0; i < 4; i++){ - short tmp = X[i], tmp2 = Y[i]; - newX[i] = pivotX + pivotY - tmp2; - newY[i] = tmp + pivotX - pivotY; - - if(OutOfBounds(boardY + newY[i], boardX + newX[i]) || board[boardX + newX[i]][boardY + newY[i]] != 0) return; - } - DeleteFigure(); - for(int i = 0; i < 4; i++){ - X[i] = newX[i]; - Y[i] = newY[i]; - } - DrawFigure(); - } - - void DrawFigure() { - for(int i = 0; i < 4; i++) { - //display je deklarisani display logy iz biblioteke one - //računamo gornji lijevi pixel po x i y - //donji desni dobijemo kad dodamo DIMENZIJU - //stavio sam 16 za početak, možemo se opet skontati na labu - //ovo pretpostavlja da nema margina, mogu se lagano dodati uz neku konstantu kao offset - int upperLeftX = (boardX + X[i]) * DIMENSION, upperLeftY = (boardY + Y[i]) * DIMENSION; - fillrect( upperLeftY, upperLeftX, upperLeftY + DIMENSION, upperLeftX + DIMENSION, colors[colorIndex]); - //ovo boji granice blokova u crno, možemo skloniti ako ti se ne sviđa - rect( upperLeftY, upperLeftX, upperLeftY + DIMENSION, upperLeftX + DIMENSION, Black); - } - } - - void DeleteFigure() { - for(int i = 0; i < 4; i++) { - //ista logika kao u DrawFigure, samo popunjavamo sve blokove sa bijelim pravougaonicima - short upperLeftX = (boardX + X[i]) * DIMENSION, upperLeftY = (boardY + Y[i]) * DIMENSION; - fillrect( upperLeftY, upperLeftX, upperLeftY + DIMENSION, upperLeftX + DIMENSION, White); - PutBorders(upperLeftY, upperLeftX); - } - } - - void OnAttached() { - //metoda se poziva kad figura prestanje da se krece - //popunimo matricu indeksom boje - for(int i = 0; i < 4; i++) { - board[boardX + X[i]][boardY + Y[i]] = colorIndex; - //btw board bi mogao biti niz tipa unsigned char, ali to ćemo vidjet kasnije - } - } - - bool MoveDown(char delta = 1){ - if(!InCollisionDown(delta)){ - DeleteFigure(); - boardX+=delta; - DrawFigure(); - return true; - } - - return false; - } - - void MoveLeft(){ - if(!InCollisionLeft()){ - DeleteFigure(); - boardY--; - DrawFigure(); - } - } - - void MoveRight(){ - if(!InCollisionRight()){ - DeleteFigure(); - boardY++; - DrawFigure(); - } - } - - void SoftDrop() { - //ovo je funkcija za soft drop - //obrisemo figuru, postavimo novu poziciju dva reda ispod, nacrtamo figuru - DeleteFigure(); - MoveDown(2); - DrawFigure(); - //treba još vidjeti koje izmjene u tickeru trebaju - score += 2 * (level +1); //prema igrici koju smo igrali, dobije se 14 poena kad se uradi hard drop - ShowScore(); - } - - - bool InCollisionDown(char delta = 1){ - int newX, newY; //da bi bilo citljivije - - for(int i = 0; i < 4; i++){ - newX = boardX + X[i] + delta; - newY = boardY + Y[i]; - - if(BottomEdge(newX) || board[newX][newY] != 0){ - return true; - } - //jedna figura je u koliziji ako - //pozicija na koju zelimo da pomjerimo bilo koji blok dotakne dno ili lijevu ili desnu ivicu ekrana - //ili ako je pozicija na koju zelimo da pomjerimo bilo koji od blokova vec zauzeta a da nije dio figure prije pomijeranja - } - - return false; - } - - bool InCollisionLeft(){ - int newX, newY; - - for(int i = 0; i < 4; i++){ - newX = boardX + X[i]; - newY = boardY + Y[i] - 1; - - if(LeftEdge(newY) || board[newX][newY] != 0){ - return true; - } - } - - return false; - } - - - bool InCollisionRight(){ - int newX, newY; - - for(int i = 0; i < 4; i++){ - newX = boardX + X[i]; - newY = boardY + Y[i] + 1; - - if(RightEdge(newY) || board[newX][newY] != 0){ - return true; - } - } - - return false; - } -// }; - -// Tetromino currentTetromino; - -//////// PORTAPACK - USE BUTTONS VS JOYSTICK, AND ADDED PAUSE FEATURE: -void ReadJoystickForFigure() { - if(but_LEFT) { - MoveLeft(); - } - else if(but_RIGHT) { - MoveRight(); - } - else if(but_UP) { - pause_game(); - } - else if(but_DOWN) { - SoftDrop(); - } -} -//////// PORTAPACK - -void CheckLines(short &firstLine, short &numberOfLines) -{ - //vraća preko reference prvu liniju koja je popunjena do kraja, kao i takvih linija - firstLine = -1; //postavljen na -1 jer ako nema linija koje treba brisati ispod u UpdateBoard neće se ući u petlju - numberOfLines = 0; - for(int i = 19; i >= 0; i--) { - short temp = 0; - for(int j = 0; j < 10; j++) { - if(board[i][j] == 0) { - if(numberOfLines > 0) return; - break; - }//ako je makar jedna bijela, prekida se brojanje - temp++; - } - if(temp == 10) { //ako je temo došao do 10, niti jedna bijela - puna linija - numberOfLines++; - if(firstLine == -1) firstLine = i; //ovo mijenjamo samo prvi put - } - } -} - -unsigned int UpdateScore (short numOfLines){ - unsigned int newIncrement = 0; - switch(numOfLines) { - case 1 : newIncrement = 40; break; - case 2 : newIncrement = 100; break; - case 3 : newIncrement = 300; break; - case 4 : newIncrement = 1200; break; - default : newIncrement = 0; break; //update funkcije za score, još sam vratio ovo na 0 - } - return newIncrement * (level + 1); -} - -void UpdateBoard() -{ - short firstLine, numberOfLines; - //pozivamo funkciju - do { - CheckLines(firstLine, numberOfLines); - for(int i = firstLine; i >= numberOfLines; i--) { - for(int j = 0; j < 10; j++) { - board[i][j] = board[i - numberOfLines][j]; - board[i - numberOfLines][j] = 0; - short tmp = i - numberOfLines; - fillrect( j * DIMENSION,i * DIMENSION, (j + 1) * DIMENSION , (i + 1) * DIMENSION , colors[board[i][j]]); // bojimo novi blok - fillrect( j * DIMENSION, tmp * DIMENSION,(j + 1) * DIMENSION, (tmp + 1) * DIMENSION , White); - if(board[i][j] != 0) - rect( j * DIMENSION,i * DIMENSION, (j + 1) * DIMENSION , (i + 1) * DIMENSION , Black); - } - } - score += UpdateScore(numberOfLines); - } - while(numberOfLines != 0); //ovdje se mijenja globalna varijabla score -} - -bool IsOver() { - for(int i = 0; i < 10; i++) { - if(board[0][i] != 0) return true; - } - return false; -} - -void ShowGameOverScreen() { -//////// PORTAPACK - SKIP CLS -// cls(); -// background(Black); -// foreground(White); -background(White); -foreground(Black); -//////// PORTAPACK - locate(60, 120); - printf("GAME OVER"); - locate(40, 150); - printf("YOUR SCORE IS %d", score); - wait(5); //ovaj prikaz traje 3s (možemo mijenjati) a nakon toga se ponovo prikazuje meni sa levelima -} - -void InitGame() { - if(firstTime) { - Tetromino(rand() % 7 + 1); - DrawFigure(); - nextFigure = rand() % 7 + 1; - ShowNextFigure(); - firstTime = false; - } -} - -void PlayGame(){ - InitGame(); - if(!MoveDown()){ - OnAttached(); - UpdateBoard(); - ShowScore(); - - Tetromino(nextFigure); - DrawFigure(); - nextFigure = rand() % 7 + 1; - ShowNextFigure(); - if(IsOver()) { - //ako je igra završena brišemo sve sa displey-a, prikazujemo poruku i score - //takođe moramo dettach-at ticker - game.detach(); - ShowGameOverScreen(); //prikaz da je kraj igre, ima wait od 3s - EndPlay(); - } - } - -} - -void OnTasterPressed(){ - if(debounceTaster.read_ms() > 200) { - if(gameStarted){ - Rotate(); - } - else{ - joystick.detach(); - gameStarted = true; - StartGame(); //pocinje igra, prikazuje se tabla - joystick.attach(&ReadJoystickForFigure, 0.3); - game.attach(&PlayGame, delays[level]); //svakih nekoliko spusta figuru jedan red nize - } - debounceTaster.reset(); - } -} - -void SetTaster() { - taster.mode(PullUp); //mora se aktivirati pull up otpornik na tasteru joystick-a - taster.fall(&OnTasterPressed); - debounceTaster.reset(); - debounceTaster.start(); -} - -int main() { - srand(GenerateRandomSeed()); - Init(); - ShowLevelMenu(); - joystick.attach(&ReadJoystickForLevel, 0.3); - SetTaster(); - -//////// PORTAPACK: CAN'T HANG HERE IN MAYHEM OR WE WON'T GET ANY CALLBACKS -// while(1); -return 0; -//////// PORTAPACK -} - -//////// PORTAPACK - ADDED PAUSE FEATURE: -void pause_game() { - game.detach(); - joystick.detach(); - locate(180, 200); - printf("PAUSED"); - while ((get_switches_state().to_ulong() & 0x10) == 0); // wait for SELECT button to resume - printf(" "); - joystick.attach(&ReadJoystickForFigure, 0.3); - game.attach(&PlayGame, delays[level]); //svakih nekoliko spusta figuru jedan red nize -}; -//////// PORTAPACK \ No newline at end of file diff --git a/firmware/application/external/tetris/ui_tetris.cpp b/firmware/application/external/tetris/ui_tetris.cpp index b236b2382..ce8da529e 100644 --- a/firmware/application/external/tetris/ui_tetris.cpp +++ b/firmware/application/external/tetris/ui_tetris.cpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2024 Mark Thompson + * 2025 updates by RocketGod (https://betaskynet.com/) * * This file is part of PortaPack. * @@ -23,23 +24,576 @@ namespace ui::external_app::tetris { -#pragma GCC diagnostic push -// external code, so ignore warnings -#pragma GCC diagnostic ignored "-Weffc++" -#include "tetris.cpp" -#pragma GCC diagnostic pop +Ticker game; +Ticker joystick; + +unsigned char level = 0; +const float delays[4] = {1.2, 0.7, 0.4, 0.25}; +unsigned int score = 0; +bool firstTime = true; +bool gameStarted = false; +unsigned char nextFigure = 1; +short board[20][10] = {0}; +const int colors[8] = {White, Blue, Yellow, Purple, Green, Red, Maroon, Orange}; +const short DIMENSION = 16; +const short DIMENSION_NEXT = 12; +short figuresX[7][4] = {{0, 0, 0, 0}, {0, 0, 1, 1}, {0, 1, 1, 1}, {1, 1, 0, 0}, {0, 1, 0, 1}, {1, 1, 1, 0}, {1, 1, 1, 0}}; +short figuresY[7][4] = {{0, 1, 2, 3}, {1, 0, 0, 1}, {1, 1, 2, 0}, {0, 1, 1, 2}, {0, 1, 1, 2}, {2, 1, 0, 0}, {0, 1, 2, 2}}; + +const Color pp_colors[] = { + Color::white(), + Color::blue(), + Color::yellow(), + Color::purple(), + Color::green(), + Color::red(), + Color::magenta(), + Color::orange(), + Color::black(), +}; + +Painter painter; + +bool but_RIGHT = false; +bool but_LEFT = false; +bool but_UP = false; +bool but_DOWN = false; +bool but_SELECT = false; + +static int x_pos{0}; +static int y_pos{0}; + +static int rotation_state = 0; + +static int fg_color; +static int bg_color; + +static Callback fall_timer_callback = nullptr; +static uint32_t fall_timer_timeout = 0; +static uint32_t fall_timer_counter = 0; +static Callback dir_button_callback = nullptr; + +void cls() { + painter.fill_rectangle({0, 0, portapack::display.width(), portapack::display.height()}, Color::black()); +} + +void background(int color) { + bg_color = color; +} + +void foreground(int color) { + fg_color = color; +} + +void locate(int x, int y) { + x_pos = x; + y_pos = y; +} + +void fillrect(int x1, int y1, int x2, int y2, int color) { + painter.fill_rectangle({x1, y1, x2 - x1, y2 - y1}, pp_colors[color]); +} + +void rect(int x1, int y1, int x2, int y2, int color) { + painter.draw_rectangle({x1, y1, x2 - x1, y2 - y1}, pp_colors[color]); +} + +void printf(std::string str) { + auto style = (fg_color == White) ? *ui::Theme::getInstance()->bg_darkest : *ui::Theme::getInstance()->fg_light; + painter.draw_string({x_pos, y_pos - 1}, style, str); +} + +void printf(std::string str, int v) { + if (str.find_first_of("%") != std::string::npos) { + str.resize(str.find_first_of("%")); + } + printf(str + to_string_dec_uint(v)); +} + +void check_fall_timer() { + if (fall_timer_callback) { + if (++fall_timer_counter >= fall_timer_timeout) { + fall_timer_counter = 0; + fall_timer_callback(); + } + } +} + +void Ticker::attach(Callback func, double delay_sec) { + if (delay_sec == 0.3) { + dir_button_callback = func; + } else { + fall_timer_callback = func; + fall_timer_timeout = delay_sec * 60; + } +} + +void Ticker::detach() { + dir_button_callback = nullptr; + fall_timer_callback = nullptr; +} + +unsigned int GenerateRandomSeed() { + return LPC_RTC->CTIME0; +} + +void Init() { +} + +void ShowScore() { + fillrect(165, 10, 235, 60, Black); + rect(165, 10, 235, 60, White); + locate(200, 35); + printf("%d", score); +} + +void ShowNextFigure() { + fillrect(165, 70, 235, 130, Black); + rect(165, 70, 235, 130, White); + int upperLeftX = 176, upperLeftY = 83; + for (int i = 0; i < 4; i++) { + int x = upperLeftX + DIMENSION_NEXT * figuresY[nextFigure - 1][i], y = upperLeftY + DIMENSION_NEXT * figuresX[nextFigure - 1][i]; + fillrect(x, y, x + DIMENSION_NEXT, y + DIMENSION_NEXT, colors[nextFigure]); + rect(x, y, x + DIMENSION_NEXT, y + DIMENSION_NEXT, Black); + } +} + +void DrawCursor(int color, unsigned char lev) { + fillrect(60, lev * 70 + 50, 72, lev * 70 + 50 + 12, color); +} + +void ShowLevelMenu() { + cls(); + background(Black); + foreground(White); + locate(80, 50); + printf("LEVEL 1"); + locate(80, 120); + printf("LEVEL 2"); + locate(80, 190); + printf("LEVEL 3"); + locate(80, 260); + printf("LEVEL 4"); + DrawCursor(White, level); +} + +void ReadJoystickForLevel() { + unsigned char old = level; + if (but_UP) { + (level == 0) ? level = 3 : level--; + } else if (but_DOWN) { + level = (level + 1) % 4; + } + if (old != level) { + DrawCursor(Black, old); + DrawCursor(White, level); + } +} + +void EndPlay() { + joystick.detach(); + game.detach(); + score = 0; + firstTime = true; + gameStarted = false; + for (int i = 0; i < 20; i++) { + for (int j = 0; j < 10; j++) { + board[i][j] = 0; + } + } + ShowLevelMenu(); + joystick.attach(&ReadJoystickForLevel, 0.3); +} + +void StartGame() { + cls(); + background(Black); + foreground(White); + fillrect(0, 0, 162, screen_height, Black); + rect(162, 0, 164, screen_height, White); + fillrect(164, 0, screen_width, screen_height, Black); + ShowScore(); + ShowNextFigure(); +} + +void copyCoordinates(short X[], short Y[], unsigned char index) { + for (int i = 0; i < 4; i++) { + X[i] = figuresX[index][i]; + Y[i] = figuresY[index][i]; + } +} + +bool BottomEdge(int x) { + return x > 19; +} + +bool LeftEdge(int y) { + return y < 0; +} + +bool RightEdge(int y) { + return y > 9; +} + +bool OutOfBounds(int y, int x) { + return y < 0 || y > 9 || x > 19; +} + +void PutBorders(short x, short y) { + for (int i = x - 1; i <= x + 1; i++) { + for (int j = y - 1; j <= y + 1; j++) { + if (i < 0 || i > 9 || j < 0 || j > 19 || board[j][i] == 0) continue; + rect(i * DIMENSION, j * DIMENSION, (i + 1) * DIMENSION, (j + 1) * DIMENSION, Black); + } + } +} + +short X[4]; +short Y[4]; +short boardX, boardY; +unsigned char colorIndex; + +void Tetromino(unsigned char c) { + Initialize(c); +} + +void Initialize(unsigned char c) { + colorIndex = c; + boardY = 4; + if (c == 1) { // I-tetromino + boardX = -1; // Spawn higher + } else { + boardX = 0; // Other tetrominos spawn at top + } + copyCoordinates(X, Y, c - 1); + rotation_state = 0; +} + +void Rotate() { + short newX[4], newY[4]; + int next_state = (rotation_state + 1) % 4; + + if (colorIndex == 2) { // O-tetromino doesn't rotate + return; + } + + const short kick_tests_I[4][5][2] = { + {{0, 0}, {-2, 0}, {1, 0}, {-2, -1}, {1, 2}}, + {{0, 0}, {-1, 0}, {2, 0}, {-1, 2}, {2, -1}}, + {{0, 0}, {2, 0}, {-1, 0}, {2, 1}, {-1, -2}}, + {{0, 0}, {1, 0}, {-2, 0}, {1, -2}, {-2, 1}}}; + const short kick_tests_other[4][5][2] = { + {{0, 0}, {-1, 0}, {-1, 1}, {0, -2}, {-1, -2}}, + {{0, 0}, {1, 0}, {1, -1}, {0, 2}, {1, 2}}, + {{0, 0}, {1, 0}, {1, 1}, {0, -2}, {1, -2}}, + {{0, 0}, {-1, 0}, {-1, -1}, {0, 2}, {-1, 2}}}; + + bool is_I_tetromino = (colorIndex == 1); + const short(*kick_tests)[5][2] = is_I_tetromino ? kick_tests_I : kick_tests_other; + + for (int test = 0; test < 5; test++) { + short kickX = kick_tests[rotation_state][test][0]; + short kickY = kick_tests[rotation_state][test][1]; + + // Calculate new positions + for (int i = 0; i < 4; i++) { + short tmpX = X[i] - X[1]; + short tmpY = Y[i] - Y[1]; + newX[i] = X[1] - tmpY; + newY[i] = Y[1] + tmpX; + int testX = boardX + newX[i] + kickX; + int testY = boardY + newY[i] + kickY; + // Explicitly block rotations that place blocks above the board + if (testX < 0 || OutOfBounds(testY, testX) || (testX >= 0 && board[testX][testY] != 0)) { + goto next_test; + } + } + + // Valid rotation found, apply it + DeleteFigure(); + for (int i = 0; i < 4; i++) { + X[i] = newX[i]; + Y[i] = newY[i]; + } + boardX += kickX; + boardY += kickY; + rotation_state = next_state; + DrawFigure(); + return; + + next_test: + continue; + } +} + +void DrawFigure() { + for (int i = 0; i < 4; i++) { + int upperLeftX = (boardX + X[i]) * DIMENSION, upperLeftY = (boardY + Y[i]) * DIMENSION; + fillrect(upperLeftY, upperLeftX, upperLeftY + DIMENSION, upperLeftX + DIMENSION, colors[colorIndex]); + rect(upperLeftY, upperLeftX, upperLeftY + DIMENSION, upperLeftX + DIMENSION, Black); + } +} + +void DeleteFigure() { + for (int i = 0; i < 4; i++) { + short upperLeftX = (boardX + X[i]) * DIMENSION, upperLeftY = (boardY + Y[i]) * DIMENSION; + fillrect(upperLeftY, upperLeftX, upperLeftY + DIMENSION, upperLeftX + DIMENSION, Black); + PutBorders(upperLeftY, upperLeftX); + } +} + +void OnAttached() { + for (int i = 0; i < 4; i++) { + board[boardX + X[i]][boardY + Y[i]] = colorIndex; + } +} + +bool MoveDown(char delta) { + if (!InCollisionDown(delta)) { + DeleteFigure(); + boardX += delta; + DrawFigure(); + return true; + } + return false; +} + +void MoveLeft() { + if (!InCollisionLeft()) { + DeleteFigure(); + boardY--; + DrawFigure(); + } +} + +void MoveRight() { + if (!InCollisionRight()) { + DeleteFigure(); + boardY++; + DrawFigure(); + } +} + +void SoftDrop() { + DeleteFigure(); + MoveDown(2); + DrawFigure(); + score += 2 * (level + 1); + ShowScore(); +} + +bool InCollisionDown(char delta) { + int newX, newY; + for (int i = 0; i < 4; i++) { + newX = boardX + X[i] + delta; + newY = boardY + Y[i]; + if (BottomEdge(newX) || board[newX][newY] != 0) { + return true; + } + } + return false; +} + +bool InCollisionLeft() { + int newX, newY; + for (int i = 0; i < 4; i++) { + newX = boardX + X[i]; + newY = boardY + Y[i] - 1; + if (LeftEdge(newY) || board[newX][newY] != 0) { + return true; + } + } + return false; +} + +bool InCollisionRight() { + int newX, newY; + for (int i = 0; i < 4; i++) { + newX = boardX + X[i]; + newY = boardY + Y[i] + 1; + if (RightEdge(newY) || board[newX][newY] != 0) { + return true; + } + } + return false; +} + +void ReadJoystickForFigure() { + if (but_LEFT) { + MoveLeft(); + } else if (but_RIGHT) { + MoveRight(); + } else if (but_UP) { + pause_game(); + } else if (but_DOWN) { + SoftDrop(); + } else if (but_SELECT) { + Rotate(); + } +} + +void CheckLines(short& firstLine, short& numberOfLines) { + firstLine = -1; + numberOfLines = 0; + for (int i = 19; i >= 0; i--) { + short temp = 0; + for (int j = 0; j < 10; j++) { + if (board[i][j] == 0) { + if (numberOfLines > 0) return; + break; + } + temp++; + } + if (temp == 10) { + numberOfLines++; + if (firstLine == -1) firstLine = i; + } + } +} + +unsigned int UpdateScore(short numOfLines) { + unsigned int newIncrement = 0; + switch (numOfLines) { + case 1: + newIncrement = 40; + break; + case 2: + newIncrement = 100; + break; + case 3: + newIncrement = 300; + break; + case 4: + newIncrement = 1200; + break; + default: + newIncrement = 0; + break; + } + return newIncrement * (level + 1); +} + +void UpdateBoard() { + short firstLine, numberOfLines; + do { + CheckLines(firstLine, numberOfLines); + for (int i = firstLine; i >= numberOfLines; i--) { + for (int j = 0; j < 10; j++) { + board[i][j] = board[i - numberOfLines][j]; + board[i - numberOfLines][j] = 0; + } + } + fillrect(0, 0, 162, screen_height, Black); + for (int i = 0; i < 20; i++) { + for (int j = 0; j < 10; j++) { + if (board[i][j] != 0) { + fillrect(j * DIMENSION, i * DIMENSION, (j + 1) * DIMENSION, (i + 1) * DIMENSION, colors[board[i][j]]); + rect(j * DIMENSION, i * DIMENSION, (j + 1) * DIMENSION, (i + 1) * DIMENSION, Black); + } + } + } + score += UpdateScore(numberOfLines); + DrawFigure(); + } while (numberOfLines != 0); +} + +bool IsOver() { + for (int i = 0; i < 10; i++) { + if (board[0][i] != 0) { + return true; + } + } + return false; +} + +void ShowGameOverScreen() { + background(Black); + foreground(White); + locate(60, 120); + printf("GAME OVER"); + locate(40, 150); + printf("YOUR SCORE IS %d", score); + wait(5); +} + +void InitGame() { + if (firstTime) { + Tetromino(rand() % 7 + 1); + DrawFigure(); + nextFigure = rand() % 7 + 1; + ShowNextFigure(); + firstTime = false; + } +} + +void PlayGame() { + InitGame(); + if (!MoveDown(1)) { + OnAttached(); + UpdateBoard(); + ShowScore(); + Tetromino(nextFigure); + DrawFigure(); + nextFigure = rand() % 7 + 1; + ShowNextFigure(); + if (IsOver()) { + game.detach(); + ShowGameOverScreen(); + EndPlay(); + } + } +} + +void OnTasterPressed() { + static uint32_t debounce_counter = 0; + const uint32_t debounce_threshold = 12; + + if (debounce_counter == 0) { + if (!gameStarted) { + joystick.detach(); + gameStarted = true; + StartGame(); + joystick.attach(&ReadJoystickForFigure, 0.3); + game.attach(&PlayGame, delays[level]); + } + debounce_counter = debounce_threshold; + } else if (debounce_counter > 0) { + debounce_counter--; + } +} + +void pause_game() { + game.detach(); + joystick.detach(); + locate(180, 200); + printf("PAUSED"); + while ((get_switches_state().to_ulong() & 0x10) == 0) + ; + printf(" "); + joystick.attach(&ReadJoystickForFigure, 0.3); + game.attach(&PlayGame, delays[level]); +} + +int main() { + std::srand(GenerateRandomSeed()); + Init(); + ShowLevelMenu(); + joystick.attach(&ReadJoystickForLevel, 0.3); + return 0; +} TetrisView::TetrisView(NavigationView& nav) - : nav_(nav) { + : nav_{nav} { add_children({&dummy}); } +void TetrisView::on_show() { +} + void TetrisView::paint(Painter& painter) { (void)painter; - if (!initialized) { initialized = true; - std::srand(LPC_RTC->CTIME0); main(); } } @@ -50,11 +604,45 @@ void TetrisView::frame_sync() { } bool TetrisView::on_encoder(const EncoderEvent delta) { - return check_encoder(delta); + if (!gameStarted) { + unsigned char old = level; + if (delta > 0) { + level = (level + 1) % 4; + } else if (delta < 0) { + (level == 0) ? level = 3 : level--; + } + if (old != level) { + DrawCursor(Black, old); + DrawCursor(White, level); + } + } else if (gameStarted && delta != 0) { + Rotate(); + } + set_dirty(); + return true; } bool TetrisView::on_key(const KeyEvent key) { - return check_key(key); + auto switches_debounced = get_switches_state().to_ulong(); + but_RIGHT = (switches_debounced & 0x01) != 0; + but_LEFT = (switches_debounced & 0x02) != 0; + but_DOWN = (switches_debounced & 0x04) != 0; + but_UP = (switches_debounced & 0x08) != 0; + but_SELECT = (switches_debounced & 0x10) != 0; + + if (key == KeyEvent::Select) { + if (!gameStarted) { + OnTasterPressed(); + } else { + Rotate(); + } + } else if (gameStarted) { + ReadJoystickForFigure(); + } else { + ReadJoystickForLevel(); + } + set_dirty(); + return true; } -} // namespace ui::external_app::tetris +} // namespace ui::external_app::tetris \ No newline at end of file diff --git a/firmware/application/external/tetris/ui_tetris.hpp b/firmware/application/external/tetris/ui_tetris.hpp index 44bb77885..f1f8738b0 100644 --- a/firmware/application/external/tetris/ui_tetris.hpp +++ b/firmware/application/external/tetris/ui_tetris.hpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2024 Mark Thompson + * 2025 updates by RocketGod (https://betaskynet.com/) * * This file is part of PortaPack. * @@ -22,6 +23,7 @@ #ifndef __UI_TETRIS_H__ #define __UI_TETRIS_H__ +#include "ui.hpp" #include "ui_navigation.hpp" #include "event_m0.hpp" #include "message.hpp" @@ -29,16 +31,113 @@ #include "random.hpp" #include "lpc43xx_cpp.hpp" #include "limits.h" +#include "ui_widget.hpp" namespace ui::external_app::tetris { +enum { + White, + Blue, + Yellow, + Purple, + Green, + Red, + Maroon, + Orange, + Black, +}; + +extern const Color pp_colors[]; +extern Painter painter; +extern bool but_RIGHT; +extern bool but_LEFT; +extern bool but_UP; +extern bool but_DOWN; +extern bool but_SELECT; + +void cls(); +void background(int color); +void foreground(int color); +void locate(int x, int y); +void fillrect(int x1, int y1, int x2, int y2, int color); +void rect(int x1, int y1, int x2, int y2, int color); +void printf(std::string str); +void printf(std::string str, int v); + +#define wait(x) chThdSleepMilliseconds(x * 1000) + +using Callback = void (*)(void); + +class Ticker { + public: + Ticker() = default; + void attach(Callback func, double delay_sec); + void detach(); +}; + +extern Ticker game; +extern Ticker joystick; + +extern unsigned char level; +extern const float delays[4]; +extern unsigned int score; +extern bool firstTime; +extern bool gameStarted; +extern unsigned char nextFigure; +extern short board[20][10]; +extern const int colors[8]; +extern const short DIMENSION; +extern const short DIMENSION_NEXT; +extern short figuresX[7][4]; +extern short figuresY[7][4]; + +unsigned int GenerateRandomSeed(); +void Init(); +void ShowScore(); +void ShowNextFigure(); +void DrawCursor(int color, unsigned char lev); +void ShowLevelMenu(); +void ReadJoystickForLevel(); +void EndPlay(); +void StartGame(); +void copyCoordinates(short X[], short Y[], unsigned char index); +bool BottomEdge(int x); +bool LeftEdge(int y); +bool RightEdge(int y); +bool OutOfBounds(int y, int x); +void PutBorders(short x, short y); +void Tetromino(unsigned char c); +void Initialize(unsigned char c); +void Rotate(); +void DrawFigure(); +void DeleteFigure(); +void OnAttached(); +bool MoveDown(char delta); +void MoveLeft(); +void MoveRight(); +void SoftDrop(); +bool InCollisionDown(char delta); +bool InCollisionLeft(); +bool InCollisionRight(); +void ReadJoystickForFigure(); +void CheckLines(short& firstLine, short& numberOfLines); +unsigned int UpdateScore(short numOfLines); +void UpdateBoard(); +bool IsOver(); +void ShowGameOverScreen(); +void InitGame(); +void PlayGame(); +void OnTasterPressed(); +void pause_game(); + class TetrisView : public View { public: TetrisView(NavigationView& nav); + void on_show() override; - std::string title() const override { return "Tetris"; }; + std::string title() const override { return "Tetris"; } - void focus() override { dummy.focus(); }; + void focus() override { dummy.focus(); } void paint(Painter& painter) override; void frame_sync(); bool on_encoder(const EncoderEvent event) override; @@ -49,7 +148,7 @@ class TetrisView : public View { NavigationView& nav_; Button dummy{ - {240, 0, 0, 0}, + {screen_width, 0, 0, 0}, ""}; MessageHandlerRegistration message_handler_frame_sync{ @@ -61,4 +160,4 @@ class TetrisView : public View { } // namespace ui::external_app::tetris -#endif /*__UI_TETRIS_H__*/ +#endif /* __UI_TETRIS_H__ */ \ No newline at end of file diff --git a/firmware/application/external/tpmsrx/tpms_app.hpp b/firmware/application/external/tpmsrx/tpms_app.hpp index 8746711fe..05766441b 100644 --- a/firmware/application/external/tpmsrx/tpms_app.hpp +++ b/firmware/application/external/tpmsrx/tpms_app.hpp @@ -138,7 +138,7 @@ class TPMSAppView : public View { }; AudioVolumeField field_volume{ - {28 * 8, 0 * 16}}; + {screen_width - 2 * 8, 0 * 16}}; Channel channel{ {21 * 8, 5, 6 * 8, 4}, diff --git a/firmware/application/external/tuner/ui_tuner.hpp b/firmware/application/external/tuner/ui_tuner.hpp index 7b76d0404..ad5f03949 100644 --- a/firmware/application/external/tuner/ui_tuner.hpp +++ b/firmware/application/external/tuner/ui_tuner.hpp @@ -76,12 +76,12 @@ class TunerView : public View { {{0 * 8, 5 * 16}, "Volume:", Theme::getInstance()->fg_light->foreground}}; Text text_note_frequency{ - {(sizeof("Note Frequency:") + 1) * 8, 3 * 16, screen_width - (sizeof("Note Frequency:") + 1) * 8, 16}, + {(sizeof("Note Frequency:") + 1) * 8, 3 * 16, (int)screen_width - (int)(sizeof("Note Frequency:") + 1) * 8, 16}, "", }; Text text_note_octave_shift{ - {(sizeof("Note Octave Shift:") + 1) * 8, 4 * 16, screen_width - (sizeof("Note Octave Shift:") + 1) * 8, 16}, + {(sizeof("Note Octave Shift:") + 1) * 8, 4 * 16, (int)screen_width - (int)(sizeof("Note Octave Shift:") + 1) * 8, 16}, "", }; diff --git a/firmware/application/external/wardrivemap/ui_wardrivemap.hpp b/firmware/application/external/wardrivemap/ui_wardrivemap.hpp index 759cd0110..6d7608583 100644 --- a/firmware/application/external/wardrivemap/ui_wardrivemap.hpp +++ b/firmware/application/external/wardrivemap/ui_wardrivemap.hpp @@ -49,12 +49,12 @@ class WardriveMapView : public View { NavigationView& nav_; Text text_info{{0 * 8, 0 * 8, 20 * 8, 16 * 1}, "0 / 30"}; - Text text_notfound{{0 * 8, 0 * 8, 30 * 8, 16 * 1}, "No GeoTagged captures found"}; + Text text_notfound{{0 * 8, 0 * 8, screen_width, 16 * 1}, "No GeoTagged captures found"}; GeoPos geopos{ {0, 20}, GeoPos::alt_unit::METERS, GeoPos::spd_unit::HIDDEN}; - GeoMap geomap{{0, 75, 240, 320 - 75}}; + GeoMap geomap{{0, 75, screen_width, screen_height - 75}}; Button btn_back{{22 * 8, 0 * 8, 3 * 8, 16}, "<-"}; Button btn_next{{26 * 8, 0 * 8, 3 * 8, 16}, "->"}; diff --git a/firmware/application/external/wav_view/main.cpp b/firmware/application/external/wav_view/main.cpp new file mode 100644 index 000000000..1d7d72fdc --- /dev/null +++ b/firmware/application/external/wav_view/main.cpp @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2024 Bernd Herzog + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui.hpp" +#include "ui_view_wav.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::view_wav { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::view_wav + +extern "C" { + +__attribute__((section(".external_app.app_view_wav.application_information"), used)) application_information_t _application_information_view_wav = { + /*.memory_location = */ (uint8_t*)0x00000000, + /*.externalAppEntry = */ ui::external_app::view_wav::initialize_app, + /*.header_version = */ CURRENT_HEADER_VERSION, + /*.app_version = */ VERSION_MD5, + + /*.app_name = */ "WAV Viewer", + /*.bitmap_data = */ {0xF0, 0x0F, 0x1C, 0x18, 0x17, 0x38, 0x15, 0x78, 0x15, 0xF8, 0x15, 0x82, 0x15, 0x8B, 0xD5, 0x83, 0xD5, 0xBB, 0xD5, 0x83, 0x15, 0x8B, 0x15, 0x92, 0x15, 0xA0, 0x17, 0x80, 0x1C, 0x80, 0xF0, 0xFF}, + /*.icon_color = */ ui::Color::green().v, + /*.menu_location = */ app_location_t::UTILITIES, + /*.desired_menu_position = */ -1, + + /*.m4_app_tag = portapack::spi_flash::image_tag_none */ {'P', 'A', 'T', 'X'}, + /*.m4_app_offset = */ 0x00000000, // will be filled at compile time +}; +} diff --git a/firmware/application/apps/ui_view_wav.cpp b/firmware/application/external/wav_view/ui_view_wav.cpp similarity index 99% rename from firmware/application/apps/ui_view_wav.cpp rename to firmware/application/external/wav_view/ui_view_wav.cpp index 1272ca8ed..1594c1d96 100644 --- a/firmware/application/apps/ui_view_wav.cpp +++ b/firmware/application/external/wav_view/ui_view_wav.cpp @@ -28,8 +28,9 @@ #include "string_format.hpp" using namespace portapack; +using namespace ui; -namespace ui { +namespace ui::external_app::view_wav { void ViewWavView::update_scale(int32_t new_scale) { scale = new_scale; @@ -345,4 +346,4 @@ ViewWavView::~ViewWavView() { baseband::shutdown(); } -} /* namespace ui */ +} /* namespace ui::external_app::view_wav */ diff --git a/firmware/application/apps/ui_view_wav.hpp b/firmware/application/external/wav_view/ui_view_wav.hpp similarity index 95% rename from firmware/application/apps/ui_view_wav.hpp rename to firmware/application/external/wav_view/ui_view_wav.hpp index b460855a8..a358c30db 100644 --- a/firmware/application/apps/ui_view_wav.hpp +++ b/firmware/application/external/wav_view/ui_view_wav.hpp @@ -28,7 +28,9 @@ #include "ui_receiver.hpp" #include "replay_thread.hpp" -namespace ui { +using namespace ui; + +namespace ui::external_app::view_wav { class ViewWavView : public View { public: @@ -116,10 +118,10 @@ class ViewWavView : public View { Theme::getInstance()->fg_green->foreground, Theme::getInstance()->fg_green->background}; AudioVolumeField field_volume{ - {28 * 8, 18 * 16}}; + {screen_width - 2 * 8, 18 * 16}}; Waveform waveform{ - {0, 5 * 16, 240, 64}, + {0, 5 * 16, screen_width, 64}, waveform_buffer, 240, 0, @@ -127,7 +129,7 @@ class ViewWavView : public View { Theme::getInstance()->bg_darkest->foreground}; ProgressBar progressbar{ - {0 * 8, 11 * 16, 30 * 8, 4}}; + {0 * 8, 11 * 16, screen_width, 4}}; NumberField field_pos_seconds{ {9 * 8, 12 * 16}, @@ -175,7 +177,7 @@ class ViewWavView : public View { true}; Text text_delta{ - {7 * 8, 16 * 16, 30 * 8, 16}, + {7 * 8, 16 * 16, screen_width, 16}, "-"}; MessageHandlerRegistration message_handler_replay_thread_error{ @@ -202,4 +204,4 @@ class ViewWavView : public View { }}; }; -} /* namespace ui */ +} /* namespace ui::external_app::view_wav */ diff --git a/firmware/application/external/wefax_rx/main.cpp b/firmware/application/external/wefax_rx/main.cpp new file mode 100644 index 000000000..0ab7f5e7e --- /dev/null +++ b/firmware/application/external/wefax_rx/main.cpp @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2025 HTotoo + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui.hpp" +#include "ui_wefax_rx.hpp" +#include "ui_navigation.hpp" +#include "external_app.hpp" + +namespace ui::external_app::wefax_rx { +void initialize_app(ui::NavigationView& nav) { + nav.push(); +} +} // namespace ui::external_app::wefax_rx + +extern "C" { + +__attribute__((section(".external_app.app_wefax_rx.application_information"), used)) application_information_t _application_information_wefax_rx = { + /*.memory_location = */ (uint8_t*)0x00000000, + /*.externalAppEntry = */ ui::external_app::wefax_rx::initialize_app, + /*.header_version = */ CURRENT_HEADER_VERSION, + /*.app_version = */ VERSION_MD5, + + /*.app_name = */ "WeFax", + /*.bitmap_data = */ { + 0x00, + 0x00, + 0xFC, + 0x07, + 0x04, + 0x0C, + 0x04, + 0x1C, + 0x04, + 0x3C, + 0x84, + 0x21, + 0x84, + 0x21, + 0x84, + 0x21, + 0xF4, + 0x2F, + 0xF4, + 0x2F, + 0x84, + 0x21, + 0x84, + 0x21, + 0x84, + 0x21, + 0x04, + 0x20, + 0xFC, + 0x3F, + 0x00, + 0x00, + }, + /*.icon_color = */ ui::Color::orange().v, + /*.menu_location = */ app_location_t::RX, + /*.desired_menu_position = */ -1, + + /*.m4_app_tag = portapack::spi_flash::image_tag_wefaxrx */ {'P', 'W', 'F', 'X'}, + /*.m4_app_offset = */ 0x00000000, // will be filled at compile time +}; +} diff --git a/firmware/application/external/wefax_rx/ui_wefax_rx.cpp b/firmware/application/external/wefax_rx/ui_wefax_rx.cpp new file mode 100644 index 000000000..344be5849 --- /dev/null +++ b/firmware/application/external/wefax_rx/ui_wefax_rx.cpp @@ -0,0 +1,154 @@ +/* + * Copyright (C) 2025 HTotoo + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +/* +TODOS LATER: + - add load data from wav file (maybe to a separate app, not this) + - AGC?!? + - fix and enable sync detection + - auto start / stop bmp save on each image +*/ + +#include "ui_wefax_rx.hpp" + +#include "audio.hpp" +#include "rtc_time.hpp" +#include "baseband_api.hpp" +#include "string_format.hpp" +#include "portapack_persistent_memory.hpp" +#include "lcd_ili9341.hpp" + +using namespace portapack; +using namespace modems; +using namespace ui; + +namespace ui::external_app::wefax_rx { + +void WeFaxRxView::focus() { + field_frequency.focus(); +} + +WeFaxRxView::WeFaxRxView(NavigationView& nav) + : nav_{nav} { + baseband::run_prepared_image(portapack::memory::map::m4_code.base()); + add_children({&rssi, + &field_rf_amp, + &field_lna, + &field_vga, + &field_volume, + &field_frequency, + &txt_status, + &labels, + &options_lpm, + &options_ioc, + &button_ss}); + + options_lpm.on_change = [this](size_t index, int32_t v) { + lpm_index = (uint8_t)index; + (void)v; + on_settings_changed(); + }; + options_ioc.on_change = [this](size_t index, int32_t v) { + ioc_index = (uint8_t)index; + (void)v; + on_settings_changed(); + }; + + field_frequency.set_step(100); + field_frequency.on_edit_shown = [this]() { + paused = true; + }; + field_frequency.on_edit_hidden = [this]() { + paused = false; + }; + audio::output::start(); + receiver_model.set_hidden_offset(WEFAX_FREQ_OFFSET); + receiver_model.set_sampling_rate(3072000); // set the needed baseband SR. + receiver_model.set_baseband_bandwidth(1750000); // set the front-end RF BW filter. + receiver_model.enable(); + + txt_status.set("Waiting for signal."); + + button_ss.on_select = [this](Button&) { + if (bmp.is_loaded()) { + bmp.close(); + button_ss.set_text(LanguageHelper::currentMessages[LANG_START]); + return; + } + ensure_directory("/BMP"); + bmp.create("/BMP/wefax_" + to_string_timestamp(rtc_time::now()) + ".bmp", WEFAX_PX_SIZE, 1); + button_ss.set_text(LanguageHelper::currentMessages[LANG_STOP]); + }; + + options_lpm.set_selected_index(lpm_index, false); + options_ioc.set_selected_index(ioc_index, true); +} + +WeFaxRxView::~WeFaxRxView() { + stopping = true; + receiver_model.set_hidden_offset(0); + bmp.close(); + receiver_model.disable(); + baseband::shutdown(); + audio::output::stop(); +} + +void WeFaxRxView::on_settings_changed() { + baseband::set_wefax_config(options_lpm.selected_index_value(), options_ioc.selected_index_value()); +} + +void WeFaxRxView::on_status(WeFaxRxStatusDataMessage msg) { + (void)msg; + std::string tmp = ""; + if (msg.state == 0) { + tmp = "Waiting for signal."; + } else if (msg.state == 1) { + tmp = "Synced."; + } else if (msg.state == 2) { + tmp = "Image arriving."; + } + txt_status.set(tmp); +} + +// this stores and displays the image. keep it as simple as you can. a bit more complexity will kill the sync +void WeFaxRxView::on_image(WeFaxRxImageDataMessage msg) { + if ((line_num) >= screen_height - 4 * 16) line_num = 0; // for draw reset + + for (uint16_t i = 0; i < msg.cnt; i += 1) { + Color pxl = {msg.image[i], msg.image[i], msg.image[i]}; + bmp.write_next_px(pxl); + line_in_part++; + if (line_in_part == WEFAX_PX_SIZE) { + line_in_part = 0; + line_num++; + bmp.expand_y_delta(1); + } + + uint16_t xpos = line_in_part / (WEFAX_PX_SIZE / 240); + if (xpos >= 240) xpos = 239; + line_buffer[xpos] = pxl; + if ((line_in_part == 0)) { + portapack::display.render_line({0, line_num + 4 * 16}, 240, line_buffer); + } + } +} + +} // namespace ui::external_app::wefax_rx diff --git a/firmware/application/external/wefax_rx/ui_wefax_rx.hpp b/firmware/application/external/wefax_rx/ui_wefax_rx.hpp new file mode 100644 index 000000000..36da65e2a --- /dev/null +++ b/firmware/application/external/wefax_rx/ui_wefax_rx.hpp @@ -0,0 +1,153 @@ +/* + * Copyright (C) 2025 HTotoo + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __UI_WEFAX_RX_H__ +#define __UI_WEFAX_RX_H__ + +#include "ui.hpp" +#include "ui_language.hpp" +#include "ui_navigation.hpp" +#include "ui_receiver.hpp" +#include "ui_geomap.hpp" +#include "ui_freq_field.hpp" +#include "ui_record_view.hpp" +#include "app_settings.hpp" +#include "radio_state.hpp" +#include "log_file.hpp" +#include "utility.hpp" +#include "ui_fileman.hpp" +#include "bmpfile.hpp" +#include "file_path.hpp" + +using namespace ui; + +namespace ui::external_app::wefax_rx { + +#define WEFAX_PX_SIZE 840 +// 1.900Hz is the usual center FM freq. , but as I added 300-Hz margin, + the truncated filter extended effect , in our case, we got better S/N if we use -2200 offset area. @Brumi +#define WEFAX_FREQ_OFFSET -2200 + +class WeFaxRxView : public View { + public: + WeFaxRxView(NavigationView& nav); + ~WeFaxRxView(); + + void focus() override; + + std::string title() const override { return "WeFax"; }; + + private: + void on_settings_changed(); + void on_status(WeFaxRxStatusDataMessage msg); + void on_image(WeFaxRxImageDataMessage msg); + + bool stopping = false; + + uint8_t ioc_index{0}; + uint8_t lpm_index{0}; + uint16_t line_num = 0; // nth line + uint16_t line_in_part = 0; // got multiple parts of a line, so keep track of it + uint8_t delayer = 0; + ui::Color line_buffer[240]; + std::filesystem::path filetohandle = ""; + + bool paused = false; // when freq field is shown for example, we need to pause + + BMPFile bmp{}; + + NavigationView& nav_; + RxRadioState radio_state_{}; + app_settings::SettingsManager settings_{ + "rx_wefax", + app_settings::Mode::RX, + { + {"ioc_index"sv, &ioc_index}, + {"lpm_index"sv, &lpm_index}, + }}; + + RFAmpField field_rf_amp{ + {13 * 8, 0 * 16}}; + LNAGainField field_lna{ + {15 * 8, 0 * 16}}; + VGAGainField field_vga{ + {18 * 8, 0 * 16}}; + RSSI rssi{ + {21 * 8, 0, 6 * 8, 4}}; + AudioVolumeField field_volume{ + {screen_width - 2 * 8, 0 * 16}}; + + RxFrequencyField field_frequency{ + {0 * 8, 0 * 16}, + nav_}; + + Labels labels{ + {{1 * 8, 1 * 16}, "LPM:", Theme::getInstance()->fg_light->foreground}, + {{13 * 8, 1 * 16}, "IOC:", Theme::getInstance()->fg_light->foreground}, + }; + + OptionsField options_lpm{ + {6 * 8, 1 * 16}, + 4, + { + {"60", 60}, + {"90", 90}, + {"100", 100}, + {"120", 120}, + {"180", 180}, + {"240", 240}, + }}; + + OptionsField options_ioc{ + {18 * 8, 1 * 16}, + 4, + { + {"576", 0}, + {"228", 1}, + }}; + + Text txt_status{ + {0 * 8, 2 * 16, 20 * 8, 16}, + }; + + Button button_ss{ + {190, 2 * 16, 5 * 8, 16}, + LanguageHelper::currentMessages[LANG_START]}; + + MessageHandlerRegistration message_handler_stats{ + Message::ID::WeFaxRxStatusData, + [this](const Message* const p) { + if (stopping || paused) return; + const auto message = *reinterpret_cast(p); + on_status(message); + }}; + + MessageHandlerRegistration message_handler_image{ + Message::ID::WeFaxRxImageData, + [this](const Message* const p) { + if (stopping || paused) return; + const auto message = *reinterpret_cast(p); + on_image(message); + }}; +}; + +} // namespace ui::external_app::wefax_rx + +#endif /*__UI_WEFAX_RX_H__*/ diff --git a/firmware/application/file.cpp b/firmware/application/file.cpp index dae33f01c..6da93056e 100644 --- a/firmware/application/file.cpp +++ b/firmware/application/file.cpp @@ -50,6 +50,10 @@ Optional File::open_fatfs(const std::filesystem::path& filename, BY } } +/* + * @param read_only: open in readonly mode + * @param create: create if it doesnt exist + */ Optional File::open(const std::filesystem::path& filename, bool read_only, bool create) { BYTE mode = read_only ? FA_READ : FA_READ | FA_WRITE; if (create) diff --git a/firmware/application/file_path.cpp b/firmware/application/file_path.cpp index ce4acf48c..a08811fb6 100644 --- a/firmware/application/file_path.cpp +++ b/firmware/application/file_path.cpp @@ -49,3 +49,7 @@ const std::filesystem::path sstv_dir = u"SSTV"; const std::filesystem::path wav_dir = u"WAV"; const std::filesystem::path whipcalc_dir = u"WHIPCALC"; const std::filesystem::path ook_editor_dir = u"OOKFILES"; +const std::filesystem::path hopper_dir = u"HOPPER"; +const std::filesystem::path subghz_dir = u"SUBGHZ"; +const std::filesystem::path waterfalls_dir = u"WATERFALLS"; +const std::filesystem::path macaddress_dir = u"MACADDRESS"; diff --git a/firmware/application/file_path.hpp b/firmware/application/file_path.hpp index bc115736c..0f8548ee0 100644 --- a/firmware/application/file_path.hpp +++ b/firmware/application/file_path.hpp @@ -51,5 +51,9 @@ extern const std::filesystem::path sstv_dir; extern const std::filesystem::path wav_dir; extern const std::filesystem::path whipcalc_dir; extern const std::filesystem::path ook_editor_dir; +extern const std::filesystem::path hopper_dir; +extern const std::filesystem::path subghz_dir; +extern const std::filesystem::path waterfalls_dir; +extern const std::filesystem::path macaddress_dir; #endif /* __FILE_PATH_H__ */ diff --git a/firmware/application/freqman.hpp b/firmware/application/freqman.hpp index 74bf9198e..ab39a08e0 100644 --- a/firmware/application/freqman.hpp +++ b/firmware/application/freqman.hpp @@ -41,7 +41,9 @@ enum freqman_entry_modulation : uint8_t { AM_MODULATION = 0, NFM_MODULATION, WFM_MODULATION, - SPEC_MODULATION + SPEC_MODULATION, + AMFM_MODULATION, // Added for HF Wefax.demod APT signal + WFMAM_MODULATION // Added for NOAA 137 Mhz satellite band, demod APT signal. }; // TODO: Can these be removed after Recon is migrated to FreqmanDB? diff --git a/firmware/application/freqman_db.cpp b/firmware/application/freqman_db.cpp index 89eb52b14..659e759d5 100644 --- a/firmware/application/freqman_db.cpp +++ b/firmware/application/freqman_db.cpp @@ -49,9 +49,11 @@ options_t freqman_modulations = { {"NFM", 1}, {"WFM", 2}, {"SPEC", 3}, + {"AMFM", 4}, // To handle HF Wefax AM and FM demod. inside Audio App. + {"FMAM", 5}, // To handle NOAA 137 Mhz Sat FM and AM demod inside Audio App. }; -options_t freqman_bandwidths[4] = { +options_t freqman_bandwidths[6] = { { // AM {"DSB 9k", 0}, @@ -68,7 +70,7 @@ options_t freqman_bandwidths[4] = { }, { // WFM - {"40k", 2}, + {"80k", 2}, {"180k", 1}, {"200k", 0}, }, @@ -100,10 +102,22 @@ options_t freqman_bandwidths[4] = { {"5000k", 5500000}, {"5500k", 5500000}, // Max capture, needs /4 decimation, (22Mhz sampling ADC). }, + { + // AMFM for Wefax- + {"USB+FM(Wefax Apt)", 5}, // Fixed RX demod. AM config Index 5 : USB+FM for Audio Weather fax (WFAX) tones. + }, + { + // WFMAM for NOAA satellites, 137 Mhz band + {"80k-NOAA Apt LPF", 0}, // Captured RF IQ filtered BW 80K, APT baseband filtered with Low Pass Filter 4k5 fc -3dB + {"38k-NOAA Apt LPF", 1}, // Captured RF IQ filtered BW 38K, APT baseband filtered with Low Pass Filter 4k5 fc -3dB + {"38k-NOAA Apt BPF", 2}, // Captured RF IQ filtered BW 38K, APT baseband filtered BPF centred to the 2k4 AM subcarrier, BW = 2KHz + }, }; // TODO: these should be indexes. options_t freqman_steps = { + {"10Hz ", 10}, + {"50Hz ", 50}, {"0.1kHz ", 100}, {"1kHz ", 1000}, {"5kHz (SA AM)", 5000}, @@ -124,6 +138,8 @@ options_t freqman_steps = { // TODO: these should be indexes. options_t freqman_steps_short = { + {"10Hz", 10}, + {"50Hz", 50}, {"0.1kHz", 100}, {"1kHz", 1000}, {"5kHz", 5000}, diff --git a/firmware/application/gradient.cpp b/firmware/application/gradient.cpp new file mode 100644 index 000000000..2ca27e6bb --- /dev/null +++ b/firmware/application/gradient.cpp @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2025 Belousov Oleg + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "gradient.hpp" + +#include "convert.hpp" +#include "file_reader.hpp" +namespace fs = std::filesystem; + +const std::filesystem::path default_gradient_file = u"waterfall.txt"; + +Gradient::Gradient() { + prev_index = 0; + prev_r = 0; + prev_g = 0; + prev_b = 0; +} + +void Gradient::set_default() { + step(86, 0, 0, 255); + step(171, 0, 255, 0); + step(255, 255, 0, 0); +} + +bool Gradient::load_file(const std::filesystem::path& file_path) { + File gradient_file; + auto error = gradient_file.open(file_path.string()); + + if (error) + return false; + + auto reader = FileLineReader(gradient_file); + for (const auto& line : reader) { + if (line.length() == 0 || line[0] == '#') + continue; // Empty or comment line. + + auto cols = split_string(line, ','); + + if (cols.size() == 4) { + int16_t index, r, g, b; + + if (!parse_int(cols[0], index) || index < 0 || index > 255) + continue; + + if (!parse_int(cols[1], r) || r < 0 || r > 255) + continue; + + if (!parse_int(cols[2], g) || g < 0 || g > 255) + continue; + + if (!parse_int(cols[3], b) || b < 0 || b > 255) + continue; + + step(index, r, g, b); + } + } + + return true; +} + +void Gradient::step(int16_t index, int16_t r, int16_t g, int16_t b) { + for (int16_t i = prev_index; i <= index; i++) { + float x = (float)(i - prev_index) / (index - prev_index); + float y = 1.0f - x; + + int16_t new_r = prev_r * y + r * x; + int16_t new_g = prev_g * y + g * x; + int16_t new_b = prev_b * y + b * x; + + lut[i] = ui::Color(new_r, new_g, new_b); + } + + prev_index = index; + prev_r = r; + prev_g = g; + prev_b = b; +} diff --git a/firmware/application/external/tetris/Arial12x12.h b/firmware/application/gradient.hpp similarity index 56% rename from firmware/application/external/tetris/Arial12x12.h rename to firmware/application/gradient.hpp index 4dc451eeb..d32d58e59 100644 --- a/firmware/application/external/tetris/Arial12x12.h +++ b/firmware/application/gradient.hpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Mark Thompson + * Copyright (C) 2025 Belousov Oleg * * This file is part of PortaPack. * @@ -19,11 +19,33 @@ * Boston, MA 02110-1301, USA. */ -// dummy include file to avoid changing original source +#ifndef __GRADIENT_H__ +#define __GRADIENT_H__ -#ifndef __UI_Arial12x12_H__ -#define __UI_Arial12x12_H__ +#include "ui.hpp" +#include "file.hpp" -#define Arial12x12 (0) +#include +#include -#endif /*__UI_Arial12x12_H__*/ +extern const std::filesystem::path default_gradient_file; + +class Gradient { + public: + std::array lut{}; + + Gradient(); + + void set_default(); + bool load_file(const std::filesystem::path& file_path); + + private: + int16_t prev_index = 0; + int16_t prev_r = 0; + int16_t prev_g = 0; + int16_t prev_b = 0; + + void step(int16_t index, int16_t r, int16_t g, int16_t b); +}; + +#endif /* __GRADIENT_H__ */ diff --git a/firmware/application/hw/debounce.cpp b/firmware/application/hw/debounce.cpp index 31d812370..17905edb1 100644 --- a/firmware/application/hw/debounce.cpp +++ b/firmware/application/hw/debounce.cpp @@ -84,7 +84,7 @@ bool Debounce::feed(const uint8_t bit) { // (by toggling reported state every 1/2 of the delay time) if (--repeat_ctr_ == 0) { state_to_report_ = !state_to_report_; - repeat_ctr_ = REPEAT_SUBSEQUENT_DELAY / 2; + repeat_ctr_ = portapack::persistent_memory::ui_button_repeat_speed() ? REPEAT_SUBSEQUENT_DELAY_FAST / 2 : REPEAT_SUBSEQUENT_DELAY_NORMAL / 2; return true; } } @@ -96,7 +96,7 @@ bool Debounce::feed(const uint8_t bit) { // if LONG_PRESS_DELAY is reached then finally report that switch is pressed and set flag // indicating it was a LONG press // (note that repeat_support and long_press support are mutually exclusive) - if (held_time_ >= LONG_PRESS_DELAY) { + if (held_time_ >= (portapack::persistent_memory::ui_button_long_press_delay() ? LONG_PRESS_DELAY_FAST : LONG_PRESS_DELAY_NORMAL)) { pulse_upon_release_ = false; long_press_occurred_ = true; state_to_report_ = 1; @@ -104,7 +104,7 @@ bool Debounce::feed(const uint8_t bit) { } } else if (repeat_enabled_ && !long_press_enabled_) { // Repeat support -- 4 directional buttons only (unless long_press is enabled) - if (held_time_ >= REPEAT_INITIAL_DELAY) { + if (held_time_ >= (portapack::persistent_memory::ui_button_repeat_delay() ? REPEAT_INITIAL_DELAY_FAST : REPEAT_INITIAL_DELAY_NORMAL)) { // Delay reached; trigger repeat code on NEXT tick repeat_ctr_ = 1; held_time_ = 0; diff --git a/firmware/application/hw/debounce.hpp b/firmware/application/hw/debounce.hpp index 1d042b1da..b40475588 100644 --- a/firmware/application/hw/debounce.hpp +++ b/firmware/application/hw/debounce.hpp @@ -30,9 +30,13 @@ #define DEBOUNCE_MASK ((1 << DEBOUNCE_COUNT) - 1) // # of timer0 ticks before a held button starts being counted as repeated presses -#define REPEAT_INITIAL_DELAY 250 -#define REPEAT_SUBSEQUENT_DELAY 92 -#define LONG_PRESS_DELAY 800 +#define REPEAT_INITIAL_DELAY_NORMAL 250 +#define REPEAT_SUBSEQUENT_DELAY_NORMAL 92 +#define LONG_PRESS_DELAY_NORMAL 800 + +#define REPEAT_INITIAL_DELAY_FAST 188 +#define REPEAT_SUBSEQUENT_DELAY_FAST 66 +#define LONG_PRESS_DELAY_FAST 555 class Debounce { public: diff --git a/firmware/application/hw/encoder.cpp b/firmware/application/hw/encoder.cpp index 352b70de6..b142d0543 100644 --- a/firmware/application/hw/encoder.cpp +++ b/firmware/application/hw/encoder.cpp @@ -66,6 +66,11 @@ int_fast8_t Encoder::update(const uint_fast8_t phase_bits) { if (direction == prev_direction) { if ((sensitivity_map[portapack::persistent_memory::encoder_dial_sensitivity()] & (1 << state)) == 0) return 0; + + // false: normal, true: reverse + if (portapack::persistent_memory::encoder_dial_direction()) + direction = -direction; + return direction; } diff --git a/firmware/application/log_file.cpp b/firmware/application/log_file.cpp index 61c6bbd22..105fd7bad 100644 --- a/firmware/application/log_file.cpp +++ b/firmware/application/log_file.cpp @@ -28,10 +28,10 @@ Optional LogFile::write_entry(const std::string& entry) { Optional LogFile::write_entry(const rtc::RTC& datetime, const std::string& entry) { std::string timestamp = to_string_timestamp(datetime); - return write_line(timestamp + " " + entry); + return write_raw(timestamp + " " + entry); } -Optional LogFile::write_line(const std::string& message) { +Optional LogFile::write_raw(const std::string& message) { auto error = file.write_line(message); if (!error) { file.sync(); diff --git a/firmware/application/log_file.hpp b/firmware/application/log_file.hpp index 430bf14ae..423552e38 100644 --- a/firmware/application/log_file.hpp +++ b/firmware/application/log_file.hpp @@ -39,11 +39,10 @@ class LogFile { Optional write_entry(const std::string& entry); Optional write_entry(const rtc::RTC& datetime, const std::string& entry); + Optional write_raw(const std::string& message); private: File file{}; - - Optional write_line(const std::string& message); }; #endif /*__LOG_FILE_H__*/ diff --git a/firmware/application/portapack.cpp b/firmware/application/portapack.cpp index 251a265ad..16ab3af8f 100644 --- a/firmware/application/portapack.cpp +++ b/firmware/application/portapack.cpp @@ -538,7 +538,6 @@ init_status_t init() { set_cpu_clock_speed(); - if (persistent_memory::config_lcd_inverted_mode()) display.set_inverted(true); /* sample max: 1023 sample_t AKA uint16_t * touch_sensitivity: range: 1 to 128 * threshold range: 1023/1 to 1023/128 = 1023 to 8 diff --git a/firmware/application/receiver_model.cpp b/firmware/application/receiver_model.cpp index f7c795555..d08249271 100644 --- a/firmware/application/receiver_model.cpp +++ b/firmware/application/receiver_model.cpp @@ -39,13 +39,22 @@ using namespace portapack; namespace { -static constexpr std::array am_configs{{ +static constexpr std::array am_configs{{ // we config here all the non COMMON parameters to each AM modulation type in RX. - {taps_9k0_decim_2, taps_9k0_dsb_channel, AMConfigureMessage::Modulation::DSB}, // AM DSB-C BW 9khz (+-4k5) commercial EU bandwidth . - {taps_6k0_decim_2, taps_6k0_dsb_channel, AMConfigureMessage::Modulation::DSB}, // AM DSB-C BW 6khz (+-3k0) narrow AM , ham equipments. - {taps_6k0_decim_2, taps_2k8_usb_channel, AMConfigureMessage::Modulation::SSB}, // SSB USB BW 2K8 (+ 2K8) - {taps_6k0_decim_2, taps_2k8_lsb_channel, AMConfigureMessage::Modulation::SSB}, // SSB LSB BW 2K8 (- 2K8) - {taps_6k0_decim_2, taps_0k7_usb_channel, AMConfigureMessage::Modulation::SSB}, // SSB USB BW 0K7 (+ 0K7) used to get audio tone from CW Morse, assuming tx shifted +700hz aprox + {taps_6k0_decim_1, taps_9k0_decim_2, taps_9k0_dsb_channel, AMConfigureMessage::Modulation::DSB, audio_12k_hpf_300hz_config, (int)AMConfigureMessage::Zoom_waterfall::ZOOM_x_1}, // AM DSB-C BW 9khz (+-4k5) commercial EU bandwidth . + {taps_6k0_decim_1, taps_6k0_decim_2, taps_6k0_dsb_channel, AMConfigureMessage::Modulation::DSB, audio_12k_hpf_300hz_config, (int)AMConfigureMessage::Zoom_waterfall::ZOOM_x_1}, // AM DSB-C BW 6khz (+-3k0) narrow AM , ham equipments. + {taps_6k0_decim_1, taps_6k0_decim_2, taps_2k8_usb_channel, AMConfigureMessage::Modulation::SSB, audio_12k_hpf_300hz_config, (int)AMConfigureMessage::Zoom_waterfall::ZOOM_x_1}, // SSB USB BW 2K8 (+ 2K8) SSB ham equipments. + {taps_6k0_decim_1, taps_6k0_decim_2, taps_2k8_lsb_channel, AMConfigureMessage::Modulation::SSB, audio_12k_hpf_300hz_config, (int)AMConfigureMessage::Zoom_waterfall::ZOOM_x_1}, // SSB LSB BW 2K8 (- 2K8) SSB ham equipments. + {taps_6k0_decim_1, taps_6k0_decim_2, taps_0k7_usb_channel, AMConfigureMessage::Modulation::SSB, audio_12k_hpf_300hz_config, (int)AMConfigureMessage::Zoom_waterfall::ZOOM_x_1}, // SSB USB BW 0K7 (+ 0K7) To get audio tone from CW Morse, assuming tx shifted +700hz aprox + {taps_6k0_decim_1, taps_6k0_decim_2, taps_2k6_usb_wefax_channel, AMConfigureMessage::Modulation::SSB_FM, apt_audio_12k_lpf_1500hz_config, (int)AMConfigureMessage::Zoom_waterfall::ZOOM_x_1}, // SSB USB+FM to demod. Subcarrier FM Audio Tones to get APT Weather Fax. + + // below options for Waterfall zoom x 2 + {taps_6k0_narrow_decim_1, taps_9k0_decim_2, taps_9k0_dsb_channel, AMConfigureMessage::Modulation::DSB, audio_12k_hpf_300hz_config, (int)AMConfigureMessage::Zoom_waterfall::ZOOM_x_2}, // AM DSB-C BW 9khz (+-4k5) commercial EU bandwidth . + {taps_6k0_narrow_decim_1, taps_6k0_decim_2, taps_6k0_dsb_channel, AMConfigureMessage::Modulation::DSB, audio_12k_hpf_300hz_config, (int)AMConfigureMessage::Zoom_waterfall::ZOOM_x_2}, // AM DSB-C BW 6khz (+-3k0) narrow AM , ham equipments. + {taps_6k0_narrow_decim_1, taps_6k0_decim_2, taps_2k8_usb_channel, AMConfigureMessage::Modulation::SSB, audio_12k_hpf_300hz_config, (int)AMConfigureMessage::Zoom_waterfall::ZOOM_x_2}, // SSB USB BW 2K8 (+ 2K8) SSB ham equipments. + {taps_6k0_narrow_decim_1, taps_6k0_decim_2, taps_2k8_lsb_channel, AMConfigureMessage::Modulation::SSB, audio_12k_hpf_300hz_config, (int)AMConfigureMessage::Zoom_waterfall::ZOOM_x_2}, // SSB LSB BW 2K8 (- 2K8) SSB ham equipments. + {taps_6k0_narrow_decim_1, taps_6k0_decim_2, taps_0k7_usb_channel, AMConfigureMessage::Modulation::SSB, audio_12k_hpf_300hz_config, (int)AMConfigureMessage::Zoom_waterfall::ZOOM_x_2}, // SSB USB BW 0K7 (+ 0K7) To get audio tone from CW Morse, assuming tx shifted +700hz aprox + {taps_6k0_narrow_decim_1, taps_6k0_decim_2, taps_2k6_usb_wefax_channel, AMConfigureMessage::Modulation::SSB_FM, apt_audio_12k_lpf_1500hz_config, (int)AMConfigureMessage::Zoom_waterfall::ZOOM_x_2}, // SSB USB+FM to demod. Subcarrier FM Audio Tones to get APT Weather Fax with waterfall zoom x 2 (we need taps_6k0_narrow_decim_1 to minimize aliasing) }}; static constexpr std::array nbfm_configs{{ @@ -57,7 +66,13 @@ static constexpr std::array nbfm_configs{{ static constexpr std::array wfm_configs{{ {taps_200k_wfm_decim_0, taps_200k_wfm_decim_1}, {taps_180k_wfm_decim_0, taps_180k_wfm_decim_1}, - {taps_40k_wfm_decim_0, taps_40k_wfm_decim_1}, + {taps_80k_wfm_decim_0, taps_80k_wfm_decim_1}, +}}; + +static constexpr std::array wfmam_configs{{ + {taps_16k0_decim_0, taps_80k_wfmam_decim_1, taps_64_lp_1875_2166}, + {taps_16k0_decim_0, taps_38k_wfmam_decim_1, taps_64_lp_1875_2166}, + {taps_16k0_decim_0, taps_38k_wfmam_decim_1, taps_64_bpf_2k4_bw_2k}, }}; } /* namespace */ @@ -145,6 +160,17 @@ void ReceiverModel::set_am_configuration(uint8_t n) { } } +uint8_t ReceiverModel::amfm_configuration() const { + return settings_.amfm_config_index; +} + +void ReceiverModel::set_amfm_configuration(uint8_t n) { + if (n < am_configs.size()) { + settings_.amfm_config_index = n; + update_modulation(); + } +} + uint8_t ReceiverModel::nbfm_configuration() const { return settings_.nbfm_config_index; } @@ -167,6 +193,17 @@ void ReceiverModel::set_wfm_configuration(uint8_t n) { } } +uint8_t ReceiverModel::wfmam_configuration() const { + return settings_.wfmam_config_index; +} + +void ReceiverModel::set_wfmam_configuration(uint8_t n) { + if (n < wfmam_configs.size()) { + settings_.wfmam_config_index = n; + update_modulation(); + } +} + uint8_t ReceiverModel::squelch_level() const { return settings_.squelch_level; } @@ -238,12 +275,14 @@ void ReceiverModel::set_configuration_without_update( size_t new_am_config_index, size_t new_nbfm_config_index, size_t new_wfm_config_index, + size_t new_wfmam_config_index, uint8_t new_squelch_level) { settings_.mode = new_mode; settings_.frequency_step = new_frequency_step; settings_.am_config_index = new_am_config_index; settings_.nbfm_config_index = new_nbfm_config_index; settings_.wfm_config_index = new_wfm_config_index; + settings_.wfmam_config_index = new_wfmam_config_index; settings_.squelch_level = new_squelch_level; } @@ -267,7 +306,12 @@ int32_t ReceiverModel::tuning_offset() { void ReceiverModel::update_tuning_frequency() { // TODO: use positive offset if freq < offset. - radio::set_tuning_frequency(target_frequency() + tuning_offset()); + radio::set_tuning_frequency(target_frequency() + hidden_offset + tuning_offset()); +} + +void ReceiverModel::set_hidden_offset(rf::Frequency offset) { + hidden_offset = offset; + update_tuning_frequency(); } void ReceiverModel::update_baseband_bandwidth() { @@ -303,6 +347,10 @@ void ReceiverModel::update_modulation() { update_am_configuration(); break; + case Mode::AMAudioFMApt: // Wefax , first step , USB demodulation from the AMAudio group, index 2 (USB+3K), TODO +FM subcarrier demod ? + update_amfm_configuration(); + break; + case Mode::NarrowbandFMAudio: update_nbfm_configuration(); break; @@ -311,6 +359,10 @@ void ReceiverModel::update_modulation() { update_wfm_configuration(); break; + case Mode::WFMAudioAMApt: + update_wfmam_configuration(); + break; + case Mode::SpectrumAnalysis: case Mode::Capture: break; @@ -321,6 +373,10 @@ void ReceiverModel::update_am_configuration() { am_configs[am_configuration()].apply(); } +void ReceiverModel::update_amfm_configuration() { + am_configs[amfm_configuration()].apply(); // update with different index for Wefax. +} + void ReceiverModel::update_nbfm_configuration() { nbfm_configs[nbfm_configuration()].apply(squelch_level()); } @@ -329,6 +385,10 @@ void ReceiverModel::update_wfm_configuration() { wfm_configs[wfm_configuration()].apply(); } +void ReceiverModel::update_wfmam_configuration() { + wfmam_configs[wfmam_configuration()].apply(); // update with different index for Wefax. +} + void ReceiverModel::update_antenna_bias() { if (enabled_) radio::set_antenna_bias(portapack::get_antenna_bias()); diff --git a/firmware/application/receiver_model.hpp b/firmware/application/receiver_model.hpp index ecdb32236..ea9317bf5 100644 --- a/firmware/application/receiver_model.hpp +++ b/firmware/application/receiver_model.hpp @@ -41,7 +41,9 @@ class ReceiverModel { NarrowbandFMAudio = 1, WidebandFMAudio = 2, SpectrumAnalysis = 3, - Capture = 4 + AMAudioFMApt = 4, // Added to handle HF WeatherFax , SSB (USB demod) + Tone_Subcarrier FM demod + WFMAudioAMApt = 5, // Added to handle SAT Weather map , NOAA 137 Mhz. + Capture = 6, }; struct settings_t { @@ -54,6 +56,8 @@ class ReceiverModel { bool rf_amp = false; Mode mode = Mode::NarrowbandFMAudio; uint8_t am_config_index = 0; + uint8_t amfm_config_index = 0; + uint8_t wfmam_config_index = 0; uint8_t nbfm_config_index = 0; uint8_t wfm_config_index = 0; uint8_t squelch_level = 80; @@ -87,12 +91,18 @@ class ReceiverModel { uint8_t am_configuration() const; void set_am_configuration(uint8_t n); + uint8_t amfm_configuration() const; + void set_amfm_configuration(uint8_t n); + uint8_t nbfm_configuration() const; void set_nbfm_configuration(uint8_t n); uint8_t wfm_configuration() const; void set_wfm_configuration(uint8_t n); + uint8_t wfmam_configuration() const; + void set_wfmam_configuration(uint8_t n); + uint8_t squelch_level() const; void set_squelch_level(uint8_t v); @@ -105,6 +115,8 @@ class ReceiverModel { uint8_t normalized_headphone_volume() const; void set_normalized_headphone_volume(uint8_t v); + void set_hidden_offset(rf::Frequency offset); + void enable(); void disable(); @@ -117,6 +129,7 @@ class ReceiverModel { size_t new_am_config_index, size_t new_nbfm_config_index, size_t new_wfm_config_index, + size_t new_wfmam_config_index, uint8_t new_squelch_level); void configure_from_app_settings(const app_settings::AppSettings& settings); @@ -128,6 +141,7 @@ class ReceiverModel { private: settings_t settings_{}; bool enabled_ = false; + rf::Frequency hidden_offset = 0; // when we need to hide the offset from user, we set this. like when WeFax needs -300Hz. int32_t tuning_offset(); @@ -140,8 +154,10 @@ class ReceiverModel { void update_modulation(); void update_am_configuration(); + void update_amfm_configuration(); void update_nbfm_configuration(); void update_wfm_configuration(); + void update_wfmam_configuration(); void update_antenna_bias(); void update_headphone_volume(); diff --git a/firmware/application/recent_entries.cpp b/firmware/application/recent_entries.cpp index 2cbb7d9bf..8f6abb95b 100644 --- a/firmware/application/recent_entries.cpp +++ b/firmware/application/recent_entries.cpp @@ -24,7 +24,7 @@ namespace ui { RecentEntriesColumns::RecentEntriesColumns( - const std::initializer_list columns) + std::initializer_list columns) : _columns{columns} { } diff --git a/firmware/application/recent_entries.hpp b/firmware/application/recent_entries.hpp index 83e6189bf..b5a33fec1 100644 --- a/firmware/application/recent_entries.hpp +++ b/firmware/application/recent_entries.hpp @@ -133,14 +133,27 @@ class RecentEntriesColumns { public: using ContainerType = std::vector; - RecentEntriesColumns( - const std::initializer_list columns); + RecentEntriesColumns(std::initializer_list columns); - ContainerType::const_iterator begin() const { return std::begin(_columns); } - ContainerType::const_iterator end() const { return std::end(_columns); } + ContainerType::iterator begin() { return _columns.begin(); } + ContainerType::iterator end() { return _columns.end(); } + ContainerType::const_iterator begin() const { return _columns.begin(); } + ContainerType::const_iterator end() const { return _columns.end(); } + + void set(size_t index, const std::string& name, size_t width) { + if (index < _columns.size()) { + _columns[index] = {name, width}; + } + } + + const RecentEntriesColumn& at(size_t index) const { + return _columns.at(index); + } + + size_t size() const { return _columns.size(); } private: - const ContainerType _columns; + ContainerType _columns; }; class RecentEntriesHeader : public Widget { diff --git a/firmware/application/spectrum_color_lut.cpp b/firmware/application/spectrum_color_lut.cpp index a2877542e..832fa9756 100644 --- a/firmware/application/spectrum_color_lut.cpp +++ b/firmware/application/spectrum_color_lut.cpp @@ -280,265 +280,6 @@ const std::array spectrum_rgb2_lut{{ {132, 0, 0}, }}; -const std::array spectrum_rgb3_lut{{ - {0, 0, 0}, - {0, 0, 3}, - {0, 0, 6}, - {0, 0, 9}, - {0, 0, 12}, - {0, 0, 15}, - {0, 0, 18}, - {0, 0, 21}, - {0, 0, 24}, - {0, 0, 27}, - {0, 0, 30}, - {0, 0, 33}, - {0, 0, 36}, - {0, 0, 39}, - {0, 0, 42}, - {0, 0, 45}, - {0, 0, 48}, - {0, 0, 51}, - {0, 0, 54}, - {0, 0, 57}, - {0, 0, 60}, - {0, 0, 63}, - {0, 0, 66}, - {0, 0, 69}, - {0, 0, 72}, - {0, 0, 75}, - {0, 0, 78}, - {0, 0, 81}, - {0, 0, 84}, - {0, 0, 87}, - {0, 0, 90}, - {0, 0, 93}, - {0, 0, 96}, - {0, 0, 99}, - {0, 0, 102}, - {0, 0, 105}, - {0, 0, 108}, - {0, 0, 111}, - {0, 0, 114}, - {0, 0, 117}, - {0, 0, 120}, - {0, 0, 123}, - {0, 0, 126}, - {0, 0, 129}, - {0, 0, 132}, - {0, 0, 135}, - {0, 0, 138}, - {0, 0, 141}, - {0, 0, 144}, - {0, 0, 147}, - {0, 0, 150}, - {0, 0, 153}, - {0, 0, 156}, - {0, 0, 159}, - {0, 0, 162}, - {0, 0, 165}, - {0, 0, 168}, - {0, 0, 171}, - {0, 0, 174}, - {0, 0, 177}, - {0, 0, 180}, - {0, 0, 183}, - {0, 0, 186}, - {0, 0, 189}, - {0, 0, 192}, - {0, 0, 195}, - {0, 0, 198}, - {0, 0, 201}, - {0, 0, 204}, - {0, 0, 207}, - {0, 0, 210}, - {0, 0, 213}, - {0, 0, 216}, - {0, 0, 219}, - {0, 0, 222}, - {0, 0, 225}, - {0, 0, 228}, - {0, 0, 231}, - {0, 0, 234}, - {0, 0, 237}, - {0, 0, 240}, - {0, 0, 243}, - {0, 0, 246}, - {0, 0, 249}, - {0, 0, 252}, - {0, 0, 255}, - {0, 3, 252}, - {0, 6, 249}, - {0, 9, 246}, - {0, 12, 243}, - {0, 15, 240}, - {0, 18, 237}, - {0, 21, 234}, - {0, 24, 231}, - {0, 27, 228}, - {0, 30, 225}, - {0, 33, 222}, - {0, 36, 219}, - {0, 39, 216}, - {0, 42, 213}, - {0, 45, 210}, - {0, 48, 207}, - {0, 51, 204}, - {0, 54, 201}, - {0, 57, 198}, - {0, 60, 195}, - {0, 63, 192}, - {0, 66, 189}, - {0, 69, 186}, - {0, 72, 183}, - {0, 75, 180}, - {0, 78, 177}, - {0, 81, 174}, - {0, 84, 171}, - {0, 87, 168}, - {0, 90, 165}, - {0, 93, 162}, - {0, 96, 159}, - {0, 99, 156}, - {0, 102, 153}, - {0, 105, 150}, - {0, 108, 147}, - {0, 111, 144}, - {0, 114, 141}, - {0, 117, 138}, - {0, 120, 135}, - {0, 123, 132}, - {0, 126, 129}, - {0, 129, 126}, - {0, 132, 123}, - {0, 135, 120}, - {0, 138, 117}, - {0, 141, 114}, - {0, 144, 111}, - {0, 147, 108}, - {0, 150, 105}, - {0, 153, 102}, - {0, 156, 99}, - {0, 159, 96}, - {0, 162, 93}, - {0, 165, 90}, - {0, 168, 87}, - {0, 171, 84}, - {0, 174, 81}, - {0, 177, 78}, - {0, 180, 75}, - {0, 183, 72}, - {0, 186, 69}, - {0, 189, 66}, - {0, 192, 63}, - {0, 195, 60}, - {0, 198, 57}, - {0, 201, 54}, - {0, 204, 51}, - {0, 207, 48}, - {0, 210, 45}, - {0, 213, 42}, - {0, 216, 39}, - {0, 219, 36}, - {0, 222, 33}, - {0, 225, 30}, - {0, 228, 27}, - {0, 231, 24}, - {0, 234, 21}, - {0, 237, 18}, - {0, 240, 15}, - {0, 243, 12}, - {0, 246, 9}, - {0, 249, 6}, - {0, 252, 3}, - {0, 255, 0}, - {3, 252, 0}, - {6, 249, 0}, - {9, 246, 0}, - {12, 243, 0}, - {15, 240, 0}, - {18, 237, 0}, - {21, 234, 0}, - {24, 231, 0}, - {27, 228, 0}, - {30, 225, 0}, - {33, 222, 0}, - {36, 219, 0}, - {39, 216, 0}, - {42, 213, 0}, - {45, 210, 0}, - {48, 207, 0}, - {51, 204, 0}, - {54, 201, 0}, - {57, 198, 0}, - {60, 195, 0}, - {63, 192, 0}, - {66, 189, 0}, - {69, 186, 0}, - {72, 183, 0}, - {75, 180, 0}, - {78, 177, 0}, - {81, 174, 0}, - {84, 171, 0}, - {87, 168, 0}, - {90, 165, 0}, - {93, 162, 0}, - {96, 159, 0}, - {99, 156, 0}, - {102, 153, 0}, - {105, 150, 0}, - {108, 147, 0}, - {111, 144, 0}, - {114, 141, 0}, - {117, 138, 0}, - {120, 135, 0}, - {123, 132, 0}, - {126, 129, 0}, - {129, 126, 0}, - {132, 123, 0}, - {135, 120, 0}, - {138, 117, 0}, - {141, 114, 0}, - {144, 111, 0}, - {147, 108, 0}, - {150, 105, 0}, - {153, 102, 0}, - {156, 99, 0}, - {159, 96, 0}, - {162, 93, 0}, - {165, 90, 0}, - {168, 87, 0}, - {171, 84, 0}, - {174, 81, 0}, - {177, 78, 0}, - {180, 75, 0}, - {183, 72, 0}, - {186, 69, 0}, - {189, 66, 0}, - {192, 63, 0}, - {195, 60, 0}, - {198, 57, 0}, - {201, 54, 0}, - {204, 51, 0}, - {207, 48, 0}, - {210, 45, 0}, - {213, 42, 0}, - {216, 39, 0}, - {219, 36, 0}, - {222, 33, 0}, - {225, 30, 0}, - {228, 27, 0}, - {231, 24, 0}, - {234, 21, 0}, - {237, 18, 0}, - {240, 15, 0}, - {243, 12, 0}, - {246, 9, 0}, - {249, 6, 0}, - {252, 3, 0}, - {255, 0, 0}, -}}; - const std::array spectrum_rgb4_lut{{ {0, 0, 0}, {1, 1, 1}, diff --git a/firmware/application/spectrum_color_lut.hpp b/firmware/application/spectrum_color_lut.hpp index 1516ae3b1..0e748c33d 100644 --- a/firmware/application/spectrum_color_lut.hpp +++ b/firmware/application/spectrum_color_lut.hpp @@ -27,7 +27,6 @@ #include extern const std::array spectrum_rgb2_lut; -extern const std::array spectrum_rgb3_lut; extern const std::array spectrum_rgb4_lut; #endif /*__SPECTRUM_COLOR_LUT_H__*/ diff --git a/firmware/application/theme.cpp b/firmware/application/theme.cpp index 7744d6c37..22b42f887 100644 --- a/firmware/application/theme.cpp +++ b/firmware/application/theme.cpp @@ -1,4 +1,3 @@ - #include "theme.hpp" namespace ui { @@ -25,6 +24,9 @@ void Theme::SetTheme(ThemeId theme) { case Red: current = new ThemeRed(); break; + case Dark: + current = new ThemeDark(); + break; case DefaultGrey: default: current = new ThemeDefault(); @@ -725,4 +727,137 @@ ThemeRed::ThemeRed() { bg_table_header = new Color{205, 30, 0}; } +ThemeDark::ThemeDark() { + bg_lightest = new Style{ + .font = font::fixed_8x16, + .background = {32, 32, 32}, + .foreground = Color::white(), + }; + bg_lightest_small = new Style{ + .font = font::fixed_5x8, + .background = {32, 32, 32}, + .foreground = Color::white(), + }; + bg_light = new Style{ + .font = font::fixed_8x16, + .background = {24, 24, 24}, + .foreground = Color::white(), + }; + bg_medium = new Style{ + .font = font::fixed_8x16, + .background = {16, 16, 16}, + .foreground = Color::white(), + }; + bg_dark = new Style{ + .font = font::fixed_8x16, + .background = {8, 8, 8}, + .foreground = Color::white(), + }; + bg_darker = new Style{ + .font = font::fixed_8x16, + .background = {4, 4, 4}, + .foreground = Color::white(), + }; + + bg_darkest = new Style{ + .font = font::fixed_8x16, + .background = Color::black(), + .foreground = Color::white(), + }; + bg_darkest_small = new Style{ + .font = font::fixed_5x8, + .background = Color::black(), + .foreground = Color::white(), + }; + + bg_important_small = new Style{ + .font = font::fixed_5x8, + .background = {64, 64, 64}, + .foreground = Color::white(), + }; + + error_dark = new Style{ + .font = font::fixed_8x16, + .background = Color::black(), + .foreground = Color::red(), + }; + warning_dark = new Style{ + .font = font::fixed_8x16, + .background = Color::black(), + .foreground = Color::yellow(), + }; + ok_dark = new Style{ + .font = font::fixed_8x16, + .background = Color::black(), + .foreground = Color::green(), + }; + + fg_dark = new Style{ + .font = font::fixed_8x16, + .background = Color::black(), + .foreground = {96, 96, 96}, + }; + fg_medium = new Style{ + .font = font::fixed_8x16, + .background = Color::black(), + .foreground = {128, 128, 128}, + }; + fg_light = new Style{ + .font = font::fixed_8x16, + .background = Color::black(), + .foreground = Color::white(), + }; + + fg_red = new Style{ + .font = font::fixed_8x16, + .background = Color::black(), + .foreground = Color::red(), + }; + fg_green = new Style{ + .font = font::fixed_8x16, + .background = Color::black(), + .foreground = Color::green(), + }; + fg_yellow = new Style{ + .font = font::fixed_8x16, + .background = Color::black(), + .foreground = Color::yellow(), + }; + fg_orange = new Style{ + .font = font::fixed_8x16, + .background = Color::black(), + .foreground = Color::orange(), + }; + fg_blue = new Style{ + .font = font::fixed_8x16, + .background = Color::black(), + .foreground = Color::blue(), + }; + fg_cyan = new Style{ + .font = font::fixed_8x16, + .background = Color::black(), + .foreground = Color::cyan(), + }; + fg_darkcyan = new Style{ + .font = font::fixed_8x16, + .background = Color::black(), + .foreground = Color::dark_cyan(), + }; + fg_magenta = new Style{ + .font = font::fixed_8x16, + .background = Color::black(), + .foreground = Color::magenta(), + }; + + option_active = new Style{ + .font = font::fixed_8x16, + .background = {64, 64, 64}, + .foreground = Color::white(), + }; + + status_active = new Color{0, 255, 0}; + + bg_table_header = new Color{48, 48, 48}; +} + } // namespace ui \ No newline at end of file diff --git a/firmware/application/theme.hpp b/firmware/application/theme.hpp index da6ccc9ff..b4ecf0973 100644 --- a/firmware/application/theme.hpp +++ b/firmware/application/theme.hpp @@ -93,6 +93,11 @@ class ThemeRed : public ThemeTemplate { ThemeRed(); }; +class ThemeDark : public ThemeTemplate { + public: + ThemeDark(); +}; + class Theme { public: enum ThemeId { @@ -101,6 +106,7 @@ class Theme { Aqua = 2, Green = 3, Red = 4, + Dark = 5, MAX }; static ThemeTemplate* getInstance(); diff --git a/firmware/application/ui/external/readme.md b/firmware/application/ui/external/readme.md new file mode 100644 index 000000000..0d7a84abe --- /dev/null +++ b/firmware/application/ui/external/readme.md @@ -0,0 +1,43 @@ + +Copyright (C) 2025 HTotoo + + +# External UI elements + + +## Read carefully + + +These widgets are only used in external apps! +The concept is, we move these widgets out of FW space, and compile them with external apps. To all separately. This is multiple include, but since we compile the widget under different namespaces (and those namespaces will be under the external_app namespace) these all will be removed from the base firmware. + +This way we can free up some spaces, and still reuse the same widgets in different apps easily. + +## How to create external widget + +You create a **hpp** file indet the ui/external folder, and include everything you need for your widget as you normally wanted to do. +**Don't forget the ifdef guards!** +**Never use any namespace for your class there!** The namespace of the actual ext app will be used where you include this. + +Then create a **cpi** file, where you include your hpp file, and create the implementation of your widget class. Still, don't use namespace. + +You won't need to include these files in any cmake file! (see usage, why) + +## How to use these widgets + +This is important, so follow the rules carefully. If it works, doesn't mean, you did it good! +In your external app's hpp file, you need to include the widget's hpp file. +**But be careful**, you must include it under the ext app's namespace, before your first class. For examlpe: + + namespace ui::external_app::gfxeq { + #include "external/ui_grapheq.hpp" + class gfxEQView : public View { +Then you must include the cpi file in the external app's cpp file. Again, it must be under the ext app's namespace! + + using namespace portapack; + namespace ui::external_app::gfxeq { + #include "external/ui_grapheq.cpi" + gfxEQView::gfxEQView(NavigationView& nav) + +This must be done under each ext app that uses the same widget. +This way, the widget will be compiled multiple times under the external_app namespace, but those will be removed from the base. Each app will be able to use it, easy to handle, easy to create. \ No newline at end of file diff --git a/firmware/application/ui/external/ui_grapheq.cpi b/firmware/application/ui/external/ui_grapheq.cpi new file mode 100644 index 000000000..6629bc256 --- /dev/null +++ b/firmware/application/ui/external/ui_grapheq.cpi @@ -0,0 +1,221 @@ +/* + * Copyright (C) 2025 RocketGod + * Copyright (C) 2025 HTotoo + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "ui_grapheq.hpp" + +/* GraphEq *************************************************************/ + +GraphEq::GraphEq( + Rect parent_rect, + bool clickable) + : Widget{parent_rect}, + clickable_{clickable}, + bar_heights(NUM_BARS, 0), + prev_bar_heights(NUM_BARS, 0) { + if (clickable) { + set_focusable(true); + // previous_data.resize(length_, 0); + } +} + +void GraphEq::set_parent_rect(const Rect new_parent_rect) { + Widget::set_parent_rect(new_parent_rect); + calculate_params(); +} + +void GraphEq::calculate_params() { + y_top = screen_rect().top(); + RENDER_HEIGHT = parent_rect().height(); + BAR_WIDTH = (parent_rect().width() - (BAR_SPACING * (NUM_BARS - 1))) / NUM_BARS; + HORIZONTAL_OFFSET = screen_rect().left(); +} + +bool GraphEq::is_paused() const { + return paused_; +} + +void GraphEq::set_paused(bool paused) { + paused_ = paused; + needs_background_redraw = true; + set_dirty(); +} + +bool GraphEq::is_clickable() const { + return clickable_; +} + +void GraphEq::getAccessibilityText(std::string& result) { + result = paused_ ? "paused GraphEq" : "GraphEq"; +} + +void GraphEq::getWidgetName(std::string& result) { + result = "GraphEq"; +} + +bool GraphEq::on_key(const KeyEvent key) { + if (!clickable_) return false; + + if (key == KeyEvent::Select) { + set_paused(!paused_); + if (on_select) { + on_select(*this); + } + return true; + } + return false; +} + +bool GraphEq::on_keyboard(const KeyboardEvent key) { + if (!clickable_) return false; + + if (key == 32 || key == 10) { + set_paused(!paused_); + if (on_select) { + on_select(*this); + } + return true; + } + return false; +} + +bool GraphEq::on_touch(const TouchEvent event) { + if (!clickable_) return false; + + switch (event.type) { + case TouchEvent::Type::Start: + focus(); + return true; + + case TouchEvent::Type::End: + set_paused(!paused_); + if (on_select) { + on_select(*this); + } + return true; + + default: + return false; + } +} + +void GraphEq::set_theme(Color base_color_, Color peak_color_) { + base_color = base_color_; + peak_color = peak_color_; + set_dirty(); +} + +void GraphEq::update_audio_spectrum(const AudioSpectrum& spectrum) { + const float bin_frequency_size = 48000.0f / 128; + + for (int bar = 0; bar < NUM_BARS; bar++) { + float start_freq = FREQUENCY_BANDS[bar]; + float end_freq = FREQUENCY_BANDS[bar + 1]; + + int start_bin = std::max(1, (int)(start_freq / bin_frequency_size)); + int end_bin = std::min(127, (int)(end_freq / bin_frequency_size)); + + if (start_bin >= end_bin) { + end_bin = start_bin + 1; + } + + float total_energy = 0; + int bin_count = 0; + + for (int bin = start_bin; bin <= end_bin; bin++) { + total_energy += spectrum.db[bin]; + bin_count++; + } + + float avg_db = bin_count > 0 ? (total_energy / bin_count) : 0; + + // Manually boost highs for better visual balance + float treble_boost = 1.0f; + if (bar == 10) + treble_boost = 1.7f; + else if (bar >= 9) + treble_boost = 1.3f; + else if (bar >= 7) + treble_boost = 1.3f; + + // Mid emphasis for a V-shape effect + float mid_boost = 1.0f; + if (bar == 4 || bar == 5 || bar == 6) mid_boost = 1.2f; + + float amplified_db = avg_db * treble_boost * mid_boost; + + if (amplified_db > 255) amplified_db = 255; + + float band_scale = 1.0f; + int target_height = (amplified_db * RENDER_HEIGHT * band_scale) / 255; + + if (target_height > RENDER_HEIGHT) { + target_height = RENDER_HEIGHT; + } + + // Adjusted to look nice to my eyes + float rise_speed = 0.8f; + float fall_speed = 1.0f; + + if (target_height > bar_heights[bar]) { + bar_heights[bar] = bar_heights[bar] * (1.0f - rise_speed) + target_height * rise_speed; + } else { + bar_heights[bar] = bar_heights[bar] * (1.0f - fall_speed) + target_height * fall_speed; + } + } + set_dirty(); +} + +void GraphEq::paint(Painter& painter) { + if (!visible()) return; + if (!is_calculated) { // calc positions first + calculate_params(); + is_calculated = true; + } + if (needs_background_redraw) { + painter.fill_rectangle(screen_rect(), Theme::getInstance()->bg_darkest->background); + needs_background_redraw = false; + } + if (paused_) { + return; + } + const int num_segments = RENDER_HEIGHT / SEGMENT_HEIGHT; + uint16_t bottom = screen_rect().bottom(); + for (int bar = 0; bar < NUM_BARS; bar++) { + int x = HORIZONTAL_OFFSET + bar * (BAR_WIDTH + BAR_SPACING); + int active_segments = (bar_heights[bar] * num_segments) / RENDER_HEIGHT; + + if (prev_bar_heights[bar] > active_segments) { + int clear_height = (prev_bar_heights[bar] - active_segments) * SEGMENT_HEIGHT; + int clear_y = bottom - prev_bar_heights[bar] * SEGMENT_HEIGHT; + painter.fill_rectangle({x, clear_y, BAR_WIDTH, clear_height}, Theme::getInstance()->bg_darkest->background); + } + + for (int seg = 0; seg < active_segments; seg++) { + int y = bottom - (seg + 1) * SEGMENT_HEIGHT; + if (y < y_top) break; + + Color segment_color = (seg >= active_segments - 2 && seg < active_segments) ? peak_color : base_color; + painter.fill_rectangle({x, y, BAR_WIDTH, SEGMENT_HEIGHT - 1}, segment_color); + } + prev_bar_heights[bar] = active_segments; + } +} diff --git a/firmware/application/ui/external/ui_grapheq.hpp b/firmware/application/ui/external/ui_grapheq.hpp new file mode 100644 index 000000000..e8d326a0b --- /dev/null +++ b/firmware/application/ui/external/ui_grapheq.hpp @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2025 RocketGod + * Copyright (C) 2025 HTotoo + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __UI_GRAPHEQ_H__ +#define __UI_GRAPHEQ_H__ + +#include "ui_widget.hpp" + +class GraphEq : public Widget { + public: + std::function on_select{}; + + GraphEq(Rect parent_rect, bool clickable = false); + GraphEq(const GraphEq&) = delete; + GraphEq(GraphEq&&) = delete; + GraphEq& operator=(const GraphEq&) = delete; + GraphEq& operator=(GraphEq&&) = delete; + + bool is_paused() const; + void set_paused(bool paused); + bool is_clickable() const; + + void paint(Painter& painter) override; + bool on_key(const KeyEvent key) override; + bool on_touch(const TouchEvent event) override; + bool on_keyboard(const KeyboardEvent event) override; + void set_parent_rect(const Rect new_parent_rect) override; + + void getAccessibilityText(std::string& result) override; + void getWidgetName(std::string& result) override; + void update_audio_spectrum(const AudioSpectrum& spectrum); + void set_theme(Color base_color, Color peak_color); + + private: + bool is_calculated{false}; + bool paused_{false}; + bool clickable_{false}; + bool needs_background_redraw{true}; // Redraw background only when needed. + Color base_color = Color(255, 0, 255); + Color peak_color = Color(255, 255, 255); + std::vector bar_heights; + std::vector prev_bar_heights; + + ui::Dim y_top = 2 * 16; + ui::Dim RENDER_HEIGHT = 288; + ui::Dim BAR_WIDTH = 20; + ui::Dim HORIZONTAL_OFFSET = 2; + static const int NUM_BARS = 11; + static const int BAR_SPACING = 2; + static const int SEGMENT_HEIGHT = 10; + static constexpr std::array FREQUENCY_BANDS = { + 375, // Bass warmth and low rumble (e.g., deep basslines, kick drum body) + 750, // Upper bass punch (e.g., bass guitar punch, kick drum attack) + 1500, // Lower midrange fullness (e.g., warmth in vocals, guitar body) + 2250, // Midrange clarity (e.g., vocal presence, snare crack) + 3375, // Upper midrange bite (e.g., instrument definition, vocal articulation) + 4875, // Presence and edge (e.g., guitar bite, vocal sibilance start) + 6750, // Lower brilliance (e.g., cymbal shimmer, vocal clarity) + 9375, // Brilliance and air (e.g., hi-hat crispness, breathy vocals) + 13125, // High treble sparkle (e.g., subtle overtones, synth shimmer) + 16875, // Upper treble airiness (e.g., faint harmonics, room ambiance) + 20625, // Top-end sheen (e.g., ultra-high harmonics, noise floor) + 24375 // Extreme treble limit (e.g., inaudible overtones, signal cutoff, static) + }; + + void calculate_params(); // re calculate some parameters based on parent_rect() +}; + +#endif /*__UI_GRAPHEQ_H__*/ \ No newline at end of file diff --git a/firmware/application/ui/ui_alphanum.cpp b/firmware/application/ui/ui_alphanum.cpp index e58fe0885..b072a76be 100644 --- a/firmware/application/ui/ui_alphanum.cpp +++ b/firmware/application/ui/ui_alphanum.cpp @@ -32,7 +32,8 @@ namespace ui { AlphanumView::AlphanumView( NavigationView& nav, std::string& str, - size_t max_length) + size_t max_length, + uint8_t enter_mode) : TextEntryView(nav, str, max_length) { size_t n; @@ -76,7 +77,7 @@ AlphanumView::AlphanumView( n++; } - set_mode(mode); + set_mode(enter_mode); button_mode.on_select = [this](Button&) { set_mode(mode + 1); diff --git a/firmware/application/ui/ui_alphanum.hpp b/firmware/application/ui/ui_alphanum.hpp index 3ae045fef..654ed57e1 100644 --- a/firmware/application/ui/ui_alphanum.hpp +++ b/firmware/application/ui/ui_alphanum.hpp @@ -37,7 +37,7 @@ namespace ui { class AlphanumView : public TextEntryView { public: - AlphanumView(NavigationView& nav, std::string& str, size_t max_length); + AlphanumView(NavigationView& nav, std::string& str, size_t max_length, uint8_t enter_mode); AlphanumView(const AlphanumView&) = delete; AlphanumView(AlphanumView&&) = delete; diff --git a/firmware/application/ui/ui_btngrid.cpp b/firmware/application/ui/ui_btngrid.cpp index d9646c6a2..de5114c94 100644 --- a/firmware/application/ui/ui_btngrid.cpp +++ b/firmware/application/ui/ui_btngrid.cpp @@ -38,17 +38,31 @@ BtnGridView::BtnGridView( set_parent_rect(new_parent_rect); set_focusable(true); - signal_token_tick_second = rtc_time::signal_tick_second += [this]() { - this->on_tick_second(); + button_pgup.set_focusable(false); + button_pgup.on_select = [this](Button&) { + if (arrow_up_enabled) { + if (((int64_t)highlighted_item - displayed_max) > 0) + set_highlighted(highlighted_item - displayed_max); + else + set_highlighted(0); + } }; - add_child(&arrow_more); - arrow_more.set_focusable(false); - arrow_more.set_foreground(Theme::getInstance()->bg_darkest->background); + button_pgdown.set_focusable(false); + button_pgdown.on_select = [this](Button&) { + if (arrow_down_enabled) { + set_highlighted(highlighted_item + displayed_max); + } + }; + + button_pgup.set_style(Theme::getInstance()->bg_darkest_small); + button_pgdown.set_style(Theme::getInstance()->bg_darkest_small); + + add_child(&button_pgup); + add_child(&button_pgdown); } BtnGridView::~BtnGridView() { - rtc_time::signal_tick_second -= signal_token_tick_second; } void BtnGridView::set_max_rows(int rows) { @@ -62,8 +76,31 @@ int BtnGridView::rows() { void BtnGridView::set_parent_rect(const Rect new_parent_rect) { View::set_parent_rect(new_parent_rect); + button_h = 48; // btn_h_min; + /* + // DISABLED FOR NOW. TODO fix next, prev button pos + int min_remainder = parent_rect().size().height(); + uint8_t max_button_count = 0; + + for (int h = btn_h_min; h <= btn_h_max; ++h) { + int count = parent_rect().size().height() / h; + int remainder = parent_rect().size().height() % h; + + // Prefer smaller remainder, then more buttons, then larger height + if (remainder < min_remainder || + (remainder == min_remainder && count > max_button_count) || + (remainder == min_remainder && count == max_button_count && h > button_h)) { + button_h = h; + min_remainder = remainder; + max_button_count = count; + } + } + */ displayed_max = (parent_rect().size().height() / button_h); - arrow_more.set_parent_rect({228, (Coord)(displayed_max * button_h), 8, 8}); + + button_pgup.set_parent_rect({0, (Coord)(displayed_max * button_h), screen_width / 2, 16}); + button_pgdown.set_parent_rect({screen_width / 2, (Coord)(displayed_max * button_h), screen_width / 2, 16}); + displayed_max *= rows_; // Delete any existing buttons. @@ -84,28 +121,40 @@ void BtnGridView::set_parent_rect(const Rect new_parent_rect) { menu_item_views.push_back(std::move(item)); } - update_items(); } -void BtnGridView::set_arrow_enabled(bool enabled) { +void BtnGridView::set_arrow_up_enabled(bool enabled) { + if (!show_arrows) + return; if (enabled) { - add_child(&arrow_more); - } else { - remove_child(&arrow_more); + if (!arrow_up_enabled) { + arrow_up_enabled = true; + button_pgup.set_text("< PREV"); + } + } else if (!enabled) { + if (arrow_up_enabled) { + arrow_up_enabled = false; + button_pgup.set_text(" "); + } } }; -void BtnGridView::on_tick_second() { - if (more && blink) - arrow_more.set_foreground(Theme::getInstance()->bg_darkest->foreground); - else - arrow_more.set_foreground(Theme::getInstance()->bg_darkest->background); - - blink = !blink; - - arrow_more.set_dirty(); -} +void BtnGridView::set_arrow_down_enabled(bool enabled) { + if (!show_arrows) + return; + if (enabled) { + if (!arrow_down_enabled) { + arrow_down_enabled = true; + button_pgdown.set_text("NEXT >"); + } + } else if (!enabled) { + if (arrow_down_enabled) { + arrow_down_enabled = false; + button_pgdown.set_text(" "); + } + } +}; void BtnGridView::clear() { // clear vector and release memory, not using swap since it's causing capture to glitch/fault @@ -153,15 +202,23 @@ void BtnGridView::insert_item(const GridItem& new_item, size_t position, bool in } } +void BtnGridView::show_hide_arrows() { + if (highlighted_item == 0) { + set_arrow_up_enabled(false); + } else { + set_arrow_up_enabled(true); + } + if (highlighted_item == (menu_items.size() - 1)) { + set_arrow_down_enabled(false); + } else { + set_arrow_down_enabled(true); + } +} + void BtnGridView::update_items() { size_t i = 0; - Color bg_color = portapack::persistent_memory::menu_color(); - if ((menu_items.size()) > (displayed_max + offset)) { - more = true; - blink = true; - } else - more = false; + Color bg_color = portapack::persistent_memory::menu_color(); for (auto& item : menu_item_views) { if ((i + offset) >= menu_items.size()) { @@ -189,14 +246,23 @@ NewButton* BtnGridView::item_view(size_t index) const { return menu_item_views[index].get(); } +void BtnGridView::show_arrows_enabled(bool enabled) { + show_arrows = enabled; + if (!enabled) { + remove_child(&button_pgup); + remove_child(&button_pgdown); + } +} + bool BtnGridView::set_highlighted(int32_t new_value) { int32_t item_count = (int32_t)menu_items.size(); if (new_value < 0) return false; - if (new_value >= item_count) + if (new_value >= item_count) { new_value = item_count - 1; + } if (((uint32_t)new_value > offset) && ((new_value - offset) >= displayed_max)) { // Shift BtnGridView up @@ -222,6 +288,8 @@ bool BtnGridView::set_highlighted(int32_t new_value) { if (visible()) item_view(highlighted_item - offset)->focus(); + show_hide_arrows(); + return true; } @@ -235,21 +303,22 @@ void BtnGridView::on_focus() { void BtnGridView::on_blur() { #if 0 - if (!keep_highlight) - item_view(highlighted_item - offset)->unhighlight(); + if (!keep_highlight) + item_view(highlighted_item - offset)->unhighlight(); #endif } void BtnGridView::on_show() { on_populate(); - View::on_show(); + set_highlighted(highlighted_item); } void BtnGridView::on_hide() { View::on_hide(); - clear(); + set_arrow_up_enabled(false); + set_arrow_down_enabled(false); } bool BtnGridView::on_key(const KeyEvent key) { diff --git a/firmware/application/ui/ui_btngrid.hpp b/firmware/application/ui/ui_btngrid.hpp index e862b2c73..a10115991 100644 --- a/firmware/application/ui/ui_btngrid.hpp +++ b/firmware/application/ui/ui_btngrid.hpp @@ -55,7 +55,7 @@ void load_blacklist(); class BtnGridView : public View { public: - BtnGridView(Rect new_parent_rect = {0, 0, 240, 304}, bool keep_highlight = false); + BtnGridView(Rect new_parent_rect = {0, 0, screen_width, screen_height - 16}, bool keep_highlight = false); ~BtnGridView(); @@ -68,11 +68,18 @@ class BtnGridView : public View { NewButton* item_view(size_t index) const; + bool show_arrows{true}; // flag used to hide arrows in main menu + void show_arrows_enabled(bool enabled); + bool set_highlighted(int32_t new_value); uint32_t highlighted_index(); void set_parent_rect(const Rect new_parent_rect) override; - void set_arrow_enabled(bool enabled); + bool arrow_up_enabled{false}; + bool arrow_down_enabled{false}; + void set_arrow_up_enabled(bool enabled); + void set_arrow_down_enabled(bool enabled); + void show_hide_arrows(); void on_focus() override; void on_blur() override; void on_show() override; @@ -82,30 +89,33 @@ class BtnGridView : public View { bool blacklisted_app(GridItem new_item); void update_items(); + void set_btn_min_max_height(uint8_t min, uint8_t max) { + btn_h_min = min; + btn_h_max = max; + } protected: virtual void on_populate() = 0; private: int rows_{3}; - void on_tick_second(); - + uint8_t btn_h_min{40}; + uint8_t btn_h_max{60}; bool keep_highlight{false}; - SignalToken signal_token_tick_second{}; std::vector menu_items{}; std::vector> menu_item_views{}; - Image arrow_more{ - {228, 320 - 8, 8, 8}, - &bitmap_more, - Theme::getInstance()->bg_darkest->foreground, - Theme::getInstance()->bg_darkest->background}; + Button button_pgup{ + {0, 1324, 120, 16}, + " "}; - int button_w = 240 / rows_; - static constexpr int button_h = 48; - bool blink = false; - bool more = false; + Button button_pgdown{ + {121, 1324, 119, 16}, + " "}; + + int button_w = screen_width / rows_; + int button_h = 48; size_t displayed_max{0}; size_t highlighted_item{0}; size_t offset{0}; diff --git a/firmware/application/ui/ui_freq_field.hpp b/firmware/application/ui/ui_freq_field.hpp index c63e37917..d604cf1da 100644 --- a/firmware/application/ui/ui_freq_field.hpp +++ b/firmware/application/ui/ui_freq_field.hpp @@ -53,13 +53,21 @@ class BoundFrequencyField : public FrequencyField { }; on_edit = [this, &nav]() { + if (on_edit_shown) + on_edit_shown(); auto freq_view = nav.push(model->target_frequency()); freq_view->on_changed = [this](rf::Frequency f) { set_value(f); }; + nav.set_on_pop([this]() { + if (on_edit_hidden) + on_edit_hidden(); + }); }; } + std::function on_edit_shown{}; // fired, when the FrequencyKeypadView pops up + std::function on_edit_hidden{}; // fired, when the FrequencyKeypadView ended // TODO: override set_step and update the rx model then call base. }; diff --git a/firmware/application/ui/ui_geomap.cpp b/firmware/application/ui/ui_geomap.cpp index d2c895a64..83defae98 100644 --- a/firmware/application/ui/ui_geomap.cpp +++ b/firmware/application/ui/ui_geomap.cpp @@ -42,7 +42,7 @@ GeoPos::GeoPos( const alt_unit altitude_unit, const spd_unit speed_unit) : altitude_unit_(altitude_unit), speed_unit_(speed_unit) { - set_parent_rect({pos, {30 * 8, 3 * 16}}); + set_parent_rect({pos, {screen_width, 3 * 16}}); add_children({&labels_position, &label_spd_position, @@ -110,6 +110,7 @@ GeoPos::GeoPos( text_alt_unit.set(altitude_unit_ ? "m" : "ft"); if (speed_unit_ == KMPH) text_speed_unit.set("kmph"); if (speed_unit_ == MPH) text_speed_unit.set("mph"); + if (speed_unit_ == KNOTS) text_speed_unit.set("knots"); if (speed_unit_ == HIDDEN) { text_speed_unit.hidden(true); label_spd_position.hidden(true); diff --git a/firmware/application/ui/ui_geomap.hpp b/firmware/application/ui/ui_geomap.hpp index 772efedac..621816192 100644 --- a/firmware/application/ui/ui_geomap.hpp +++ b/firmware/application/ui/ui_geomap.hpp @@ -81,6 +81,7 @@ class GeoPos : public View { NONE = 0, MPH, KMPH, + KNOTS, HIDDEN = 255 }; @@ -134,7 +135,7 @@ class GeoPos : public View { {12 * 8, 0 * 16, 2 * 8, 16}, ""}; Text text_speed_unit{ - {25 * 8, 0 * 16, 4 * 8, 16}, + {25 * 8, 0 * 16, 5 * 8, 16}, ""}; NumberField field_lat_degrees{ diff --git a/firmware/application/ui/ui_receiver.hpp b/firmware/application/ui/ui_receiver.hpp index 2b702dd92..ef7801b97 100644 --- a/firmware/application/ui/ui_receiver.hpp +++ b/firmware/application/ui/ui_receiver.hpp @@ -29,6 +29,7 @@ #include "irq_controls.hpp" #include "rf_path.hpp" +#include "freqman_db.hpp" #include #include @@ -37,6 +38,10 @@ #define MAX_UFREQ 7200000000 // maximum usable frequency +using option_db_t = std::pair; +using options_db_t = std::vector; +extern options_db_t freqman_steps; + namespace ui { class FrequencyField : public Widget { @@ -221,7 +226,7 @@ class FrequencyKeypadView : public View { static constexpr int text_digits = mhz_digits + 1 + submhz_digits; Text text_value{ - {0, 4, 240, 16}}; + {0, 4, screen_width, 16}}; std::array buttons{}; @@ -263,22 +268,12 @@ class FrequencyStepView : public OptionsField { : OptionsField{ parent_pos, 5, - { - {" 10", 10}, /* Fine tuning SSB voice pitch,in HF and QO-100 sat #669 */ - {" 50", 50}, /* added 50Hz/10Hz,but we do not increase GUI digit decimal */ - {" 100", 100}, - {" 1k ", 1000}, - {" 3k ", 3000}, /* Approximate SSB bandwidth */ - {" 5k ", 5000}, - {" 6k3", 6250}, - {" 9k ", 9000}, /* channel spacing for LF, MF in some regions */ - {" 10k ", 10000}, - {" 12k5", 12500}, - {" 25k ", 25000}, - {"100k ", 100000}, - {" 1M ", 1000000}, - {" 10M ", 10000000}, - }} { + {}} { + options_t options; + for (const auto& step : freqman_steps) { + options.emplace_back(step.first, step.second); + } + set_options(options); } }; diff --git a/firmware/application/ui/ui_spectrum.cpp b/firmware/application/ui/ui_spectrum.cpp index 8e7e98ca9..8553283aa 100644 --- a/firmware/application/ui/ui_spectrum.cpp +++ b/firmware/application/ui/ui_spectrum.cpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * Copyleft Mr. Robot 2025 * * This file is part of PortaPack. * @@ -21,8 +22,6 @@ #include "ui_spectrum.hpp" -#include "spectrum_color_lut.hpp" - #include "portapack.hpp" using namespace portapack; @@ -102,6 +101,15 @@ void FrequencyScale::set_channel_filter( } } +void FrequencyScale::set_cursor_position(const int32_t position) { + cursor_position = position; + + cursor_position = std::min(cursor_position, 119); + cursor_position = std::max(cursor_position, -120); + + set_dirty(); +} + void FrequencyScale::paint(Painter& painter) { const auto r = screen_rect(); @@ -115,14 +123,12 @@ void FrequencyScale::paint(Painter& painter) { draw_filter_ranges(painter, r); draw_frequency_ticks(painter, r); - if (_blink) { - const Rect r_cursor{ - 118 + cursor_position, r.bottom() - filter_band_height, - 5, filter_band_height}; - painter.fill_rectangle( - r_cursor, - Color::red()); - } + const Rect r_cursor{ + 118 + cursor_position, r.bottom() - filter_band_height, + 5, filter_band_height}; + painter.fill_rectangle( + r_cursor, + Color::red()); } void FrequencyScale::clear() { @@ -206,16 +212,10 @@ void FrequencyScale::draw_filter_ranges(Painter& painter, const Rect r) { } void FrequencyScale::on_focus() { - _blink = true; - on_tick_second(); - signal_token_tick_second = rtc_time::signal_tick_second += [this]() { - this->on_tick_second(); - }; + set_dirty(); } void FrequencyScale::on_blur() { - rtc_time::signal_tick_second -= signal_token_tick_second; - _blink = false; set_dirty(); } @@ -235,6 +235,7 @@ bool FrequencyScale::on_key(const KeyEvent key) { if (on_select) { on_select((cursor_position * spectrum_sampling_rate) / 240); cursor_position = 0; + set_dirty(); return true; } } @@ -242,9 +243,13 @@ bool FrequencyScale::on_key(const KeyEvent key) { return false; } -void FrequencyScale::on_tick_second() { - set_dirty(); - _blink = !_blink; +bool FrequencyScale::on_touch(const TouchEvent touch) { + if (touch.type == TouchEvent::Type::Start) { + if (on_select) { + on_select((touch.point.x() * spectrum_sampling_rate) / 240); + } + } + return true; } /* WaterfallWidget *********************************************************/ @@ -271,12 +276,12 @@ void WaterfallWidget::on_channel_spectrum( std::array pixel_row; for (size_t i = 0; i < 120; i++) { - const auto pixel_color = spectrum_rgb3_lut[spectrum.db[256 - 120 + i]]; + const auto pixel_color = gradient.lut[spectrum.db[256 - 120 + i]]; pixel_row[i] = pixel_color; } for (size_t i = 120; i < 240; i++) { - const auto pixel_color = spectrum_rgb3_lut[spectrum.db[i - 120]]; + const auto pixel_color = gradient.lut[spectrum.db[i - 120]]; pixel_row[i] = pixel_color; } @@ -287,6 +292,15 @@ void WaterfallWidget::on_channel_spectrum( pixel_row); } +bool WaterfallWidget::on_touch(const TouchEvent event) { + if (event.type == TouchEvent::Type::Start) { + if (on_touch_select) { + on_touch_select(event.point.x(), event.point.y()); + } + } + return true; +} + void WaterfallWidget::clear() { display.fill_rectangle( screen_rect(), @@ -305,6 +319,22 @@ WaterfallView::WaterfallView(const bool cursor) { frequency_scale.on_select = [this](int32_t offset) { if (on_select) on_select(offset); }; + + waterfall_widget.on_touch_select = [this](int32_t x, int32_t y) { + if (y > screen_height - screen_height * 0.1) return; // prevent ghost touch + + frequency_scale.focus(); // focus on frequency scale to show cursor + + if (sampling_rate) { + // screen x to frequency scale x, NB we need two widgets align + int32_t cursor_position = x - (screen_width / 2); + frequency_scale.set_cursor_position(cursor_position); + } + }; + + if (!waterfall_widget.gradient.load_file(default_gradient_file)) { + waterfall_widget.gradient.set_default(); + } } void WaterfallView::on_show() { diff --git a/firmware/application/ui/ui_spectrum.hpp b/firmware/application/ui/ui_spectrum.hpp index 86b2a8158..da5d794f4 100644 --- a/firmware/application/ui/ui_spectrum.hpp +++ b/firmware/application/ui/ui_spectrum.hpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * Copyleft Mr. Robot 2025 * * This file is part of PortaPack. * @@ -24,6 +25,7 @@ #include "ui.hpp" #include "ui_widget.hpp" +#include "gradient.hpp" #include "event_m0.hpp" @@ -59,12 +61,13 @@ class AudioSpectrumView : public View { ' '}; Waveform waveform{ - {0, 1 * 16 + cursor_band_height, 30 * 8, 2 * 16}, + {0, 1 * 16 + cursor_band_height, screen_width, 2 * 16}, audio_spectrum, 128, 0, false, - Theme::getInstance()->bg_darkest->foreground}; + Theme::getInstance()->bg_darkest->foreground, + true}; }; class FrequencyScale : public Widget { @@ -77,20 +80,18 @@ class FrequencyScale : public Widget { bool on_encoder(const EncoderEvent delta) override; bool on_key(const KeyEvent key) override; + bool on_touch(const TouchEvent touch) override; void set_spectrum_sampling_rate(const int new_sampling_rate); void set_channel_filter(const int low_frequency, const int high_frequency, const int transition); + void set_cursor_position(const int32_t position); void paint(Painter& painter) override; private: static constexpr int filter_band_height = 4; - void on_tick_second(); - - bool _blink{false}; int32_t cursor_position{0}; - SignalToken signal_token_tick_second{}; int spectrum_sampling_rate{0}; const int spectrum_bins = std::tuple_size::value; int channel_filter_low_frequency{0}; @@ -110,9 +111,14 @@ class FrequencyScale : public Widget { class WaterfallWidget : public Widget { public: + std::function on_touch_select{}; + + Gradient gradient{}; + void on_show() override; void on_hide() override; void paint(Painter&) override {} + bool on_touch(const TouchEvent event) override; void on_channel_spectrum(const ChannelSpectrum& spectrum); @@ -144,7 +150,7 @@ class WaterfallView : public View { private: void update_widgets_rect(); - const Rect audio_spectrum_view_rect{0 * 8, 0 * 16, 30 * 8, 2 * 16 + 20}; + const Rect audio_spectrum_view_rect{0 * 8, 0 * 16, screen_width, 2 * 16 + 20}; static constexpr Dim audio_spectrum_height = 16 * 2 + 20; static constexpr Dim scale_height = 20; diff --git a/firmware/application/ui/ui_tabview.cpp b/firmware/application/ui/ui_tabview.cpp index f6cde66a7..9b3dc9022 100644 --- a/firmware/application/ui/ui_tabview.cpp +++ b/firmware/application/ui/ui_tabview.cpp @@ -135,9 +135,9 @@ TabView::TabView(std::initializer_list tab_definitions) { if (n_tabs > MAX_TABS) n_tabs = MAX_TABS; - size_t tab_width = 240 / n_tabs; + size_t tab_width = screen_width / n_tabs; - set_parent_rect({0, 0, 30 * 8, 3 * 8}); + set_parent_rect({0, 0, screen_width, 3 * 8}); for (auto& tab_definition : tab_definitions) { tabs[i].set(i, tab_width, tab_definition.text, tab_definition.color); diff --git a/firmware/application/ui/ui_textentry.cpp b/firmware/application/ui/ui_textentry.cpp index 669fc2269..aab0a01e2 100644 --- a/firmware/application/ui/ui_textentry.cpp +++ b/firmware/application/ui/ui_textentry.cpp @@ -31,8 +31,9 @@ void text_prompt( NavigationView& nav, std::string& str, size_t max_length, + uint8_t mode, std::function on_done) { - text_prompt(nav, str, str.length(), max_length, on_done); + text_prompt(nav, str, str.length(), max_length, mode, on_done); } void text_prompt( @@ -40,8 +41,9 @@ void text_prompt( std::string& str, uint32_t cursor_pos, size_t max_length, + uint8_t mode, std::function on_done) { - auto te_view = nav.push(str, max_length); + auto te_view = nav.push(str, max_length, mode); te_view->set_cursor(cursor_pos); te_view->on_changed = [on_done](std::string& value) { if (on_done) diff --git a/firmware/application/ui/ui_textentry.hpp b/firmware/application/ui/ui_textentry.hpp index 2a3e1a763..34c72c47f 100644 --- a/firmware/application/ui/ui_textentry.hpp +++ b/firmware/application/ui/ui_textentry.hpp @@ -26,6 +26,11 @@ #include "ui.hpp" #include "ui_navigation.hpp" +#define ENTER_KEYBOARD_MODE_ALPHA 0 +#define ENTER_KEYBOARD_MODE_DIGITS 1 +#define ENTER_KEYBOARD_MODE_SYMBOLS 2 +#define ENTER_KEYBOARD_MODE_HEX 3 + namespace ui { class TextEntryView : public View { @@ -62,6 +67,7 @@ void text_prompt( NavigationView& nav, std::string& str, size_t max_length, + uint8_t mode, std::function on_done = nullptr); void text_prompt( @@ -69,6 +75,7 @@ void text_prompt( std::string& str, uint32_t cursor_pos, size_t max_length, + uint8_t mode, // enter mode: 123 abc etc std::function on_done = nullptr); } /* namespace ui */ diff --git a/firmware/application/ui/ui_transmitter.cpp b/firmware/application/ui/ui_transmitter.cpp index 6ec24e7fb..84b294e48 100644 --- a/firmware/application/ui/ui_transmitter.cpp +++ b/firmware/application/ui/ui_transmitter.cpp @@ -130,7 +130,7 @@ TransmitterView::TransmitterView( const uint32_t channel_bandwidth, const bool lock) : lock_{lock} { - set_parent_rect({0, y, 30 * 8, 6 * 8}); + set_parent_rect({0, y, screen_width, 6 * 8}); add_children({ &field_frequency, @@ -155,6 +155,9 @@ TransmitterView::TransmitterView( field_bw.on_change = [this](int32_t v) { on_channel_bandwidth_changed(v * 1000); + if (on_bandwidth_changed) { + on_bandwidth_changed(); + } }; field_bw.set_value(channel_bandwidth); } @@ -257,4 +260,4 @@ void TransmitterView2::update_gainlevel_styles() { field_amp.set_style(style); } -} /* namespace ui */ +} /* namespace ui */ \ No newline at end of file diff --git a/firmware/application/ui/ui_transmitter.hpp b/firmware/application/ui/ui_transmitter.hpp index d9b922cfc..dd7f796fe 100644 --- a/firmware/application/ui/ui_transmitter.hpp +++ b/firmware/application/ui/ui_transmitter.hpp @@ -50,6 +50,10 @@ class TransmitterView : public View { std::function on_edit_frequency{}; std::function on_start{}; std::function on_stop{}; + std::function on_bandwidth_changed{}; + // TODO: this is a workaround because in the message system, + // we change bw by different message for different m4 bb, so have to callback + // and change in the instance(for instance SigGen app) with calling the instance's bb opration func TransmitterView(const Coord y, const uint64_t frequency_step, const uint32_t channel_bandwidth, const bool lock); TransmitterView( @@ -156,4 +160,4 @@ class TransmitterView2 : public View { } /* namespace ui */ -#endif /*__UI_TRANSMITTER_H__*/ +#endif /*__UI_TRANSMITTER_H__*/ \ No newline at end of file diff --git a/firmware/application/ui/ui_tv.hpp b/firmware/application/ui/ui_tv.hpp index dd055027b..dd94ad129 100644 --- a/firmware/application/ui/ui_tv.hpp +++ b/firmware/application/ui/ui_tv.hpp @@ -62,12 +62,13 @@ class TimeScopeView : public View { };*/ Waveform waveform{ - {0, 1 * 16 + cursor_band_height, 30 * 8, 2 * 16}, + {0, 1 * 16 + cursor_band_height, screen_width, 2 * 16}, audio_spectrum, 128, 0, false, - Theme::getInstance()->bg_darkest->foreground}; + Theme::getInstance()->bg_darkest->foreground, + true}; }; class TVView : public Widget { @@ -116,7 +117,7 @@ class TVWidget : public View { private: void update_widgets_rect(); - const Rect audio_spectrum_view_rect{0 * 8, 0 * 16, 30 * 8, 2 * 16 + 20}; + const Rect audio_spectrum_view_rect{0 * 8, 0 * 16, screen_width, 2 * 16 + 20}; static constexpr Dim audio_spectrum_height = 16 * 2 + 20; static constexpr Dim scale_height = 20; diff --git a/firmware/application/ui_navigation.cpp b/firmware/application/ui_navigation.cpp index 8654c2049..b9fafb212 100644 --- a/firmware/application/ui_navigation.cpp +++ b/firmware/application/ui_navigation.cpp @@ -24,8 +24,6 @@ #include "ui_navigation.hpp" -#include "bmp_modal_warning.hpp" -#include "bmp_splash.hpp" #include "event_m0.hpp" #include "portapack_persistent_memory.hpp" #include "portapack_shared_memory.hpp" @@ -44,7 +42,6 @@ #include "ui_font_fixed_8x16.hpp" #include "ui_freqman.hpp" #include "ui_iq_trim.hpp" -#include "ui_level.hpp" #include "ui_looking_glass_app.hpp" #include "ui_mictx.hpp" @@ -52,9 +49,8 @@ #include "ui_pocsag_tx.hpp" #include "ui_rds.hpp" #include "ui_recon.hpp" -#include "ui_scanner.hpp" +// #include "ui_scanner.hpp" #include "ui_sd_over_usb.hpp" -#include "ui_sd_wipe.hpp" #include "ui_search.hpp" #include "ui_settings.hpp" #include "ui_siggen.hpp" @@ -63,10 +59,8 @@ // #include "ui_test.hpp" #include "ui_text_editor.hpp" #include "ui_touchtunes.hpp" -#include "ui_view_wav.hpp" #include "ui_weatherstation.hpp" #include "ui_subghzd.hpp" -#include "ui_whipcalc.hpp" #include "ui_battinfo.hpp" #include "ui_external_items_menu_loader.hpp" @@ -123,37 +117,27 @@ const NavigationView::AppList NavigationView::appList = { /* HOME ******************************************************************/ {nullptr, "Receive", HOME, Color::cyan(), &bitmap_icon_receivers, new ViewFactory()}, {nullptr, "Transmit", HOME, Color::cyan(), &bitmap_icon_transmit, new ViewFactory()}, + {nullptr, "Tranceiver", HOME, Color::cyan(), &bitmap_icon_tranceivers, new ViewFactory()}, + {"recon", "Recon", HOME, Color::green(), &bitmap_icon_scanner, new ViewFactory()}, {"capture", "Capture", HOME, Color::red(), &bitmap_icon_capture, new ViewFactory()}, {"replay", "Replay", HOME, Color::green(), &bitmap_icon_replay, new ViewFactory()}, - {"scanner", "Scanner", HOME, Color::green(), &bitmap_icon_scanner, new ViewFactory()}, - {"microphone", "Microphone", HOME, Color::green(), &bitmap_icon_microphone, new ViewFactory()}, {"lookingglass", "Looking Glass", HOME, Color::green(), &bitmap_icon_looking, new ViewFactory()}, {nullptr, "Utilities", HOME, Color::cyan(), &bitmap_icon_utilities, new ViewFactory()}, + {nullptr, "Games", HOME, Color::cyan(), &bitmap_icon_games, new ViewFactory()}, {nullptr, "Settings", HOME, Color::cyan(), &bitmap_icon_setup, new ViewFactory()}, - {nullptr, "Debug", HOME, Color::light_grey(), &bitmap_icon_debug, new ViewFactory()}, /* RX ********************************************************************/ {"adsbrx", "ADS-B", RX, Color::green(), &bitmap_icon_adsb, new ViewFactory()}, {"ais", "AIS Boats", RX, Color::green(), &bitmap_icon_ais, new ViewFactory()}, {"aprsrx", "APRS", RX, Color::green(), &bitmap_icon_aprs, new ViewFactory()}, {"audio", "Audio", RX, Color::green(), &bitmap_icon_speaker, new ViewFactory()}, - //{"blecomm", "BLE Comm", RX, ui::Color::orange(), &bitmap_icon_btle, new ViewFactory()}, {"blerx", "BLE Rx", RX, Color::green(), &bitmap_icon_btle, new ViewFactory()}, {"ert", "ERT Meter", RX, Color::green(), &bitmap_icon_ert, new ViewFactory()}, - {"level", "Level", RX, Color::green(), &bitmap_icon_options_radio, new ViewFactory()}, {"pocsag", "POCSAG", RX, Color::green(), &bitmap_icon_pocsag, new ViewFactory()}, {"radiosonde", "Radiosnde", RX, Color::green(), &bitmap_icon_sonde, new ViewFactory()}, - {"recon", "Recon", RX, Color::green(), &bitmap_icon_scanner, new ViewFactory()}, {"search", "Search", RX, Color::yellow(), &bitmap_icon_search, new ViewFactory()}, {"subghzd", "SubGhzD", RX, Color::yellow(), &bitmap_icon_remote, new ViewFactory()}, {"weather", "Weather", RX, Color::green(), &bitmap_icon_thermometer, new ViewFactory()}, - //{"fskrx", "FSK RX", RX, Color::yellow(), &bitmap_icon_remote, new ViewFactory()}, //for JT - //{"dmr", "DMR", RX, Color::dark_grey(), &bitmap_icon_dmr, new ViewFactory()}, - //{"sigfox", "SIGFOX", RX, Color::dark_grey(), &bitmap_icon_fox, new ViewFactory()}, - //{"lora", "LoRa", RX, Color::dark_grey(), &bitmap_icon_lora, new ViewFactory()}, - //{"sstv", "SSTV", RX, Color::dark_grey(), &bitmap_icon_sstv, new ViewFactory()}, - //{"tetra", "TETRA", RX, Color::dark_grey(), &bitmap_icon_tetra, new ViewFactory()}, /* TX ********************************************************************/ - //{"adsbtx", "ADS-B TX", TX, ui::Color::green(), &bitmap_icon_adsb, new ViewFactory()}, {"aprstx", "APRS TX", TX, ui::Color::green(), &bitmap_icon_aprs, new ViewFactory()}, {"bht", "BHT Xy/EP", TX, ui::Color::green(), &bitmap_icon_bht, new ViewFactory()}, {"bletx", "BLE Tx", TX, ui::Color::green(), &bitmap_icon_btle, new ViewFactory()}, @@ -162,20 +146,19 @@ const NavigationView::AppList NavigationView::appList = { {"rdstx", "RDS", TX, ui::Color::green(), &bitmap_icon_rds, new ViewFactory()}, {"soundbrd", "Soundbrd", TX, ui::Color::green(), &bitmap_icon_soundboard, new ViewFactory()}, {"touchtune", "TouchTune", TX, ui::Color::green(), &bitmap_icon_touchtunes, new ViewFactory()}, + {"signalgen", "SignalGen", TX, Color::green(), &bitmap_icon_cwgen, new ViewFactory()}, + /* TRX ********************************************************************/ + {"microphone", "Mic", TRX, Color::green(), &bitmap_icon_microphone, new ViewFactory()}, /* UTILITIES *************************************************************/ - {"antennalength", "Antenna Length", UTILITIES, Color::green(), &bitmap_icon_tools_antenna, new ViewFactory()}, {"filemanager", "File Manager", UTILITIES, Color::green(), &bitmap_icon_dir, new ViewFactory()}, {"freqman", "Freq. Manager", UTILITIES, Color::green(), &bitmap_icon_freqman, new ViewFactory()}, - {"notepad", "Notepad", UTILITIES, Color::dark_cyan(), &bitmap_icon_notepad, new ViewFactory()}, {"iqtrim", "IQ Trim", UTILITIES, Color::orange(), &bitmap_icon_trim, new ViewFactory()}, + {"notepad", "Notepad", UTILITIES, Color::dark_cyan(), &bitmap_icon_notepad, new ViewFactory()}, {nullptr, "SD Over USB", UTILITIES, Color::yellow(), &bitmap_icon_hackrf, new ViewFactory()}, - {"signalgen", "Signal Gen", UTILITIES, Color::green(), &bitmap_icon_cwgen, new ViewFactory()}, + {nullptr, "Debug", UTILITIES, Color::light_grey(), &bitmap_icon_debug, new ViewFactory()}, //{"testapp", "Test App", UTILITIES, Color::dark_grey(), nullptr, new ViewFactory()}, - - {"wavview", "Wav View", UTILITIES, Color::yellow(), &bitmap_icon_soundboard, new ViewFactory()}, // Dangerous apps. {nullptr, "Flash Utility", UTILITIES, Color::red(), &bitmap_icon_peripherals_details, new ViewFactory()}, - {nullptr, "Wipe SD card", UTILITIES, Color::red(), &bitmap_icon_tools_wipesd, new ViewFactory()}, }; const NavigationView::AppMap NavigationView::appMap = generate_app_map(NavigationView::appList); @@ -310,6 +293,15 @@ SystemStatusView::SystemStatusView( this->on_bias_tee(); }; + button_fake_brightness.on_select = [this](ImageButton&) { + set_dirty(); + pmem::toggle_fake_brightness_level(); + refresh(); + if (nullptr != parent()) { + parent()->set_dirty(); // The parent of NavigationView shal be the SystemView + } + }; + button_camera.on_select = [this](ImageButton&) { this->on_camera(); }; @@ -350,12 +342,29 @@ void SystemStatusView::on_battery_data(const BatteryStateMessage* msg) { batt_was_inited = true; refresh(); } + + // Check if charging state changed to charging + static bool was_charging = false; + if (msg->on_charger && !was_charging && pmem::ui_battery_charge_hint()) { + // Only show charging modal when transitioning to charging state + nav_.display_modal( + "CHARGING", + "Screen on while charging?", + YESNO, + [this](bool keep_screen_on) { + if (!keep_screen_on) { + EventDispatcher::set_display_sleep(true); + } + }); + } + was_charging = msg->on_charger; + if (!pmem::ui_hide_numeric_battery()) { battery_text.set_battery(msg->valid_mask, msg->percent, msg->on_charger); } if (!pmem::ui_hide_battery_icon()) { battery_icon.set_battery(msg->valid_mask, msg->percent, msg->on_charger); - }; + } } void SystemStatusView::refresh() { @@ -373,6 +382,7 @@ void SystemStatusView::refresh() { // Display "Disable speaker" icon only if AK4951 Codec which has separate speaker/headphone control if (audio::speaker_disable_supported() && !pmem::ui_hide_speaker()) status_icons.add(&toggle_speaker); + if (!pmem::ui_hide_fake_brightness()) status_icons.add(&button_fake_brightness); if (battery::BatteryManagement::isDetected()) { batt_was_inited = true; if (!pmem::ui_hide_battery_icon()) { @@ -405,6 +415,9 @@ void SystemStatusView::refresh() { button_converter.set_bitmap(pmem::config_updown_converter() ? &bitmap_icon_downconvert : &bitmap_icon_upconvert); button_converter.set_foreground(pmem::config_converter() ? Theme::getInstance()->fg_red->foreground : Theme::getInstance()->fg_light->foreground); + // Fake Brightness + button_fake_brightness.set_foreground(pmem::apply_fake_brightness() ? *Theme::getInstance()->status_active : Theme::getInstance()->fg_light->foreground); + set_dirty(); } @@ -488,7 +501,7 @@ void SystemStatusView::on_camera() { return; for (int i = 0; i < screen_height; i++) { - std::array row; + std::vector row(ui::screen_width); portapack::display.read_pixels({0, i, screen_width, 1}, row); png.write_scanline(row); } @@ -747,7 +760,7 @@ void NavigationView::handle_autostart() { /* Helpers **************************************************************/ -static void add_apps(NavigationView& nav, BtnGridView& grid, app_location_t loc) { +void add_apps(NavigationView& nav, BtnGridView& grid, app_location_t loc) { for (auto& app : NavigationView::appList) { if (app.menuLocation == loc) { grid.add_item({app.displayName, app.iconColor, app.icon, @@ -771,9 +784,9 @@ void add_external_items(NavigationView& nav, app_location_t location, BtnGridVie [&nav]() { nav.display_modal( "Notice", - "External app directory empty;\n" - "see Mayhem wiki and copy apps\n" - "to " + apps_dir.string() + " folder of SD card."); + "Can't read external apps\n" + "Check SD card\n" + "Update SD card content\n"); }}, error_tile_pos); } else { @@ -799,7 +812,7 @@ void add_external_items(NavigationView& nav, app_location_t location, BtnGridVie bool verify_sdcard_format() { FATFS* fs = &sd_card::fs; return (fs->fs_type == FS_FAT32 || fs->fs_type == FS_EXFAT) || !(sd_card::status() == sd_card::Status::Mounted); - /* ^ to satisfy those users that not use an sd*/ + /* ^ to satisfy those users that not use an sd*/ } /* ReceiversMenuView *****************************************************/ @@ -812,9 +825,7 @@ void ReceiversMenuView::on_populate() { if (return_icon) { add_item({"..", Theme::getInstance()->fg_light->foreground, &bitmap_icon_previous, [this]() { nav_.pop(); }}); } - add_apps(nav_, *this, RX); - add_external_items(nav_, app_location_t::RX, *this, return_icon ? 1 : 0); } @@ -828,12 +839,26 @@ void TransmittersMenuView::on_populate() { if (return_icon) { add_items({{"..", Theme::getInstance()->fg_light->foreground, &bitmap_icon_previous, [this]() { nav_.pop(); }}}); } - add_apps(nav_, *this, TX); - add_external_items(nav_, app_location_t::TX, *this, return_icon ? 1 : 0); } +/* TranceiversMenuView **************************************************/ + +TranceiversMenuView::TranceiversMenuView(NavigationView& nav) + : nav_(nav) {} + +void TranceiversMenuView::on_populate() { + bool return_icon = pmem::show_gui_return_icon(); + if (return_icon) { + add_items({{"..", Theme::getInstance()->fg_light->foreground, &bitmap_icon_previous, [this]() { nav_.pop(); }}}); + } + add_apps(nav_, *this, TRX); + // add_external_items(nav_, app_location_t::TRX, *this, return_icon ? 1 : 0); + // this folder doesn't have external apps, comment to prevent pop the err msg. + // NB: when has external app someday, uncomment this. +} + /* UtilitiesMenuView *****************************************************/ UtilitiesMenuView::UtilitiesMenuView(NavigationView& nav) @@ -846,12 +871,26 @@ void UtilitiesMenuView::on_populate() { if (return_icon) { add_items({{"..", Theme::getInstance()->fg_light->foreground, &bitmap_icon_previous, [this]() { nav_.pop(); }}}); } - add_apps(nav_, *this, UTILITIES); - add_external_items(nav_, app_location_t::UTILITIES, *this, return_icon ? 1 : 0); } +/* GamesMenuView ********************************************************/ + +GamesMenuView::GamesMenuView(NavigationView& nav) + : nav_(nav) { + set_max_rows(2); +} + +void GamesMenuView::on_populate() { + bool return_icon = pmem::show_gui_return_icon(); + if (return_icon) { + add_item({"..", Theme::getInstance()->fg_light->foreground, &bitmap_icon_previous, [this]() { nav_.pop(); }}); + } + add_apps(nav_, *this, GAMES); + add_external_items(nav_, app_location_t::GAMES, *this, return_icon ? 1 : 0); +} + /* SystemMenuView ********************************************************/ void SystemMenuView::hackrf_mode(NavigationView& nav) { @@ -869,13 +908,13 @@ void SystemMenuView::hackrf_mode(NavigationView& nav) { SystemMenuView::SystemMenuView(NavigationView& nav) : nav_(nav) { set_max_rows(2); // allow wider buttons - set_arrow_enabled(false); + show_arrows_enabled(false); } void SystemMenuView::on_populate() { if (!verify_sdcard_format()) { add_item({"SDCard Error", Theme::getInstance()->error_dark->foreground, nullptr, [this]() { - nav_.display_modal("Error", "SD Card is not exFAT/FAT32,\nformat to exFAT or FAT32 on PC"); + nav_.display_modal("Error", "SD Card is not exFAT/FAT32"); }}); } add_apps(nav_, *this, HOME); @@ -910,8 +949,8 @@ SystemView::SystemView( add_child(&info_view); info_view.set_parent_rect( - {{0, 19 * 16}, - {parent_rect.width(), info_view_height}}); + {{0, screen_height - 16}, + {screen_width, info_view_height}}); navigation_view.on_view_changed = [this](const View& new_view) { if (!this->navigation_view.is_top()) { @@ -1016,7 +1055,12 @@ SplashScreenView::SplashScreenView(NavigationView& nav) void SplashScreenView::paint(Painter&) { if (!portapack::display.draw_bmp_from_sdcard_file({0, 0}, splash_dot_bmp)) // ^ try draw bmp file from sdcard at (0,0), and the (0,0) already bypassed the status bar, so actual pos is (0, STATUS_BAR_HEIGHT) - portapack::display.draw_bmp_from_bmp_hex_arr({(240 - 230) / 2, (320 - 50) / 2 - 10}, splash_bmp, (const uint8_t[]){0x29, 0x18, 0x16}); + portapack::display.draw_bitmap({0, + screen_height / 2}, + bitmap_titlebar_image.size, + bitmap_titlebar_image.data, + Theme::getInstance()->bg_darkest->foreground, + Theme::getInstance()->bg_darkest->background, 3); // ^ draw BMP HEX arr in firmware, note that the BMP HEX arr only cover the image part (instead of fill the screen with background, this position is located it in the center) } @@ -1111,7 +1155,12 @@ ModalMessageView::ModalMessageView( } void ModalMessageView::paint(Painter& painter) { - if (!compact) portapack::display.draw_bmp_from_bmp_hex_arr({100, 48}, modal_warning_bmp, (const uint8_t[]){0, 0, 0}); + if (!compact) portapack::display.draw_bitmap({screen_width / 2 - 3 * 16 / 2, + screen_height / 2 - 3 * 16 / 2 - 100}, + bitmap_icon_utilities.size, + bitmap_icon_utilities.data, + Theme::getInstance()->bg_darkest->foreground, + Theme::getInstance()->bg_darkest->background, 3); // Break lines. auto lines = split_string(message_, '\n'); diff --git a/firmware/application/ui_navigation.hpp b/firmware/application/ui_navigation.hpp index 80187b555..9a2b878e5 100644 --- a/firmware/application/ui_navigation.hpp +++ b/firmware/application/ui_navigation.hpp @@ -59,6 +59,10 @@ using namespace sd_card; namespace ui { +void add_apps(NavigationView& nav, BtnGridView& grid, app_location_t loc); +void add_external_items(NavigationView& nav, app_location_t location, BtnGridView& grid, uint8_t error_tile_pos); +bool verify_sdcard_format(); + enum modal_t { INFO = 0, YESNO, @@ -280,6 +284,12 @@ class SystemStatusView : public View { Theme::getInstance()->fg_light->foreground, Theme::getInstance()->bg_dark->background}; + ImageButton button_fake_brightness{ + {0, 0, 2 * 8, 1 * 16}, + &bitmap_icon_brightness, + *Theme::getInstance()->status_active, + Theme::getInstance()->bg_dark->background}; + SDCardStatusView sd_card_status_view{ {0, 0 * 16, 2 * 8, 1 * 16}}; @@ -322,7 +332,7 @@ class InformationView : public View { NavigationView& nav_; Rectangle backdrop{ - {0, 0 * 16, 240, 16}, + {0, 0, screen_width, 16}, Theme::getInstance()->bg_darker->background}; Text version{ @@ -330,7 +340,7 @@ class InformationView : public View { VERSION_STRING}; LiveDateTime ltime{ - {86, 0, 19 * 8, 16}}; + {screen_width - 19 * 8, 0, 19 * 8, 16}}; }; class SplashScreenView : public View { @@ -345,7 +355,7 @@ class SplashScreenView : public View { private: NavigationView& nav_; Button button_done{ - {240, 0, 1, 1}, + {screen_width, 0, 1, 1}, ""}; }; @@ -369,6 +379,16 @@ class TransmittersMenuView : public BtnGridView { void on_populate() override; }; +class TranceiversMenuView : public BtnGridView { + public: + TranceiversMenuView(NavigationView& nav); + std::string title() const override { return "Tranceiver"; }; + + private: + NavigationView& nav_; + void on_populate() override; +}; + class UtilitiesMenuView : public BtnGridView { public: UtilitiesMenuView(NavigationView& nav); @@ -379,6 +399,16 @@ class UtilitiesMenuView : public BtnGridView { void on_populate() override; }; +class GamesMenuView : public BtnGridView { + public: + GamesMenuView(NavigationView& nav); + std::string title() const override { return "Games"; }; + + private: + NavigationView& nav_; + void on_populate() override; +}; + class SystemMenuView : public BtnGridView { public: SystemMenuView(NavigationView& nav); diff --git a/firmware/application/ui_sd_card_debug.hpp b/firmware/application/ui_sd_card_debug.hpp index cf2b60b66..4b744a894 100644 --- a/firmware/application/ui_sd_card_debug.hpp +++ b/firmware/application/ui_sd_card_debug.hpp @@ -60,62 +60,62 @@ class SDCardDebugView : public View { }; Text text_format{ - {240 - ((sizeof("Undefined: 255") + 1) * 8), 1 * 16, (sizeof("Undefined: 255") + 1) * 8, 16}, + {screen_width - (int)((sizeof("Undefined: 255") + 1) * 8), 1 * 16, (sizeof("Undefined: 255") + 1) * 8, 16}, "Unknown", }; Text text_csd_value_3{ - {240 - ((8 + 1 + 8) * 8), 3 * 16, (8 * 8), 16}, + {screen_width - ((8 + 1 + 8) * 8), 3 * 16, (8 * 8), 16}, "", }; Text text_csd_value_2{ - {240 - (8 * 8), 3 * 16, (8 * 8), 16}, + {screen_width - (8 * 8), 3 * 16, (8 * 8), 16}, "", }; Text text_csd_value_1{ - {240 - ((8 + 1 + 8) * 8), 4 * 16, (8 * 8), 16}, + {screen_width - ((8 + 1 + 8) * 8), 4 * 16, (8 * 8), 16}, "", }; Text text_csd_value_0{ - {240 - (8 * 8), 4 * 16, (8 * 8), 16}, + {screen_width - (8 * 8), 4 * 16, (8 * 8), 16}, "", }; static constexpr size_t bus_width_characters = 1; Text text_bus_width_value{ - {240 - (bus_width_characters * 8), 5 * 16, (bus_width_characters * 8), 16}, + {screen_width - (int)(bus_width_characters * 8), 5 * 16, (bus_width_characters * 8), 16}, "", }; static constexpr size_t card_type_characters = 13; Text text_card_type_value{ - {240 - (card_type_characters * 8), 6 * 16, (card_type_characters * 8), 16}, + {screen_width - (int)(card_type_characters * 8), 6 * 16, (card_type_characters * 8), 16}, "", }; static constexpr size_t block_size_characters = 5; Text text_block_size_value{ - {240 - (block_size_characters * 8), 8 * 16, (block_size_characters * 8), 16}, + {screen_width - (int)(block_size_characters * 8), 8 * 16, (block_size_characters * 8), 16}, "", }; static constexpr size_t block_count_characters = 9; Text text_block_count_value{ - {240 - (block_count_characters * 8), 9 * 16, (block_count_characters * 8), 16}, + {screen_width - (int)(block_count_characters * 8), 9 * 16, (block_count_characters * 8), 16}, "", }; static constexpr size_t capacity_characters = 10; Text text_capacity_value{ - {240 - (capacity_characters * 8), 10 * 16, (capacity_characters * 8), 16}, + {screen_width - (int)(capacity_characters * 8), 10 * 16, (capacity_characters * 8), 16}, "", }; @@ -129,7 +129,7 @@ class SDCardDebugView : public View { }; Text text_test_write_time_value{ - {240 - (test_write_time_characters * 8), 12 * 16, (test_write_time_characters * 8), 16}, + {screen_width - (int)(test_write_time_characters * 8), 12 * 16, (test_write_time_characters * 8), 16}, "", }; @@ -141,7 +141,7 @@ class SDCardDebugView : public View { }; Text text_test_write_rate_value{ - {240 - (test_write_rate_characters * 8), 13 * 16, (test_write_rate_characters * 8), 16}, + {screen_width - (int)(test_write_rate_characters * 8), 13 * 16, (test_write_rate_characters * 8), 16}, "", }; @@ -155,7 +155,7 @@ class SDCardDebugView : public View { }; Text text_test_read_time_value{ - {240 - (test_read_time_characters * 8), 14 * 16, (test_read_time_characters * 8), 16}, + {screen_width - (int)(test_read_time_characters * 8), 14 * 16, (test_read_time_characters * 8), 16}, "", }; @@ -167,7 +167,7 @@ class SDCardDebugView : public View { }; Text text_test_read_rate_value{ - {240 - (test_read_rate_characters * 8), 15 * 16, (test_read_rate_characters * 8), 16}, + {screen_width - (int)(test_read_rate_characters * 8), 15 * 16, (test_read_rate_characters * 8), 16}, "", }; @@ -178,7 +178,7 @@ class SDCardDebugView : public View { "Test"}; Button button_ok{ - {240 - 96 - 16, 17 * 16, 96, 24}, + {screen_width - 96 - 16, 17 * 16, 96, 24}, "OK"}; }; diff --git a/firmware/application/usb_serial_shell.cpp b/firmware/application/usb_serial_shell.cpp index 1c8fb9df6..64b51d3ca 100644 --- a/firmware/application/usb_serial_shell.cpp +++ b/firmware/application/usb_serial_shell.cpp @@ -182,7 +182,7 @@ static void cmd_screenshot(BaseSequentialStream* chp, int argc, char* argv[]) { return; for (int i = 0; i < ui::screen_height; i++) { - std::array row; + std::vector row(ui::screen_width); portapack::display.read_pixels({0, i, ui::screen_width, 1}, row); png.write_scanline(row); } @@ -199,7 +199,7 @@ static void cmd_screenframe(BaseSequentialStream* chp, int argc, char* argv[]) { evtd->enter_shell_working_mode(); for (int i = 0; i < ui::screen_height; i++) { - std::array row; + std::vector row(ui::screen_width); portapack::display.read_pixels({0, i, ui::screen_width, 1}, row); for (int px = 0; px < ui::screen_width; px += 5) { char buffer[5 * 3 * 2 + 1]; @@ -242,9 +242,9 @@ static void cmd_screenframeshort(BaseSequentialStream* chp, int argc, char* argv char buffer[USBSERIAL_BUFFERS_SIZE]; size_t wp = 0; for (int y = 0; y < ui::screen_height; y++) { - std::array row; + std::vector row(ui::screen_width); portapack::display.read_pixels({0, y, ui::screen_width, 1}, row); - for (int i = 0; i < 240; ++i) { + for (int i = 0; i < ui::screen_width; ++i) { screenbuffer_helper_add(chp, buffer, wp, getChrFromRgb(row[i].r, row[i].g, row[i].b)); } screenbuffer_helper_add(chp, buffer, wp, '\r'); @@ -691,6 +691,9 @@ static void printAppInfo(BaseSequentialStream* chp, ui::AppInfoConsole& element) case TX: chprintf(chp, "[TX]\r\n"); break; + case TRX: + chprintf(chp, "[TRX]\r\n"); + break; case UTILITIES: chprintf(chp, "[UTIL]\r\n"); break; @@ -715,6 +718,9 @@ static void printAppInfo(BaseSequentialStream* chp, const ui::AppInfo& element) case TX: chprintf(chp, "[TX]\r\n"); break; + case TRX: + chprintf(chp, "[TRX]\r\n"); + break; case UTILITIES: chprintf(chp, "[UTIL]\r\n"); break; @@ -1369,6 +1375,13 @@ static void cmd_setfreq(BaseSequentialStream* chp, int argc, char* argv[]) { chprintf(chp, "ok\r\n"); } +static void cmd_getres(BaseSequentialStream* chp, int argc, char* argv[]) { + (void)argc; + (void)argv; + std::string res = to_string_dec_uint(screen_width) + "x" + to_string_dec_uint(screen_height) + "\r\nok\r\n"; + chprintf(chp, res.c_str()); +} + static const ShellCommand commands[] = { {"reboot", cmd_reboot}, {"dfu", cmd_dfu}, @@ -1404,6 +1417,7 @@ static const ShellCommand commands[] = { {"sendpocsag", cmd_sendpocsag}, {"asyncmsg", cmd_asyncmsg}, {"setfreq", cmd_setfreq}, + {"getres", cmd_getres}, {NULL, NULL}}; static const ShellConfig shell_cfg1 = { diff --git a/firmware/baseband/CMakeLists.txt b/firmware/baseband/CMakeLists.txt index 3f8f1af7a..d995932b6 100644 --- a/firmware/baseband/CMakeLists.txt +++ b/firmware/baseband/CMakeLists.txt @@ -397,13 +397,6 @@ set(MODE_CPPSRC ) DeclareTargets(PSON sonde) -### FSK TX - -set(MODE_CPPSRC - proc_fsk.cpp -) -DeclareTargets(PFSK fsktx) - ### FSK RX set(MODE_CPPSRC @@ -411,6 +404,12 @@ set(MODE_CPPSRC ) DeclareTargets(PFSR fskrx) +### FSK TX + +set(MODE_CPPSRC + proc_fsk.cpp +) +DeclareTargets(PFSK fsktx) ### Microphone transmit @@ -668,6 +667,22 @@ DeclareTargets(POSK ookstream) +### WeFax Rx + +set(MODE_CPPSRC + proc_wefaxrx.cpp +) +DeclareTargets(PWFX wefaxrx) + + +### NoaaApt Rx + +set(MODE_CPPSRC + proc_noaaapt_rx.cpp +) +DeclareTargets(PNOA noaaapt_rx) + + ### HackRF "factory" firmware add_custom_command( diff --git a/firmware/baseband/audio_output.cpp b/firmware/baseband/audio_output.cpp index 2a35db70a..52f091369 100644 --- a/firmware/baseband/audio_output.cpp +++ b/firmware/baseband/audio_output.cpp @@ -52,6 +52,31 @@ void AudioOutput::write_unprocessed(const buffer_s16_t& audio) { }); } +void AudioOutput::apt_write(const buffer_s16_t& audio) { + std::array audio_f; + for (size_t i = 0; i < audio.count; i++) { + cur = audio.p[i]; + cur2 = cur * cur; + mag_am = sqrtf(prev2 + cur2 - (2 * prev * cur * cos_theta)) / sin_theta; + audio_f[i] = mag_am * ki; // normalize. + prev = cur; + prev2 = cur2; + } + write(buffer_f32_t{audio_f.data(), audio.count, audio.sampling_rate}); +} + +void AudioOutput::apt_write(const buffer_s16_t& audio, std::array& audio_f) { + for (size_t i = 0; i < audio.count; i++) { + cur = audio.p[i]; + cur2 = cur * cur; + mag_am = sqrtf(prev2 + cur2 - (2 * prev * cur * cos_theta)) / sin_theta; + audio_f[i] = mag_am * ki; // normalize. + prev = cur; + prev2 = cur2; + } + write(buffer_f32_t{audio_f.data(), audio.count, audio.sampling_rate}); +} + void AudioOutput::write(const buffer_s16_t& audio) { std::array audio_f; for (size_t i = 0; i < audio.count; i++) { @@ -72,8 +97,8 @@ void AudioOutput::on_block(const buffer_f32_t& audio) { if (do_processing) { const auto audio_present_now = squelch.execute(audio); - hpf.execute_in_place(audio); - deemph.execute_in_place(audio); + hpf.execute_in_place(audio); // IIRBiquadFilter name is "hpf", but we will call with "hpf-coef" for all except AMFM (WFAX) with "lpf-coef" and notch for WFMAM (NOAA) + deemph.execute_in_place(audio); // IIRBiquadFilter name is "deemph", but we will call LPF de-emphasis or other LPF for WFAM (NOAA). audio_present_history = (audio_present_history << 1) | (audio_present_now ? 1 : 0); audio_present = (audio_present_history != 0); diff --git a/firmware/baseband/audio_output.hpp b/firmware/baseband/audio_output.hpp index 5cbc6de01..b9ccabf86 100644 --- a/firmware/baseband/audio_output.hpp +++ b/firmware/baseband/audio_output.hpp @@ -46,6 +46,8 @@ class AudioOutput { const float squelch_threshold = 0.0f); void write_unprocessed(const buffer_s16_t& audio); + void apt_write(const buffer_s16_t& audio); + void apt_write(const buffer_s16_t& audio, std::array& audio_f); void write(const buffer_s16_t& audio); void write(const buffer_f32_t& audio); @@ -58,6 +60,10 @@ class AudioOutput { private: static constexpr float k = 32768.0f; static constexpr float ki = 1.0f / k; + static constexpr float cos_theta = 0.30901699437494742410f; + static constexpr float sin_theta = 0.95105651629515357212f; + + float cur = 0.0f, cur2 = 0.0f, prev = 0.0f, prev2 = 0.0f, mag_am = 0.0f; BlockDecimator block_buffer_s16{1}; BlockDecimator block_buffer{1}; diff --git a/firmware/baseband/dsp_demodulate.cpp b/firmware/baseband/dsp_demodulate.cpp index 695668a16..b5d45da5a 100644 --- a/firmware/baseband/dsp_demodulate.cpp +++ b/firmware/baseband/dsp_demodulate.cpp @@ -24,6 +24,8 @@ #include "complex.hpp" #include "fxpt_atan2.hpp" #include "utility_m4.hpp" +#include "dsp_hilbert.hpp" +#include "dsp_modulate.hpp" #include @@ -63,12 +65,7 @@ buffer_f32_t SSB::execute( return {dst.p, src.count, src.sampling_rate}; } -/* -static inline float angle_approx_4deg0(const complex32_t t) { - const auto x = static_cast(t.imag()) / static_cast(t.real()); - return 16384.0f * x; -} -*/ + static inline float angle_approx_0deg27(const complex32_t t) { if (t.real()) { const auto x = static_cast(t.imag()) / static_cast(t.real()); @@ -82,6 +79,32 @@ static inline float angle_precise(const complex32_t t) { return atan2f(t.imag(), t.real()); } +buffer_f32_t SSB_FM::execute( // Added to handle AMFM (WFAX, HF weather map ) + const buffer_c16_t& src, // input arg , pointer Complex c16 i,q buffer. + const buffer_f32_t& dst) { // input arg , pointer f32 buffer audio demodulated + complex16_t* src_p = src.p; // removed const ; init src_p pointer with the mem address pointed by src.p. + const auto src_end = &src.p[src.count]; + auto dst_p = dst.p; + float mag_sq_lpf_norm; + + while (src_p < src_end) { + // FM APT audio tone demod: real part (USB-differentiator) and AM tone demodulation + lpf (to remove the subcarrier.) + real_to_complex.execute((src_p++)->real(), mag_sq_lpf_norm); + *(dst_p++) = mag_sq_lpf_norm; // already normalized/32.768f and clipped to +1.0f for the wav file. + + real_to_complex.execute((src_p++)->real(), mag_sq_lpf_norm); + *(dst_p++) = mag_sq_lpf_norm; + + real_to_complex.execute((src_p++)->real(), mag_sq_lpf_norm); + *(dst_p++) = mag_sq_lpf_norm; + + real_to_complex.execute((src_p++)->real(), mag_sq_lpf_norm); + *(dst_p++) = mag_sq_lpf_norm; + } + + return {dst.p, src.count, src.sampling_rate}; +} + buffer_f32_t FM::execute( const buffer_c16_t& src, const buffer_f32_t& dst) { diff --git a/firmware/baseband/dsp_demodulate.hpp b/firmware/baseband/dsp_demodulate.hpp index d965ca080..0b1ce0e2f 100644 --- a/firmware/baseband/dsp_demodulate.hpp +++ b/firmware/baseband/dsp_demodulate.hpp @@ -23,6 +23,7 @@ #define __DSP_DEMODULATE_H__ #include "dsp_types.hpp" +#include "dsp_hilbert.hpp" namespace dsp { namespace demodulate { @@ -47,6 +48,17 @@ class SSB { static constexpr float k = 1.0f / 32768.0f; }; +class SSB_FM { // Added to handle AMFM for WFAX + public: + buffer_f32_t execute( + const buffer_c16_t& src, + const buffer_f32_t& dst); + + private: + static constexpr float k = 1.0f / 32768.0f; + dsp::Real_to_Complex real_to_complex{}; // It is a member variable of SSB_FM. +}; + class FM { public: buffer_f32_t execute( diff --git a/firmware/baseband/dsp_hilbert.cpp b/firmware/baseband/dsp_hilbert.cpp index 642fa3d69..8f62dae85 100644 --- a/firmware/baseband/dsp_hilbert.cpp +++ b/firmware/baseband/dsp_hilbert.cpp @@ -21,6 +21,7 @@ #include "dsp_hilbert.hpp" #include "dsp_sos_config.hpp" +#include "utility_m4.hpp" namespace dsp { @@ -83,4 +84,88 @@ void HilbertTransform::execute(float in, float& out_i, float& out_q) { n = (n + 1) % 4; } +Real_to_Complex::Real_to_Complex() { + // No need to call a separate configuration method like "Real_to_Complex()" externally before using the execute() method + // This is the constructor for the Real_to_Complex class. + // It initializes the member variables and calls the configure function for the sos_input, sos_i, and sos_q filters. + // to ensure the object is ready to use right after instantiation. + + n = 0; + + sos_input.configure(full_band_lpf_config); + sos_i.configure(full_band_lpf_config); + sos_q.configure(full_band_lpf_config); + sos_mag_sq.configure(quarter_band_lpf_config); // for APT LPF subcarrier filter. (1/4 Nyquist fs/2 = 1/4 * 12Khz/2 = 1.5khz) +} + +void Real_to_Complex::execute(float in, float& out_mag_sq_lpf) { + // Full_band LPF means a LP filter with f_cut_off = fs/2; Full band = Full max band = 1/2 * fs_max = 1.0 x f_Nyquist = 1 * fs/2 = fs/2 + float a = 0, b = 0; + float out_i = 0, out_q = 0, out_mag_sq = 0; + // int32_t packed; + + float in_filtered = sos_input.execute(in) * 1.0f; // Anti-aliasing full band LPF, fc = fs/2= 6k, audio filter front-end. + + switch (n) { + case 0: + a = in_filtered; + b = 0; + break; + case 1: + a = 0; + b = -in_filtered; + break; + case 2: + a = -in_filtered; + b = 0; + break; + case 3: + a = 0; + b = in_filtered; + break; + } + + float i = sos_i.execute(a) * 1.0f; // better keep <1.0f to minimize recorded APT(t) black level artifacts.- + float q = sos_q.execute(b) * 1.0f; + + switch (n) { // shifting down -fs4 (fs = 12khz , fs/4 = 3khz) + case 0: + out_i = i; + out_q = q; + break; + case 1: + out_i = -q; + out_q = i; + break; + case 2: + out_i = -i; + out_q = -q; + break; + case 3: + out_i = q; + out_q = -i; + break; + } + + n = (n + 1) % 4; + + /* res = __smuad(val1,val2); p1 = val1[15:0] × val2[15:0] + p2 = val1[31:16] × val2[31:16] + res[31:0] = p1 + p2 + return res; */ + + // Not strict Magnitude complex calculation, it is a cross multiplication (lower 16 bit real x lower 16 imag) + 0 (higher 16 bits comp), + // but better visual results comparing real magnitude calculation, (better map diagonal lines reproduction, and less artifacts in APT signal(t) + out_mag_sq = __SMUAD(out_i, out_q); // "cross-magnitude" of the complex (out_i + j out_q) + out_mag_sq_lpf = sos_mag_sq.execute((out_mag_sq)) * 2.0f; // LPF quater band = 1.5khz APT signal + + out_mag_sq_lpf /= 32768.0f; // normalize ; + // Compress clipping positive APT signal [-1.5 ..1.5] input , converted to [-1.0 ...1.0] with "S" compressor gain shape. + if (out_mag_sq_lpf > 1.0f) { + out_mag_sq_lpf = 1.0f; // clipped signal at +1.0f, APT signal is positive, no need to clip -1.0 + } else { + out_mag_sq_lpf = out_mag_sq_lpf * (1.5f - ((out_mag_sq_lpf * out_mag_sq_lpf) / 2.0f)); + } +} + } /* namespace dsp */ diff --git a/firmware/baseband/dsp_hilbert.hpp b/firmware/baseband/dsp_hilbert.hpp index 8aad9ea9c..11596a5dd 100644 --- a/firmware/baseband/dsp_hilbert.hpp +++ b/firmware/baseband/dsp_hilbert.hpp @@ -39,6 +39,19 @@ class HilbertTransform { SOSFilter<5> sos_q = {}; }; +class Real_to_Complex { + public: + Real_to_Complex(); // Additional initialization + void execute(float in, float& out_mag_sq_lpf); + + private: + uint8_t n = 0; + SOSFilter<5> sos_input = {}; + SOSFilter<5> sos_i = {}; + SOSFilter<5> sos_q = {}; + SOSFilter<5> sos_mag_sq = {}; +}; + } /* namespace dsp */ #endif /*__DSP_HILBERT_H__*/ diff --git a/firmware/baseband/proc_adsbrx.cpp b/firmware/baseband/proc_adsbrx.cpp index 2b5c5cf83..5c6aa943d 100644 --- a/firmware/baseband/proc_adsbrx.cpp +++ b/firmware/baseband/proc_adsbrx.cpp @@ -73,13 +73,8 @@ void ADSBRXProcessor::execute(const buffer_c8_t& buffer) { // Perform additional check on the first byte. if (bit_count == 8) { - // Abandon all frames that aren't DF17 or DF18 extended squitters. - uint8_t df = (byte >> 3); - if (df != 17 && df != 18) { - decoding = false; - bit = (prev_mag > mag) ? 1 : 0; - frame.clear(); - } + // try to receive all frames instead + msg_len = (byte & 0x80) ? 112 : 56; // determine message len by type } } } diff --git a/firmware/baseband/proc_adsbrx.hpp b/firmware/baseband/proc_adsbrx.hpp index 3e65a345a..381ab7538 100644 --- a/firmware/baseband/proc_adsbrx.hpp +++ b/firmware/baseband/proc_adsbrx.hpp @@ -40,7 +40,7 @@ class ADSBRXProcessor : public BasebandProcessor { private: static constexpr size_t baseband_fs = 2'000'000; - static constexpr size_t msg_len = 112; + size_t msg_len{112}; ADSBFrame frame{}; bool configured{false}; diff --git a/firmware/baseband/proc_am_audio.cpp b/firmware/baseband/proc_am_audio.cpp index a1304c464..95cbe3b58 100644 --- a/firmware/baseband/proc_am_audio.cpp +++ b/firmware/baseband/proc_am_audio.cpp @@ -27,6 +27,7 @@ #include "event_m4.hpp" #include +#include "dsp_hilbert.hpp" void NarrowbandAMAudio::execute(const buffer_c8_t& buffer) { if (!configured) { @@ -44,16 +45,30 @@ void NarrowbandAMAudio::execute(const buffer_c8_t& buffer) { // TODO: Feed channel_stats post-decimation data? feed_channel_stats(channel_out); - auto audio = demodulate(channel_out); + auto audio = demodulate(channel_out); // now 3 AM demodulation types : demod_am, demod_ssb, demod_ssb_fm (for Wefax) audio_compressor.execute_in_place(audio); audio_output.write(audio); } buffer_f32_t NarrowbandAMAudio::demodulate(const buffer_c16_t& channel) { - if (modulation_ssb) { - return demod_ssb.execute(channel, audio_buffer); - } else { - return demod_am.execute(channel, audio_buffer); + switch (modulation_ssb) { // enum class Modulation : int32_t {DSB = 0, SSB = 1, SSB_FM = 2} + case (int)(AMConfigureMessage::Modulation::DSB): + return demod_am.execute(channel, audio_buffer); + break; + + case (int)(AMConfigureMessage::Modulation::SSB): + return demod_ssb.execute(channel, audio_buffer); + break; + + case (int)(AMConfigureMessage::Modulation::SSB_FM): // Added to handle Weather Fax mode. + // chDbgPanic("case SSB_FM demodulation"); // Debug. + return demod_ssb_fm.execute(channel, audio_buffer); // Calling a derivative of demod_ssb (USB) , but with different FIR taps + FM audio tones demod. + break; + + // return demod am as a default + default: + return demod_am.execute(channel, audio_buffer); + break; } } @@ -97,9 +112,10 @@ void NarrowbandAMAudio::configure(const AMConfigureMessage& message) { channel_filter_low_f = message.channel_filter.low_frequency_normalized * channel_filter_input_fs; channel_filter_high_f = message.channel_filter.high_frequency_normalized * channel_filter_input_fs; channel_filter_transition = message.channel_filter.transition_normalized * channel_filter_input_fs; - channel_spectrum.set_decimation_factor(1.0f); - modulation_ssb = (message.modulation == AMConfigureMessage::Modulation::SSB); - audio_output.configure(message.audio_hpf_config); + + modulation_ssb = (int)message.modulation; // now sending by message , 3 types of AM demod : enum class Modulation : int32_t {DSB = 0, SSB = 1, SSB_FM = 2} + channel_spectrum.set_decimation_factor(message.channel_spectrum_decimation_factor); + audio_output.configure(message.audio_hpf_lpf_config); // hpf in all AM demod modes (AM-6K/9K, USB/LSB,DSB), except Wefax (lpf there). configured = true; } diff --git a/firmware/baseband/proc_am_audio.hpp b/firmware/baseband/proc_am_audio.hpp index d63481186..8f651bb5b 100644 --- a/firmware/baseband/proc_am_audio.hpp +++ b/firmware/baseband/proc_am_audio.hpp @@ -63,9 +63,11 @@ class NarrowbandAMAudio : public BasebandProcessor { int32_t channel_filter_transition = 0; bool configured{false}; - bool modulation_ssb = false; + // bool modulation_ssb = false; // Origianlly we only had 2 AM demod types {DSB = 0, SSB = 1} , and we could handle it with bool var , 1 bit. + int8_t modulation_ssb = 0; // Now we have 3 AM demod types we will send now index integer {DSB = 0, SSB = 1, SSB_FM = 2} dsp::demodulate::AM demod_am{}; dsp::demodulate::SSB demod_ssb{}; + dsp::demodulate::SSB_FM demod_ssb_fm{}; // added for Wfax mode. FeedForwardCompressor audio_compressor{}; AudioOutput audio_output{}; diff --git a/firmware/baseband/proc_btlerx.cpp b/firmware/baseband/proc_btlerx.cpp index c8432aa93..e8ff7eafa 100644 --- a/firmware/baseband/proc_btlerx.cpp +++ b/firmware/baseband/proc_btlerx.cpp @@ -27,7 +27,16 @@ #include "event_m4.hpp" -uint32_t BTLERxProcessor::crc_init_reorder(uint32_t crc_init) { +inline float BTLERxProcessor::get_phase_diff(const complex16_t& sample0, const complex16_t& sample1) { + // Calculate the phase difference between two samples. + float dI = sample1.real() * sample0.real() + sample1.imag() * sample0.imag(); + float dQ = sample1.imag() * sample0.real() - sample1.real() * sample0.imag(); + float phase_diff = atan2f(dQ, dI); + + return phase_diff; +} + +inline uint32_t BTLERxProcessor::crc_init_reorder(uint32_t crc_init) { int i; uint32_t crc_init_tmp, crc_init_input, crc_init_input_tmp; @@ -53,7 +62,7 @@ uint32_t BTLERxProcessor::crc_init_reorder(uint32_t crc_init) { return (crc_init_tmp); } -uint_fast32_t BTLERxProcessor::crc_update(uint_fast32_t crc, const void* data, size_t data_len) { +inline uint_fast32_t BTLERxProcessor::crc_update(uint_fast32_t crc, const void* data, size_t data_len) { const unsigned char* d = (const unsigned char*)data; unsigned int tbl_idx; @@ -67,7 +76,7 @@ uint_fast32_t BTLERxProcessor::crc_update(uint_fast32_t crc, const void* data, s return crc & 0xffffff; } -uint_fast32_t BTLERxProcessor::crc24_byte(uint8_t* byte_in, int num_byte, uint32_t init_hex) { +inline uint_fast32_t BTLERxProcessor::crc24_byte(uint8_t* byte_in, int num_byte, uint32_t init_hex) { uint_fast32_t crc = init_hex; crc = crc_update(crc, byte_in, num_byte); @@ -75,7 +84,7 @@ uint_fast32_t BTLERxProcessor::crc24_byte(uint8_t* byte_in, int num_byte, uint32 return (crc); } -bool BTLERxProcessor::crc_check(uint8_t* tmp_byte, int body_len, uint32_t crc_init) { +inline bool BTLERxProcessor::crc_check(uint8_t* tmp_byte, int body_len, uint32_t crc_init) { int crc24_checksum; crc24_checksum = crc24_byte(tmp_byte, body_len, crc_init); // 0x555555 --> 0xaaaaaa. maybe because byte order @@ -87,7 +96,7 @@ bool BTLERxProcessor::crc_check(uint8_t* tmp_byte, int body_len, uint32_t crc_in return (crc24_checksum != checksumReceived); } -void BTLERxProcessor::scramble_byte(uint8_t* byte_in, int num_byte, const uint8_t* scramble_table_byte, uint8_t* byte_out) { +inline void BTLERxProcessor::scramble_byte(uint8_t* byte_in, int num_byte, const uint8_t* scramble_table_byte, uint8_t* byte_out) { int i; for (i = 0; i < num_byte; i++) { @@ -95,7 +104,7 @@ void BTLERxProcessor::scramble_byte(uint8_t* byte_in, int num_byte, const uint8_ } } -int BTLERxProcessor::verify_payload_byte(int num_payload_byte, ADV_PDU_TYPE pdu_type) { +inline int BTLERxProcessor::verify_payload_byte(int num_payload_byte, ADV_PDU_TYPE pdu_type) { // Should at least have 6 bytes for the MAC Address. // Also ensuring that there is at least 1 byte of data. if (num_payload_byte <= 6) { @@ -122,120 +131,125 @@ int BTLERxProcessor::verify_payload_byte(int num_payload_byte, ADV_PDU_TYPE pdu_ return 0; } -void BTLERxProcessor::handleBeginState() { - int num_symbol_left = dst_buffer.count / SAMPLE_PER_SYMBOL; // One buffer sample consist of I and Q. +inline void BTLERxProcessor::resetOffsetTracking() { + frequency_offset = 0.0f; + frequency_offset_estimate = 0.0f; + phase_buffer_index = 0; + memset(phase_buffer, 0, sizeof(phase_buffer)); +} - static uint8_t demod_buf_access[SAMPLE_PER_SYMBOL][LEN_DEMOD_BUF_ACCESS]; +inline void BTLERxProcessor::resetBitPacketIndex() { + memset(rb_buf, 0, sizeof(rb_buf)); + packet_index = 0; + bit_index = 0; +} - uint32_t uint32_tmp = DEFAULT_ACCESS_ADDR; - uint8_t accessAddrBits[LEN_DEMOD_BUF_ACCESS]; +inline void BTLERxProcessor::resetToDefaultState() { + parseState = Parse_State_Begin; + resetOffsetTracking(); + resetBitPacketIndex(); + crc_init_internal = crc_init_reorder(crc_initalVale); +} - uint32_t accesssAddress = 0; +inline void BTLERxProcessor::demodulateFSKBits(int num_demod_byte) { + for (; packet_index < num_demod_byte; packet_index++) { + for (; bit_index < 8; bit_index++) { + if (samples_eaten >= (int)dst_buffer.count) { + return; + } - // Filling up addressBits with the access address we are looking to find. - for (int i = 0; i < 32; i++) { - accessAddrBits[i] = 0x01 & uint32_tmp; - uint32_tmp = (uint32_tmp >> 1); + float phaseSum = 0.0f; + for (int k = 0; k < SAMPLE_PER_SYMBOL; ++k) { + float phase = get_phase_diff( + dst_buffer.p[samples_eaten + k], + dst_buffer.p[samples_eaten + k + 1]); + phaseSum += phase; + } + + // phaseSum /= (SAMPLE_PER_SYMBOL); + // phaseSum -= frequency_offset; + + /* + alternate method. faster, but less precise. with this, you need to check against this: if (samples_eaten >= (int)dst_buffer.count + SAMPLE_PER_SYMBOL) (not so good...) + int I0 = dst_buffer.p[samples_eaten].real(); + int Q0 = dst_buffer.p[samples_eaten].imag(); + int I1 = dst_buffer.p[samples_eaten + 1 * SAMPLE_PER_SYMBOL].real(); + int Q1 = dst_buffer.p[samples_eaten + 1 * SAMPLE_PER_SYMBOL].imag(); + bool bitDecision = (I0 * Q1 - I1 * Q0) > 0 ? 1 : 0; + */ + + bool bitDecision = (phaseSum > 0.0f); + rb_buf[packet_index] = rb_buf[packet_index] | (bitDecision << bit_index); + + samples_eaten += SAMPLE_PER_SYMBOL; + } + + bit_index = 0; } +} + +inline void BTLERxProcessor::handleBeginState() { + uint32_t validAccessAddress = DEFAULT_ACCESS_ADDR; + static uint32_t accesssAddress = 0; - const int demod_buf_len = LEN_DEMOD_BUF_ACCESS; // For AA - int demod_buf_offset = 0; int hit_idx = (-1); - bool unequal_flag = false; - memset(demod_buf_access, 0, SAMPLE_PER_SYMBOL * demod_buf_len); - - for (int i = 0; i < num_symbol_left * SAMPLE_PER_SYMBOL; i += SAMPLE_PER_SYMBOL) { - int sp = ((demod_buf_offset - demod_buf_len + 1) & (demod_buf_len - 1)); + for (int i = samples_eaten; i < (int)dst_buffer.count; i += SAMPLE_PER_SYMBOL) { + float phaseDiff = 0; for (int j = 0; j < SAMPLE_PER_SYMBOL; j++) { - // Sample and compare with the adjacent next sample. - int I0 = dst_buffer.p[i + j].real(); - int Q0 = dst_buffer.p[i + j].imag(); - int I1 = dst_buffer.p[i + j + 1].real(); - int Q1 = dst_buffer.p[i + j + 1].imag(); - - int phase_idx = j; - - demod_buf_access[phase_idx][demod_buf_offset] = (I0 * Q1 - I1 * Q0) > 0 ? 1 : 0; - - int k = sp; - unequal_flag = false; - - accesssAddress = 0; - - for (int p = 0; p < demod_buf_len; p++) { - if (demod_buf_access[phase_idx][k] != accessAddrBits[p]) { - unequal_flag = true; - hit_idx = (-1); - break; - } - - accesssAddress = (accesssAddress & (~(1 << p))) | (demod_buf_access[phase_idx][k] << p); - - k = ((k + 1) & (demod_buf_len - 1)); - } - - if (unequal_flag == false) { - hit_idx = (i + j - (demod_buf_len - 1) * SAMPLE_PER_SYMBOL); - break; - } + phaseDiff += get_phase_diff(dst_buffer.p[i + j], dst_buffer.p[i + j + 1]); } - if (unequal_flag == false) { + // disabled, due to not used anywhere + /* phase_buffer[phase_buffer_index] = phaseDiff / (SAMPLE_PER_SYMBOL); + phase_buffer_index = (phase_buffer_index + 1) % ROLLING_WINDOW; + */ + + bool bitDecision = (phaseDiff > 0); + + accesssAddress = (accesssAddress >> 1 | (bitDecision << 31)); + + int errors = __builtin_popcount(accesssAddress ^ validAccessAddress) & 0xFFFFFFFF; + + if (!errors) { + hit_idx = i + SAMPLE_PER_SYMBOL; + + // disabled, due to not used anywhere + /* for (int k = 0; k < ROLLING_WINDOW; k++) { + frequency_offset_estimate += phase_buffer[k]; + } + frequency_offset = frequency_offset_estimate / ROLLING_WINDOW; + */ + break; } - - demod_buf_offset = ((demod_buf_offset + 1) & (demod_buf_len - 1)); } if (hit_idx == -1) { // Process more samples. + samples_eaten = (int)dst_buffer.count + 1; return; } - symbols_eaten += hit_idx; - - symbols_eaten += (8 * NUM_ACCESS_ADDR_BYTE * SAMPLE_PER_SYMBOL); // move to the beginning of PDU header - - num_symbol_left = num_symbol_left - symbols_eaten; + samples_eaten += hit_idx; parseState = Parse_State_PDU_Header; } -void BTLERxProcessor::handlePDUHeaderState() { - int num_demod_byte = 2; // PDU header has 2 octets - - symbols_eaten += 8 * num_demod_byte * SAMPLE_PER_SYMBOL; - - if (symbols_eaten > (int)dst_buffer.count) { +inline void BTLERxProcessor::handlePDUHeaderState() { + if (samples_eaten > (int)dst_buffer.count) { return; } - // Jump back down to the beginning of PDU header. - sample_idx = symbols_eaten - (8 * num_demod_byte * SAMPLE_PER_SYMBOL); + demodulateFSKBits(NUM_PDU_HEADER_BYTE); - packet_index = 0; - - for (int i = 0; i < num_demod_byte; i++) { - rb_buf[packet_index] = 0; - - for (int j = 0; j < 8; j++) { - int I0 = dst_buffer.p[sample_idx].real(); - int Q0 = dst_buffer.p[sample_idx].imag(); - int I1 = dst_buffer.p[sample_idx + 1].real(); - int Q1 = dst_buffer.p[sample_idx + 1].imag(); - - bit_decision = (I0 * Q1 - I1 * Q0) > 0 ? 1 : 0; - rb_buf[packet_index] = rb_buf[packet_index] | (bit_decision << j); - - sample_idx += SAMPLE_PER_SYMBOL; - } - - packet_index++; + if (packet_index < NUM_PDU_HEADER_BYTE || bit_index != 0) { + resetToDefaultState(); + return; } - scramble_byte(rb_buf, num_demod_byte, scramble_table[channel_number], rb_buf); + scramble_byte(rb_buf, 2, scramble_table[channel_number], rb_buf); pdu_type = (ADV_PDU_TYPE)(rb_buf[0] & 0x0F); // uint8_t tx_add = ((rb_buf[0] & 0x40) != 0); @@ -244,38 +258,25 @@ void BTLERxProcessor::handlePDUHeaderState() { // Not a valid Advertise Payload. if ((payload_len < 6) || (payload_len > 37)) { - parseState = Parse_State_Begin; + resetToDefaultState(); return; } else { parseState = Parse_State_PDU_Payload; } } -void BTLERxProcessor::handlePDUPayloadState() { - int i; - int num_demod_byte = (payload_len + 3); - symbols_eaten += 8 * num_demod_byte * SAMPLE_PER_SYMBOL; +inline void BTLERxProcessor::handlePDUPayloadState() { + const int num_demod_byte = (payload_len + 3); - if (symbols_eaten > (int)dst_buffer.count) { + if (samples_eaten > (int)dst_buffer.count) { return; } - for (i = 0; i < num_demod_byte; i++) { - rb_buf[packet_index] = 0; + demodulateFSKBits(num_demod_byte + NUM_PDU_HEADER_BYTE); - for (int j = 0; j < 8; j++) { - int I0 = dst_buffer.p[sample_idx].real(); - int Q0 = dst_buffer.p[sample_idx].imag(); - int I1 = dst_buffer.p[sample_idx + 1].real(); - int Q1 = dst_buffer.p[sample_idx + 1].imag(); - - bit_decision = (I0 * Q1 - I1 * Q0) > 0 ? 1 : 0; - rb_buf[packet_index] = rb_buf[packet_index] | (bit_decision << j); - - sample_idx += SAMPLE_PER_SYMBOL; - } - - packet_index++; + if (packet_index < (num_demod_byte + NUM_PDU_HEADER_BYTE) || bit_index != 0) { + resetToDefaultState(); + return; } scramble_byte(rb_buf + 2, num_demod_byte, scramble_table[channel_number] + 2, rb_buf + 2); @@ -310,6 +311,8 @@ void BTLERxProcessor::handlePDUPayloadState() { // Skip Header Byte and MAC Address uint8_t startIndex = 8; + int i; + for (i = 0; i < payload_len - 6; i++) { blePacketData.data[i] = rb_buf[startIndex++]; } @@ -322,46 +325,50 @@ void BTLERxProcessor::handlePDUPayloadState() { } } - parseState = Parse_State_Begin; + resetToDefaultState(); } void BTLERxProcessor::execute(const buffer_c8_t& buffer) { if (!configured) return; - // Pulled this implementation from channel_stats_collector.c to time slice a specific packet's dB. + // a less computationally expensive method + max_dB = -128; uint32_t max_squared = 0; - + int8_t imag = 0; + int8_t real = 0; void* src_p = buffer.p; - while (src_p < &buffer.p[buffer.count]) { const uint32_t sample = *__SIMD32(src_p)++; const uint32_t mag_sq = __SMUAD(sample, sample); if (mag_sq > max_squared) { max_squared = mag_sq; + imag = ((complex8_t*)src_p)->imag(); + real = ((complex8_t*)src_p)->real(); } } - const float max_squared_f = max_squared; - max_dB = mag2_to_dbv_norm(max_squared_f * (1.0f / (32768.0f * 32768.0f))); + max_dB = mag2_to_dbm_8bit_normalized(real, imag, 1.0f, 50.0f); // 4Mhz 2048 samples // Decimated by 4 to achieve 2048/4 = 512 samples at 1 sample per symbol. decim_0.execute(buffer, dst_buffer); feed_channel_stats(dst_buffer); - symbols_eaten = 0; + samples_eaten = 0; - // Handle parsing based on parseState - if (parseState == Parse_State_Begin) { - handleBeginState(); - } + while (samples_eaten < (int)dst_buffer.count) { + // Handle parsing based on parseState + if (parseState == Parse_State_Begin) { + handleBeginState(); + } - if (parseState == Parse_State_PDU_Header) { - handlePDUHeaderState(); - } + if (parseState == Parse_State_PDU_Header) { + handlePDUHeaderState(); + } - if (parseState == Parse_State_PDU_Payload) { - handlePDUPayloadState(); + if (parseState == Parse_State_PDU_Payload) { + handlePDUPayloadState(); + } } } @@ -372,11 +379,9 @@ void BTLERxProcessor::on_message(const Message* const message) { void BTLERxProcessor::configure(const BTLERxConfigureMessage& message) { channel_number = message.channel_number; - decim_0.configure(taps_BTLE_1M_PHY_decim_0.taps); + decim_0.configure(taps_BTLE_Dual_PHY.taps); configured = true; - - crc_init_internal = crc_init_reorder(crc_initalVale); } int main() { diff --git a/firmware/baseband/proc_btlerx.hpp b/firmware/baseband/proc_btlerx.hpp index d1e6fec8c..3f0aa7f4e 100644 --- a/firmware/baseband/proc_btlerx.hpp +++ b/firmware/baseband/proc_btlerx.hpp @@ -47,6 +47,8 @@ class BTLERxProcessor : public BasebandProcessor { static constexpr int LEN_DEMOD_BUF_ACCESS{32}; static constexpr uint32_t DEFAULT_ACCESS_ADDR{0x8E89BED6}; static constexpr int NUM_ACCESS_ADDR_BYTE{4}; + static constexpr int NUM_PDU_HEADER_BYTE{2}; + static constexpr int ROLLING_WINDOW{32}; enum Parse_State { Parse_State_Begin = 0, @@ -81,8 +83,8 @@ class BTLERxProcessor : public BasebandProcessor { }; static constexpr size_t baseband_fs = 4000000; - static constexpr size_t audio_fs = baseband_fs / 8 / 8 / 2; + float get_phase_diff(const complex16_t& sample0, const complex16_t& sample1); uint_fast32_t crc_update(uint_fast32_t crc, const void* data, size_t data_len); uint_fast32_t crc24_byte(uint8_t* byte_in, int num_byte, uint32_t init_hex); bool crc_check(uint8_t* tmp_byte, int body_len, uint32_t crc_init); @@ -95,6 +97,12 @@ class BTLERxProcessor : public BasebandProcessor { // void demod_byte(int num_byte, uint8_t *out_byte); int verify_payload_byte(int num_payload_byte, ADV_PDU_TYPE pdu_type); + void resetOffsetTracking(); + void resetBitPacketIndex(); + void resetToDefaultState(); + + void demodulateFSKBits(int num_demod_byte); + void handleBeginState(); void handlePDUHeaderState(); void handlePDUPayloadState(); @@ -120,13 +128,18 @@ class BTLERxProcessor : public BasebandProcessor { BlePacketData blePacketData{}; Parse_State parseState{Parse_State_Begin}; - uint16_t packet_index{0}; - int sample_idx{0}; - int symbols_eaten{0}; + int samples_eaten{0}; uint8_t bit_decision{0}; uint8_t payload_len{0}; uint8_t pdu_type{0}; int32_t max_dB{0}; + uint16_t packet_index{0}; + uint8_t bit_index{0}; + + float frequency_offset_estimate{0.0f}; + float frequency_offset{0.0f}; + float phase_buffer[ROLLING_WINDOW] = {0.0f}; + int phase_buffer_index = 0; /* NB: Threads should be the last members in the class definition. */ BasebandThread baseband_thread{baseband_fs, this, baseband::Direction::Receive}; diff --git a/firmware/baseband/proc_fsk_rx.cpp b/firmware/baseband/proc_fsk_rx.cpp index 0bd1b0b81..930df3bf7 100644 --- a/firmware/baseband/proc_fsk_rx.cpp +++ b/firmware/baseband/proc_fsk_rx.cpp @@ -24,6 +24,7 @@ */ #include "proc_fsk_rx.hpp" +#include "dsp_decimate.hpp" #include "event_m4.hpp" @@ -32,135 +33,253 @@ #include #include -using namespace std; -using namespace dsp::decimate; +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif -namespace { -/* Count of bits that differ between the two values. */ -uint8_t diff_bit_count(uint32_t left, uint32_t right) { - uint32_t diff = left ^ right; - uint8_t count = 0; - for (size_t i = 0; i < sizeof(diff) * 8; ++i) { - if (((diff >> i) & 0x1) == 1) - ++count; +float FSKRxProcessor::detect_peak_power(const buffer_c8_t& buffer, int N) { + int32_t power = 0; + + // Initial window power + for (int i = 0; i < N; i++) { + int16_t i_sample = buffer.p[i].real(); + int16_t q_sample = buffer.p[i].imag(); + power += i_sample * i_sample + q_sample * q_sample; } - return count; -} -} // namespace + power = power / N; -/* AudioNormalizer ***************************************/ + // Convert to dB over noise floor + float power_db = 10.0f * log10f((float)power / noise_floor); -void AudioNormalizer::execute_in_place(const buffer_f32_t& audio) { - // Decay min/max every second (@24kHz). - if (counter_ >= 24'000) { - // 90% decay factor seems to work well. - // This keeps large transients from wrecking the filter. - max_ *= 0.9f; - min_ *= 0.9f; - counter_ = 0; - calculate_thresholds(); - } + // If too weak, treat as no signal + if (power_db <= 0.0f) return 0; - counter_ += audio.count; - - for (size_t i = 0; i < audio.count; ++i) { - auto& val = audio.p[i]; - - if (val > max_) { - max_ = val; - calculate_thresholds(); - } - if (val < min_) { - min_ = val; - calculate_thresholds(); - } - - if (val >= t_hi_) - val = 1.0f; - else if (val <= t_lo_) - val = -1.0f; - else - val = 0.0; - } + return power_db; } -void AudioNormalizer::calculate_thresholds() { - auto center = (max_ + min_) / 2.0f; - auto range = (max_ - min_) / 2.0f; +void FSKRxProcessor::agc_correct_iq(const buffer_c8_t& buffer, int N, float measured_power) { + float power_db = 10.0f * log10f(measured_power / noise_floor); + float error_db = target_power_db - power_db; - // 10% off center force either +/-1.0f. - // Higher == larger dead zone. - // Lower == more false positives. - auto threshold = range * 0.1; - t_hi_ = center + threshold; - t_lo_ = center - threshold; -} - -/* FSKRxProcessor ******************************************/ - -void FSKRxProcessor::clear_data_bits() { - data = 0; - bit_count = 0; -} - -void FSKRxProcessor::handle_sync(bool inverted) { - clear_data_bits(); - has_sync_ = true; - inverted = inverted; - word_count = 0; -} - -void FSKRxProcessor::process_bits(const buffer_c8_t& buffer) { - // Process all of the bits in the bits queue. - while (buffer.count > 0) { - // Wait until data_ is full. - if (bit_count < data_bit_count) - continue; - - // Wait for the sync frame. - if (!has_sync_) { - if (diff_bit_count(data, sync_codeword) <= 2) - handle_sync(/*inverted=*/false); - else if (diff_bit_count(data, ~sync_codeword) <= 2) - handle_sync(/*inverted=*/true); - continue; - } - } -} - -/* FSKRxProcessor ***************************************/ - -FSKRxProcessor::FSKRxProcessor() { -} - -void FSKRxProcessor::execute(const buffer_c8_t& buffer) { - if (!configured) { + if (error_db <= 0) { return; } - // Decimate by current decim 0 and decim 1. + float gain_scalar = powf(10.0f, error_db / 20.0f); + + for (int i = 0; i < N; i++) { + buffer.p[i] = {(int8_t)(buffer.p[i].real() * gain_scalar), (int8_t)(buffer.p[i].imag() * gain_scalar)}; + } +} + +float FSKRxProcessor::get_phase_diff(const complex16_t& sample0, const complex16_t& sample1) { + // Calculate the phase difference between two samples. + float dI = sample1.real() * sample0.real() + sample1.imag() * sample0.imag(); + float dQ = sample1.imag() * sample0.real() - sample1.real() * sample0.imag(); + float phase_diff = atan2f(dQ, dI); + + return phase_diff; +} + +void FSKRxProcessor::demodulateFSKBits(const buffer_c16_t& decimator_out, int num_demod_byte) { + for (; packet_index < num_demod_byte; packet_index++) { + for (; bit_index < 8; bit_index++) { + if (samples_eaten >= (int)decimator_out.count) { + return; + } + + float phaseSum = 0.0f; + for (int k = 0; k < SAMPLE_PER_SYMBOL - 1; ++k) { + float phase = get_phase_diff( + decimator_out.p[samples_eaten + k], + decimator_out.p[samples_eaten + k + 1]); + phaseSum += phase; + } + + phaseSum /= (SAMPLE_PER_SYMBOL - 1); + phaseSum -= frequency_offset; + + bool bitDecision = (phaseSum > 0.0f); + + rb_buf[packet_index] |= (bitDecision << (7 - bit_index)); + + samples_eaten += SAMPLE_PER_SYMBOL; + } + + bit_index = 0; + } +} + +void FSKRxProcessor::resetPreambleTracking() { + frequency_offset = 0.0f; + frequency_offset_estimate = 0.0f; + phase_buffer_index = 0; + memset(phase_buffer, 0, sizeof(phase_buffer)); +} + +void FSKRxProcessor::resetBitPacketIndex() { + packet_index = 0; + bit_index = 0; +} + +void FSKRxProcessor::resetToDefaultState() { + parseState = Parse_State_Wait_For_Peak; + peak_timeout = 0; + fskPacketData.power = 0.0f; + resetPreambleTracking(); + resetBitPacketIndex(); +} + +void FSKRxProcessor::handlePreambleState(const buffer_c16_t& decimator_out) { + const uint32_t validPreamble = DEFAULT_PREAMBLE; + static uint32_t preambleValue = 0; + + int hit_idx = -1; + + for (; samples_eaten < (int)decimator_out.count; samples_eaten += SAMPLE_PER_SYMBOL) { + float phaseSum = 0.0f; + + for (int j = 0; j < SAMPLE_PER_SYMBOL - 1; j++) { + phaseSum += get_phase_diff(decimator_out.p[samples_eaten + j], decimator_out.p[samples_eaten + j + 1]); + } + + phase_buffer[phase_buffer_index] = phaseSum / (SAMPLE_PER_SYMBOL - 1); + phase_buffer_index = (phase_buffer_index + 1) % ROLLING_WINDOW; + + bool bitDecision = (phaseSum > 0.0f); + preambleValue = (preambleValue << 1) | bitDecision; + + int errors = __builtin_popcountl(preambleValue ^ validPreamble) & 0xFFFFFFFF; + + if (errors == 0) { + hit_idx = samples_eaten + SAMPLE_PER_SYMBOL; + fskPacketData.syncWord = preambleValue; + fskPacketData.max_dB = max_dB; + + for (int k = 0; k < ROLLING_WINDOW; k++) { + frequency_offset_estimate += phase_buffer[k]; + } + + frequency_offset = frequency_offset_estimate / ROLLING_WINDOW; + + fskPacketData.frequency_offset_hz = (frequency_offset * demod_input_fs) / (2.0f * M_PI); + + preambleValue = 0; + break; + } + } + + if (hit_idx == -1) { + samples_eaten = samples_eaten; + return; + } + + samples_eaten = hit_idx; + parseState = Parse_State_Sync; +} + +void FSKRxProcessor::handleSyncWordState(const buffer_c16_t& decimator_out) { + const int syncword_bytes = 4; + const uint32_t validSyncWord = DEFAULT_SYNC_WORD; + + if ((int)decimator_out.count - samples_eaten <= 0) { + return; + } + + demodulateFSKBits(decimator_out, syncword_bytes); + + if (packet_index < syncword_bytes || bit_index != 0) { + return; + } + + uint32_t receivedSyncWord = (rb_buf[0] << 24) | (rb_buf[1] << 16) | (rb_buf[2] << 8) | rb_buf[3]; + + int errors = __builtin_popcountl(receivedSyncWord ^ validSyncWord) & 0xFFFFFFFF; + + if (errors <= 3) { + fskPacketData.syncWord = receivedSyncWord; + parseState = Parse_State_PDU_Payload; + memset(fskPacketData.data, 0, sizeof(fskPacketData.data)); + } else { + resetToDefaultState(); + } + + memset(rb_buf, 0, sizeof(rb_buf)); + resetBitPacketIndex(); +} + +void FSKRxProcessor::handlePDUPayloadState(const buffer_c16_t& decimator_out) { + if ((int)decimator_out.count - samples_eaten <= 0) { + return; + } + + demodulateFSKBits(decimator_out, NUM_DATA_BYTE); + + if (packet_index < NUM_DATA_BYTE || bit_index != 0) { + return; + } + + fskPacketData.dataLen = NUM_DATA_BYTE; + + // Copy the decoded bits to the packet data + for (int i = 0; i < NUM_DATA_BYTE; i++) { + fskPacketData.data[i] |= rb_buf[i]; + } + + FSKRxPacketMessage data_message{&fskPacketData}; + shared_memory.application_queue.push(data_message); + + memset(rb_buf, 0, sizeof(rb_buf)); + + resetToDefaultState(); +} + +void FSKRxProcessor::execute(const buffer_c8_t& buffer) { + if (!configured || parseState == Parse_State_Parsing_Data) return; + const auto decim_0_out = decim_0.execute(buffer, dst_buffer); const auto decim_1_out = decim_1.execute(decim_0_out, dst_buffer); feed_channel_stats(decim_1_out); - spectrum_samples += decim_1_out.count; + samples_eaten = 0; - if (spectrum_samples >= spectrum_interval_samples) { - spectrum_samples -= spectrum_interval_samples; - channel_spectrum.feed(decim_1_out, channel_filter_low_f, - channel_filter_high_f, channel_filter_transition); - } + while ((int)decim_1_out.count - samples_eaten > 0) { + if ((parseState == Parse_State_Wait_For_Peak) || (parseState == Parse_State_Preamble)) { + float power = detect_peak_power(buffer, buffer.count); - // process_bits(); + if (power) { + parseState = Parse_State_Preamble; + agc_power = power; + fskPacketData.power = power; + } else { + break; + } + } - // Update the status. - samples_processed += buffer.count; + if (agc_power) { + agc_correct_iq(buffer, buffer.count, agc_power); + } - if (samples_processed >= stat_update_threshold) { - // send_packet(data); - samples_processed -= stat_update_threshold; + if (parseState == Parse_State_Preamble) { + peak_timeout++; + + // 960,000 fs / 2048 samples = 468.75 Hz, so 55 calls is about 0.053 seconds before timeout. + if (peak_timeout == 4) { + resetToDefaultState(); + } else { + handlePreambleState(decim_1_out); + } + } + + if (parseState == Parse_State_Sync) { + handleSyncWordState(decim_1_out); + } + + if (parseState == Parse_State_PDU_Payload) { + handlePDUPayloadState(decim_1_out); + } } } @@ -171,7 +290,7 @@ void FSKRxProcessor::on_message(const Message* const message) { break; case Message::ID::UpdateSpectrum: case Message::ID::SpectrumStreamingConfig: - channel_spectrum.on_message(message); + // channel_spectrum.on_message(message); break; case Message::ID::SampleRateConfig: @@ -179,7 +298,7 @@ void FSKRxProcessor::on_message(const Message* const message) { break; case Message::ID::CaptureConfig: - capture_config(*reinterpret_cast(message)); + // capture_config(*reinterpret_cast(message)); break; default: @@ -188,83 +307,65 @@ void FSKRxProcessor::on_message(const Message* const message) { } void FSKRxProcessor::configure(const FSKRxConfigureMessage& message) { - // Extract message variables. - deviation = message.deviation; - channel_decimation = message.channel_decimation; - // channel_filter_taps = message.channel_filter; - - channel_spectrum.set_decimation_factor(1); -} - -void FSKRxProcessor::capture_config(const CaptureConfigMessage& message) { - if (message.config) { - audio_output.set_stream(std::make_unique(message.config)); - } else { - audio_output.set_stream(nullptr); - } + SAMPLE_PER_SYMBOL = message.samplesPerSymbol; + DEFAULT_SYNC_WORD = message.syncWord; + NUM_SYNC_WORD_BYTE = message.syncWordLength; + DEFAULT_PREAMBLE = message.preamble; + NUM_PREAMBLE_BYTE = message.preambleLength; + NUM_DATA_BYTE = message.numDataBytes; } void FSKRxProcessor::sample_rate_config(const SampleRateConfigMessage& message) { const auto sample_rate = message.sample_rate; - // The actual sample rate is the requested rate * the oversample rate. - // See oversample.hpp for more details on oversampling. baseband_fs = sample_rate * toUType(message.oversample_rate); baseband_thread.set_sampling_rate(baseband_fs); - // TODO: Do we need to use the taps that the decimators get configured with? channel_filter_low_f = taps_200k_decim_1.low_frequency_normalized * sample_rate; channel_filter_high_f = taps_200k_decim_1.high_frequency_normalized * sample_rate; channel_filter_transition = taps_200k_decim_1.transition_normalized * sample_rate; - // Compute the scalar that corrects the oversample_rate to be x8 when computing - // the spectrum update interval. The original implementation only supported x8. - // TODO: Why is this needed here but not in proc_replay? There must be some other - // assumption about x8 oversampling in some component that makes this necessary. const auto oversample_correction = toUType(message.oversample_rate) / 8.0; // The spectrum update interval controls how often the waterfall is fed new samples. spectrum_interval_samples = sample_rate / (spectrum_rate_hz * oversample_correction); spectrum_samples = 0; - // For high sample rates, the M4 is busy collecting samples so the - // waterfall runs slower. Reduce the update interval so it runs faster. - // NB: Trade off: looks nicer, but more frequent updates == more CPU. if (sample_rate >= 1'500'000) spectrum_interval_samples /= (sample_rate / 750'000); switch (message.oversample_rate) { case OversampleRate::x4: // M4 can't handle 2 decimation passes for sample rates needing x4. - decim_0.set().configure(taps_200k_decim_0.taps); + decim_0.set().configure(taps_200k_decim_0.taps); decim_1.set(); break; case OversampleRate::x8: // M4 can't handle 2 decimation passes for sample rates <= 600k. if (message.sample_rate < 600'000) { - decim_0.set().configure(taps_200k_decim_0.taps); - decim_1.set().configure(taps_200k_decim_1.taps); + decim_0.set().configure(taps_200k_decim_0.taps); + decim_1.set().configure(taps_200k_decim_1.taps); } else { // Using 180k taps to provide better filtering with a single pass. - decim_0.set().configure(taps_180k_wfm_decim_0.taps); + decim_0.set().configure(taps_180k_wfm_decim_0.taps); decim_1.set(); } break; case OversampleRate::x16: - decim_0.set().configure(taps_200k_decim_0.taps); - decim_1.set().configure(taps_200k_decim_1.taps); + decim_0.set().configure(taps_200k_decim_0.taps); + decim_1.set().configure(taps_200k_decim_1.taps); break; case OversampleRate::x32: - decim_0.set().configure(taps_200k_decim_0.taps); - decim_1.set().configure(taps_16k0_decim_1.taps); + decim_0.set().configure(taps_200k_decim_0.taps); + decim_1.set().configure(taps_16k0_decim_1.taps); break; case OversampleRate::x64: - decim_0.set().configure(taps_200k_decim_0.taps); - decim_1.set().configure(taps_16k0_decim_1.taps); + decim_0.set().configure(taps_200k_decim_0.taps); + decim_1.set().configure(taps_16k0_decim_1.taps); break; default: @@ -282,33 +383,12 @@ void FSKRxProcessor::sample_rate_config(const SampleRateConfigMessage& message) // size_t channel_filter_input_fs = decim_1_output_fs; // size_t channel_filter_output_fs = channel_filter_input_fs / channel_decimation; - size_t demod_input_fs = decim_1_output_fs; - - send_packet((uint32_t)demod_input_fs); + demod_input_fs = decim_1_output_fs; // Set ready to process data. configured = true; } -void FSKRxProcessor::flush() { - // word_extractor.flush(); -} - -void FSKRxProcessor::reset() { - clear_data_bits(); - has_sync_ = false; - inverted = false; - word_count = 0; - - samples_processed = 0; -} - -void FSKRxProcessor::send_packet(uint32_t data) { - data_message.is_data = true; - data_message.value = data; - shared_memory.application_queue.push(data_message); -} - /* main **************************************************/ int main() { diff --git a/firmware/baseband/proc_fsk_rx.hpp b/firmware/baseband/proc_fsk_rx.hpp index 25c790af2..fecbf0075 100644 --- a/firmware/baseband/proc_fsk_rx.hpp +++ b/firmware/baseband/proc_fsk_rx.hpp @@ -30,7 +30,6 @@ #include "dsp_decimate.hpp" #include "dsp_demodulate.hpp" -#include "dsp_iir_config.hpp" #include "dsp_fir_taps.hpp" #include "spectrum_collector.hpp" @@ -46,21 +45,6 @@ #include #include -/* Normalizes audio stream to +/-1.0f */ -class AudioNormalizer { - public: - void execute_in_place(const buffer_f32_t& audio); - - private: - void calculate_thresholds(); - - uint32_t counter_ = 0; - float min_ = 99.0f; - float max_ = -99.0f; - float t_hi_ = 1.0; - float t_lo_ = 1.0; -}; - /* A decimator that just returns the source buffer. */ class NoopDecim { public: @@ -111,44 +95,92 @@ class MultiDecimator { class FSKRxProcessor : public BasebandProcessor { public: - FSKRxProcessor(); void execute(const buffer_c8_t& buffer) override; void on_message(const Message* const message) override; private: - size_t baseband_fs = 1024000; // aka: sample_rate + static constexpr int ROLLING_WINDOW{32}; + static constexpr uint16_t MAX_BUFFER_SIZE{512}; + + enum Parse_State { + Parse_State_Wait_For_Peak = 0, + Parse_State_Preamble, + Parse_State_Sync, + Parse_State_PDU_Payload, + Parse_State_Parsing_Data + }; + + size_t baseband_fs = 960000; uint8_t stat_update_interval = 10; uint32_t stat_update_threshold = baseband_fs / stat_update_interval; - static constexpr auto spectrum_rate_hz = 50.0f; + + float detect_peak_power(const buffer_c8_t& buffer, int N); + void agc_correct_iq(const buffer_c8_t& buffer, int N, float measured_power); + float get_phase_diff(const complex16_t& sample0, const complex16_t& sample1); + void demodulateFSKBits(const buffer_c16_t& decimator_out, int num_demod_byte); + void resetPreambleTracking(); + void resetBitPacketIndex(); + void resetToDefaultState(); + + void handlePreambleState(const buffer_c16_t& decimator_out); + void handleSyncWordState(const buffer_c16_t& decimator_out); + void handlePDUPayloadState(const buffer_c16_t& decimator_out); void configure(const FSKRxConfigureMessage& message); - void capture_config(const CaptureConfigMessage& message); void sample_rate_config(const SampleRateConfigMessage& message); - void flush(); - void reset(); - void send_packet(uint32_t data); - void process_bits(const buffer_c8_t& buffer); - void clear_data_bits(); - void handle_sync(bool inverted); - - /* Returns true if the batch has as sync frame. */ - bool has_sync() const { return has_sync_; } - - /* Set once app is ready to receive messages. */ - bool configured = false; - - /* Buffer for decimated IQ data. */ - std::array dst{}; + std::array dst{}; const buffer_c16_t dst_buffer{ dst.data(), dst.size()}; - /* Buffer for demodulated audio. */ - std::array audio{}; - const buffer_f32_t audio_buffer{audio.data(), audio.size()}; + uint8_t rb_buf[MAX_BUFFER_SIZE]; + + dsp::demodulate::FM demod{}; + int rb_head{-1}; + int32_t g_threshold{0}; + uint8_t channel_number{0}; + + uint16_t process = 0; + + bool configured{false}; + FskPacketData fskPacketData{}; + + Parse_State parseState{Parse_State_Wait_For_Peak}; + + int sample_idx{0}; + int samples_eaten{0}; + + int32_t max_dB{0}; + int8_t real{0}; + int8_t imag{0}; + + uint16_t peak_timeout{0}; + float noise_floor{12.0}; // Using LNA 40 and VGA 20. 10.0 was 40/0 ratio. + float target_power_db{5.0}; + float agc_power{0.0f}; + + float frequency_offset_estimate{0.0f}; + float frequency_offset{0.0f}; + float phase_buffer[ROLLING_WINDOW] = {0.0f}; + int phase_buffer_index = 0; + + uint16_t packet_index{0}; + uint8_t bit_index{0}; + size_t demod_input_fs{0}; + + uint8_t SAMPLE_PER_SYMBOL{1}; + uint32_t DEFAULT_PREAMBLE{0xAAAAAAAA}; + uint32_t DEFAULT_SYNC_WORD{0xFFFFFFFF}; + uint8_t NUM_SYNC_WORD_BYTE{4}; + uint8_t NUM_PREAMBLE_BYTE{4}; + uint16_t NUM_DATA_BYTE = MAX_BUFFER_SIZE - NUM_SYNC_WORD_BYTE - NUM_PREAMBLE_BYTE; + + SpectrumCollector channel_spectrum{}; + size_t spectrum_interval_samples = 0; + size_t spectrum_samples = 0; + static constexpr auto spectrum_rate_hz = 50.0f; - /* The actual type will be configured depending on the sample rate. */ MultiDecimator< dsp::decimate::FIRC8xR16x24FS4Decim4, dsp::decimate::FIRC8xR16x24FS4Decim8> @@ -159,9 +191,7 @@ class FSKRxProcessor : public BasebandProcessor { NoopDecim> decim_1{}; - /* Filter to 24kHz and demodulate. */ dsp::decimate::FIRAndDecimateComplex channel_filter{}; - size_t deviation = 3750; // fir_taps_real<32> channel_filter_taps = 0; size_t channel_decimation = 2; int32_t channel_filter_low_f = 0; @@ -172,51 +202,6 @@ class FSKRxProcessor : public BasebandProcessor { FMSquelch squelch{}; uint64_t squelch_history = 0; - // /* LPF to reduce noise. POCSAG supports 2400 baud, but that falls - // * nicely into the transition band of this 1800Hz filter. - // * scipy.signal.butter(2, 1800, "lowpass", fs=24000, analog=False) */ - // IIRBiquadFilter lpf{{{0.04125354f, 0.082507070f, 0.04125354f}, - // {1.00000000f, -1.34896775f, 0.51398189f}}}; - - /* Attempts to de-noise and normalize signal. */ - AudioNormalizer normalizer{}; - - /* Handles writing audio stream to hardware. */ - AudioOutput audio_output{}; - - /* Holds the data sent to the app. */ - AFSKDataMessage data_message{false, 0}; - - /* Used to keep track of how many samples were processed - * between status update messages. */ - uint32_t samples_processed = 0; - - /* Number of bits in 'data_' member. */ - static constexpr uint8_t data_bit_count = sizeof(uint32_t) * 8; - - /* Sync frame codeword. */ - static constexpr uint32_t sync_codeword = 0x12345678; - - /* When true, sync frame has been received. */ - bool has_sync_ = false; - - /* When true, bit vales are flipped in the codewords. */ - bool inverted = false; - - uint32_t data = 0; - uint8_t bit_count = 0; - uint8_t word_count = 0; - - /* LPF to reduce noise. POCSAG supports 2400 baud, but that falls - * nicely into the transition band of this 1800Hz filter. - * scipy.signal.butter(2, 1800, "lowpass", fs=24000, analog=False) */ - IIRBiquadFilter lpf{{{0.04125354f, 0.082507070f, 0.04125354f}, - {1.00000000f, -1.34896775f, 0.51398189f}}}; - - SpectrumCollector channel_spectrum{}; - size_t spectrum_interval_samples = 0; - size_t spectrum_samples = 0; - /* NB: Threads should be the last members in the class definition. */ BasebandThread baseband_thread{baseband_fs, this, baseband::Direction::Receive}; RSSIThread rssi_thread{}; diff --git a/firmware/baseband/proc_jammer.cpp b/firmware/baseband/proc_jammer.cpp index 893e49035..cce46029a 100644 --- a/firmware/baseband/proc_jammer.cpp +++ b/firmware/baseband/proc_jammer.cpp @@ -1,6 +1,7 @@ /* * Copyright (C) 2014 Jared Boone, ShareBrained Technology, Inc. * Copyright (C) 2016 Furrtek + * Copyright (C) 2025 RocketGod - Added modes from my Flipper Zero RF Jammer App - https://betaskynet.com * * This file is part of PortaPack. * @@ -26,22 +27,26 @@ #include "event_m4.hpp" #include +#include +#include + +#ifndef M_PI +#define M_PI 3.14159265358979323846f +#endif void JammerProcessor::execute(const buffer_c8_t& buffer) { if (!configured) return; for (size_t i = 0; i < buffer.count; i++) { if (!jammer_duration) { - // Find next enabled range do { current_range++; if (current_range == JAMMER_MAX_CH) current_range = 0; } while (!jammer_channels[current_range].enabled); jammer_duration = jammer_channels[current_range].duration; - jammer_bw = jammer_channels[current_range].width / 2; // TODO: Exact value + jammer_bw = jammer_channels[current_range].width / 2; - // Ask for retune message.freq = jammer_channels[current_range].center; message.range = current_range; shared_memory.application_queue.push(message); @@ -49,26 +54,51 @@ void JammerProcessor::execute(const buffer_c8_t& buffer) { jammer_duration--; } - // Phase noise if (!period_counter) { period_counter = noise_period; - if (noise_type == JammerType::TYPE_FSK) { + if (noise_type == jammer::JammerType::TYPE_FSK) { sample = (sample + lfsr) >> 1; - } else if (noise_type == JammerType::TYPE_TONE) { - tone_delta = 150000 + (lfsr >> 9); // Approx 100Hz to 6kHz - } else if (noise_type == JammerType::TYPE_SWEEP) { - sample++; // This is like saw wave FM + } else if (noise_type == jammer::JammerType::TYPE_TONE) { + tone_delta = 150000 + (lfsr >> 9); + } else if (noise_type == jammer::JammerType::TYPE_SWEEP) { + sample++; + } else if (noise_type == jammer::JammerType::TYPE_RANDOM) { + sample = lfsr & 0xFF; + } else if (noise_type == jammer::JammerType::TYPE_SINE) { + wave_phase += 0x01000000; + sample = sine_table_i8[(wave_phase >> 24) & 0xFF]; + } else if (noise_type == jammer::JammerType::TYPE_SQUARE) { + wave_index = (wave_index + 1) % 2; + sample = wave_index ? 127 : -128; + } else if (noise_type == jammer::JammerType::TYPE_SAWTOOTH) { + wave_index = (wave_index + 1) % 256; + sample = (wave_index * 127) / 255 - 128; + } else if (noise_type == jammer::JammerType::TYPE_TRIANGLE) { + wave_index = (wave_index + 1) % 256; + sample = (wave_index < 128 ? wave_index : (255 - wave_index)) * 127 / 127 - 128; + } else if (noise_type == jammer::JammerType::TYPE_CHIRP) { + chirp_freq += 0.01f; + if (chirp_freq > 1.0f) chirp_freq = 0.0f; + wave_phase += static_cast(0x01000000 * (1.0f + chirp_freq)); + sample = sine_table_i8[(wave_phase >> 24) & 0xFF]; + } else if (noise_type == jammer::JammerType::TYPE_GAUSSIAN) { + float u1 = static_cast(lfsr & 0xFFFF) / 0x10000; + float u2 = static_cast((lfsr >> 16) & 0xFFFF) / 0x10000; + float gaussian = std::sqrt(-2.0f * std::log(u1)) * std::cos(2 * M_PI * u2); + sample = static_cast(gaussian * 32); + } else if (noise_type == jammer::JammerType::TYPE_BRUTEFORCE) { + sample = 127; } feedback = ((lfsr >> 31) ^ (lfsr >> 29) ^ (lfsr >> 15) ^ (lfsr >> 11)) & 1; lfsr = (lfsr << 1) | feedback; - if (!lfsr) lfsr = 0x1337; // Shouldn't do this :( + if (!lfsr) lfsr = 0x1337; } else { period_counter--; } - if (noise_type == JammerType::TYPE_TONE) { + if (noise_type == jammer::JammerType::TYPE_TONE) { aphase += tone_delta; sample = sine_table_i8[(aphase & 0xFF000000) >> 24]; } @@ -78,12 +108,12 @@ void JammerProcessor::execute(const buffer_c8_t& buffer) { phase += delta; sphase = phase + (64 << 24); - re = (sine_table_i8[(sphase & 0xFF000000) >> 24]); - im = (sine_table_i8[(phase & 0xFF000000) >> 24]); + re = sine_table_i8[(sphase & 0xFF000000) >> 24]; + im = sine_table_i8[(phase & 0xFF000000) >> 24]; buffer.p[i] = {re, im}; } -}; +} void JammerProcessor::on_message(const Message* const msg) { if (msg->id == Message::ID::JammerConfigure) { @@ -93,12 +123,18 @@ void JammerProcessor::on_message(const Message* const msg) { jammer_channels = (JammerChannel*)shared_memory.bb_data.data; noise_type = message.type; noise_period = 3072000 / message.speed; - if (noise_type == JammerType::TYPE_SWEEP) + if (noise_type == jammer::JammerType::TYPE_SWEEP || noise_type == jammer::JammerType::TYPE_SINE || + noise_type == jammer::JammerType::TYPE_SQUARE || noise_type == jammer::JammerType::TYPE_SAWTOOTH || + noise_type == jammer::JammerType::TYPE_TRIANGLE || noise_type == jammer::JammerType::TYPE_CHIRP || + noise_type == jammer::JammerType::TYPE_GAUSSIAN || noise_type == jammer::JammerType::TYPE_BRUTEFORCE) noise_period >>= 8; period_counter = 0; jammer_duration = 0; current_range = 0; lfsr = 0xDEAD0012; + wave_phase = 0; + wave_index = 0; + chirp_freq = 0.0f; configured = true; } else { diff --git a/firmware/baseband/proc_jammer.hpp b/firmware/baseband/proc_jammer.hpp index e9fa45c5d..2919bae21 100644 --- a/firmware/baseband/proc_jammer.hpp +++ b/firmware/baseband/proc_jammer.hpp @@ -1,6 +1,7 @@ /* * Copyright (C) 2014 Jared Boone, ShareBrained Technology, Inc. * Copyright (C) 2016 Furrtek + * Copyright (C) 2025 RocketGod - Added modes from my Flipper Zero RF Jammer App - https://betaskynet.com * * This file is part of PortaPack. * @@ -27,6 +28,8 @@ #include "baseband_thread.hpp" #include "portapack_shared_memory.hpp" #include "jammer.hpp" +#include +#include using namespace jammer; @@ -50,9 +53,11 @@ class JammerProcessor : public BasebandProcessor { uint32_t aphase{0}, phase{0}, delta{0}, sphase{0}; int8_t sample{0}; int8_t re{0}, im{0}; + uint32_t wave_phase{0}; + uint32_t wave_index{0}; + float chirp_freq{0.0f}; RetuneMessage message{}; - /* NB: Threads should be the last members in the class definition. */ BasebandThread baseband_thread{3072000, this, baseband::Direction::Transmit}; }; diff --git a/firmware/baseband/proc_noaaapt_rx.cpp b/firmware/baseband/proc_noaaapt_rx.cpp new file mode 100644 index 000000000..091eb2700 --- /dev/null +++ b/firmware/baseband/proc_noaaapt_rx.cpp @@ -0,0 +1,180 @@ +/* + * Copyright (C) 2025 Brumi, HTotoo + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "proc_noaaapt_rx.hpp" +#include "sine_table_int8.hpp" +#include "portapack_shared_memory.hpp" + +#include "audio_dma.hpp" +#include "math.h" +#include "event_m4.hpp" +#include "fxpt_atan2.hpp" + +#include +#include + +#define NOAAAPT_PX_SIZE 2080.0 + +// updates the per pixel timers +void NoaaAptRx::update_params() { + // TODO HTOTOO + // 2080 px / line with chan a,b + sync + telemetry + pxRem = (double)12000.0 / NOAAAPT_PX_SIZE / 2.0; + samples_per_pixel = pxRem; + pxRem -= samples_per_pixel; + pxRoll = 0; + status_message.state = 0; + shared_memory.application_queue.push(status_message); +} + +void NoaaAptRx::execute(const buffer_c8_t& buffer) { + if (!configured) { + return; + } + const auto decim_0_out = decim_0.execute(buffer, dst_buffer); + const auto channel = decim_1.execute(decim_0_out, dst_buffer); + // TODO: Feed channel_stats post-decimation data? + feed_channel_stats(channel); + + /* spectrum_samples += channel.count; + if (spectrum_samples >= spectrum_interval_samples) { + spectrum_samples -= spectrum_interval_samples; + channel_spectrum.feed(channel, channel_filter_low_f, channel_filter_high_f, channel_filter_transition); + } + */ + /* 96kHz complex[64] for wfmam NOAA + * -> FM demodulation + * -> 96kHz int16_t[64] */ + auto audio_oversampled = demod.execute(channel, work_audio_buffer); // fs 384khz wfm , 96khz wfmam for NOAA + /* 96kHz int16_t[64] for wfam + * -> 4th order CIC decimation by 2, gain of 1 + * -> 48kHz int16_t[32] */ + auto audio_4fs = audio_dec_1.execute(audio_oversampled, work_audio_buffer); + /* 48kHz int16_t[32] for wfman + * -> 4th order CIC decimation by 2, gain of 1 + * -> 24kHz int16_t[16] */ + auto audio_2fs = audio_dec_2.execute(audio_4fs, work_audio_buffer); + /* 24kHz int16_t[16] for wfmam + * -> FIR filter, <4.5kHz (0.1875fs) pass, >5.2kHz (0.2166fs) stop, gain of 1 + * -> 12kHz int16_t[8] */ + auto audio = audio_filter.execute(audio_2fs, work_audio_buffer); + /* -> 12kHz int16_t[8] for wfmam , */ + std::array audio_f; + audio_output.apt_write(audio, audio_f); // we are in added wfmam (noaa), decim_1.decimation_factor == 8 + + for (size_t c = 0; c < audio.count; c++) { + if (status_message.state == 0 && false) { // disabled this due to NIY + // first look for the sync! + + } else { + cnt++; + if (cnt >= (samples_per_pixel + (uint32_t)pxRoll)) { // got a pixel + cnt = 0; + if (pxRoll >= 1) pxRoll -= 1.0; + pxRoll += pxRem; + + if (image_message.cnt < 400) { + if (audio_f[c] >= 1) { + image_message.image[image_message.cnt++] = 255; + } else if (audio_f[c] <= 0) { + image_message.image[image_message.cnt++] = 0; + } else { + image_message.image[image_message.cnt++] = (audio_f[c]) * 255; + } + } + if (image_message.cnt >= 399) { + shared_memory.application_queue.push(image_message); + image_message.cnt = 0; + if (status_message.state != 2) { + status_message.state = 2; + shared_memory.application_queue.push(status_message); + } + } + } + } + } +} + +void NoaaAptRx::on_message(const Message* const message) { + switch (message->id) { + case Message::ID::UpdateSpectrum: + case Message::ID::SpectrumStreamingConfig: + // channel_spectrum.on_message(message); + break; + + case Message::ID::NoaaAptRxConfigure: + configure(*reinterpret_cast(message)); + break; + + case Message::ID::CaptureConfig: + capture_config(*reinterpret_cast(message)); + break; + + default: + break; + } +} + +void NoaaAptRx::configure(const NoaaAptRxConfigureMessage& message) { + (void)message; + constexpr size_t decim_0_input_fs = baseband_fs; + constexpr size_t decim_0_output_fs = decim_0_input_fs / decim_0.decimation_factor; + constexpr size_t decim_1_input_fs = decim_0_output_fs; + + decim_0.configure(taps_16k0_decim_0.taps); + + // decim_1.configure(message.decim_1_filter.taps); // Original . + // TODO dynamic decim1 , with decimation 2 / 8 and 16 x taps , / 32 taps . + // Temptatively , I splitted, in two WidebandFMAudio::configure_wfm / WidebandFMAudio::configure_wfmam and dynamically /2, /8 . (here /8) + // decim_1.set().configure(message.decim_1_filter.taps); // for wfm + // decim_1.set().configure(message.decim_1_filter.taps); // for wfmam + decim_1.configure(taps_38k_wfmam_decim_1.taps); // for wfmam + size_t decim_1_output_fs = decim_1_input_fs / decim_1.decimation_factor; // wfmam, decim_1.decimation_factor() = /8 ,if applied after the line, decim_1.set().configure(message.decim_1_filter.taps); + size_t demod_input_fs = decim_1_output_fs; + + // spectrum_interval_samples = decim_1_output_fs / spectrum_rate_hz; + // spectrum_samples = 0; + + channel_filter_low_f = taps_38k_wfmam_decim_1.low_frequency_normalized * decim_1_input_fs; + channel_filter_high_f = taps_38k_wfmam_decim_1.high_frequency_normalized * decim_1_input_fs; + channel_filter_transition = taps_38k_wfmam_decim_1.transition_normalized * decim_1_input_fs; + demod.configure(demod_input_fs, 17000); + audio_filter.configure(taps_64_bpf_2k4_bw_2k.taps); + audio_output.configure(apt_audio_12k_notch_2k4_config, apt_audio_12k_lpf_2000hz_config); + // channel_spectrum.set_decimation_factor(1); + update_params(); + configured = true; +} + +void NoaaAptRx::capture_config(const CaptureConfigMessage& message) { + if (message.config) { + audio_output.set_stream(std::make_unique(message.config)); + } else { + audio_output.set_stream(nullptr); + } +} + +int main() { + audio::dma::init_audio_out(); + EventDispatcher event_dispatcher{std::make_unique()}; + event_dispatcher.run(); + return 0; +} diff --git a/firmware/baseband/proc_noaaapt_rx.hpp b/firmware/baseband/proc_noaaapt_rx.hpp new file mode 100644 index 000000000..2798ab34a --- /dev/null +++ b/firmware/baseband/proc_noaaapt_rx.hpp @@ -0,0 +1,124 @@ +/* + * Copyright (C) 2025 Brumi, HTotoo + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __PROC_NOAAAPTRX_H__ +#define __PROC_NOAAAPTRX_H__ + +#include "baseband_processor.hpp" +#include "baseband_thread.hpp" +#include "rssi_thread.hpp" + +#include "dsp_decimate.hpp" +#include "dsp_demodulate.hpp" +#include "dsp_iir.hpp" +#include "audio_compressor.hpp" + +#include "audio_output.hpp" +#include "spectrum_collector.hpp" + +#include + +class NoaaAptRx : public BasebandProcessor { + public: + void execute(const buffer_c8_t& buffer) override; + void on_message(const Message* const message) override; + + private: + void update_params(); + // todo rethink + + uint32_t samples_per_pixel = 0; + + // to exactly match the pixel / samples. + double pxRem = 0; // if has remainder, it'll store it + double pxRoll = 0; // summs remainders, so won't misalign + + uint32_t cnt = 0; // signal counter + uint16_t sync_cnt = 0; + uint16_t syncnot_cnt = 0; + + static constexpr size_t baseband_fs = 3072000; + static constexpr auto spectrum_rate_hz = 50.0f; + + std::array dst{}; + const buffer_c16_t dst_buffer{ + dst.data(), + dst.size()}; + // work_audio_buffer and dst_buffer use the same data pointer + const buffer_s16_t work_audio_buffer{ + (int16_t*)dst.data(), + sizeof(dst) / sizeof(int16_t)}; + + std::array complex_audio{}; + const buffer_c16_t complex_audio_buffer{ + complex_audio.data(), + complex_audio.size()}; + + dsp::decimate::FIRC8xR16x24FS4Decim4 decim_0{}; + // dsp::decimate::FIRC16xR16x16Decim2 decim_1{}; //original condition , before adding wfmam + + // decim_1 will handle different types of FIR filters depending on selection. + dsp::decimate::FIRC16xR16x32Decim8 decim_1{}; + + // dsp::decimate::FIRC16xR16x32Decim8 decim_1{}; // For FMAM + + int32_t channel_filter_low_f = 0; + int32_t channel_filter_high_f = 0; + int32_t channel_filter_transition = 0; + + dsp::demodulate::FM demod{}; + dsp::decimate::DecimateBy2CIC4Real audio_dec_1{}; + dsp::decimate::DecimateBy2CIC4Real audio_dec_2{}; + dsp::decimate::FIR64AndDecimateBy2Real audio_filter{}; + + AudioOutput audio_output{}; + + // For fs=96kHz FFT streaming + BlockDecimator audio_spectrum_decimator{1}; + std::array, 256> audio_spectrum{}; + uint32_t audio_spectrum_timer{0}; + enum AudioSpectrumState { + IDLE = 0, + FEED, + FFT + }; + AudioSpectrumState audio_spectrum_state{IDLE}; + AudioSpectrum spectrum{}; + uint32_t fft_step{0}; + + // SpectrumCollector channel_spectrum{}; + // size_t spectrum_interval_samples = 0; + // size_t spectrum_samples = 0; + + bool configured{false}; + + void configure(const NoaaAptRxConfigureMessage& message); + void capture_config(const CaptureConfigMessage& message); + + NoaaAptRxStatusDataMessage status_message{0}; + NoaaAptRxImageDataMessage image_message{}; + + /* NB: Threads should be the last members in the class definition. */ + BasebandThread baseband_thread{baseband_fs, this, baseband::Direction::Receive}; + RSSIThread rssi_thread{}; +}; + +#endif /*__PROC_NOAAAPTRX_H__*/ diff --git a/firmware/baseband/proc_siggen.cpp b/firmware/baseband/proc_siggen.cpp index c851d7bc3..400a5d570 100644 --- a/firmware/baseband/proc_siggen.cpp +++ b/firmware/baseband/proc_siggen.cpp @@ -38,28 +38,72 @@ void SigGenProcessor::execute(const buffer_c8_t& buffer) { } else sample_count--; - if (tone_shape == 0) { + if (modulation == 0) { // CW re = 127; // max. signed 8 bits value . (-128 ...+127), max. amplitude , static phasor at 0º im = 0; - } else { - if (tone_shape == 1) { + } else if (modulation == 2) { + // Digital BPSK consecutive 0,1,0,...continuous cycle, 1 bit/symbol, at rate of 2 symbols / Freq Tone Periode... without any Pulse shape at the moment . + re = (((tone_phase & 0xFF000000) >> 24) & 0x80) ? 127 : -128; // Sending 2 bits by Periode T of the GUI tone, alternative static phasor to 0, -180º , 0º + im = 0; + tone_phase += tone_delta; // In BPSK-QSPK we are using to calculate each 1/4 of the periode. + } else if (modulation == 3) { + // Digital QPSK consecutive 00, 01, 10, 11,00, ...continuous cycle ,2 bits/symbol, at rate of 4 symbols / Freq Tone Periode. not random., without any Pulse shape at the moment. + switch (((tone_phase & 0xFF000000) >> 24)) { + case 0 ... 63: // equivalent to 1/4 of total 360º degrees. + /* "00" */ + re = (sine_table_i8[32]); // we are sending symbol-phasor 45º during 1/4 of the total periode + im = (sine_table_i8[32 + 64]); // 32 index = rounded (45º/360º * 255 total sin table steps) = 31,875 + break; + + case 64 ... 127: + /* "01" */ + re = (sine_table_i8[96]); // symbol-phasor 135º + im = (sine_table_i8[96 + 64]); // 96 index = 32 + 256/4 + break; + + case 128 ... 191: + /* "10" */ + re = (sine_table_i8[159]); // symbol-phasor 225º + im = (sine_table_i8[159 + 64]); // 159 rounded index = 96 + 256/4 = 159.3 + break; + + case 192 ... 255: + /* "11" */ + re = (sine_table_i8[223]); // symbol-phasor 315º ; 223 rounded index = (315/360) * 255 =223.125 + im = (sine_table_i8[((223 + 64) & 0xFF)]); // Max index 255, circular periodic conversion. + break; + + default: + break; + } + tone_phase += tone_delta; // In BPSK-QSPK we are using to calculate each 1/4 of the periode. + } else if (modulation == 7) { + // Pulsed CW, 25% duty cycle. + if (tone_phase < 1073741824) // 1073741824 = 2^32*(25/100) + re = 127; + else + re = 0; + im = 0; + tone_phase += tone_delta; // In Pulsed CW we are using to calculate each periode. + } else { // Other modulations: FM, DSB, AM + if (tone_shape == 0) { // Sine sample = (sine_table_i8[(tone_phase & 0xFF000000) >> 24]); - } else if (tone_shape == 2) { + } else if (tone_shape == 1) { // Triangle int8_t a = (tone_phase & 0xFF000000) >> 24; sample = (a & 0x80) ? ((a << 1) ^ 0xFF) - 0x80 : (a << 1) + 0x80; - } else if (tone_shape == 3) { + } else if (tone_shape == 2) { // Saw up sample = ((tone_phase & 0xFF000000) >> 24); - } else if (tone_shape == 4) { + } else if (tone_shape == 3) { // Saw down sample = ((tone_phase & 0xFF000000) >> 24) ^ 0xFF; - } else if (tone_shape == 5) { + } else if (tone_shape == 4) { // Square sample = (((tone_phase & 0xFF000000) >> 24) & 0x80) ? 127 : -128; - } else if (tone_shape == 6) { + } else if (tone_shape == 5) { // Noise generator, pseudo random noise generator, 16 bits linear-feedback shift register (LFSR) algorithm, variant Fibonacci. // https://en.wikipedia.org/wiki/Linear-feedback_shift_register // 16 bits LFSR .taps: 16, 15, 13, 4 ;feedback polynomial: x^16 + x^15 + x^13 + x^4 + 1 @@ -79,49 +123,13 @@ void SigGenProcessor::execute(const buffer_c8_t& buffer) { if (counter == 15) { counter = 0; } - } else if (tone_shape == 7) { - // Digital BPSK consecutive 0,1,0,...continuous cycle, 1 bit/symbol, at rate of 2 symbols / Freq Tone Periode... without any Pulse shape at the moment . - re = (((tone_phase & 0xFF000000) >> 24) & 0x80) ? 127 : -128; // Sending 2 bits by Periode T of the GUI tone, alternative static phasor to 0, -180º , 0º - im = 0; - } else if (tone_shape == 8) { - // Digital QPSK consecutive 00, 01, 10, 11,00, ...continuous cycle ,2 bits/symbol, at rate of 4 symbols / Freq Tone Periode. not random., without any Pulse shape at the moment . - - switch (((tone_phase & 0xFF000000) >> 24)) { - case 0 ... 63: // equivalent to 1/4 of total 360º degrees. - /* "00" */ - re = (sine_table_i8[32]); // we are sending symbol-phasor 45º during 1/4 of the total periode - im = (sine_table_i8[32 + 64]); // 32 index = rounded (45º/360º * 255 total sin table steps) = 31,875 - break; - - case 64 ... 127: - /* "01" */ - re = (sine_table_i8[96]); // symbol-phasor 135º - im = (sine_table_i8[96 + 64]); // 96 index = 32 + 256/4 - break; - break; - - case 128 ... 191: - /* "10" */ - re = (sine_table_i8[159]); // symbol-phasor 225º - im = (sine_table_i8[159 + 64]); // 159 rounded index = 96 + 256/4 = 159.3 - break; - - case 192 ... 255: - /* "11" */ - re = (sine_table_i8[223]); // symbol-phasor 315º ; 223 rounded index = (315/360) * 255 =223.125 - im = (sine_table_i8[((223 + 64) & 0xFF)]); // Max index 255, circular periodic conversion. - break; - - default: - break; - } } - if (tone_shape != 6) { //(all except Pseudo Random White Noise). We are in (1):periodic signals or (2):BPSK/QPSK , in both cases ,we need Tone updated acum sum phases to modulate in FM / or control phasor phase (BPSK & QPSK.) - tone_phase += tone_delta; // In periodic signals(Sine/triangle/square) we are using to FM mod. in BPSK-QSPK we are using to calculate each 1/4 of the periode. + if (tone_shape != 5) { // All periodic except Pseudo Random White Noise. + tone_phase += tone_delta; // In periodic signals we are using phase to generate the tone to be modulated. } - if (tone_shape < 7) { // All Option shape signals except BPSK(7) & QPSK(8) we are modulating in FM. (Those two has phase shift modulation XPSK , not FM ) + if (modulation == 1) { // Do FM modulation delta = sample * fm_delta; @@ -130,6 +138,21 @@ void SigGenProcessor::execute(const buffer_c8_t& buffer) { re = (sine_table_i8[(sphase & 0xFF000000) >> 24]); // sin LUT is not dealing with decimals , output range [-128 ,...127] im = (sine_table_i8[(phase & 0xFF000000) >> 24]); + + } else if (modulation == 4) { + // Do Double Side Band modulation + re = sample; + im = 0; + + } else if (modulation == 5) { + // Do AM modulation (100% mod index) + re = 64 + (sample >> 1); // 64 = 127 - (127 >> 1): carrier level without modulating signal + im = 0; + + } else if (modulation == 6) { + // Do AM modulation (50% mod index) + re = 96 + (sample >> 2); // 96 = 127 - (127 >> 2): carrier level without modulating signal + im = 0; } } @@ -154,7 +177,8 @@ void SigGenProcessor::on_message(const Message* const msg) { auto_off = false; fm_delta = message.bw * (0xFFFFFFULL / 1536000); - tone_shape = message.shape; + tone_shape = message.shape & 0xF; + modulation = (message.shape & 0xF0) >> 4; // lfsr = seed_value ; // Finally not used , init lfsr 8 bits. lfsr_16 = seed_value_16; // init lfsr 16 bits. diff --git a/firmware/baseband/proc_siggen.hpp b/firmware/baseband/proc_siggen.hpp index 36bc3e042..8a5c0787a 100644 --- a/firmware/baseband/proc_siggen.hpp +++ b/firmware/baseband/proc_siggen.hpp @@ -36,7 +36,7 @@ class SigGenProcessor : public BasebandProcessor { bool configured{false}; uint32_t tone_delta{0}, fm_delta{}, tone_phase{0}; - uint8_t tone_shape{}; + uint8_t tone_shape{}, modulation{}; uint32_t sample_count{0}; bool auto_off{}; int32_t phase{0}, sphase{0}, delta{0}; // they may have sign in the pseudo random sample generation. diff --git a/firmware/baseband/proc_wefaxrx.cpp b/firmware/baseband/proc_wefaxrx.cpp new file mode 100644 index 000000000..07c24fdff --- /dev/null +++ b/firmware/baseband/proc_wefaxrx.cpp @@ -0,0 +1,186 @@ +/* + * Copyright (C) 2025 Brumi, HTotoo + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "proc_wefaxrx.hpp" +#include "sine_table_int8.hpp" +#include "portapack_shared_memory.hpp" + +#include "audio_dma.hpp" +#include "math.h" +#include "event_m4.hpp" +#include "fxpt_atan2.hpp" + +#include +#include + +#define STARTSIGNAL_TH 0.33 +#define STARTSIGNAL_NEEDCNT 110 +#define STARTSIGNAL_MAXBAD 20 + +#define WEFAX_PX_SIZE 840.0 + +// updates the per pixel timers +void WeFaxRx::update_params() { + switch (ioc_mode) { + case 1: + freq_start_tone = 675; + break; + default: + case 0: + freq_start_tone = 300; + break; + } + // 840 px / line with line start + pxRem = (double)channel_filter_input_fs / ((lpm / 60.0) * WEFAX_PX_SIZE); + samples_per_pixel = pxRem; + pxRem -= samples_per_pixel; + pxRoll = 0; + status_message.state = 0; + shared_memory.application_queue.push(status_message); +} + +void WeFaxRx::execute(const buffer_c8_t& buffer) { + // This is called at 3072000 / 2048 = 1500Hz + if (!configured) return; + const auto decim_0_out = decim_0.execute(buffer, dst_buffer); + const auto decim_1_out = decim_1.execute(decim_0_out, dst_buffer); + + channel_spectrum.feed(decim_1_out, channel_filter_low_f, channel_filter_high_f, channel_filter_transition); + + const auto decim_2_out = decim_2.execute(decim_1_out, dst_buffer); + const auto channel_out = channel_filter.execute(decim_2_out, dst_buffer); + + feed_channel_stats(channel_out); + auto audio = demod_ssb_fm.execute(channel_out, audio_buffer); + audio_compressor.execute_in_place(audio); + audio_output.write(audio); + + for (size_t c = 0; c < audio.count; c++) { + if (status_message.state == 0 && false) { // disabled this due to so sensitive to noise + // first look for the sync! + if (audio.p[c] <= STARTSIGNAL_TH && audio.p[c] >= 0.0001) { + sync_cnt++; + if (sync_cnt >= STARTSIGNAL_NEEDCNT) { + status_message.state = 1; + shared_memory.application_queue.push(status_message); + sync_cnt = 0; + syncnot_cnt = 0; + } + } else { + syncnot_cnt++; + if (syncnot_cnt >= STARTSIGNAL_MAXBAD) { + sync_cnt = 0; + syncnot_cnt = 0; + } + } + } else { + cnt++; + if (cnt >= (samples_per_pixel + (uint32_t)pxRoll)) { // got a pixel + cnt = 0; + if (pxRoll >= 1) pxRoll -= 1.0; + pxRoll += pxRem; + + if (image_message.cnt < 400) { + if (audio.p[c] >= 0.68) { + image_message.image[image_message.cnt++] = 255; + } else if (audio.p[c] >= 0.45) { + image_message.image[image_message.cnt++] = (uint8_t)(((audio.p[c] - 0.45f) * 1108)); + } else { + image_message.image[image_message.cnt++] = 0; + } + } + if (image_message.cnt >= 399) { + shared_memory.application_queue.push(image_message); + image_message.cnt = 0; + if (status_message.state != 2) { + status_message.state = 2; + shared_memory.application_queue.push(status_message); + } + } + } + } + } +} + +void WeFaxRx::on_message(const Message* const message) { + switch (message->id) { + case Message::ID::UpdateSpectrum: + case Message::ID::SpectrumStreamingConfig: + channel_spectrum.on_message(message); + break; + + case Message::ID::WeFaxRxConfigure: + configure(*reinterpret_cast(message)); + break; + + case Message::ID::CaptureConfig: + capture_config(*reinterpret_cast(message)); + break; + + default: + break; + } +} + +void WeFaxRx::configure(const WeFaxRxConfigureMessage& message) { + constexpr size_t decim_0_input_fs = baseband_fs; + constexpr size_t decim_0_output_fs = decim_0_input_fs / decim_0.decimation_factor; + + constexpr size_t decim_1_input_fs = decim_0_output_fs; + constexpr size_t decim_1_output_fs = decim_1_input_fs / decim_1.decimation_factor; + + constexpr size_t decim_2_input_fs = decim_1_output_fs; + constexpr size_t decim_2_output_fs = decim_2_input_fs / decim_2_decimation_factor; + + channel_filter_input_fs = decim_2_output_fs; + // const size_t channel_filter_output_fs = channel_filter_input_fs / channel_filter_decimation_factor; + + decim_0.configure(taps_6k0_decim_0.taps); + decim_1.configure(taps_6k0_decim_1.taps); + decim_2.configure(taps_6k0_decim_2.taps, decim_2_decimation_factor); + channel_filter.configure(taps_2k6_usb_wefax_channel.taps, channel_filter_decimation_factor); + channel_filter_low_f = taps_2k6_usb_wefax_channel.low_frequency_normalized * channel_filter_input_fs; + channel_filter_high_f = taps_2k6_usb_wefax_channel.high_frequency_normalized * channel_filter_input_fs; + channel_filter_transition = taps_2k6_usb_wefax_channel.transition_normalized * channel_filter_input_fs; + channel_spectrum.set_decimation_factor(1.0f); + audio_output.configure(apt_audio_12k_lpf_1500hz_config); // hpf in all AM demod modes (AM-6K/9K, USB/LSB,DSB), except Wefax (lpf there). + + lpm = message.lpm; + ioc_mode = message.ioc; + + update_params(); + configured = true; +} + +void WeFaxRx::capture_config(const CaptureConfigMessage& message) { + if (message.config) { + audio_output.set_stream(std::make_unique(message.config)); + } else { + audio_output.set_stream(nullptr); + } +} + +int main() { + audio::dma::init_audio_out(); + EventDispatcher event_dispatcher{std::make_unique()}; + event_dispatcher.run(); + return 0; +} diff --git a/firmware/baseband/proc_wefaxrx.hpp b/firmware/baseband/proc_wefaxrx.hpp new file mode 100644 index 000000000..a82aa720a --- /dev/null +++ b/firmware/baseband/proc_wefaxrx.hpp @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2025 Brumi, HTotoo + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __PROC_WEFAXRX_H__ +#define __PROC_WEFAXRX_H__ + +#include "baseband_processor.hpp" +#include "baseband_thread.hpp" +#include "rssi_thread.hpp" + +#include "dsp_decimate.hpp" +#include "dsp_demodulate.hpp" +#include "dsp_iir.hpp" +#include "audio_compressor.hpp" + +#include "audio_output.hpp" +#include "spectrum_collector.hpp" + +#include + +class WeFaxRx : public BasebandProcessor { + public: + void execute(const buffer_c8_t& buffer) override; + void on_message(const Message* const message) override; + + private: + void update_params(); + // todo rethink + uint8_t lpm = 120; // 60, 90, 100, 120, 180, 240 lpm + uint8_t ioc_mode = 0; // 0 - ioc576, 1 - ioc 288, 2 - colour fax + + uint32_t samples_per_pixel = 0; + // not yet used: + uint32_t time_start_tone = 3000; // 3s - 5s + uint32_t freq_start_tone = 300; // 300hz for ioc576 675hz for ioc288, 200hz for colour fax + uint32_t freq_stop_tone = 450; // 450hz for the 3-5s stop tone + + // to exactly match the pixel / samples. + double pxRem = 0; // if has remainder, it'll store it + double pxRoll = 0; // summs remainders, so won't misalign + + uint32_t cnt = 0; // signal counter + uint16_t sync_cnt = 0; + uint16_t syncnot_cnt = 0; + + static constexpr size_t baseband_fs = 3072000; + static constexpr size_t decim_2_decimation_factor = 4; + static constexpr size_t channel_filter_decimation_factor = 1; + + std::array dst{}; + const buffer_c16_t dst_buffer{ + dst.data(), + dst.size()}; + std::array audio{}; + const buffer_f32_t audio_buffer{ + audio.data(), + audio.size()}; + size_t channel_filter_input_fs = 0; + + dsp::decimate::FIRC8xR16x24FS4Decim8 decim_0{}; + dsp::decimate::FIRC16xR16x32Decim8 decim_1{}; + dsp::decimate::FIRAndDecimateComplex decim_2{}; + dsp::decimate::FIRAndDecimateComplex channel_filter{}; + int32_t channel_filter_low_f = 0; + int32_t channel_filter_high_f = 0; + int32_t channel_filter_transition = 0; + bool configured{false}; + + dsp::demodulate::SSB_FM demod_ssb_fm{}; // added for Wfax mode. + FeedForwardCompressor audio_compressor{}; + AudioOutput audio_output{}; + + SpectrumCollector channel_spectrum{}; + + void configure(const WeFaxRxConfigureMessage& message); + void capture_config(const CaptureConfigMessage& message); + + WeFaxRxStatusDataMessage status_message{0}; + WeFaxRxImageDataMessage image_message{}; + + /* NB: Threads should be the last members in the class definition. */ + BasebandThread baseband_thread{baseband_fs, this, baseband::Direction::Receive}; + RSSIThread rssi_thread{}; +}; + +#endif /*__PROC_WEFAXRX_H__*/ diff --git a/firmware/baseband/proc_wfm_audio.cpp b/firmware/baseband/proc_wfm_audio.cpp index 7a59c73fa..de265aaf5 100644 --- a/firmware/baseband/proc_wfm_audio.cpp +++ b/firmware/baseband/proc_wfm_audio.cpp @@ -47,23 +47,37 @@ void WidebandFMAudio::execute(const buffer_c8_t& buffer) { channel_spectrum.feed(channel, channel_filter_low_f, channel_filter_high_f, channel_filter_transition); } - /* 384kHz complex[256] + /* 384kHz complex[256] for wfm * -> FM demodulation * -> 384kHz int16_t[256] */ /* TODO: To improve adjacent channel rejection, implement complex channel filter: * pass < +/- 100kHz, stop > +/- 200kHz */ - auto audio_oversampled = demod.execute(channel, work_audio_buffer); + /* 96kHz complex[64] for wfmam NOAA + * -> FM demodulation + * -> 96kHz int16_t[64] */ - /* 384kHz int16_t[256] + auto audio_oversampled = demod.execute(channel, work_audio_buffer); // fs 384khz wfm , 96khz wfmam for NOAA + + /* 384kHz int16_t[256] for wfm * -> 4th order CIC decimation by 2, gain of 1 * -> 192kHz int16_t[128] */ + + /* 96kHz int16_t[64] for wfam + * -> 4th order CIC decimation by 2, gain of 1 + * -> 48kHz int16_t[32] */ + auto audio_4fs = audio_dec_1.execute(audio_oversampled, work_audio_buffer); - /* 192kHz int16_t[128] + /* 192kHz int16_t[128] for wfm * -> 4th order CIC decimation by 2, gain of 1 * -> 96kHz int16_t[64] */ + + /* 48kHz int16_t[32] for wfman + * -> 4th order CIC decimation by 2, gain of 1 + * -> 24kHz int16_t[16] */ + auto audio_2fs = audio_dec_2.execute(audio_4fs, work_audio_buffer); // Input: 96kHz int16_t[64] @@ -118,13 +132,24 @@ void WidebandFMAudio::execute(const buffer_c8_t& buffer) { break; } - /* 96kHz int16_t[64] + /* 96kHz int16_t[64] for wfm * -> FIR filter, <15kHz (0.156fs) pass, >19kHz (0.198fs) stop, gain of 1 * -> 48kHz int16_t[32] */ + + /* 24kHz int16_t[16] for wfmam + * -> FIR filter, <4.5kHz (0.1875fs) pass, >5.2kHz (0.2166fs) stop, gain of 1 + * -> 12kHz int16_t[8] */ + auto audio = audio_filter.execute(audio_2fs, work_audio_buffer); - /* -> 48kHz int16_t[32] */ - audio_output.write(audio); + /* -> 48kHz int16_t[32] for wfm , */ + /* -> 12kHz int16_t[8] for wfmam , */ + + if (decim_1.decimation_factor() == 2) { + audio_output.write(audio); // we are in original wfm , decim_1.decimation_factor == 2 + } else { + audio_output.apt_write(audio); // we are in added wfmam (noaa), decim_1.decimation_factor == 8 + } } void WidebandFMAudio::post_message(const buffer_c16_t& data) { @@ -142,7 +167,11 @@ void WidebandFMAudio::on_message(const Message* const message) { break; case Message::ID::WFMConfigure: - configure(*reinterpret_cast(message)); + configure_wfm(*reinterpret_cast(message)); + break; + + case Message::ID::WFMAMConfigure: + configure_wfmam(*reinterpret_cast(message)); break; case Message::ID::CaptureConfig: @@ -154,20 +183,56 @@ void WidebandFMAudio::on_message(const Message* const message) { } } -void WidebandFMAudio::configure(const WFMConfigureMessage& message) { +void WidebandFMAudio::configure_wfm(const WFMConfigureMessage& message) { constexpr size_t decim_0_input_fs = baseband_fs; constexpr size_t decim_0_output_fs = decim_0_input_fs / decim_0.decimation_factor; - constexpr size_t decim_1_input_fs = decim_0_output_fs; - constexpr size_t decim_1_output_fs = decim_1_input_fs / decim_1.decimation_factor; - constexpr size_t demod_input_fs = decim_1_output_fs; + decim_0.configure(message.decim_0_filter.taps); + // decim_1.configure(message.decim_1_filter.taps); // Original . + + // TODO dynamic decim1 , with decimation 2 / 8 and 16 x taps , / 32 taps . + // Temptatively , I splitted, in two WidebandFMAudio::configure_wfm / WidebandFMAudio::configure_wfmam and dynamically /2, /8 (here /2) + // decim_1.set().configure(message.decim_1_filter.taps); // for wfm + // decim_1.set().configure(taps_84k_wfmam_decim_1.taps); // for wfmam + decim_1.set().configure(message.decim_1_filter.taps); // for wfm + size_t decim_1_output_fs = decim_1_input_fs / decim_1.decimation_factor(); // wfm , decim_1.decimation_factor() = /2 , if applied after the line : decim_1.set().configure(message.decim_1_filter.taps); + size_t demod_input_fs = decim_1_output_fs; spectrum_interval_samples = decim_1_output_fs / spectrum_rate_hz; spectrum_samples = 0; + channel_filter_low_f = message.decim_1_filter.low_frequency_normalized * decim_1_input_fs; + channel_filter_high_f = message.decim_1_filter.high_frequency_normalized * decim_1_input_fs; + channel_filter_transition = message.decim_1_filter.transition_normalized * decim_1_input_fs; + demod.configure(demod_input_fs, message.deviation); + audio_filter.configure(message.audio_filter.taps); + audio_output.configure(message.audio_hpf_config, message.audio_deemph_config); + + channel_spectrum.set_decimation_factor(1); + + configured = true; +} + +void WidebandFMAudio::configure_wfmam(const WFMAMConfigureMessage& message) { + constexpr size_t decim_0_input_fs = baseband_fs; + constexpr size_t decim_0_output_fs = decim_0_input_fs / decim_0.decimation_factor; + constexpr size_t decim_1_input_fs = decim_0_output_fs; + decim_0.configure(message.decim_0_filter.taps); - decim_1.configure(message.decim_1_filter.taps); + + // decim_1.configure(message.decim_1_filter.taps); // Original . + // TODO dynamic decim1 , with decimation 2 / 8 and 16 x taps , / 32 taps . + // Temptatively , I splitted, in two WidebandFMAudio::configure_wfm / WidebandFMAudio::configure_wfmam and dynamically /2, /8 . (here /8) + // decim_1.set().configure(message.decim_1_filter.taps); // for wfm + // decim_1.set().configure(message.decim_1_filter.taps); // for wfmam + decim_1.set().configure(message.decim_1_filter.taps); // for wfmam + size_t decim_1_output_fs = decim_1_input_fs / decim_1.decimation_factor(); // wfmam, decim_1.decimation_factor() = /8 ,if applied after the line, decim_1.set().configure(message.decim_1_filter.taps); + size_t demod_input_fs = decim_1_output_fs; + + spectrum_interval_samples = decim_1_output_fs / spectrum_rate_hz; + spectrum_samples = 0; + channel_filter_low_f = message.decim_1_filter.low_frequency_normalized * decim_1_input_fs; channel_filter_high_f = message.decim_1_filter.high_frequency_normalized * decim_1_input_fs; channel_filter_transition = message.decim_1_filter.transition_normalized * decim_1_input_fs; diff --git a/firmware/baseband/proc_wfm_audio.hpp b/firmware/baseband/proc_wfm_audio.hpp index d003e8fa9..a9ebd87d5 100644 --- a/firmware/baseband/proc_wfm_audio.hpp +++ b/firmware/baseband/proc_wfm_audio.hpp @@ -35,6 +35,46 @@ #include "audio_output.hpp" #include "spectrum_collector.hpp" +#include +#include +#include +#include + +template +class MultiDecimator { + public: + /* Dispatches to the underlying type's execute. */ + template + Destination execute( + const Source& src, + const Destination& dst) { + return std::visit( + [&src, &dst](auto&& arg) -> Destination { + return arg.execute(src, dst); + }, + decimator_); + } + + size_t decimation_factor() const { + return std::visit( + [](auto&& arg) -> size_t { + return arg.decimation_factor; + }, + decimator_); + } + + /* Sets this decimator to a new instance of the specified decimator type. + * NB: The instance is returned by-ref so 'configure' can easily be called. */ + template + Decimator& set() { + decimator_ = Decimator{}; + return std::get(decimator_); + } + + private: + std::variant decimator_{}; +}; + class WidebandFMAudio : public BasebandProcessor { public: void execute(const buffer_c8_t& buffer) override; @@ -59,7 +99,16 @@ class WidebandFMAudio : public BasebandProcessor { complex_audio.size()}; dsp::decimate::FIRC8xR16x24FS4Decim4 decim_0{}; - dsp::decimate::FIRC16xR16x16Decim2 decim_1{}; + // dsp::decimate::FIRC16xR16x16Decim2 decim_1{}; //original condition , before adding wfmam + + // decim_1 will handle different types of FIR filters depending on selection. + MultiDecimator< + dsp::decimate::FIRC16xR16x16Decim2, + dsp::decimate::FIRC16xR16x32Decim8> + decim_1{}; + + // dsp::decimate::FIRC16xR16x32Decim8 decim_1{}; // For FMAM + int32_t channel_filter_low_f = 0; int32_t channel_filter_high_f = 0; int32_t channel_filter_transition = 0; @@ -94,7 +143,8 @@ class WidebandFMAudio : public BasebandProcessor { BasebandThread baseband_thread{baseband_fs, this, baseband::Direction::Receive}; RSSIThread rssi_thread{}; - void configure(const WFMConfigureMessage& message); + void configure_wfm(const WFMConfigureMessage& message); + void configure_wfmam(const WFMAMConfigureMessage& message); void capture_config(const CaptureConfigMessage& message); void post_message(const buffer_c16_t& data); }; diff --git a/firmware/chibios-portapack/ext/fatfs/src/ff.c b/firmware/chibios-portapack/ext/fatfs/src/ff.c index 862f0a56f..960d7af2a 100644 --- a/firmware/chibios-portapack/ext/fatfs/src/ff.c +++ b/firmware/chibios-portapack/ext/fatfs/src/ff.c @@ -1060,6 +1060,7 @@ DWORD get_fat ( /* 0xFFFFFFFF:Disk error, 1:Internal error, 2..0x7FFFFFFF:Cluste } } /* go to default */ + __attribute__ ((fallthrough)); #endif default: val = 1; /* Internal error */ diff --git a/firmware/common/adsb.cpp b/firmware/common/adsb.cpp index 1b3628369..02904c4e7 100644 --- a/firmware/common/adsb.cpp +++ b/firmware/common/adsb.cpp @@ -282,7 +282,7 @@ adsb_pos decode_frame_pos(ADSBFrame& frame_even, ADSBFrame& frame_odd) { uint32_t latcprE, latcprO, loncprE, loncprO; float latE, latO, m, Dlon, cpr_lon_odd, cpr_lon_even, cpr_lat_odd, cpr_lat_even; int ni; - adsb_pos position{false, 0, 0, 0}; + adsb_pos position{false, false, 0, 0, 0}; uint32_t time_even = frame_even.get_rx_timestamp(); uint32_t time_odd = frame_odd.get_rx_timestamp(); @@ -296,8 +296,10 @@ adsb_pos decode_frame_pos(ADSBFrame& frame_even, ADSBFrame& frame_odd) { raw_data = frame_data_odd; // Q-bit must be present - if (raw_data[5] & 1) + if (raw_data[5] & 1) { position.altitude = ((((raw_data[5] & 0xFE) << 3) | ((raw_data[6] & 0xF0) >> 4)) * 25) - 1000; + position.alt_valid = true; + } // Position latcprE = ((frame_data_even[6] & 3) << 15) | (frame_data_even[7] << 7) | (frame_data_even[8] >> 1); @@ -350,7 +352,7 @@ adsb_pos decode_frame_pos(ADSBFrame& frame_even, ADSBFrame& frame_odd) { if (position.longitude >= 180) position.longitude -= 360; - position.valid = true; + position.pos_valid = true; return position; } @@ -396,46 +398,59 @@ void encode_frame_velo(ADSBFrame& frame, const uint32_t ICAO_address, const uint // Decoding method from dump1090 adsb_vel decode_frame_velo(ADSBFrame& frame) { - adsb_vel velo{false, 0, 0, 0}; + adsb_vel velo{false, SPD_GND, 0, 0, 0}; uint8_t* frame_data = frame.get_raw_data(); uint8_t velo_type = frame.get_msg_sub(); if (velo_type >= 1 && velo_type <= 4) { // vertical rate is always present - velo.v_rate = (((frame_data[8] & 0x07) << 6) | ((frame_data[9] >> 2) - 1)) * 64; + velo.v_rate = ((((frame_data[8] & 0x07) << 6) | (frame_data[9] >> 2)) - 1) * 64; - if ((frame_data[8] & 0x8) >> 3) velo.v_rate *= -1; // check v_rate sign + if (frame_data[8] & 0x8) velo.v_rate *= -1; // check v_rate sign } if (velo_type == 1 || velo_type == 2) { // Ground Speed int32_t raw_ew = ((frame_data[5] & 0x03) << 8) | frame_data[6]; - int32_t velo_ew = raw_ew - 1; // velocities are all offset by one (this is part of the spec) - int32_t raw_ns = ((frame_data[7] & 0x7f) << 3) | (frame_data[8] >> 5); - int32_t velo_ns = raw_ns - 1; - if (velo_type == 2) { // supersonic indicator so multiply by 4 - velo_ew = velo_ew << 2; - velo_ns = velo_ns << 2; + if (raw_ew && raw_ns) { // check data available + int32_t velo_ew = raw_ew - 1; // velocities are all offset by one (this is part of the spec) + int32_t velo_ns = raw_ns - 1; + + if (velo_type == 2) { // supersonic indicator so multiply by 4 + velo_ew = velo_ew << 2; + velo_ns = velo_ns << 2; + } + + if (frame_data[5] & 0x04) velo_ew *= -1; // check ew direction sign + if (frame_data[7] & 0x80) velo_ns *= -1; // check ns direction sign + + velo.speed = fast_int_magnitude(velo_ns, velo_ew); + + if (velo.speed) { + // calculate heading in degrees from ew/ns velocities + int16_t heading_temp = (int16_t)(int_atan2(velo_ew, velo_ns)); // Nearest degree + // We don't want negative values but a 0-360 scale. + if (heading_temp < 0) heading_temp += 360.0; + velo.heading = (uint16_t)heading_temp; + + velo.valid = true; + velo.type = SPD_GND; + } } - - if (frame_data[5] & 0x04) velo_ew *= -1; // check ew direction sign - if (frame_data[7] & 0x80) velo_ns *= -1; // check ns direction sign - - velo.speed = fast_int_magnitude(velo_ns, velo_ew); - - if (velo.speed) { - // calculate heading in degrees from ew/ns velocities - int16_t heading_temp = (int16_t)(int_atan2(velo_ew, velo_ns)); // Nearest degree - // We don't want negative values but a 0-360 scale. - if (heading_temp < 0) heading_temp += 360.0; - velo.heading = (uint16_t)heading_temp; - } - } else if (velo_type == 3 || velo_type == 4) { // Airspeed velo.valid = frame_data[5] & (1 << 2); - velo.heading = ((((frame_data[5] & 0x03) << 8) | frame_data[6]) * 45) << 7; + velo.heading = ((((frame_data[5] & 0x03) << 8) | frame_data[6]) * 45) >> 7; + + int32_t raw = ((frame_data[7] & 0x7F) << 3) | (frame_data[8] >> 5); + if (raw) { // check speed available + velo.speed = raw - 1; + velo.type = (frame_data[7] & 0x80) ? SPD_TAS : SPD_IAS; // set AirSpeed type + + // supersonic indicator so multiply by 4 + if (velo_type == 4) velo.speed *= 4; + } } return velo; diff --git a/firmware/common/adsb.hpp b/firmware/common/adsb.hpp index dc98d417f..ab4172925 100644 --- a/firmware/common/adsb.hpp +++ b/firmware/common/adsb.hpp @@ -50,8 +50,15 @@ enum data_selector { BDS_HEADING = 0x60 }; +enum speed_type { + SPD_GND = 0, // Ground Speed + SPD_IAS = 1, // Indicated AirSpeed + SPD_TAS = 2 // True AirSpeed +}; + struct adsb_pos { - bool valid; + bool pos_valid; + bool alt_valid; float latitude; float longitude; int32_t altitude; @@ -59,6 +66,7 @@ struct adsb_pos { struct adsb_vel { bool valid; + speed_type type; // ground speed, IAS or TAS int32_t speed; // knot uint16_t heading; // degree int32_t v_rate; // ft/min diff --git a/firmware/common/adsb_frame.hpp b/firmware/common/adsb_frame.hpp index 1f05f744e..1afafa65f 100644 --- a/firmware/common/adsb_frame.hpp +++ b/firmware/common/adsb_frame.hpp @@ -80,20 +80,24 @@ class ADSBFrame { void make_CRC() { uint32_t computed_CRC = compute_CRC(); + uint8_t crc_pos = (raw_data[0] & 0x80) ? 11 : 4; + // Insert CRC in frame - raw_data[11] = (computed_CRC >> 16) & 0xFF; - raw_data[12] = (computed_CRC >> 8) & 0xFF; - raw_data[13] = computed_CRC & 0xFF; + raw_data[crc_pos] = (computed_CRC >> 16) & 0xFF; + raw_data[crc_pos + 1] = (computed_CRC >> 8) & 0xFF; + raw_data[crc_pos + 2] = computed_CRC & 0xFF; } - bool check_CRC() { + uint32_t check_CRC() { uint32_t computed_CRC = compute_CRC(); - if ((raw_data[11] != ((computed_CRC >> 16) & 0xFF)) || - (raw_data[12] != ((computed_CRC >> 8) & 0xFF)) || - (raw_data[13] != (computed_CRC & 0xFF))) return false; + uint8_t crc_pos = (raw_data[0] & 0x80) ? 11 : 4; - return true; + uint32_t received_CRC = (raw_data[crc_pos] << 16) | + (raw_data[crc_pos + 1] << 8) | + raw_data[crc_pos + 2]; + + return (received_CRC ^ computed_CRC) & 0xFFFFFF; } bool empty() { @@ -111,12 +115,13 @@ class ADSBFrame { uint8_t adsb_crc[14] = {0}; // Temp buffer uint8_t b, c, s, bitn; const uint32_t crc_poly = 0x1205FFF; + uint8_t data_len = (raw_data[0] & 0x80) ? 11 : 4; // Copy frame data - memcpy(adsb_crc, raw_data, 11); + memcpy(adsb_crc, raw_data, data_len); // Compute CRC - for (c = 0; c < 11; c++) { + for (c = 0; c < data_len; c++) { for (b = 0; b < 8; b++) { if ((adsb_crc[c] << b) & 0x80) { for (s = 0; s < 25; s++) { @@ -127,7 +132,7 @@ class ADSBFrame { } } - return (adsb_crc[11] << 16) + (adsb_crc[12] << 8) + adsb_crc[13]; + return (adsb_crc[data_len] << 16) + (adsb_crc[data_len + 1] << 8) + adsb_crc[data_len + 2]; } }; diff --git a/firmware/common/bmpfile.cpp b/firmware/common/bmpfile.cpp index 46e74340e..d39c2fb6e 100644 --- a/firmware/common/bmpfile.cpp +++ b/firmware/common/bmpfile.cpp @@ -282,4 +282,4 @@ bool BMPFile::expand_y(uint32_t new_y) { seek(0, curry + 1); // seek to the begin of the new chunk } return true; -} \ No newline at end of file +} diff --git a/firmware/common/dsp_fir_taps.hpp b/firmware/common/dsp_fir_taps.hpp index 7ba171a32..c1f5e9787 100644 --- a/firmware/common/dsp_fir_taps.hpp +++ b/firmware/common/dsp_fir_taps.hpp @@ -512,6 +512,51 @@ constexpr fir_taps_real<32> taps_6k0_decim_1{ }}, }; +// IFIR prototype filter: fs=384000, pass=3000, stop=33000, decim=8, fout=48000 +// Narrower taps_6k0_decim_1IFIR version to avoid LCD waterfall aliasing in AMFM Wefax in ZOOM X 2 (means spectrum decimation factor x2) +// It has BW -3dB's of +-9Khz, Stop band from 33khz onwards -60 dB's , then we can use in all AM modes (DSB, SSB,CW ) +constexpr fir_taps_real<32> taps_6k0_narrow_decim_1{ + .low_frequency_normalized = -3000.0f / 384000.0f, + .high_frequency_normalized = 3000.0f / 384000.0f, + .transition_normalized = 30000.0f / 384000.0f, + .taps = {{ + + 58, + 80, + 138, + 219, + 326, + 461, + 622, + 807, + 1011, + 1224, + 1438, + 1640, + 1820, + 1966, + 2069, + 2122, + 2122, + 2069, + 1966, + 1820, + 1640, + 1438, + 1224, + 1011, + 807, + 622, + 461, + 326, + 219, + 138, + 80, + 58, + + }}, +}; + // IFIR prototype filter: fs=48000, pass=3000, stop=6700, decim=4, fout=12000 constexpr fir_taps_real<32> taps_6k0_decim_2{ .low_frequency_normalized = -3000.0f / 48000.0f, @@ -553,14 +598,14 @@ constexpr fir_taps_real<32> taps_6k0_decim_2{ }}, }; -// IFIR prototype filter fs=48000 ; pass=4500 (cutt off -3dBs) , stop=8000 (<-60dBs), decim=4, fout=12000 +// IFIR prototype filter fs=48000 ; pass=4500 (cutoff -3dBs) , stop=8000 (<-60dBs), decim=4, fout=12000 // For Europe AM commercial broadcasting stations in LF/MF/HF, Emissions Designator 9K00A3E Bandwidth: 9.00 kHz (derivated from taps_6k0_decim_2 ) -// Pre-decimate LPF FIR filter design Created with SciPy Python with the "window method", num_taps = 32, cut_off = 5150. sample_rate = 48000 # Hz, -// Created with h = signal.firwin(num_taps, cut_off, nyq=sample_rate/2, window=('chebwin',50)) , achieving good STOP band plot < -60 dB's with some ripple. +// Pre-decimate LPF FIR filter design Created with SciPy Python with the "window method", num_taps = 32, cutoff = 5150. sample_rate = 48000 # Hz, +// Created with h = signal.firwin(num_taps, cutoff, nyq=sample_rate/2, window=('chebwin',50)) , achieving good STOP band plot < -60 dB's with some ripple. // post-scaled h taps to avoid decimals , targeting <= similar int values as previous taps_6k0_dsb_channel peak < 32.767 (2 exp 15) and similar H(f)gain constexpr fir_taps_real<32> taps_9k0_decim_2{ - .low_frequency_normalized = -4500.0f / 48000.0f, // Negative -cutt off freq -3dB (real achieved data ,in the plot and measurements) - .high_frequency_normalized = 4500.0f / 48000.0f, // Positive +cutt off freq -3dB (idem) + .low_frequency_normalized = -4500.0f / 48000.0f, // Negative -cutoff freq -3dB (real achieved data ,in the plot and measurements) + .high_frequency_normalized = 4500.0f / 48000.0f, // Positive +cutoff freq -3dB (idem) .transition_normalized = 3500.0f / 48000.0f, // 3500 Hz = (8000 Hz - 4500 Hz) (both from plot H(f) curve plot) .taps = {{-53, -30, 47, 198, 355, 372, 89, -535, -1307, -1771, -1353, 370, 3384, 7109, 10535, 12591, @@ -644,14 +689,14 @@ constexpr fir_taps_complex<64> taps_6k0_dsb_channel{ }}, }; -// Channel filter: fs=12000, pass=4500 (cutt off -3dBs), stop=4940 (<-60dBs), decim=1, fout=12000 (*1) real frec pass / stop , based on plotted H(f) curve) +// Channel filter: fs=12000, pass=4500 (cutoff -3dBs), stop=4940 (<-60dBs), decim=1, fout=12000 (*1) real frec pass / stop , based on plotted H(f) curve) // For Europe AM commercial broadcasting stations in LF/MF/HF, Emissions Designator 9K00A3E Bandwidth: 9.00 kHz (derivative from taps_6k0_dsb_channel) -// FIR filter design created with SciPy Python using "window method"; selected design parameters: num_taps = 64, cut_off = 4575. sample_rate = 12000 # Hz, -// Created with : h = signal.firwin(num_taps, cut_off, nyq=sample_rate/2, window=('chebwin',50)) , achieving real plot curve (*1) with peak stop band ripple -60dBs. +// FIR filter design created with SciPy Python using "window method"; selected design parameters: num_taps = 64, cutoff = 4575. sample_rate = 12000 # Hz, +// Created with : h = signal.firwin(num_taps, cutoff, nyq=sample_rate/2, window=('chebwin',50)) , achieving real plot curve (*1) with peak stop band ripple -60dBs. // post-scaled h taps to avoid decimals , targeting <= similar int values as previous taps_6k0_dsb_channel peak < 32.767 (2 exp 15), (29625) and similar H(f)gain constexpr fir_taps_complex<64> taps_9k0_dsb_channel{ - .low_frequency_normalized = -4500.0f / 12000.0f, // Negative -cutt off freq -3dB (in the H(f) curve plot) - .high_frequency_normalized = 4500.0f / 12000.0f, // Positive +cutt off freq -3dB (in the H(f) curve plot) + .low_frequency_normalized = -4500.0f / 12000.0f, // Negative -cutoff freq -3dB (in the H(f) curve plot) + .high_frequency_normalized = 4500.0f / 12000.0f, // Positive +cutoff freq -3dB (in the H(f) curve plot) .transition_normalized = 440.0f / 12000.0f, // 440Hz = (4940 Hz -4500 Hz) cut-3dB's (both data comes from H(f) curve plot and confirmed by measurements ) .taps = {{ {2, 0}, @@ -945,6 +990,82 @@ constexpr fir_taps_complex<64> taps_0k7_usb_channel{ }}, }; +// USB AM+FM for Wefax (Weather fax RX) , based USB AM with truncated Differentiator band limmited cuttoff 2.400Hz for Audio Tones FM dem. /////////////////// + +// IFIR prototype filter: fs=12000, pass=2600, stop=3200, decim=1, fout=12000 // stop band minimum att < -48 dB's (+3300 Hz min atten peak) , rest <50 to -60dB's +constexpr fir_taps_complex<64> taps_2k6_usb_wefax_channel{ + .low_frequency_normalized = 0, + .high_frequency_normalized = 2600.0f / 12000.0f, + .transition_normalized = 600.0f / 12000.0f, + .taps = {{{-14 + 2}, + {-11 - 5}, + {-2 - 8}, + {6 - 5}, + {13 + 1}, + {15 + 14}, + {0 + 26}, + {-22 + 13}, + {-13 - 11}, + {7 - 1}, + {-20 + 17}, + {-47 - 37}, + {33 - 89}, + {122 + 8}, + {19 + 131}, + {-124 + 26}, + {1 - 123}, + {158 + 52}, + {-94 + 245}, + {-363 - 91}, + {36 - 468}, + {524 - 37}, + {67 + 531}, + {-552 + 5}, + {136 - 686}, + {1013 + 258}, + {-204 + 1527}, + {-2104 + 168}, + {-900 - 2529}, + {2577 - 1881}, + {2868 + 2122}, + {-1209 + 3570}, + {-3768 - 52}, + {-1043 - 3412}, + {2634 - 1801}, + {2083 + 1693}, + {-861 + 1927}, + {-1507 - 318}, + {95 - 1041}, + {692 + 100}, + {-189 + 519}, + {-478 - 241}, + {210 - 481}, + {454 + 122}, + {-35 + 372}, + {-262 + 7}, + {4 - 166}, + {116 + 40}, + {-66 + 108}, + {-117 - 62}, + {33 - 117}, + {95 - 2}, + {19 + 57}, + {-23 + 13}, + {3 - 7}, + {6 + 16}, + {-20 + 16}, + {-25 - 9}, + {-8 - 19}, + {4 - 12}, + {7 - 4}, + {7 + 4}, + {2 + 12}, + {-7 + 13} + + }} + +}; + // WFM 200KF8E emission type ////////////////////////////////////////////// // IFIR image-reject filter: fs=3072000, pass=100000, stop=484000, decim=4, fout=768000 @@ -1119,11 +1240,11 @@ constexpr fir_taps_real<24> taps_180k_wfm_decim_0 = { }}, }; -// IFIR prototype filter: fs=768000, pass=90000, stop=110000, decim=2, fout=384000 +// IFIR prototype filter: fs=768000, pass=90000, stop=170000, decim=2, fout=384000 constexpr fir_taps_real<16> taps_180k_wfm_decim_1 = { .low_frequency_normalized = -90000.0f / 768000.0f, .high_frequency_normalized = 90000.0f / 768000.0f, - .transition_normalized = 20000.0f / 768000.0f, + .transition_normalized = 80000.0f / 768000.0f, .taps = {{ 55, 19, @@ -1144,13 +1265,13 @@ constexpr fir_taps_real<16> taps_180k_wfm_decim_1 = { }}, }; -// WFM 40kHZ filter for NOAA APT reception in 137Mhz band with sharp transition ////////////////////////////////////////////// +// WFM 80kHZ filter with sharp transition ////////////////////////////////////////////// -// IFIR image-reject filter: fs=3072000, pass=20000, stop=97000, decim=4, fout=768000 -constexpr fir_taps_real<24> taps_40k_wfm_decim_0 = { - .low_frequency_normalized = -20000.0f / 3072000.0f, - .high_frequency_normalized = 20000.0f / 3072000.0f, - .transition_normalized = 67000.0f / 3072000.0f, +// IFIR image-reject filter: fs=3072000, pass=97000, stop=300000, decim=4, fout=768000 +constexpr fir_taps_real<24> taps_80k_wfm_decim_0 = { + .low_frequency_normalized = -97000.0f / 3072000.0f, + .high_frequency_normalized = 97000.0f / 3072000.0f, + .transition_normalized = 203000.0f / 3072000.0f, .taps = {{ 46, 112, @@ -1179,11 +1300,11 @@ constexpr fir_taps_real<24> taps_40k_wfm_decim_0 = { }}, }; -// IFIR prototype filter: fs=768000, pass=20000, stop=55000, decim=2, fout=384000 -constexpr fir_taps_real<16> taps_40k_wfm_decim_1 = { - .low_frequency_normalized = -20000.0f / 768000.0f, - .high_frequency_normalized = 20000.0f / 768000.0f, - .transition_normalized = 35000.0f / 768000.0f, +// IFIR prototype filter: fs=768000, pass=37500, stop=112500, decim=2, fout=384000 +constexpr fir_taps_real<16> taps_80k_wfm_decim_1 = { + .low_frequency_normalized = -37500.0f / 768000.0f, + .high_frequency_normalized = 37500.0f / 768000.0f, + .transition_normalized = 75000.0f / 768000.0f, .taps = {{ 83, 299, @@ -1204,6 +1325,192 @@ constexpr fir_taps_real<16> taps_40k_wfm_decim_1 = { }}, }; +// WFMAM decimation filters //////////////////////////////////////////////// +// Used for NOAA 137 Mhz APT sat demod. +// IFIR prototype filter: fs=768000, pass=40000, stop=95000, decim=8, fout=96000 +constexpr fir_taps_real<32> taps_80k_wfmam_decim_1 = { + .low_frequency_normalized = -40000.0f / 768000.0f, + .high_frequency_normalized = 40000.0f / 768000.0f, + .transition_normalized = 53000.0f / 768000.0f, + .taps = {{ + 5, + -37, + -120, + -248, + -397, + -519, + -535, + -354, + 106, + 896, + 2006, + 3355, + 4797, + 6136, + 7171, + 7736, + 7736, + 7171, + 6136, + 4797, + 3355, + 2006, + 896, + 106, + -354, + -535, + -519, + -397, + -248, + -120, + -37, + 5, + + }}, +}; + +// WFMAM decimation filters //////////////////////////////////////////////// +// Used for NOAA 137 Mhz APT sat demod. +// IFIR prototype filter: fs=768000, pass=19000, stop=68000, decim=8, fout=96000 +constexpr fir_taps_real<32> taps_38k_wfmam_decim_1 = { + .low_frequency_normalized = -19000.0f / 768000.0f, + .high_frequency_normalized = 19000.0f / 768000.0f, + .transition_normalized = 49000.0f / 768000.0f, + .taps = {{ + 49, + 91, + 175, + 303, + 483, + 724, + 1028, + 1391, + 1805, + 2253, + 2712, + 3158, + 3560, + 3891, + 4127, + 4250, + 4250, + 4127, + 3891, + 3560, + 3158, + 2712, + 2253, + 1805, + 1391, + 1028, + 724, + 483, + 303, + 175, + 91, + 49, + }}, +}; + +/* 1st Wideband FM demod baseband filter of audio AM tones , + to pass all DSB band of AM fsubcarrier 2.4Khz mod. with APT */ +/* 24kHz int16_t input + * -> FIR filter, <4.5kHz (0.1875fs) pass, >5.2kHz (0.2166fs) stop + * -> 12kHz int16_t output, gain of 1.0 (I think). + * sum(abs(taps)): 125152 , before <125270>, very similar. + */ +constexpr fir_taps_real<64> taps_64_lp_1875_2166{ + .low_frequency_normalized = -0.1875f, + .high_frequency_normalized = 0.1875f, + .transition_normalized = 0.03f, + .taps = {{ + 38, + -21, + -51, + -9, + 77, + 82, + -50, + -168, + -67, + 190, + 253, + -61, + -403, + -243, + 356, + 616, + 15, + -814, + -671, + 550, + 1335, + 334, + -1527, + -1689, + 725, + 2978, + 1455, + -3277, + -5361, + 830, + 13781, + 24549, + 24549, + 13781, + 830, + -5361, + -3277, + 1455, + 2978, + 725, + -1689, + -1527, + 334, + 1335, + 550, + -671, + -814, + 15, + 616, + 356, + -243, + -403, + -61, + 253, + 190, + -67, + -168, + -50, + 82, + 77, + -9, + -51, + -21, + 38, + }}, +}; + +/* 1st Wideband FM demod baseband filter of audio AM tones , + to pass all DSB band of AM fsubcarrier 2.4Khz mod. with APT */ +/* 24kHz int16_t input + * -> FIR filter, BPF center 2k4 carrier ,APT BW 2kHz + * -> 12kHz int16_t output, gain of 1.0 (I think). + */ +constexpr fir_taps_real<64> taps_64_bpf_2k4_bw_2k{ + .low_frequency_normalized = -0.1875f, // not updated, this is just for LPF , waterfall GUI, we are not using in BPF NOAA app. + .high_frequency_normalized = 0.1875f, // not used GUI in NOAA App. + .transition_normalized = 0.03f, // not used GUI in NOAA app. + .taps = {{-45, -29, 32, 63, 0, -125, -181, -81, 61, + 0, -329, -635, -551, -147, 0, -547, -1404, -1625, + -849, 0, -414, -2118, -3358, -2422, 0, 911, -1792, + -6126, -6773, 0, 11839, 21131, 21131, 11839, 0, -6773, + -6126, -1792, 911, 0, -2422, -3358, -2118, -414, 0, + -849, -1625, -1404, -547, 0, -147, -551, -635, -329, + 0, 61, -81, -181, -125, 0, 63, 32, -29, + -45}}, +}; + // TPMS decimation filters //////////////////////////////////////////////// // IFIR image-reject filter: fs=2457600, pass=100000, stop=407200, decim=4, fout=614400 @@ -1342,4 +1649,36 @@ static constexpr fir_taps_real<24> taps_BTLE_2M_PHY_decim_0 = { }}, }; + +// Tested to be better at capturing both 4.0 and 5.0 device. Better attenuation at channel end. +static constexpr fir_taps_real<24> taps_BTLE_Dual_PHY = { + .low_frequency_normalized = -750000.0f / 4000000.0f, + .high_frequency_normalized = 750000.0f / 4000000.0f, + .transition_normalized = 250000.0f / 4000000.0f, + .taps = {{3, + -5, + -97, + -144, + 317, + 1099, + 396, + -2887, + -4814, + 1912, + 18134, + 32767, + 32767, + 18134, + 1912, + -4814, + -2887, + 396, + 1099, + 317, + -144, + -97, + -5, + 3}}, +}; + #endif /*__DSP_FIR_TAPS_H__*/ diff --git a/firmware/common/dsp_iir_config.hpp b/firmware/common/dsp_iir_config.hpp index 177475df8..b1ab54506 100644 --- a/firmware/common/dsp_iir_config.hpp +++ b/firmware/common/dsp_iir_config.hpp @@ -55,6 +55,12 @@ constexpr iir_biquad_config_t audio_12k_hpf_300hz_config{ {0.89485861f, -1.78971721f, 0.89485861f}, {1.00000000f, -1.77863178f, 0.80080265f}}; +// scipy.signal.butter(2, 1500 / 6000.0, 'low', analog=False) +constexpr iir_biquad_config_t apt_audio_12k_lpf_1500hz_config{ + // Added to lpf the apt audio in wefax mode , before sending to SD card or spk. + {0.09763107f, 0.19526215f, 0.09763107f}, + {1.00000000f, -0.94280904f, 0.33333333f}}; + // scipy.signal.butter(2, 300 / 4000.0, 'highpass', analog=False) constexpr iir_biquad_config_t audio_8k_hpf_300hz_config{ {0.84645925f, -1.69291851f, 0.84645925f}, @@ -102,4 +108,15 @@ constexpr iir_biquad_config_t audio_48k_deemph_2122_6_config{ {0.12264116f, 0.12264116f, 0.00000000f}, {1.00000000f, -0.75471767f, 0.00000000f}}; +// scipy.signal.iirnotch(f0, Q, fs) = signal.iirnotch(2400, 15, 12000) +constexpr iir_biquad_config_t apt_audio_12k_notch_2k4_config{ + {0.95977357f, -0.59317269f, 0.95977357f}, + {1.00000000f, -0.59317269f, 0.91954714f}}; + +// scipy.signal.butter(2, 2000 / 6000.0, 'low', analog=False) +constexpr iir_biquad_config_t apt_audio_12k_lpf_2000hz_config{ + // Added to lpf the apt audio in NOAA mode , before sending to SD card or spk. + {0.15505103f, 0.31010205f, 0.15505103f}, + {1.00000000f, -0.6202041f, 0.24040821f}}; + #endif /*__DSP_IIR_CONFIG_H__*/ diff --git a/firmware/common/dsp_sos_config.hpp b/firmware/common/dsp_sos_config.hpp index 6a0ecb00f..23766a19b 100644 --- a/firmware/common/dsp_sos_config.hpp +++ b/firmware/common/dsp_sos_config.hpp @@ -25,7 +25,7 @@ #include "dsp_iir.hpp" // scipy.signal.iirfilter(ftype="ellip", N = 10, rp = 0.5, rs = 60.0, Wn = 0.5, btype = 'lowpass', output="sos") - +// 3khz cutofff @fs:12Khz , used in Hilbert constexpr iir_biquad_df2_config_t half_band_lpf_config[5] = { {0.02339042f, 0.0411599f, 0.02339042f, 1.0f, -0.95317621f, 0.33446485f}, {1.0f, 0.82196114f, 1.0f, 1.0f, -0.50327735f, 0.63611027f}, @@ -33,4 +33,22 @@ constexpr iir_biquad_df2_config_t half_band_lpf_config[5] = { {1.0f, 0.14394122f, 1.0f, 1.0f, -0.04368236f, 0.94798064f}, {1.0f, 0.08720754, 1.0f, 1.0f, 0.00220944f, 0.98743139f}}; +// scipy.signal.iirfilter(ftype="ellip", N = 10, rp = 0.5, rs = 60.0, Wn = 0.99, btype = 'lowpass', output="sos") +// 6khz cutofff @fs:12Khz , used in AMFM demod for WFAX +constexpr iir_biquad_df2_config_t full_band_lpf_config[5] = { + {0.88095275f, 1.76184993f, 0.88095275f, 1.0f, 1.89055677f, 0.89616378f}, + {1.0f, 1.99958798f, 1.0f, 1.0f, 1.9781807f, 0.98002549f}, + {1.0f, 1.99928911f, 1.0f, 1.0f, 1.99328036f, 0.99447816f}, + {1.0f, 1.99914562f, 1.0f, 1.0f, 1.997254f, 0.99828526f}, + {1.0f, 1.99909558f, 1.0f, 1.0f, 1.9986187f, 0.99960319f}}; + +// scipy.signal.iirfilter(ftype="ellip", N = 10, rp = 0.5 , rs = 60.0, Wn = 0.25, btype = 'lowpass', output="sos") +// 1.5khz cutofff @fs:12Khz, used in AMFM demod for WFAX +constexpr iir_biquad_df2_config_t quarter_band_lpf_config[5] = { + {0.00349312f, 0.00319397f, 0.00349312f, 1.0f, -1.53025211f, 0.6203438f}, + {1.0f, -0.83483341f, 1.0f, 1.0f, -1.47619047f, 0.77120659f}, + {1.0f, -1.23050154f, 1.0f, 1.0f, -1.43058949f, 0.9000896f}, + {1.0f, -1.33837384f, 1.0f, 1.0f, -1.41007744f, 0.96349953f}, + {1.0f, -1.36921549f, 1.0f, 1.0f, -1.40680439f, 0.9910884f}}; + #endif /*__DSP_SOS_CONFIG_H__*/ diff --git a/firmware/common/jammer.hpp b/firmware/common/jammer.hpp index 29fadde8d..6b469c163 100644 --- a/firmware/common/jammer.hpp +++ b/firmware/common/jammer.hpp @@ -1,6 +1,7 @@ /* * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. * Copyright (C) 2016 Furrtek + * Copyright (C) 2025 RocketGod - Added modes from my Flipper Zero RF Jammer App - https://betaskynet.com * * This file is part of PortaPack. * @@ -20,12 +21,12 @@ * Boston, MA 02110-1301, USA. */ -#define JAMMER_CH_WIDTH 1000000 -#define JAMMER_MAX_CH 24 - #ifndef __JAMMER_H__ #define __JAMMER_H__ +#define JAMMER_CH_WIDTH 1000000 +#define JAMMER_MAX_CH 80 + namespace jammer { typedef struct jammer_range { @@ -37,7 +38,15 @@ typedef struct jammer_range { enum JammerType : uint32_t { TYPE_FSK = 0, TYPE_TONE = 1, - TYPE_SWEEP = 2 + TYPE_SWEEP = 2, + TYPE_RANDOM = 3, + TYPE_SINE = 4, + TYPE_SQUARE = 5, + TYPE_SAWTOOTH = 6, + TYPE_TRIANGLE = 7, + TYPE_CHIRP = 8, + TYPE_GAUSSIAN = 9, + TYPE_BRUTEFORCE = 10 }; } /* namespace jammer */ diff --git a/firmware/common/lcd_ili9341.cpp b/firmware/common/lcd_ili9341.cpp index 3c2a0f77f..e97007229 100644 --- a/firmware/common/lcd_ili9341.cpp +++ b/firmware/common/lcd_ili9341.cpp @@ -1,6 +1,7 @@ /* * Copyright (C) 2014 Jared Boone, ShareBrained Technology, Inc. * Copyright (C) 2016 Furrtek + * copyleft 2025 Whiterose of the Dark Army * * This file is part of PortaPack. * @@ -32,6 +33,8 @@ using namespace portapack; #include "file.hpp" +#include "portapack_persistent_memory.hpp" + #include #include @@ -142,7 +145,13 @@ void lcd_init() { // REV = 1 (normally white) // NL = 0b100111 (default) // PCDIV = 0b000000 (default?) - io.lcd_data_write_command_and_data(0xB6, {0x0A, 0xA2, 0x27, 0x00}); + + /*as per the datasheet chapter 8.3.7, addr B6h, + data "REV" bit, liquid crystal type:*/ + if (portapack::persistent_memory::config_lcd_normally_black()) + io.lcd_data_write_command_and_data(0xB6, {0x0A, 0x22, 0x27, 0x00}); // IPS : normally black : 0 + else + io.lcd_data_write_command_and_data(0xB6, {0x0A, 0xA2, 0x27, 0x00}); // TFT : normally white : 1 // Power Control 1 // VRH[5:0] @@ -231,6 +240,7 @@ void lcd_start_ram_write( lcd_caset(p.x(), p.x() + s.width() - 1); lcd_paset(p.y(), p.y() + s.height() - 1); lcd_ramwr_start(); + io.update_cached_values(); } void lcd_start_ram_read( @@ -307,14 +317,6 @@ void ILI9341::wake() { lcd_wake(); } -void ILI9341::set_inverted(bool invert) { - if (invert) { - io.lcd_data_write_command_and_data(0x21, {}); - } else { - io.lcd_data_write_command_and_data(0x20, {}); - } -} - void ILI9341::fill_rectangle(ui::Rect r, const ui::Color c) { const auto r_clipped = r.intersect(screen_rect()); if (!r_clipped.is_empty()) { @@ -645,31 +647,58 @@ void ILI9341::draw_bitmap( const ui::Size size, const uint8_t* const pixels, const ui::Color foreground, - const ui::Color background) { - // Not a transparent background - if (ui::Color::magenta().v != background.v) { - lcd_start_ram_write(p, size); + const ui::Color background, + uint8_t zoom_level) { + if (zoom_level <= 1) { + // Not a transparent background + if (ui::Color::magenta().v != background.v) { + lcd_start_ram_write(p, size); - const size_t count = size.width() * size.height(); - for (size_t i = 0; i < count; i++) { - const auto pixel = pixels[i >> 3] & (1U << (i & 0x7)); - io.lcd_write_pixel(pixel ? foreground : background); - } - } else { - int x = p.x(); - int y = p.y(); - int maxX = x + size.width(); - const size_t count = size.width() * size.height(); - for (size_t i = 0; i < count; i++) { - const auto pixel = pixels[i >> 3] & (1U << (i & 0x7)); - if (pixel) { - draw_pixel(ui::Point(x, y), foreground); + const size_t count = size.width() * size.height(); + for (size_t i = 0; i < count; i++) { + const auto pixel = pixels[i >> 3] & (1U << (i & 0x7)); + io.lcd_write_pixel(pixel ? foreground : background); } - // Move to the next pixel - x++; - if (x >= maxX) { - x = p.x(); - y++; + } else { + // transparent bg + int x = p.x(); + int y = p.y(); + int maxX = x + size.width(); + const size_t count = size.width() * size.height(); + for (size_t i = 0; i < count; i++) { + const auto pixel = pixels[i >> 3] & (1U << (i & 0x7)); + if (pixel) { + draw_pixel(ui::Point(x, y), foreground); + } + // move to next px + x++; + if (x >= maxX) { + x = p.x(); + y++; + } + } + } + } else { // zoom + + // dot to square + for (int y = 0; y < size.height(); y++) { + for (int x = 0; x < size.width(); x++) { + // pos + size_t bit_index = y * size.width() + x; + int byte_index = bit_index >> 3; + int bit_pos = bit_index & 0x7; + + // val + const auto pixel = pixels[byte_index] & (1U << bit_pos); + /* ^ the byte_index-th bit AKA current bit + ^ current px in current byte*/ + + if (pixel || background.v != ui::Color::magenta().v) { + fill_rectangle( + {p.x() + x * zoom_level, p.y() + y * zoom_level, + zoom_level, zoom_level}, + pixel ? foreground : background); + } } } } @@ -679,8 +708,9 @@ void ILI9341::draw_glyph( const ui::Point p, const ui::Glyph& glyph, const ui::Color foreground, - const ui::Color background) { - draw_bitmap(p, glyph.size(), glyph.pixels(), foreground, background); + const ui::Color background, + uint8_t zoom_level) { + draw_bitmap(p, glyph.size(), glyph.pixels(), foreground, background, zoom_level); } void ILI9341::scroll_set_area( diff --git a/firmware/common/lcd_ili9341.hpp b/firmware/common/lcd_ili9341.hpp index cab63516f..2637b68b0 100644 --- a/firmware/common/lcd_ili9341.hpp +++ b/firmware/common/lcd_ili9341.hpp @@ -34,7 +34,7 @@ namespace lcd { class ILI9341 { public: - constexpr ILI9341() + ILI9341() : scroll_state{0, 0, height(), 0} { } @@ -50,8 +50,6 @@ class ILI9341 { void sleep(); void wake(); - void set_inverted(bool invert); - void fill_rectangle(ui::Rect r, const ui::Color c); void fill_rectangle_unrolled8(ui::Rect r, const ui::Color c); void draw_line(const ui::Point start, const ui::Point end, const ui::Color color); @@ -74,25 +72,38 @@ class ILI9341 { draw_pixels(r, colors.data(), colors.size()); } + void draw_pixels( + const ui::Rect r, + const std::vector& colors) { + draw_pixels(r, colors.data(), colors.size()); + } + template void read_pixels( const ui::Rect r, std::array& colors) { read_pixels(r, colors.data(), colors.size()); } + void read_pixels( + const ui::Rect r, + std::vector& colors) { + read_pixels(r, colors.data(), colors.size()); + } void draw_bitmap( const ui::Point p, const ui::Size size, const uint8_t* const data, const ui::Color foreground, - const ui::Color background); + const ui::Color background, + uint8_t zoom_level = 1); void draw_glyph( const ui::Point p, const ui::Glyph& glyph, const ui::Color foreground, - const ui::Color background); + const ui::Color background, + uint8_t zoom_level = 1); /*** Scrolling *** * Scrolling support is implemented in the ILI9341 driver. Basically a region @@ -138,9 +149,9 @@ class ILI9341 { */ ui::Coord scroll_area_y(const ui::Coord y) const; - constexpr ui::Dim width() const { return ui::screen_width; } - constexpr ui::Dim height() const { return ui::screen_height; } - constexpr ui::Rect screen_rect() const { return {0, 0, width(), height()}; } + ui::Dim width() { return ui::screen_width; } + ui::Dim height() { return ui::screen_height; } + ui::Rect screen_rect() { return {0, 0, width(), height()}; } void draw_pixels(const ui::Rect r, const ui::Color* const colors, const size_t count); void read_pixels(const ui::Rect r, ui::ColorRGB888* const colors, const size_t count); diff --git a/firmware/common/message.hpp b/firmware/common/message.hpp index a619816ca..74427ae54 100644 --- a/firmware/common/message.hpp +++ b/firmware/common/message.hpp @@ -127,6 +127,14 @@ class Message { FreqChangeCommand = 70, I2CDevListChanged = 71, LightData = 72, + WeFaxRxConfigure = 73, + WeFaxRxStatusData = 74, + WeFaxRxImageData = 75, + WFMAMConfigure = 76, + NoaaAptRxConfigure = 77, + NoaaAptRxStatusData = 78, + NoaaAptRxImageData = 79, + FSKPacket = 80, MAX }; @@ -445,6 +453,17 @@ struct BlePacketData { uint8_t dataLen; }; +struct FskPacketData { + int8_t real; + int8_t imag; + int max_dB; + uint8_t data[512]; + uint16_t dataLen; + uint64_t syncWord; + float power; + float frequency_offset_hz; +}; + class BLEPacketMessage : public Message { public: constexpr BLEPacketMessage( @@ -456,6 +475,17 @@ class BLEPacketMessage : public Message { BlePacketData* packet{nullptr}; }; +class FSKRxPacketMessage : public Message { + public: + constexpr FSKRxPacketMessage( + FskPacketData* packet) + : Message{ID::FSKPacket}, + packet{packet} { + } + + FskPacketData* packet{nullptr}; +}; + class CodedSquelchMessage : public Message { public: constexpr CodedSquelchMessage( @@ -580,11 +610,42 @@ class WFMConfigureMessage : public Message { const iir_biquad_config_t audio_deemph_config; }; +class WFMAMConfigureMessage : public Message { + public: + constexpr WFMAMConfigureMessage( + const fir_taps_real<24> decim_0_filter, + const fir_taps_real<32> decim_1_filter, + const fir_taps_real<64> audio_filter, + const size_t deviation, + const iir_biquad_config_t audio_hpf_config, + const iir_biquad_config_t audio_deemph_config) + : Message{ID::WFMAMConfigure}, + decim_0_filter(decim_0_filter), + decim_1_filter(decim_1_filter), + audio_filter(audio_filter), + deviation{deviation}, + audio_hpf_config(audio_hpf_config), + audio_deemph_config(audio_deemph_config) { + } + + const fir_taps_real<24> decim_0_filter; + const fir_taps_real<32> decim_1_filter; + const fir_taps_real<64> audio_filter; + const size_t deviation; + const iir_biquad_config_t audio_hpf_config; + const iir_biquad_config_t audio_deemph_config; +}; + class AMConfigureMessage : public Message { public: enum class Modulation : int32_t { DSB = 0, SSB = 1, + SSB_FM = 2, // Added new for RX Wefax mode, to demodulate APT signal ,FM modulated inside audio subcarrier tones, and then up broadcasted in SSB USB . + }; + enum class Zoom_waterfall : size_t { + ZOOM_x_1 = 1, + ZOOM_x_2 = 2, }; constexpr AMConfigureMessage( @@ -593,14 +654,17 @@ class AMConfigureMessage : public Message { const fir_taps_real<32> decim_2_filter, const fir_taps_complex<64> channel_filter, const Modulation modulation, - const iir_biquad_config_t audio_hpf_config) + const iir_biquad_config_t audio_hpf_lpf_config, + const size_t channel_spectrum_decimation_factor) + : Message{ID::AMConfigure}, decim_0_filter(decim_0_filter), decim_1_filter(decim_1_filter), decim_2_filter(decim_2_filter), channel_filter(channel_filter), modulation{modulation}, - audio_hpf_config(audio_hpf_config) { + audio_hpf_lpf_config(audio_hpf_lpf_config), + channel_spectrum_decimation_factor(channel_spectrum_decimation_factor) { } const fir_taps_real<24> decim_0_filter; @@ -608,7 +672,8 @@ class AMConfigureMessage : public Message { const fir_taps_real<32> decim_2_filter; const fir_taps_complex<64> channel_filter; const Modulation modulation; - const iir_biquad_config_t audio_hpf_config; + const iir_biquad_config_t audio_hpf_lpf_config; + const size_t channel_spectrum_decimation_factor; }; // TODO: Put this somewhere else, or at least the implementation part. @@ -1085,24 +1150,27 @@ class FSKConfigureMessage : public Message { class FSKRxConfigureMessage : public Message { public: constexpr FSKRxConfigureMessage( - const fir_taps_real<24> decim_0_filter, - const fir_taps_real<32> decim_1_filter, - const fir_taps_real<32> channel_filter, - const size_t channel_decimation, - const size_t deviation) + const uint8_t samplesPerSymbol, + const uint32_t syncWord, + const uint8_t syncWordLength, + const uint32_t preamble, + const uint8_t preambleLength, + const uint16_t numDataBytes) : Message{ID::FSKRxConfigure}, - decim_0_filter(decim_0_filter), - decim_1_filter(decim_1_filter), - channel_filter(channel_filter), - channel_decimation{channel_decimation}, - deviation{deviation} { + samplesPerSymbol(samplesPerSymbol), + syncWord(syncWord), + syncWordLength(syncWordLength), + preamble(preamble), + preambleLength(preambleLength), + numDataBytes(numDataBytes) { } - const fir_taps_real<24> decim_0_filter; - const fir_taps_real<32> decim_1_filter; - const fir_taps_real<32> channel_filter; - const size_t channel_decimation; - const size_t deviation; + const uint8_t samplesPerSymbol; + const uint32_t syncWord; + const uint8_t syncWordLength; + const uint32_t preamble; + const uint8_t preambleLength; + const uint16_t numDataBytes; }; class POCSAGConfigureMessage : public Message { @@ -1437,4 +1505,55 @@ class I2CDevListChangedMessage : public Message { : Message{ID::I2CDevListChanged} {} }; +class WeFaxRxConfigureMessage : public Message { + public: + constexpr WeFaxRxConfigureMessage(uint8_t lpm, uint8_t ioc) + : Message{ID::WeFaxRxConfigure}, + lpm{lpm}, + ioc{ioc} { + } + uint8_t lpm = 120; + uint8_t ioc = 0; +}; + +class WeFaxRxStatusDataMessage : public Message { + public: + constexpr WeFaxRxStatusDataMessage(uint8_t state) + : Message{ID::WeFaxRxStatusData}, + state{state} { + } + uint8_t state = 0; +}; + +class WeFaxRxImageDataMessage : public Message { + public: + constexpr WeFaxRxImageDataMessage() + : Message{ID::WeFaxRxImageData} {} + uint8_t image[400]{0}; + uint32_t cnt = 0; +}; + +class NoaaAptRxConfigureMessage : public Message { + public: + constexpr NoaaAptRxConfigureMessage() + : Message{ID::NoaaAptRxConfigure} {} +}; + +class NoaaAptRxStatusDataMessage : public Message { + public: + constexpr NoaaAptRxStatusDataMessage(uint8_t state) + : Message{ID::NoaaAptRxStatusData}, + state{state} { + } + uint8_t state = 0; +}; + +class NoaaAptRxImageDataMessage : public Message { + public: + constexpr NoaaAptRxImageDataMessage() + : Message{ID::NoaaAptRxImageData} {} + uint8_t image[400]{0}; + uint32_t cnt = 0; +}; + #endif /*__MESSAGE_H__*/ diff --git a/firmware/common/png_writer.cpp b/firmware/common/png_writer.cpp index bc5aeb64c..581720586 100644 --- a/firmware/common/png_writer.cpp +++ b/firmware/common/png_writer.cpp @@ -63,7 +63,33 @@ Optional PNGWriter::create( } file.write(png_file_header); - file.write(png_ihdr_screen_capture); + // ihdr dynamic + std::array png_ihdr_dyn; + for (uint8_t i = 0; i < 25; i++) { + png_ihdr_dyn[i] = png_ihdr_screen_capture[i]; + } + // Write width (4 bytes big-endian) + png_ihdr_dyn[8] = (width >> 24) & 0xFF; + png_ihdr_dyn[9] = (width >> 16) & 0xFF; + png_ihdr_dyn[10] = (width >> 8) & 0xFF; + png_ihdr_dyn[11] = width & 0xFF; + + // Write height (4 bytes big-endian) + png_ihdr_dyn[12] = (height >> 24) & 0xFF; + png_ihdr_dyn[13] = (height >> 16) & 0xFF; + png_ihdr_dyn[14] = (height >> 8) & 0xFF; + png_ihdr_dyn[15] = height & 0xFF; + crc.reset(); + crc.process_bytes(&png_ihdr_dyn[4], 4); // Process chunk type "IHDR" + crc.process_bytes(&png_ihdr_dyn[8], 13); // Process chunk data + uint32_t crci = crc.checksum(); + + png_ihdr_dyn[21] = (crci >> 24) & 0xFF; + png_ihdr_dyn[22] = (crci >> 16) & 0xFF; + png_ihdr_dyn[23] = (crci >> 8) & 0xFF; + png_ihdr_dyn[24] = crci & 0xFF; + + file.write(png_ihdr_dyn); write_chunk_header( 2 + height * (5 + 1 + width * 3) + 4, @@ -108,6 +134,35 @@ void PNGWriter::write_scanline(const std::array& scanline) scanline_count++; } +void PNGWriter::write_scanline(const std::vector& scanline) { + constexpr uint8_t scanline_filter_type = 0; + + // Total block length = 1 filter byte + scanline byte length + const uint32_t deflate_block_length = 1 + static_cast(scanline.size() * sizeof(ui::ColorRGB888)); + + const std::array deflate_and_scanline_header{ + static_cast((scanline_count == (height - 1)) ? 0x01 : 0x00), // Final block? + static_cast(deflate_block_length & 0xff), // Length LSB + static_cast((deflate_block_length >> 8) & 0xff), // Length MSB + static_cast((deflate_block_length & 0xff) ^ 0xff), // ~Length LSB + static_cast(((deflate_block_length >> 8) & 0xff) ^ 0xff), // ~Length MSB + scanline_filter_type}; + write_chunk_content(deflate_and_scanline_header); + + adler_32.feed(scanline_filter_type); + adler_32.feed(scanline); + + // Chunked writing to avoid large single writes + constexpr size_t CHUNK_SIZE = 80; // Tune for your hardware/filesystem + + for (size_t i = 0; i < scanline.size(); i += CHUNK_SIZE) { + size_t chunk_len = std::min(CHUNK_SIZE, scanline.size() - i); + write_chunk_content(&scanline[i], chunk_len * sizeof(ui::ColorRGB888)); + } + + scanline_count++; +} + void PNGWriter::write_chunk_header( const size_t length, const std::array& type) { diff --git a/firmware/common/png_writer.hpp b/firmware/common/png_writer.hpp index 348784f9f..688cd517e 100644 --- a/firmware/common/png_writer.hpp +++ b/firmware/common/png_writer.hpp @@ -38,11 +38,12 @@ class PNGWriter { Optional create(const std::filesystem::path& filename); void write_scanline(const std::array& scanline); + void write_scanline(const std::vector& scanline); private: // TODO: These constants are baked in a few places, do not change blithely. - static constexpr int width{240}; - static constexpr int height{320}; + int width{ui::screen_width}; + int height{ui::screen_height}; File file{}; int scanline_count{0}; diff --git a/firmware/common/portapack_io.cpp b/firmware/common/portapack_io.cpp index e9eff2f95..4312abeed 100644 --- a/firmware/common/portapack_io.cpp +++ b/firmware/common/portapack_io.cpp @@ -77,8 +77,22 @@ void IO::reference_oscillator(const bool enable) { io_write(1, io_reg); } -bool IO::get_is_inverted() { - return portapack::persistent_memory::config_lcd_inverted_mode(); +bool IO::get_dark_cover() { + return portapack::persistent_memory::apply_fake_brightness(); +} + +bool IO::get_is_normally_black() { + return portapack::persistent_memory::config_lcd_normally_black(); +} + +uint8_t IO::get_brightness() { + return portapack::persistent_memory::fake_brightness_level(); +} + +void IO::update_cached_values() { + lcd_normally_black = get_is_normally_black(); + dark_cover_enabled = get_dark_cover(); + brightness = get_brightness(); } uint32_t IO::io_update(const TouchPinsConfig write_value) { diff --git a/firmware/common/portapack_io.hpp b/firmware/common/portapack_io.hpp index 968223660..848993ba9 100644 --- a/firmware/common/portapack_io.hpp +++ b/firmware/common/portapack_io.hpp @@ -162,6 +162,9 @@ class IO { } void lcd_write_pixel(ui::Color pixel) { + if (dark_cover_enabled) { + pixel.v = DARKENED_PIXEL(pixel.v, brightness); + } lcd_write_data(pixel.v); } @@ -170,12 +173,18 @@ class IO { } void lcd_write_pixels(ui::Color pixel, size_t n) { + if (dark_cover_enabled) { + pixel.v = DARKENED_PIXEL(pixel.v, brightness); + } while (n--) { lcd_write_data(pixel.v); } } void lcd_write_pixels_unrolled8(ui::Color pixel, size_t n) { + if (dark_cover_enabled) { + pixel.v = DARKENED_PIXEL(pixel.v, brightness); + } auto v = pixel.v; n >>= 3; while (n--) { @@ -222,7 +231,13 @@ class IO { return switches_raw; } - bool get_is_inverted(); + bool lcd_normally_black = false; + bool dark_cover_enabled = false; + uint8_t brightness = 0; + bool get_is_normally_black(); + bool get_dark_cover(); + uint8_t get_brightness(); + void update_cached_values(); uint32_t io_update(const TouchPinsConfig write_value); @@ -404,6 +419,13 @@ class IO { const auto value_low = data_read(); uint32_t original_value = (value_high << 8) | value_low; + if (lcd_normally_black) return original_value; + + if (dark_cover_enabled) { + // this is read data, so if the fake brightness is enabled AKA get_dark_cover() == true, + // then shift to back side AKA UNDARKENED_PIXEL, to prevent read shifted darkern info + original_value = UNDARKENED_PIXEL(original_value, brightness); + } return original_value; } diff --git a/firmware/common/portapack_persistent_memory.cpp b/firmware/common/portapack_persistent_memory.cpp index 773159558..26365d09b 100644 --- a/firmware/common/portapack_persistent_memory.cpp +++ b/firmware/common/portapack_persistent_memory.cpp @@ -103,13 +103,13 @@ struct ui_config_t { uint8_t show_gui_return_icon : 1; uint8_t load_app_settings : 1; uint8_t save_app_settings : 1; - uint8_t show_large_qr_code : 1; + uint8_t UNUSED_7 : 1; // Deprecated, but bit can be set by older firmware bool disable_touchscreen : 1; bool hide_clock : 1; bool clock_show_date : 1; bool clkout_enabled : 1; - bool unused_FB : 1; // apply_fake_brightness + bool apply_fake_brightness : 1; // Fake brightness level, which eventually could be something along the lines of apply_pwm_brightness bool stealth_mode : 1; bool config_login : 1; bool config_splash : 1; @@ -130,16 +130,16 @@ struct ui_config2_t { bool hide_sd_card : 1; bool hide_mute : 1; - bool UNUSED_3 : 1; + bool hide_fake_brightness : 1; bool hide_numeric_battery : 1; bool hide_battery_icon : 1; bool override_batt_calc : 1; - bool UNUSED_4 : 1; - bool UNUSED_5 : 1; - bool UNUSED_6 : 1; + bool button_repeat_delay : 1; + bool button_repeat_speed : 1; + bool button_long_press_delay : 1; + bool battery_charge_hint : 1; uint8_t theme_id; - uint8_t PLACEHOLDER_3; }; static_assert(sizeof(ui_config2_t) == sizeof(uint32_t)); @@ -211,8 +211,8 @@ struct data_t { bool updown_converter; bool updown_frequency_rx_correction; bool updown_frequency_tx_correction; - bool lcd_inverted_mode : 1; - bool UNUSED_5 : 1; + bool lcd_normally_black : 1; + bool encoder_dial_direction : 1; // false = normal, true = reverse bool UNUSED_6 : 1; bool UNUSED_7 : 1; @@ -226,6 +226,9 @@ struct data_t { // Rotary encoder dial sensitivity (encoder.cpp/hpp) uint16_t encoder_dial_sensitivity : 4; + // fake brightness level (not switch, switch is in another place) + uint16_t fake_brightness_level : 4; + // Encoder rotation rate multiplier for larger increments when rotated rapidly uint16_t encoder_rate_multiplier : 4; @@ -286,8 +289,8 @@ struct data_t { updown_converter(false), updown_frequency_rx_correction(false), updown_frequency_tx_correction(false), - lcd_inverted_mode(false), - UNUSED_5(false), + lcd_normally_black(false), + encoder_dial_direction(false), UNUSED_6(false), UNUSED_7(false), @@ -297,6 +300,7 @@ struct data_t { frequency_tx_correction(0), encoder_dial_sensitivity(DIAL_SENSITIVITY_NORMAL), + fake_brightness_level(BRIGHTNESS_50), encoder_rate_multiplier(1), UNUSED(0), @@ -413,7 +417,8 @@ void defaults() { set_config_splash(true); set_config_disable_external_tcxo(false); set_encoder_dial_sensitivity(DIAL_SENSITIVITY_NORMAL); - set_config_speaker_disable(true); // Disable AK4951 speaker by default (in case of OpenSourceSDRLab H2) + set_encoder_dial_direction(false); // false = normal, true = reverse + set_config_speaker_disable(true); // Disable AK4951 speaker by default (in case of OpenSourceSDRLab H2) set_menu_color(Color::grey()); set_ui_hide_numeric_battery(true); // hide the numeric battery by default - no space to display it @@ -465,6 +470,7 @@ void init() { set_config_mode_storage_direct(config_mode_backup); // Firmware upgrade handling - adjust newly defined fields where 0 is an invalid default + if (fake_brightness_level() == 0) set_fake_brightness_level(BRIGHTNESS_50); if (menu_color().v == 0) set_menu_color(Color::grey()); } @@ -474,6 +480,10 @@ void persist() { } /* namespace cache */ +uint32_t get_data_structure_version() { + return data->structure_version; +} + uint32_t pmem_data_word(uint32_t index) { return backup_ram->pmem_data_word(index); } @@ -556,6 +566,10 @@ void set_afsk_space(const int32_t new_value) { data->afsk_space_freq = afsk_freq_range.clip(new_value); } +uint32_t get_modem_def_index() { + return data->modem_def_index; +} + int32_t modem_baudrate() { modem_baudrate_range.reset_if_outside(data->modem_baudrate, modem_baudrate_reset_value); return data->modem_baudrate; @@ -565,13 +579,11 @@ void set_modem_baudrate(const int32_t new_value) { data->modem_baudrate = modem_baudrate_range.clip(new_value); } -/* int32_t modem_bw() { - modem_bw_range.reset_if_outside(data->modem_bw, modem_bw_reset_value); return data->modem_bw; } -void set_modem_bw(const int32_t new_value) { +/*void set_modem_bw(const int32_t new_value) { data->modem_bw = modem_bw_range.clip(new_value); } */ @@ -597,10 +609,6 @@ bool show_gui_return_icon() { // add return icon in touchscreen menu return data->ui_config.show_gui_return_icon != 0; } -bool show_bigger_qr_code() { // show bigger QR code - return data->ui_config.show_large_qr_code != 0; -} - bool disable_touchscreen() { // Option to disable touch screen return data->ui_config.disable_touchscreen; } @@ -645,6 +653,10 @@ bool stealth_mode() { return data->ui_config.stealth_mode; } +bool apply_fake_brightness() { + return data->ui_config.apply_fake_brightness; +} + bool config_login() { return data->ui_config.config_login; } @@ -666,16 +678,20 @@ void set_gui_return_icon(bool v) { data->ui_config.show_gui_return_icon = v ? 1 : 0; } +bool load_app_settings() { + return data->ui_config.load_app_settings; +} + void set_load_app_settings(bool v) { data->ui_config.load_app_settings = v ? 1 : 0; } -void set_save_app_settings(bool v) { - data->ui_config.save_app_settings = v ? 1 : 0; +bool save_app_settings() { + return data->ui_config.save_app_settings; } -void set_show_bigger_qr_code(bool v) { - data->ui_config.show_large_qr_code = v ? 1 : 0; +void set_save_app_settings(bool v) { + data->ui_config.save_app_settings = v ? 1 : 0; } void set_disable_touchscreen(bool v) { @@ -748,6 +764,10 @@ void set_config_backlight_timer(const backlight_config_t& new_value) { data->ui_config.enable_backlight_timeout = static_cast(new_value.timeout_enabled()); } +void set_apply_fake_brightness(const bool v) { + data->ui_config.apply_fake_brightness = v; +} + uint32_t pocsag_last_address() { return data->pocsag_last_address; } @@ -803,6 +823,9 @@ void set_recon_config_bit(uint8_t rc_bit, bool v) { auto bit_mask = 1LL << rc_bit; data->recon_config = v ? (data->recon_config | bit_mask) : (data->recon_config & ~bit_mask); } +uint64_t get_recon_config() { + return data->recon_config; +} bool recon_autosave_freqs() { return check_recon_config_bit(RC_AUTOSAVE_FREQS); } @@ -934,7 +957,9 @@ bool ui_hide_clock() { bool ui_hide_sd_card() { return data->ui_config2.hide_sd_card; } - +bool ui_hide_fake_brightness() { + return data->ui_config2.hide_fake_brightness; +} bool ui_hide_numeric_battery() { return data->ui_config2.hide_numeric_battery; } @@ -947,6 +972,18 @@ uint8_t ui_theme_id() { bool ui_override_batt_calc() { return data->ui_config2.override_batt_calc; } +bool ui_button_repeat_delay() { + return data->ui_config2.button_repeat_delay; +} +bool ui_button_repeat_speed() { + return data->ui_config2.button_repeat_speed; +} +bool ui_button_long_press_delay() { + return data->ui_config2.button_long_press_delay; +} +bool ui_battery_charge_hint() { + return data->ui_config2.battery_charge_hint; +} void set_ui_hide_speaker(bool v) { data->ui_config2.hide_speaker = v; @@ -977,6 +1014,9 @@ void set_ui_hide_clock(bool v) { void set_ui_hide_sd_card(bool v) { data->ui_config2.hide_sd_card = v; } +void set_ui_hide_fake_brightness(bool v) { + data->ui_config2.hide_fake_brightness = v; +} void set_ui_hide_numeric_battery(bool v) { data->ui_config2.hide_numeric_battery = v; } @@ -989,6 +1029,18 @@ void set_ui_theme_id(uint8_t theme_id) { void set_ui_override_batt_calc(bool v) { data->ui_config2.override_batt_calc = v; } +void set_ui_button_repeat_delay(bool v) { + data->ui_config2.button_repeat_delay = v; +} +void set_ui_button_repeat_speed(bool v) { + data->ui_config2.button_repeat_speed = v; +} +void set_ui_button_long_press_delay(bool v) { + data->ui_config2.button_long_press_delay = v; +} +void set_ui_battery_charge_hint(bool v) { + data->ui_config2.battery_charge_hint = v; +} /* Converter */ bool config_converter() { @@ -1038,12 +1090,12 @@ void set_config_freq_rx_correction(uint32_t v) { data->frequency_rx_correction = v; } -// LCD invert -bool config_lcd_inverted_mode() { - return data->lcd_inverted_mode; +// IPS vs TFT +bool config_lcd_normally_black() { + return data->lcd_normally_black; } -void set_lcd_inverted_mode(bool v) { - data->lcd_inverted_mode = v; +void set_lcd_normally_black(bool v) { + data->lcd_normally_black = v; } // Rotary encoder dial settings @@ -1062,6 +1114,13 @@ void set_encoder_rate_multiplier(uint8_t v) { data->encoder_rate_multiplier = v; } +bool encoder_dial_direction() { + return data->encoder_dial_direction; +} +void set_encoder_dial_direction(bool v) { + data->encoder_dial_direction = v; +} + // Recovery mode magic value storage static data_t* data_direct_access = reinterpret_cast(memory::map::backup_ram.base()); @@ -1094,6 +1153,25 @@ void set_config_dst(dst_config_t v) { rtc_time::dst_init(); } +// Fake brightness level (switch is in another place) +uint8_t fake_brightness_level() { + return data->fake_brightness_level; +} +void set_fake_brightness_level(uint8_t v) { + data->fake_brightness_level = v; +} + +// Cycle through 4 brightness options: disabled -> enabled/50% -> enabled/25% -> enabled/12.5% -> disabled +void toggle_fake_brightness_level() { + bool fbe = apply_fake_brightness(); + if ((!fbe) || (data->fake_brightness_level >= BRIGHTNESS_12p5)) { + set_apply_fake_brightness(!fbe); + data->fake_brightness_level = BRIGHTNESS_50; + } else { + data->fake_brightness_level++; + } +} + // Menu Color Scheme Color menu_color() { return data->menu_color; @@ -1143,164 +1221,5 @@ size_t data_size() { return sizeof(data_t); } -// Dump pmem, receiver and transmitter models internals in human readable format - -bool debug_dump() { - ui::Painter painter{}; - std::string debug_dir = "DEBUG"; - std::filesystem::path filename{}; - File pmem_dump_file{}; - // create new dump file name and DEBUG directory - ensure_directory(debug_dir); - filename = next_filename_matching_pattern(debug_dir + "/DEBUG_DUMP_????.TXT"); - if (filename.empty()) { - painter.draw_string({0, 320 - 16}, *ui::Theme::getInstance()->fg_red, "COULD NOT GET DUMP NAME !"); - return false; - } - // dump data fo filename - auto error = pmem_dump_file.create(filename); - if (error) { - painter.draw_string({0, 320 - 16}, *ui::Theme::getInstance()->fg_red, "ERROR DUMPING " + filename.filename().string() + " !"); - return false; - } - pmem_dump_file.write_line("FW version: " VERSION_STRING); - pmem_dump_file.write_line("Ext APPS version req'd: 0x" + to_string_hex(VERSION_MD5)); - pmem_dump_file.write_line("GCC version: " + to_string_dec_int(__GNUC__) + "." + to_string_dec_int(__GNUC_MINOR__) + "." + to_string_dec_int(__GNUC_PATCHLEVEL__)); - - // firmware checksum - pmem_dump_file.write_line("Firmware calculated checksum: 0x" + to_string_hex(simple_checksum(FLASH_STARTING_ADDRESS, FLASH_ROM_SIZE), 8)); - - // write persistent memory - pmem_dump_file.write_line("\n[Persistent Memory]"); - - // full variables - pmem_dump_file.write_line("structure_version: 0x" + to_string_hex(data->structure_version, 8)); - pmem_dump_file.write_line("target_frequency: " + to_string_dec_int(data->target_frequency)); - pmem_dump_file.write_line("correction_ppb: " + to_string_dec_int(data->correction_ppb)); - pmem_dump_file.write_line("modem_def_index: " + to_string_dec_uint(data->modem_def_index)); - pmem_dump_file.write_line("serial_format.data_bit: " + to_string_dec_uint(data->serial_format.data_bits)); - pmem_dump_file.write_line("serial_format.parity: " + to_string_dec_uint(data->serial_format.parity)); - pmem_dump_file.write_line("serial_format.stop_bits: " + to_string_dec_uint(data->serial_format.stop_bits)); - pmem_dump_file.write_line("serial_format.bit_order: " + to_string_dec_uint(data->serial_format.bit_order)); - pmem_dump_file.write_line("modem_bw: " + to_string_dec_int(data->modem_bw)); - pmem_dump_file.write_line("afsk_mark_freq: " + to_string_dec_int(data->afsk_mark_freq)); - pmem_dump_file.write_line("afsk_space_freq: " + to_string_dec_int(data->afsk_space_freq)); - pmem_dump_file.write_line("modem_baudrate: " + to_string_dec_int(data->modem_baudrate)); - pmem_dump_file.write_line("modem_repeat: " + to_string_dec_int(data->modem_repeat)); - pmem_dump_file.write_line("pocsag_last_address: " + to_string_dec_uint(data->pocsag_last_address)); - pmem_dump_file.write_line("pocsag_ignore_address: " + to_string_dec_uint(data->pocsag_ignore_address)); - pmem_dump_file.write_line("tone_mix: " + to_string_dec_uint(data->tone_mix)); - pmem_dump_file.write_line("hardware_config: " + to_string_dec_uint(data->hardware_config)); - pmem_dump_file.write_line("recon_config: 0x" + to_string_hex(data->recon_config, 16)); - pmem_dump_file.write_line("recon_repeat_nb: " + to_string_dec_int(data->recon_repeat_nb)); - pmem_dump_file.write_line("recon_repeat_gain: " + to_string_dec_int(data->recon_repeat_gain)); - pmem_dump_file.write_line("recon_repeat_delay: " + to_string_dec_int(data->recon_repeat_delay)); - pmem_dump_file.write_line("converter: " + to_string_dec_int(data->converter)); - pmem_dump_file.write_line("updown_converter: " + to_string_dec_int(data->updown_converter)); - pmem_dump_file.write_line("updown_frequency_rx_correction: " + to_string_dec_int(data->updown_frequency_rx_correction)); - pmem_dump_file.write_line("updown_frequency_tx_correction: " + to_string_dec_int(data->updown_frequency_tx_correction)); - pmem_dump_file.write_line("lcd_inverted_mode: " + to_string_dec_uint(data->lcd_inverted_mode)); - // pmem_dump_file.write_line("UNUSED_5: " + to_string_dec_int(data->UNUSED_5)); - // pmem_dump_file.write_line("UNUSED_6: " + to_string_dec_int(data->UNUSED_6)); - // pmem_dump_file.write_line("UNUSED_7: " + to_string_dec_int(data->UNUSED_7)); - pmem_dump_file.write_line("converter_frequency_offset: " + to_string_dec_int(data->converter_frequency_offset)); - pmem_dump_file.write_line("frequency_rx_correction: " + to_string_dec_uint(data->frequency_rx_correction)); - pmem_dump_file.write_line("frequency_tx_correction: " + to_string_dec_uint(data->frequency_tx_correction)); - pmem_dump_file.write_line("encoder_dial_sensitivity: " + to_string_dec_uint(data->encoder_dial_sensitivity)); - pmem_dump_file.write_line("encoder_rate_multiplier: " + to_string_dec_uint(data->encoder_rate_multiplier)); - pmem_dump_file.write_line("headphone_volume_cb: " + to_string_dec_int(data->headphone_volume_cb)); - pmem_dump_file.write_line("config_mode_storage: 0x" + to_string_hex(data->config_mode_storage, 8)); - pmem_dump_file.write_line("dst_config: 0x" + to_string_hex((uint32_t)data->dst_config.v, 8)); - pmem_dump_file.write_line("menu_color: 0x" + to_string_hex(data->menu_color.v, 4)); - pmem_dump_file.write_line("touchscreen_threshold: " + to_string_dec_uint(data->touchscreen_threshold)); - - // ui_config bits - const auto backlight_timer = portapack::persistent_memory::config_backlight_timer(); - pmem_dump_file.write_line("ui_config clkout_freq: " + to_string_dec_uint(clkout_freq())); - pmem_dump_file.write_line("ui_config backlight_timer.timeout_enabled: " + to_string_dec_uint(backlight_timer.timeout_enabled())); - pmem_dump_file.write_line("ui_config backlight_timer.timeout_seconds: " + to_string_dec_uint(backlight_timer.timeout_seconds())); - pmem_dump_file.write_line("ui_config show_gui_return_icon: " + to_string_dec_uint(data->ui_config.show_gui_return_icon)); - pmem_dump_file.write_line("ui_config load_app_settings: " + to_string_dec_uint(data->ui_config.load_app_settings)); - pmem_dump_file.write_line("ui_config save_app_settings: " + to_string_dec_uint(data->ui_config.save_app_settings)); - pmem_dump_file.write_line("ui_config show_bigger_qr_code: " + to_string_dec_uint(data->ui_config.show_large_qr_code)); - pmem_dump_file.write_line("ui_config disable_touchscreen: " + to_string_dec_uint(data->ui_config.disable_touchscreen)); - pmem_dump_file.write_line("ui_config hide_clock: " + to_string_dec_uint(data->ui_config.hide_clock)); - pmem_dump_file.write_line("ui_config clock_with_date: " + to_string_dec_uint(data->ui_config.clock_show_date)); - pmem_dump_file.write_line("ui_config clkout_enabled: " + to_string_dec_uint(data->ui_config.clkout_enabled)); - pmem_dump_file.write_line("ui_config stealth_mode: " + to_string_dec_uint(data->ui_config.stealth_mode)); - pmem_dump_file.write_line("ui_config config_login: " + to_string_dec_uint(data->ui_config.config_login)); - pmem_dump_file.write_line("ui_config config_splash: " + to_string_dec_uint(data->ui_config.config_splash)); - - // ui_config2 bits - pmem_dump_file.write_line("ui_config2 hide_speaker: " + to_string_dec_uint(data->ui_config2.hide_speaker)); - pmem_dump_file.write_line("ui_config2 hide_converter: " + to_string_dec_uint(data->ui_config2.hide_converter)); - pmem_dump_file.write_line("ui_config2 hide_stealth: " + to_string_dec_uint(data->ui_config2.hide_stealth)); - pmem_dump_file.write_line("ui_config2 hide_camera: " + to_string_dec_uint(data->ui_config2.hide_camera)); - pmem_dump_file.write_line("ui_config2 hide_sleep: " + to_string_dec_uint(data->ui_config2.hide_sleep)); - pmem_dump_file.write_line("ui_config2 hide_bias_tee: " + to_string_dec_uint(data->ui_config2.hide_bias_tee)); - pmem_dump_file.write_line("ui_config2 hide_clock: " + to_string_dec_uint(data->ui_config2.hide_clock)); - pmem_dump_file.write_line("ui_config2 hide_sd_card: " + to_string_dec_uint(data->ui_config2.hide_sd_card)); - pmem_dump_file.write_line("ui_config2 hide_mute: " + to_string_dec_uint(data->ui_config2.hide_mute)); - pmem_dump_file.write_line("ui_config2 hide_battery_icon: " + to_string_dec_uint(data->ui_config2.hide_battery_icon)); - pmem_dump_file.write_line("ui_config2 hide_numeric_battery: " + to_string_dec_uint(data->ui_config2.hide_numeric_battery)); - pmem_dump_file.write_line("ui_config2 theme_id: " + to_string_dec_uint(data->ui_config2.theme_id)); - pmem_dump_file.write_line("ui_config2 override_batt_calc: " + to_string_dec_uint(data->ui_config2.override_batt_calc)); - - // misc_config bits - pmem_dump_file.write_line("misc_config config_audio_mute: " + to_string_dec_int(config_audio_mute())); - pmem_dump_file.write_line("misc_config config_speaker_disable: " + to_string_dec_int(config_speaker_disable())); - pmem_dump_file.write_line("misc_config config_disable_external_tcxo: " + to_string_dec_uint(config_disable_external_tcxo())); - pmem_dump_file.write_line("misc_config config_sdcard_high_speed_io: " + to_string_dec_uint(config_sdcard_high_speed_io())); - pmem_dump_file.write_line("misc_config config_disable_config_mode: " + to_string_dec_uint(config_disable_config_mode())); - pmem_dump_file.write_line("misc_config beep_on_packets: " + to_string_dec_int(beep_on_packets())); - - // receiver_model - pmem_dump_file.write_line("\n[Receiver Model]"); - pmem_dump_file.write_line("target_frequency: " + to_string_dec_uint(receiver_model.target_frequency())); - pmem_dump_file.write_line("frequency_step: " + to_string_dec_uint(receiver_model.frequency_step())); - pmem_dump_file.write_line("lna: " + to_string_dec_int(receiver_model.lna())); - pmem_dump_file.write_line("vga: " + to_string_dec_int(receiver_model.vga())); - pmem_dump_file.write_line("rf_amp: " + to_string_dec_int(receiver_model.rf_amp())); - pmem_dump_file.write_line("baseband_bandwidth: " + to_string_dec_uint(receiver_model.baseband_bandwidth())); - pmem_dump_file.write_line("sampling_rate: " + to_string_dec_uint(receiver_model.sampling_rate())); - switch (receiver_model.modulation()) { - case ReceiverModel::Mode::AMAudio: - pmem_dump_file.write_line("modulation: Mode::AMAudio"); - break; - case ReceiverModel::Mode::NarrowbandFMAudio: - pmem_dump_file.write_line("modulation: Mode::NarrowbandFMAudio"); - break; - case ReceiverModel::Mode::WidebandFMAudio: - pmem_dump_file.write_line("modulation: Mode::WidebandFMAudio"); - break; - case ReceiverModel::Mode::SpectrumAnalysis: - pmem_dump_file.write_line("modulation: Mode::SpectrumAnalysis"); - break; - case ReceiverModel::Mode::Capture: - pmem_dump_file.write_line("modulation: Mode::Capture"); - break; - default: - pmem_dump_file.write_line("modulation: !!unknown mode!!"); - break; - } - pmem_dump_file.write_line("headphone_volume.centibel: " + to_string_dec_int(receiver_model.headphone_volume().centibel())); - pmem_dump_file.write_line("normalized_headphone_volume: " + to_string_dec_uint(receiver_model.normalized_headphone_volume())); - pmem_dump_file.write_line("am_configuration: " + to_string_dec_uint(receiver_model.am_configuration())); - pmem_dump_file.write_line("nbfm_configuration: " + to_string_dec_uint(receiver_model.nbfm_configuration())); - pmem_dump_file.write_line("wfm_configuration: " + to_string_dec_uint(receiver_model.wfm_configuration())); - - // transmitter_model - pmem_dump_file.write_line("\n[Transmitter Model]"); - pmem_dump_file.write_line("target_frequency: " + to_string_dec_uint(transmitter_model.target_frequency())); - pmem_dump_file.write_line("rf_amp: " + to_string_dec_int(transmitter_model.rf_amp())); - pmem_dump_file.write_line("baseband_bandwidth: " + to_string_dec_uint(transmitter_model.baseband_bandwidth())); - pmem_dump_file.write_line("sampling_rate: " + to_string_dec_uint(transmitter_model.sampling_rate())); - pmem_dump_file.write_line("tx_gain: " + to_string_dec_int(transmitter_model.tx_gain())); - pmem_dump_file.write_line("channel_bandwidth: " + to_string_dec_uint(transmitter_model.channel_bandwidth())); - // on screen information - painter.draw_string({0, 320 - 16}, *ui::Theme::getInstance()->fg_green, filename.filename().string() + " DUMPED !"); - return true; -} - } /* namespace persistent_memory */ } /* namespace portapack */ diff --git a/firmware/common/portapack_persistent_memory.hpp b/firmware/common/portapack_persistent_memory.hpp index 727a20030..35810c384 100644 --- a/firmware/common/portapack_persistent_memory.hpp +++ b/firmware/common/portapack_persistent_memory.hpp @@ -135,6 +135,12 @@ typedef union { } dst_config_t; static_assert(sizeof(dst_config_t) == sizeof(uint32_t)); +enum fake_brightness_level_options { + BRIGHTNESS_50 = 1, + BRIGHTNESS_25 = 2, + BRIGHTNESS_12p5 = 3, // 12p5 is 12.5 +}; + namespace cache { /* Set values in cache to sensible defaults. */ @@ -177,9 +183,13 @@ void set_afsk_mark(const int32_t new_value); int32_t afsk_space_freq(); void set_afsk_space(const int32_t new_value); +uint32_t get_modem_def_index(); + int32_t modem_baudrate(); void set_modem_baudrate(const int32_t new_value); +int32_t modem_bw(); + uint8_t modem_repeat(); void set_modem_repeat(const uint32_t new_value); @@ -199,7 +209,6 @@ bool config_converter(); bool config_updown_converter(); int64_t config_converter_freq(); bool show_gui_return_icon(); -bool show_bigger_qr_code(); bool hide_clock(); bool clock_with_date(); bool config_login(); @@ -209,9 +218,10 @@ backlight_config_t config_backlight_timer(); bool disable_touchscreen(); void set_gui_return_icon(bool v); +bool load_app_settings(); void set_load_app_settings(bool v); +bool save_app_settings(); void set_save_app_settings(bool v); -void set_show_bigger_qr_code(bool v); void set_config_disable_external_tcxo(bool v); void set_config_sdcard_high_speed_io(bool v, bool save); void set_config_disable_config_mode(bool v); @@ -239,13 +249,15 @@ void set_config_audio_mute(bool v); void set_config_speaker_disable(bool v); void set_config_backlight_timer(const backlight_config_t& new_value); void set_disable_touchscreen(bool v); -bool config_lcd_inverted_mode(); -void set_lcd_inverted_mode(bool v); +bool config_lcd_normally_black(); +void set_lcd_normally_black(bool v); uint8_t encoder_dial_sensitivity(); void set_encoder_dial_sensitivity(uint8_t v); uint8_t encoder_rate_multiplier(); void set_encoder_rate_multiplier(uint8_t v); +bool encoder_dial_direction(); +void set_encoder_dial_direction(bool v); uint32_t config_mode_storage_direct(); void set_config_mode_storage_direct(uint32_t v); @@ -267,6 +279,15 @@ uint16_t clkout_freq(); dst_config_t config_dst(); void set_config_dst(dst_config_t v); +/* Fake brightness */ +// switch (if do color change): +bool apply_fake_brightness(); +void set_apply_fake_brightness(const bool v); +// level (color change level): +uint8_t fake_brightness_level(); +void set_fake_brightness_level(uint8_t v); +void toggle_fake_brightness_level(); + /* Touchscreen threshold */ uint16_t touchscreen_threshold(); void set_touchscreen_threshold(uint16_t v); @@ -275,6 +296,7 @@ Color menu_color(); void set_menu_color(Color v); /* Recon app */ +uint64_t get_recon_config(); bool recon_autosave_freqs(); bool recon_autostart_recon(); bool recon_continuous(); @@ -319,11 +341,17 @@ bool ui_hide_camera(); bool ui_hide_sleep(); bool ui_hide_bias_tee(); bool ui_hide_clock(); +bool ui_hide_fake_brightness(); bool ui_hide_numeric_battery(); bool ui_hide_battery_icon(); bool ui_hide_sd_card(); uint8_t ui_theme_id(); bool ui_override_batt_calc(); +bool ui_button_repeat_delay(); +bool ui_button_repeat_speed(); +bool ui_button_long_press_delay(); +bool ui_battery_charge_hint(); + void set_ui_hide_speaker(bool v); void set_ui_hide_mute(bool v); void set_ui_hide_converter(bool v); @@ -332,25 +360,29 @@ void set_ui_hide_camera(bool v); void set_ui_hide_sleep(bool v); void set_ui_hide_bias_tee(bool v); void set_ui_hide_clock(bool v); +void set_ui_hide_fake_brightness(bool v); void set_ui_hide_numeric_battery(bool v); void set_ui_hide_battery_icon(bool v); void set_ui_hide_sd_card(bool v); void set_ui_theme_id(uint8_t v); void set_ui_override_batt_calc(bool v); +void set_ui_button_repeat_delay(bool v); +void set_ui_button_repeat_speed(bool v); +void set_ui_button_long_press_delay(bool v); +void set_ui_battery_charge_hint(bool v); // sd persisting settings bool should_use_sdcard_for_pmem(); int save_persistent_settings_to_file(); int load_persistent_settings_from_file(); +uint32_t get_data_structure_version(); uint32_t pmem_data_word(uint32_t index); uint32_t pmem_stored_checksum(void); uint32_t pmem_calculated_checksum(void); size_t data_size(); -bool debug_dump(); - } /* namespace persistent_memory */ } /* namespace portapack */ diff --git a/firmware/common/portapack_shared_memory.hpp b/firmware/common/portapack_shared_memory.hpp index c7fef0bde..e6a2cc906 100644 --- a/firmware/common/portapack_shared_memory.hpp +++ b/firmware/common/portapack_shared_memory.hpp @@ -35,6 +35,13 @@ struct JammerChannel { uint32_t duration; }; +struct HopperChannel { + bool enabled; + uint64_t center; + uint32_t width; + uint32_t duration; +}; + struct ToneDef { uint32_t delta; uint32_t duration; @@ -61,7 +68,10 @@ struct SharedMemory { union { ToneData tones_data; - JammerChannel jammer_channels[24]; + struct { + JammerChannel jammer_channels[80]; + HopperChannel hopper_channels[24]; + } dummy_seperate; uint8_t data[512]; } bb_data{{{{0, 0}}, 0, {0}}}; diff --git a/firmware/common/sonde_packet.cpp b/firmware/common/sonde_packet.cpp index 2fcc10133..6d6b94871 100644 --- a/firmware/common/sonde_packet.cpp +++ b/firmware/common/sonde_packet.cpp @@ -170,6 +170,81 @@ temp_humid Packet::get_temp_humid() const { result.humid = 0; result.temp = 0; + if (type_ == Type::Meteomodem_M10) { + // https://github.com/projecthorus/radiosonde_auto_rx/blob/master/demod/mod/m10mod.c + // temp: + uint16_t ADC_Ti_raw = (reader_bi_m.read(0x49 * 8, 8) << 8) | reader_bi_m.read(0x48 * 8, 8) << 8; // int.temp.diode, ref: 4095->1.5V + if (ADC_Ti_raw != 0) { + // internal + float vti, ti; + // INCH1A (temp.diode), slau144 + vti = ADC_Ti_raw / 4095.0 * 1.5; // V_REF+ = 1.5V, no calibration + ti = (vti - 0.986) / 0.00355; // 0.986/0.00355=277.75, 1.5/4095/0.00355=0.1032 + result.temp = ti; + } + // NTC - Thermistor Shibaura PB5 - 41E + float p0 = 1.07303516e-03, + p1 = 2.41296733e-04, + p2 = 2.26744154e-06, + p3 = 6.52855181e-08; + // T/K = 1/( p0 + p1*ln(R) + p2*ln(R)^2 + p3*ln(R)^3 ) + + // range/scale 0, 1, 2: // M10-pcb + float Rs_T[3] = {12.1e3, 36.5e3, 475.0e3}; // bias/series + float Rp[3] = {1e20, 330.0e3, 2000.0e3}; // parallel, Rp[0]=inf + + uint8_t scT; // {0,1,2}, range/scale voltage divider + uint16_t ADC_RT; // ADC12 P6.7(A7) , adr_0377h,adr_0376h + // uint16_t Tcal[2]; // adr_1000h[scT*4] + + float adc_max = 4095.0; // ADC12 + float x, R; + float T = 0; // T/Kelvin + + scT = reader_bi_m.read(0x3E * 8, 8); // adr_0455h + ADC_RT = (reader_bi_m.read(0x40 * 8, 8) << 8) | reader_bi_m.read(0x3F * 8, 8); + if (ADC_RT != 0) { + ADC_RT -= 0xA000; + // Tcal[0] = (reader_bi_m.read(0x42 * 8, 8) << 8) | reader_bi_m.read(0x41 * 8, 8); + // Tcal[1] = (reader_bi_m.read(0x44 * 8, 8) << 8) | reader_bi_m.read(0x43 * 8, 8); + + x = (adc_max - ADC_RT) / ADC_RT; // (Vcc-Vout)/Vout + if (scT < 3) + R = Rs_T[scT] / (x - Rs_T[scT] / Rp[scT]); + else + R = -1; + + if (R > 0) T = 1 / (p0 + p1 * log(R) + p2 * log(R) * log(R) + p3 * log(R) * log(R) * log(R)); + result.temp = T - 273.15; + } + + // humidity: + // get count rh: + float TBCCR1 = (reader_bi_m.read(0x35 * 8, 8) | (reader_bi_m.read(0x36 * 8, 8) << 8) | (reader_bi_m.read(0x37 * 8, 8) << 16)) / 1000.0; + // get count 55: + float TBCREF = (reader_bi_m.read(0x32 * 8, 8) | (reader_bi_m.read(0x33 * 8, 8) << 8) | (reader_bi_m.read(0x34 * 8, 8) << 16)) / 1000.0; + if (TBCREF != 0) { + float cRHc55 = TBCCR1 / TBCREF; //;get_count_RH(gpx) / get_count_55(gpx); // CalRef 55%RH , T=20C ? + // get_Tntc2: --unused. + // float Rs = 22.1e3; // P5.6=Vcc + // float R25 = 2.2e3; + // float b = 3650.0; // B/Kelvin + // float T25 = 25.0 + 273.15; // T0=25C, R0=R25=5k + // -> Steinhart-Hart coefficients (polyfit): + + // cRHc55_RH: + // float TH = get_Tntc2(gpx); --unused + float rh = (cRHc55 - 0.8955) / 0.002; // UPSI linear transfer function + // temperature compensation + float T0 = 0.0, T1 = -30.0; // T/C + if (result.temp < T0) rh += T0 - result.temp / 5.5; // approx/empirical + if (result.temp < T1) rh *= 1.0 + (T1 - result.temp) / 75.0; // approx/empirical + if (rh < 0.0) rh = 0.0; + if (rh > 100.0) rh = 100.0; + result.humid = rh; + } + } + if (type_ == Type::Vaisala_RS41_SG && crc_ok_RS41()) // Only process if packet is healthy { // memset(calfrchk, 0, 51); // is this necessary ? only if the sondeID changes (new sonde) diff --git a/firmware/common/spi_image.hpp b/firmware/common/spi_image.hpp index 122ef23cd..cb6dc8c6f 100644 --- a/firmware/common/spi_image.hpp +++ b/firmware/common/spi_image.hpp @@ -118,6 +118,8 @@ constexpr image_tag_t image_tag_usb_sd{'P', 'U', 'S', 'B'}; constexpr image_tag_t image_tag_weather{'P', 'W', 'T', 'H'}; constexpr image_tag_t image_tag_subghzd{'P', 'S', 'G', 'D'}; constexpr image_tag_t image_tag_protoview{'P', 'P', 'V', 'W'}; +constexpr image_tag_t image_tag_wefaxrx{'P', 'W', 'F', 'X'}; +constexpr image_tag_t image_tag_noaaapt_rx{'P', 'N', 'O', 'A'}; constexpr image_tag_t image_tag_noop{'P', 'N', 'O', 'P'}; diff --git a/firmware/common/standalone_app.hpp b/firmware/common/standalone_app.hpp index 6d8cfe9f8..5de9e19d3 100644 --- a/firmware/common/standalone_app.hpp +++ b/firmware/common/standalone_app.hpp @@ -71,7 +71,10 @@ enum app_location_t : uint32_t { RX, TX, DEBUG, - HOME + HOME, + SETTINGS, + GAMES, + TRX }; struct standalone_application_information_t { diff --git a/firmware/common/ui.cpp b/firmware/common/ui.cpp index 58a838f68..8ceb344e7 100644 --- a/firmware/common/ui.cpp +++ b/firmware/common/ui.cpp @@ -28,6 +28,9 @@ namespace ui { +uint16_t screen_width = 240; +uint16_t screen_height = 320; + // CGA palette // Index into this table should match STR_COLOR_ escape string in ui.hpp Color term_colors[16] = { diff --git a/firmware/common/ui.hpp b/firmware/common/ui.hpp index 36a7b837a..61a3ce31f 100644 --- a/firmware/common/ui.hpp +++ b/firmware/common/ui.hpp @@ -26,6 +26,40 @@ namespace ui { +// Positioning helpers PER CHARACTERS (8*16) +// EACH parameters must be used az CHAR position, not PX coordinates. So If you wanna use the 8,16 coordinates (that is the second character in X and second character in Y you must use UI_POS_X(1) UI_POS_Y(1) (since we count from 0) + +// default font height +#define UI_POS_DEFAULT_HEIGHT 16 +// small height +#define UI_POS_DEFAULT_HEIGHT_SMALL 8 +// default font width +#define UI_POS_DEFAULT_WIDTH 8 +// px position of the linenum-th character (Y) +#define UI_POS_Y(linenum) ((int)((linenum)*UI_POS_DEFAULT_HEIGHT)) +// px position of the linenum-th character from the bottom of the screen (Y) (please calculate the +1 line top-bar to it too if that is visible!) +#define UI_POS_Y_BOTTOM(linenum) ((int)(screen_height - (linenum)*UI_POS_DEFAULT_HEIGHT)) +// px position of the linenum-th character from the left of the screen (X) +#define UI_POS_X(charnum) ((int)((charnum)*UI_POS_DEFAULT_WIDTH)) +// px position of the linenum-th character from the right of the screen (X) +#define UI_POS_X_RIGHT(charnum) ((int)(screen_width - ((charnum)*UI_POS_DEFAULT_WIDTH))) +// px position of the left character from the center of the screen (X) (for N character wide string) +#define UI_POS_X_CENTER(charnum) ((int)((screen_width / 2) - ((charnum)*UI_POS_DEFAULT_WIDTH / 2))) +// px width of N characters +#define UI_POS_WIDTH(charnum) ((int)((charnum)*UI_POS_DEFAULT_WIDTH)) +// px width of the screen +#define UI_POS_MAXWIDTH (screen_width) +// px height of N line +#define UI_POS_HEIGHT(linecount) ((int)((linecount)*UI_POS_DEFAULT_HEIGHT)) +// px height of the screen's percent +#define UI_POS_HEIGHT_PERCENT(percent) ((int)(screen_height * (percent) / 100)) +// remaining px from the linenum-th line to the bottom of the screen. (please calculate the +1 line top-bar to it too if that is visible!) +#define UI_POS_HEIGHT_REMAINING(linenum) ((int)(screen_height - ((linenum)*UI_POS_DEFAULT_HEIGHT))) +// remaining px from the charnum-th character to the right of the screen +#define UI_POS_WIDTH_REMAINING(charnum) ((int)(screen_width - ((charnum)*UI_POS_DEFAULT_WIDTH))) +// px width of the screen +#define UI_POS_MAXHEIGHT (screen_height) + // Escape sequences for colored text; second character is index into term_colors[] #define STR_COLOR_BLACK "\x1B\x00" #define STR_COLOR_DARK_BLUE "\x1B\x01" @@ -50,8 +84,8 @@ namespace ui { using Coord = int16_t; using Dim = int16_t; -constexpr uint16_t screen_width = 240; -constexpr uint16_t screen_height = 320; +extern uint16_t screen_width; +extern uint16_t screen_height; /* Dimensions for the default font character. */ constexpr uint16_t char_width = 8; diff --git a/firmware/common/ui_painter.cpp b/firmware/common/ui_painter.cpp index b5711453b..b8c9f47b8 100644 --- a/firmware/common/ui_painter.cpp +++ b/firmware/common/ui_painter.cpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2014 Jared Boone, ShareBrained Technology, Inc. + * copyleft Mr. Robot * * This file is part of PortaPack. * @@ -35,10 +36,12 @@ Style Style::invert() const { .foreground = background}; } -int Painter::draw_char(Point p, const Style& style, char c) { +int Painter::draw_char(Point p, const Style& style, char c, uint8_t zoom_level) { const auto glyph = style.font.glyph(c); - display.draw_glyph(p, glyph, style.foreground, style.background); - return glyph.advance().x(); + + display.draw_glyph(p, glyph, style.foreground, style.background, zoom_level); + + return glyph.advance().x() * zoom_level; } int Painter::draw_string(Point p, const Style& style, std::string_view text) { diff --git a/firmware/common/ui_painter.hpp b/firmware/common/ui_painter.hpp index 5343826fe..11d47aae5 100644 --- a/firmware/common/ui_painter.hpp +++ b/firmware/common/ui_painter.hpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2014 Jared Boone, ShareBrained Technology, Inc. + * copyleft Mr. Robot * * This file is part of PortaPack. * @@ -69,7 +70,7 @@ class Painter { Painter(const Painter&) = delete; Painter(Painter&&) = delete; - int draw_char(Point p, const Style& style, char c); + int draw_char(Point p, const Style& style, char c, uint8_t zoom_factor = 1); int draw_string(Point p, const Style& style, std::string_view text); int draw_string(Point p, const Font& font, Color foreground, Color background, std::string_view text); diff --git a/firmware/common/ui_widget.cpp b/firmware/common/ui_widget.cpp index 9f405bb95..f15b9ec84 100644 --- a/firmware/common/ui_widget.cpp +++ b/firmware/common/ui_widget.cpp @@ -1,6 +1,8 @@ /* * Copyright (C) 2014 Jared Boone, ShareBrained Technology, Inc. * Copyright (C) 2016 Furrtek + * Copyright (C) 2025 RocketGod + * Copyright (C) 2025 HTotoo * * This file is part of PortaPack. * @@ -528,58 +530,63 @@ void BigFrequency::paint(Painter& painter) { Point digit_pos; ui::Color segment_color; - const auto rect = screen_rect(); + if (_frequency != _previous_frequency) { + _previous_frequency = _frequency; - // Erase - painter.fill_rectangle( - {{0, rect.location().y()}, {screen_width, 52}}, - Theme::getInstance()->bg_darkest->background); + rf::Frequency frequency{_frequency}; + const auto rect = screen_rect(); - // Prepare digits - if (!_frequency) { - digits.fill(10); // ----.--- - digit_pos = {0, rect.location().y()}; - } else { - _frequency /= 1000; // GMMM.KKK(uuu) + // Erase + painter.fill_rectangle( + {{0, rect.location().y()}, {screen_width, 52}}, + Theme::getInstance()->bg_darkest->background); - for (i = 0; i < 7; i++) { - digits[6 - i] = _frequency % 10; - _frequency /= 10; - } - - // Remove leading zeros - for (i = 0; i < 3; i++) { - if (!digits[i]) - digits[i] = 16; // "Don't draw" code - else - break; - } - - digit_pos = {(Coord)(240 - ((7 * digit_width) + 8) - (i * digit_width)) / 2, rect.location().y()}; - } - - segment_color = style().foreground; - - // Draw - for (i = 0; i < 7; i++) { - digit = digits[i]; - - if (digit < 16) { - digit_def = segment_font[(uint8_t)digit]; - - for (size_t s = 0; s < 7; s++) { - if (digit_def & 1) - painter.fill_rectangle({digit_pos + segments[s].location(), segments[s].size()}, segment_color); - digit_def >>= 1; - } - } - - if (i == 3) { - // Dot - painter.fill_rectangle({digit_pos + Point(34, 48), {4, 4}}, segment_color); - digit_pos += {(digit_width + 8), 0}; + // Prepare digits + if (!frequency) { + digits.fill(10); // ----.--- + digit_pos = {0, rect.location().y()}; } else { - digit_pos += {digit_width, 0}; + frequency /= 1000; // GMMM.KKK(uuu) + + for (i = 0; i < 7; i++) { + digits[6 - i] = frequency % 10; + frequency /= 10; + } + + // Remove leading zeros + for (i = 0; i < 3; i++) { + if (!digits[i]) + digits[i] = 16; // "Don't draw" code + else + break; + } + + digit_pos = {(Coord)(240 - ((7 * digit_width) + 8) - (i * digit_width)) / 2, rect.location().y()}; + } + + segment_color = style().foreground; + + // Draw + for (i = 0; i < 7; i++) { + digit = digits[i]; + + if (digit < 16) { + digit_def = segment_font[(uint8_t)digit]; + + for (size_t s = 0; s < 7; s++) { + if (digit_def & 1) + painter.fill_rectangle({digit_pos + segments[s].location(), segments[s].size()}, segment_color); + digit_def >>= 1; + } + } + + if (i == 3) { + // Dot + painter.fill_rectangle({digit_pos + Point(34, 48), {4, 4}}, segment_color); + digit_pos += {(digit_width + 8), 0}; + } else { + digit_pos += {digit_width, 0}; + } } } } @@ -1131,7 +1138,7 @@ void ButtonWithEncoder::paint(Painter& painter) { const Style paint_style = {style().font, bg, fg}; - painter.draw_rectangle({r.location(), {r.size().width(), 1}}, Theme::getInstance()->fg_light->foreground); + painter.draw_rectangle({r.location(), {r.size().width(), 1}}, Theme::getInstance()->bg_light->background); painter.draw_rectangle({r.location().x(), r.location().y() + r.size().height() - 1, r.size().width(), 1}, Theme::getInstance()->bg_dark->background); painter.draw_rectangle({r.location().x() + r.size().width() - 1, r.location().y(), 1, r.size().height()}, Theme::getInstance()->bg_dark->background); @@ -2606,15 +2613,19 @@ Waveform::Waveform( uint32_t length, uint32_t offset, bool digital, - Color color) + Color color, + bool clickable) : Widget{parent_rect}, data_{data}, length_{length}, offset_{offset}, digital_{digital}, - color_{color} { - // set_focusable(false); - // previous_data.resize(length_, 0); + color_{color}, + clickable_{clickable} { + if (clickable) { + set_focusable(true); + // previous_data.resize(length_, 0); + } } void Waveform::set_cursor(const uint32_t i, const int16_t position) { @@ -2641,9 +2652,110 @@ void Waveform::set_length(const uint32_t new_length) { } } +bool Waveform::is_paused() const { + return paused_; +} + +void Waveform::set_paused(bool paused) { + paused_ = paused; + if (!paused) { + if_ever_painted_pause = false; + } + set_dirty(); +} + +bool Waveform::is_clickable() const { + return clickable_; +} + +void Waveform::getAccessibilityText(std::string& result) { + result = paused_ ? "paused waveform" : "waveform"; +} + +void Waveform::getWidgetName(std::string& result) { + result = "Waveform"; +} + +bool Waveform::on_key(const KeyEvent key) { + if (!clickable_) return false; + + if (key == KeyEvent::Select) { + set_paused(!paused_); + if (on_select) { + on_select(*this); + } + return true; + } + return false; +} + +bool Waveform::on_keyboard(const KeyboardEvent key) { + if (!clickable_) return false; + + if (key == 32 || key == 10) { + set_paused(!paused_); + if (on_select) { + on_select(*this); + } + return true; + } + return false; +} + +bool Waveform::on_touch(const TouchEvent event) { + if (!clickable_) return false; + + switch (event.type) { + case TouchEvent::Type::Start: + focus(); + return true; + + case TouchEvent::Type::End: + set_paused(!paused_); + if (on_select) { + on_select(*this); + } + return true; + + default: + return false; + } +} + void Waveform::paint(Painter& painter) { // previously it's upside down , low level is up and high level is down, which doesn't make sense, // if that was made for a reason, feel free to revert. + + if (paused_) { + // TODO: this is bad: that it still enter this func and still consume resources. + // even do a if(paused_) return; comsume too, but not that much. + + if (dirty() && !if_ever_painted_pause) { + // clear + painter.fill_rectangle_unrolled8(screen_rect(), Theme::getInstance()->bg_darkest->background); + + // draw "WF HIDDEN" text + const auto r = screen_rect(); + painter.draw_string( + {r.center().x() - 24, r.center().y() - 8}, + style(), + "WF HIDDEN"); + if_ever_painted_pause = true; + } + + if (show_cursors) { + for (uint32_t n = 0; n < 2; n++) { + painter.draw_vline( + Point(std::min(screen_rect().size().width(), (int)cursors[n]), screen_rect().location().y()), + screen_rect().size().height(), + cursor_colors[n]); + } + } + + return; + } + + // not paused size_t n; Coord y, y_offset = screen_rect().location().y(); Coord prev_x = screen_rect().location().x(), prev_y; @@ -2701,6 +2813,211 @@ void Waveform::paint(Painter& painter) { cursor_colors[n]); } } + + // focused highlight border + if (clickable_ && has_focus()) { + painter.draw_rectangle( + screen_rect(), + Theme::getInstance()->fg_light->foreground); + } +} + +/* GraphEq *************************************************************/ + +GraphEq::GraphEq( + Rect parent_rect, + bool clickable) + : Widget{parent_rect}, + clickable_{clickable}, + bar_heights(NUM_BARS, 0), + prev_bar_heights(NUM_BARS, 0) { + if (clickable) { + set_focusable(true); + // previous_data.resize(length_, 0); + } +} + +void GraphEq::set_parent_rect(const Rect new_parent_rect) { + Widget::set_parent_rect(new_parent_rect); + calculate_params(); +} + +void GraphEq::calculate_params() { + y_top = screen_rect().top(); + RENDER_HEIGHT = parent_rect().height(); + BAR_WIDTH = (parent_rect().width() - (BAR_SPACING * (NUM_BARS - 1))) / NUM_BARS; + HORIZONTAL_OFFSET = screen_rect().left(); +} + +bool GraphEq::is_paused() const { + return paused_; +} + +void GraphEq::set_paused(bool paused) { + paused_ = paused; + needs_background_redraw = true; + set_dirty(); +} + +bool GraphEq::is_clickable() const { + return clickable_; +} + +void GraphEq::getAccessibilityText(std::string& result) { + result = paused_ ? "paused GraphEq" : "GraphEq"; +} + +void GraphEq::getWidgetName(std::string& result) { + result = "GraphEq"; +} + +bool GraphEq::on_key(const KeyEvent key) { + if (!clickable_) return false; + + if (key == KeyEvent::Select) { + set_paused(!paused_); + if (on_select) { + on_select(*this); + } + return true; + } + return false; +} + +bool GraphEq::on_keyboard(const KeyboardEvent key) { + if (!clickable_) return false; + + if (key == 32 || key == 10) { + set_paused(!paused_); + if (on_select) { + on_select(*this); + } + return true; + } + return false; +} + +bool GraphEq::on_touch(const TouchEvent event) { + if (!clickable_) return false; + + switch (event.type) { + case TouchEvent::Type::Start: + focus(); + return true; + + case TouchEvent::Type::End: + set_paused(!paused_); + if (on_select) { + on_select(*this); + } + return true; + + default: + return false; + } +} + +void GraphEq::set_theme(Color base_color_, Color peak_color_) { + base_color = base_color_; + peak_color = peak_color_; + set_dirty(); +} + +void GraphEq::update_audio_spectrum(const AudioSpectrum& spectrum) { + const float bin_frequency_size = 48000.0f / 128; + + for (int bar = 0; bar < NUM_BARS; bar++) { + float start_freq = FREQUENCY_BANDS[bar]; + float end_freq = FREQUENCY_BANDS[bar + 1]; + + int start_bin = std::max(1, (int)(start_freq / bin_frequency_size)); + int end_bin = std::min(127, (int)(end_freq / bin_frequency_size)); + + if (start_bin >= end_bin) { + end_bin = start_bin + 1; + } + + float total_energy = 0; + int bin_count = 0; + + for (int bin = start_bin; bin <= end_bin; bin++) { + total_energy += spectrum.db[bin]; + bin_count++; + } + + float avg_db = bin_count > 0 ? (total_energy / bin_count) : 0; + + // Manually boost highs for better visual balance + float treble_boost = 1.0f; + if (bar == 10) + treble_boost = 1.7f; + else if (bar >= 9) + treble_boost = 1.3f; + else if (bar >= 7) + treble_boost = 1.3f; + + // Mid emphasis for a V-shape effect + float mid_boost = 1.0f; + if (bar == 4 || bar == 5 || bar == 6) mid_boost = 1.2f; + + float amplified_db = avg_db * treble_boost * mid_boost; + + if (amplified_db > 255) amplified_db = 255; + + float band_scale = 1.0f; + int target_height = (amplified_db * RENDER_HEIGHT * band_scale) / 255; + + if (target_height > RENDER_HEIGHT) { + target_height = RENDER_HEIGHT; + } + + // Adjusted to look nice to my eyes + float rise_speed = 0.8f; + float fall_speed = 1.0f; + + if (target_height > bar_heights[bar]) { + bar_heights[bar] = bar_heights[bar] * (1.0f - rise_speed) + target_height * rise_speed; + } else { + bar_heights[bar] = bar_heights[bar] * (1.0f - fall_speed) + target_height * fall_speed; + } + } + set_dirty(); +} + +void GraphEq::paint(Painter& painter) { + if (!visible()) return; + if (!is_calculated) { // calc positions first + calculate_params(); + is_calculated = true; + } + if (needs_background_redraw) { + painter.fill_rectangle(screen_rect(), Theme::getInstance()->bg_darkest->background); + needs_background_redraw = false; + } + if (paused_) { + return; + } + const int num_segments = RENDER_HEIGHT / SEGMENT_HEIGHT; + uint16_t bottom = screen_rect().bottom(); + for (int bar = 0; bar < NUM_BARS; bar++) { + int x = HORIZONTAL_OFFSET + bar * (BAR_WIDTH + BAR_SPACING); + int active_segments = (bar_heights[bar] * num_segments) / RENDER_HEIGHT; + + if (prev_bar_heights[bar] > active_segments) { + int clear_height = (prev_bar_heights[bar] - active_segments) * SEGMENT_HEIGHT; + int clear_y = bottom - prev_bar_heights[bar] * SEGMENT_HEIGHT; + painter.fill_rectangle({x, clear_y, BAR_WIDTH, clear_height}, Theme::getInstance()->bg_darkest->background); + } + + for (int seg = 0; seg < active_segments; seg++) { + int y = bottom - (seg + 1) * SEGMENT_HEIGHT; + if (y < y_top) break; + + Color segment_color = (seg >= active_segments - 2 && seg < active_segments) ? peak_color : base_color; + painter.fill_rectangle({x, y, BAR_WIDTH, SEGMENT_HEIGHT - 1}, segment_color); + } + prev_bar_heights[bar] = active_segments; + } } /* VuMeter **************************************************************/ diff --git a/firmware/common/ui_widget.hpp b/firmware/common/ui_widget.hpp index e4c775247..09d7795c7 100644 --- a/firmware/common/ui_widget.hpp +++ b/firmware/common/ui_widget.hpp @@ -1,6 +1,8 @@ /* * Copyright (C) 2014 Jared Boone, ShareBrained Technology, Inc. * Copyright (C) 2016 Furrtek + * Copyright (C) 2025 RocketGod + * Copyright (C) 2025 HTotoo * * This file is part of PortaPack. * @@ -291,6 +293,7 @@ class BigFrequency : public Widget { private: rf::Frequency _frequency; + rf::Frequency _previous_frequency{~0LL}; static constexpr Dim digit_width = 32; @@ -974,7 +977,9 @@ class SymField : public Widget { class Waveform : public Widget { public: - Waveform(Rect parent_rect, int16_t* data, uint32_t length, uint32_t offset, bool digital, Color color); + std::function on_select{}; + + Waveform(Rect parent_rect, int16_t* data, uint32_t length, uint32_t offset, bool digital, Color color, bool clickable = false); Waveform(const Waveform&) = delete; Waveform(Waveform&&) = delete; @@ -985,7 +990,17 @@ class Waveform : public Widget { void set_length(const uint32_t new_length); void set_cursor(const uint32_t i, const int16_t position); + bool is_paused() const; + void set_paused(bool paused); + bool is_clickable() const; + void paint(Painter& painter) override; + bool on_key(const KeyEvent key) override; + bool on_touch(const TouchEvent event) override; + bool on_keyboard(const KeyboardEvent event) override; + + void getAccessibilityText(std::string& result) override; + void getWidgetName(std::string& result) override; private: const Color cursor_colors[2] = {Theme::getInstance()->fg_cyan->foreground, Theme::getInstance()->fg_magenta->foreground}; @@ -997,6 +1012,69 @@ class Waveform : public Widget { Color color_; int16_t cursors[2]{}; bool show_cursors{false}; + bool paused_{false}; + bool clickable_{false}; + bool if_ever_painted_pause{false}; // for prevent the "hidden" label keeps painting and being expensive +}; + +class GraphEq : public Widget { + public: + std::function on_select{}; + + GraphEq(Rect parent_rect, bool clickable = false); + GraphEq(const GraphEq&) = delete; + GraphEq(GraphEq&&) = delete; + GraphEq& operator=(const GraphEq&) = delete; + GraphEq& operator=(GraphEq&&) = delete; + + bool is_paused() const; + void set_paused(bool paused); + bool is_clickable() const; + + void paint(Painter& painter) override; + bool on_key(const KeyEvent key) override; + bool on_touch(const TouchEvent event) override; + bool on_keyboard(const KeyboardEvent event) override; + void set_parent_rect(const Rect new_parent_rect) override; + + void getAccessibilityText(std::string& result) override; + void getWidgetName(std::string& result) override; + void update_audio_spectrum(const AudioSpectrum& spectrum); + void set_theme(Color base_color, Color peak_color); + + private: + bool is_calculated{false}; + bool paused_{false}; + bool clickable_{false}; + bool needs_background_redraw{true}; // Redraw background only when needed. + Color base_color = Color(255, 0, 255); + Color peak_color = Color(255, 255, 255); + std::vector bar_heights; + std::vector prev_bar_heights; + + ui::Dim y_top = 2 * 16; + ui::Dim RENDER_HEIGHT = 288; + ui::Dim BAR_WIDTH = 20; + ui::Dim HORIZONTAL_OFFSET = 2; + static const int NUM_BARS = 11; + static const int BAR_SPACING = 2; + static const int SEGMENT_HEIGHT = 10; + static constexpr std::array FREQUENCY_BANDS = { + 375, // Bass warmth and low rumble (e.g., deep basslines, kick drum body) + 750, // Upper bass punch (e.g., bass guitar punch, kick drum attack) + 1500, // Lower midrange fullness (e.g., warmth in vocals, guitar body) + 2250, // Midrange clarity (e.g., vocal presence, snare crack) + 3375, // Upper midrange bite (e.g., instrument definition, vocal articulation) + 4875, // Presence and edge (e.g., guitar bite, vocal sibilance start) + 6750, // Lower brilliance (e.g., cymbal shimmer, vocal clarity) + 9375, // Brilliance and air (e.g., hi-hat crispness, breathy vocals) + 13125, // High treble sparkle (e.g., subtle overtones, synth shimmer) + 16875, // Upper treble airiness (e.g., faint harmonics, room ambiance) + 20625, // Top-end sheen (e.g., ultra-high harmonics, noise floor) + 24375 // Extreme treble limit (e.g., inaudible overtones, signal cutoff, static) + }; + + void calculate_params(); // re calculate some parameters based on parent_rect() }; class VuMeter : public Widget { diff --git a/firmware/common/utility.cpp b/firmware/common/utility.cpp index 36446e0ad..c4af7f400 100644 --- a/firmware/common/utility.cpp +++ b/firmware/common/utility.cpp @@ -91,6 +91,26 @@ float mag2_to_dbv_norm(const float mag2) { return (fast_log2(mag2) - mag2_log2_max) * mag2_to_db_factor; } +// Function to calculate dBm and normalize based on LNA and VGA settings +float mag2_to_dbm_8bit_normalized(int8_t real, int8_t imag, float v_ref, float R) { + // Step 1: Normalize IQ values (convert 8-bit signed to -1.0 to +1.0) + float I = real / 127.0f; // Map the 8-bit real part to the [-1, 1] range + float Q = imag / 127.0f; // Map the 8-bit imaginary part to the [-1, 1] range + + // Step 2: Compute the magnitude squared (I^2 + Q^2) + float mag2 = I * I + Q * Q; + + // Step 3: Convert the magnitude squared to actual power (in watts) + float voltage_squared = mag2 * v_ref * v_ref; + float power_watts = voltage_squared / R; + + // Step 4: Convert the power to dBm (multiply by 1000 to convert watts to milliwatts) + float power_milliwatts = power_watts * 1000.0f; + float dbm_measured = 10.0f * log10f(power_milliwatts); + + return dbm_measured; +} + // Integer in and out approximation // >40 times faster float sqrt(x*x+y*y) on Cortex M0 // derived from https://dspguru.com/dsp/tricks/magnitude-estimator/ diff --git a/firmware/common/utility.hpp b/firmware/common/utility.hpp index 9eab69e6d..363ef0f27 100644 --- a/firmware/common/utility.hpp +++ b/firmware/common/utility.hpp @@ -90,6 +90,7 @@ float fast_log2(const float val); float fast_pow2(const float val); float mag2_to_dbv_norm(const float mag2); +float mag2_to_dbm_8bit_normalized(int8_t real, int8_t imag, float v_ref, float R); inline float magnitude_squared(const std::complex c) { const auto r = c.real(); diff --git a/firmware/graphics/icon_breakout.png b/firmware/graphics/icon_breakout.png new file mode 100644 index 000000000..6482db123 Binary files /dev/null and b/firmware/graphics/icon_breakout.png differ diff --git a/firmware/graphics/icon_doom.png b/firmware/graphics/icon_doom.png new file mode 100644 index 000000000..cfafb1f25 Binary files /dev/null and b/firmware/graphics/icon_doom.png differ diff --git a/firmware/graphics/icon_games.png b/firmware/graphics/icon_games.png new file mode 100644 index 000000000..a1dffcc74 Binary files /dev/null and b/firmware/graphics/icon_games.png differ diff --git a/firmware/graphics/icon_noaa.png b/firmware/graphics/icon_noaa.png new file mode 100644 index 000000000..818f538f7 Binary files /dev/null and b/firmware/graphics/icon_noaa.png differ diff --git a/firmware/graphics/icon_snake.png b/firmware/graphics/icon_snake.png new file mode 100644 index 000000000..1a925d6c4 Binary files /dev/null and b/firmware/graphics/icon_snake.png differ diff --git a/firmware/graphics/icon_speaker_and_headphones.png b/firmware/graphics/icon_speaker_and_headphones.png index 701cfdea5..5ccda5236 100644 Binary files a/firmware/graphics/icon_speaker_and_headphones.png and b/firmware/graphics/icon_speaker_and_headphones.png differ diff --git a/firmware/graphics/icon_tranceivers.png b/firmware/graphics/icon_tranceivers.png new file mode 100644 index 000000000..67e220ca1 Binary files /dev/null and b/firmware/graphics/icon_tranceivers.png differ diff --git a/firmware/graphics/stopwatch.png b/firmware/graphics/stopwatch.png new file mode 100644 index 000000000..cf9ec38f7 Binary files /dev/null and b/firmware/graphics/stopwatch.png differ diff --git a/firmware/standalone/CMakeLists.txt b/firmware/standalone/CMakeLists.txt index ea1dd0fd1..e6e603d5c 100644 --- a/firmware/standalone/CMakeLists.txt +++ b/firmware/standalone/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.16) project(standalone_apps) diff --git a/firmware/standalone/pacman/main.cpp b/firmware/standalone/pacman/main.cpp index 79dfe52b5..cfb1bbc40 100644 --- a/firmware/standalone/pacman/main.cpp +++ b/firmware/standalone/pacman/main.cpp @@ -65,7 +65,7 @@ __attribute__((section(".standalone_application_information"), used)) standalone 0x00, }, /*.icon_color = 16 bit: 5R 6G 5B*/ 0x0000FFE0, - /*.menu_location = */ app_location_t::UTILITIES, + /*.menu_location = */ app_location_t::GAMES, /*.initialize_app = */ initialize, /*.on_event = */ on_event, diff --git a/firmware/tools/.gitignore b/firmware/tools/.gitignore new file mode 100644 index 000000000..ba0430d26 --- /dev/null +++ b/firmware/tools/.gitignore @@ -0,0 +1 @@ +__pycache__/ \ No newline at end of file diff --git a/firmware/tools/bitmap_tools/.gitignore b/firmware/tools/bitmap_tools/.gitignore new file mode 100644 index 000000000..6078595774 --- /dev/null +++ b/firmware/tools/bitmap_tools/.gitignore @@ -0,0 +1 @@ +bitmap.hpp \ No newline at end of file diff --git a/firmware/tools/bitmap_tools/make_bitmap.py b/firmware/tools/bitmap_tools/make_bitmap.py index 0478fdb27..75f89a0d8 100755 --- a/firmware/tools/bitmap_tools/make_bitmap.py +++ b/firmware/tools/bitmap_tools/make_bitmap.py @@ -98,12 +98,12 @@ f.write("/*\n" "#include \"ui.hpp\"\n\n" "namespace ui {\n\n") -for file in listdir(graphics_path): +for file in sorted(listdir(graphics_path)): if file.endswith(".png") and path.isfile(graphics_path + file): convert_png(graphics_path + file) count += 1 f.write("} /* namespace ui */\n\n") -f.write("#endif/*__BITMAP_HPP__*/\n") +f.write("#endif /*__BITMAP_HPP__*/\n") print(("Converted " + str(count) + " files")) diff --git a/firmware/tools/bitmap_tools/make_bitmap2.py b/firmware/tools/bitmap_tools/make_bitmap2.py new file mode 100644 index 000000000..8df83fd6f --- /dev/null +++ b/firmware/tools/bitmap_tools/make_bitmap2.py @@ -0,0 +1,127 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2016 Furrtek +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# + +import sys +import struct +from PIL import Image +from os import listdir +from os import path +from os import makedirs + +usage_message = f""" +1BPP PortaPack bitmap.hpp generator + +Usage: {sys.argv[0]} +""" + +if len(sys.argv) < 2: + print(usage_message) + sys.exit(-1) + +graphics_path = path.join(sys.argv[1], '') +hex_output_dir = path.join(graphics_path, 'hex_files') + +# Create hex output directory if it doesn't exist +if not path.exists(hex_output_dir): + makedirs(hex_output_dir) + +def convert_png(file): + c = 0 + data = 0 + + rgb_im = Image.open(file).convert('RGBA') + + if rgb_im.size[0] % 8 or rgb_im.size[1] % 8: + print((file + ": Size is not a multiple of 8. Image is not included in bitmap.hpp.")) + sys.exit(-1) + + name = path.basename(file).split(".")[0].lower(); + + # Prepare data for both hpp and hex file + hpp_lines = [] + hex_data = bytearray() + + for i in range(rgb_im.size[1]): + for j in range(rgb_im.size[0]): + r, g, b, a = rgb_im.getpixel((j, i)) + + data >>= 1 + + if r > 127 and g > 127 and b > 127 and a > 127: + data += 128 + + if j % 8 == 7: + hpp_lines.append(" 0x%0.2X,\n" % data) + hex_data.append(data) + data = 0 + + # Write to hpp file + f.write("static constexpr uint8_t bitmap_" + name + "_data[] = {\n") + f.writelines(hpp_lines) + f.write("};\n") + f.write("static constexpr Bitmap bitmap_" + name + " {\n") + f.write(" {" + str(rgb_im.size[0]) + ", " + str(rgb_im.size[1]) + "},\n bitmap_" + name + "_data};\n\n") + + # Write to hex file + hex_filename = path.join(hex_output_dir, name + ".hex") + with open(hex_filename, 'wb') as hex_file: + hex_file.write(hex_data) + + return + +count = 0 + +f = open('bitmap.hpp', 'w') +f.write("/*\n" + " * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc.\n" + " * Copyright (C) 2016 Furrtek\n" + " *\n" + " * This file is part of PortaPack.\n" + " *\n" + " * This program is free software; you can redistribute it and/or modify\n" + " * it under the terms of the GNU General Public License as published by\n" + " * the Free Software Foundation; either version 2, or (at your option)\n" + " * any later version.\n" + " *\n" + " * This program is distributed in the hope that it will be useful,\n" + " * but WITHOUT ANY WARRANTY; without even the implied warranty of\n" + " * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" + " * GNU General Public License for more details.\n" + " *\n" + " * You should have received a copy of the GNU General Public License\n" + " * along with this program; see the file COPYING. If not, write to\n" + " * the Free Software Foundation, Inc., 51 Franklin Street,\n" + " * Boston, MA 02110-1301, USA.\n" + " */\n\n" + "// This file was generated by make_bitmap.py\n\n" + "#ifndef __BITMAP_HPP__\n" + "#define __BITMAP_HPP__\n\n" + "#include \"ui.hpp\"\n\n" + "namespace ui {\n\n") + +for file in listdir(graphics_path): + if file.endswith(".png") and path.isfile(graphics_path + file): + convert_png(graphics_path + file) + count += 1 + +f.write("} /* namespace ui */\n\n") +f.write("#endif/*__BITMAP_HPP__*/\n") + +print(("Converted " + str(count) + " files")) diff --git a/firmware/tools/check_bitmap_usage.sh b/firmware/tools/check_bitmap_usage.sh new file mode 100755 index 000000000..82564c619 --- /dev/null +++ b/firmware/tools/check_bitmap_usage.sh @@ -0,0 +1,10 @@ +#!/bin/bash +for fname in $(ls ../graphics/); do + fname=$(echo "$fname" | awk -F'.' '{print $1}') + out=$(grep -r --exclude="bitmap.hpp" "$fname" ../* ) + ret=$? + if [[ "$ret" -ne 0 ]]; then + echo "$fname not found" + fi +done + diff --git a/firmware/tools/check_external_app_linker_script_correct.py b/firmware/tools/check_external_app_linker_script_correct.py new file mode 100644 index 000000000..44c6fd943 --- /dev/null +++ b/firmware/tools/check_external_app_linker_script_correct.py @@ -0,0 +1,129 @@ +#!/usr/bin/env python3 + +# +# Copyleft (ɔ) 2024 Whiterose from the Dark Army +# +# This file is part of PortaPack. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# + +import re +import sys +from pathlib import Path + +def parse_memory_regions(ld_file_path): + regions = [] + + with open(ld_file_path, 'r') as f: + content = f.read() + + memory_section = re.search(r'MEMORY\s*\{(.*?)\}', content, re.DOTALL) + if not memory_section: + print("ERROR: Could not find MEMORY section in the linker script.") + return [] + + memory_content = memory_section.group(1) + + pattern = r'ram_external_app_(\w+)\s*\(rwx\)\s*:\s*org\s*=\s*(0x[A-Fa-f0-9]+),\s*len\s*=\s*(\d+)k' + matches = re.finditer(pattern, memory_content) + + for match in matches: + app_name = match.group(1) + address = int(match.group(2), 16) # string with hex -> int + length = int(match.group(3)) * 1024 # kb -> bytes + + regions.append({ + 'app_name': app_name, + 'address': address, + 'length': length + }) + + return sorted(regions, key=lambda x: x['address']) + +def validate_memory_regions(regions): + if not regions: + return False + + expected_step = 0x10000 # 64k as step (not sure why) + expected_base = 0xADB10000 # the start (not sure why this one) + expected_size = 32 * 1024 # 32k + issues_found = False + + print("\n") + print(f"checking {len(regions)} external apps address memory regions") + + if regions[0]['address'] != expected_base: + print(f"WARNING: external app first region should start at {hex(expected_base)}, but starts at {hex(regions[0]['address'])}") + issues_found = True + + for i, region in enumerate(regions): + expected_address = expected_base + (i * expected_step) + + # address count + if region['address'] != expected_address: + print(f"WARNING: external app region '{region['app_name']}' has incorrect address") + print(f"want: {hex(expected_address)}, Found: {hex(region['address'])}") + issues_found = True + + # size + if region['length'] != expected_size: + print(f"WARNING: external app region '{region['app_name']}' has incorrect size") + print(f"want: {expected_size//1024}KB, Found: {region['length']//1024}KB") + issues_found = True + + # overlap + if i < len(regions) - 1: + next_region = regions[i + 1] + if region['address'] + region['length'] > next_region['address']: + print(f"WARNING: external app region '{region['app_name']}' overlapped with '{next_region['app_name']}'") + issues_found = True + + return not issues_found + +def main(): + if len(sys.argv) > 1: + # arg + input_path = Path(sys.argv[1]) + if input_path.is_dir(): + ld_file_path = input_path / "external.ld" + if not ld_file_path.exists(): + print(f"some issue causing that we can't see external app's linker script {input_path}, pass.") + return + else: + ld_file_path = input_path + else: + # if no arg, this assume this script is in mayhemrepo/firmware/tools + ld_file_path = Path("..") / "application" / "external" / "external.ld" + + try: + regions = parse_memory_regions(ld_file_path) + + if not regions: + print("some issue causing that we can't see external app's linker script's address list, pass") + + return + + if validate_memory_regions(regions): + print("external app addr seems correct, pass") + else: + print("\nWARNING: It seems you are having incorrect external app addresses.") + + except Exception as e: + print(f"err: {e}") + +if __name__ == "__main__": + main() diff --git a/firmware/tools/docker-entrypoint.sh b/firmware/tools/docker-entrypoint.sh index b564de0fb..8c955dd99 100755 --- a/firmware/tools/docker-entrypoint.sh +++ b/firmware/tools/docker-entrypoint.sh @@ -1,5 +1,26 @@ #!/bin/bash +# +# Copyright (C) 2024 u-foka +# +# This file is part of PortaPack. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# + set -e # exit immediatelly on any failure build_make() { diff --git a/firmware/tools/fast_flash_pp_and_copy_apps.py b/firmware/tools/fast_flash_pp_and_copy_apps.py new file mode 100644 index 000000000..7b460158a --- /dev/null +++ b/firmware/tools/fast_flash_pp_and_copy_apps.py @@ -0,0 +1,270 @@ +# Copyleft Whiterose from the Dark Army +# +# This file is part of PortaPack. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +# this tool allow you flash pp and copy the apps in fastest way. note that you need to have a sdcard switcher to switch sdcard to pc. +# although, if you don't have one, you still can take out the sdcard and plug it into your pc, but i think it would not pretty fast. + +#!/usr/bin/env python3 + +import sys +import glob +import serial +import serial.tools.list_ports +import os +import shutil +import time +import subprocess +import tempfile + +# config +SUDO_PASSWORD = "" +SDCARD_LABEL = "portapack" + + +def write_command(ser, command, wait_response=None, remove_echo=False, dont_wait_ch=False): + + # clean buffer + while True: + try: + if ser.in_waiting: + ser.read(ser.in_waiting) + else: + break + except: + break + + command_with_newline = command + "\r\n" + try: + ser.write(command_with_newline.encode()) + except Exception as e: + return f"write err: {str(e)}" + + response = "" + expected_echo = f"{command}\r\n" + wait_response_met = wait_response is None + + while True: + try: + if ser.in_waiting: + msg = ser.read(ser.in_waiting).decode('utf-8') + response += msg + + if wait_response and wait_response in response: + wait_response_met = True + + if wait_response_met and (dont_wait_ch or "ch> " in response): + if remove_echo: + return response.replace(expected_echo, "") + return response + + except serial.SerialTimeoutException: + continue + except Exception as e: + return f"e: {str(e)}" + +def get_serial_devices(): + ports = serial.tools.list_ports.comports() + + if not ports: + print("no serial device found") + return None + + portapack_device = None + for port in ports: + if port.product == "PortaPack Mayhem": + print(f"found your pp:") + print(f"device: {port.device}") + print(f"description: {port.description}") + print(f"hwid: {port.hwid}") + if port.manufacturer: + print(f"manufacturer: {port.manufacturer}") + if port.serial_number: + print(f"serial_number: {port.serial_number}") + portapack_device = port + break + + if not portapack_device: + print("no pp device found") + + return portapack_device + +def run_sudo_command(cmd): + + if not SUDO_PASSWORD: + print("sudo password not set, please hard code it in the script") + return + + try: + process = subprocess.Popen( + ['sudo', '-S'] + cmd, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + universal_newlines=True + ) + stdout, stderr = process.communicate(input=SUDO_PASSWORD + '\n') + if process.returncode != 0: + raise subprocess.CalledProcessError(process.returncode, cmd, stdout, stderr) + return stdout + except subprocess.CalledProcessError as e: + print(f"sudo command failed: {e}") + raise + +def get_pp_device_linux(): + try: + cmd = ["lsblk", "-o", "NAME,LABEL,FSTYPE,SIZE,MOUNTPOINT", "-n", "-p"] + result = subprocess.run(cmd, capture_output=True, text=True) + + # find your pp sd + for line in result.stdout.splitlines(): + clean_line = line.replace('└─', '').replace('├─', '').strip() + parts = clean_line.split() + + if len(parts) >= 2 and SDCARD_LABEL in parts[1]: # checker + print("found pp sd:") + device_path = parts[0] + #remove `- in it + device_path = device_path.replace('-', '') + device_path = device_path.replace('`', '') + print(device_path) + # if path valid + if not os.path.exists(device_path): + continue + + # if mounted, return mountpoint + if len(parts) >= 5: + mountpoint = parts[4] + return device_path, mountpoint + + # if not, create temp dir and mount + mount_point = tempfile.mkdtemp() + print(f"mount {device_path} to {mount_point}") + run_sudo_command(["mount", "-o", f"uid={os.getuid()},gid={os.getgid()}", device_path, mount_point]) + return device_path, mount_point + + return None, None + except subprocess.CalledProcessError as e: + print(f"command failed: {str(e)}") + return None, None + +def wait_for_pp_drive(): + while True: + if os.name == 'nt': # win didn't test yet, TODO + drives = [d + ':' for d in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' if os.path.exists(d + ':')] + for drive in drives: + if os.path.basename(os.path.abspath(drive)).lower() == SDCARD_LABEL: + return drive, None + else: # linux and mac + device_path, mount_point = get_pp_device_linux() + if device_path and mount_point: + return mount_point, device_path + time.sleep(1) + +def run(): + # worker 1: check device connected + device = get_serial_devices() + if not device: + print("no pp device found") + return + + try: + # worker 2: open serial and send hackrf cmd + ser = serial.Serial(device.device, baudrate=115200, timeout=1) + for i in range(2): + write_command(ser, "hackrf") + ser.close() + + # worker 3: hint user to swtich sdcard to pc + print("\033[92m\n\t+------------------------+") + print("\t| switch PP sdcard to PC |") + print("\t+------------------------+\033[0m") + print("wait PP sdcard...") + + # worker 4: wait pp sd + mount_point, device_path = wait_for_pp_drive() + if not mount_point: + print("no pp sd found") + return + print(f"find pp sd: {mount_point}") + + # worker 5: copy ppma and ppmp apps + apps_dir = os.path.join(mount_point, 'APPS') + if not os.path.exists(apps_dir): + os.makedirs(apps_dir) + + firmware_dir = os.path.join('.', 'firmware', 'application') + for ext in ['ppma', 'ppmp']: + for file in glob.glob(os.path.join(firmware_dir, f'*.{ext}')): + dest = os.path.join(apps_dir, os.path.basename(file)) + print(f"cp: {os.path.basename(file)}") + shutil.copy2(file, dest) + + print("apps copy done") + + # worker 6: umount pp sd + if os.name != 'nt' and device_path: + run_sudo_command(["umount", mount_point]) + os.rmdir(mount_point) # 删除临时挂载点 + + # worker 7: run flash cmd with hackrf_spiflash util + print("\nflash...") + process = subprocess.Popen( + ["hackrf_spiflash", "-w", "./firmware/portapack-mayhem-firmware.bin"], + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + universal_newlines=True + ) + + while True: + output = process.stdout.readline() + if output: + print(output.strip()) + if process.poll() is not None: + break + + if process.returncode != 0: + raise subprocess.CalledProcessError(process.returncode, "hackrf_spiflash") + + # worker 8: hint user to swtich sdcard switcher back to pp + print("\033[92m\n\t+------------------------------------------------+") + print("\t| switch sdcard switcher back to pp, then reboot |") + print("\t+------------------------------------------------+\033[0m") + + except serial.SerialException as e: + print(f"serial comm error: {str(e)}") + except OSError as e: + print(f"file operation error: {str(e)}") + except subprocess.CalledProcessError as e: + print(f"system command error: {str(e)}") + except Exception as e: + print(f"error: {str(e)}") + # ensure umount when error + if os.name != 'nt' and 'mount_point' in locals() and device_path: + try: + run_sudo_command(["umount", mount_point]) + os.rmdir(mount_point) + except: + pass + +if __name__ == "__main__": + try: + run() + except Exception as e: + print(f"error: {str(e)}") + sys.exit(1) diff --git a/firmware/tools/generate_ui-about-simple.cpp.py b/firmware/tools/generate_ui-about-simple.cpp.py index 7386eb464..de19a2cf5 100755 --- a/firmware/tools/generate_ui-about-simple.cpp.py +++ b/firmware/tools/generate_ui-about-simple.cpp.py @@ -53,7 +53,7 @@ AboutView::AboutView(NavigationView& nav) { button_ok.focus(); }; - for (auto& authors_line : authors_list) { + for (auto& authors_line : mayhem_information_list) { // if it's starting with #, it's a title and we have to substract the '#' and paint yellow if (authors_line.size() > 0) { if (authors_line[0] == '#') { @@ -84,15 +84,13 @@ void AboutView::on_frame_sync() { menu_view.set_highlighted(current + 1); } else { menu_view.set_highlighted(0); - // ^ to go back to the REAL top instead of make the 2 at the top to make the title disappeares - menu_view.set_highlighted(2); // the first line that has human name } } } void AboutView::focus() { button_ok.focus(); - menu_view.set_highlighted(2); // the first line that has human name + menu_view.set_highlighted(3); // contributors block starting line } bool AboutView::on_touch(const TouchEvent) { @@ -141,8 +139,12 @@ def get_contributors(url): def generate_content(projects): project_contrib = [] - project_contrib.append("string_view authors_list[] = {\n") - project_contrib.append(" \"# * List of contributors * \",\n") + project_contrib.append("string_view mayhem_information_list[] = {\n") + project_contrib.append(" \"#****** Mayhem Community ******\",\n") + project_contrib.append(" \" \",\n") + project_contrib.append(" \" https://discord.mayhem.app\",\n") + project_contrib.append(" \" \",\n") + project_contrib.append(" \"#**** List of contributors ****\",\n") for project in projects: project_contrib.append(" \" \",\n") project_contrib.append(f" \"#{project[0]}:\",\n") @@ -170,7 +172,7 @@ def pp_create_ui_about_simple_cpp(cpp_file, cppheader, cppcontent, cppfooter): def pp_change_ui_about_simple_cpp(cpp_file, cppcontent): content = [] - content_pattern = re.compile(r"string_view authors_list\[\] = {\n(?:\s+(?:.*,\n)+\s+.*};\n)", re.MULTILINE) + content_pattern = re.compile(r"string_view mayhem_information_list\[\] = {\n(?:\s+(?:.*,\n)+\s+.*};\n)", re.MULTILINE) # Read original file with open(cpp_file, 'r') as file: diff --git a/firmware/tools/make_airlines_db/README.md b/firmware/tools/make_airlines_db/README.md index be691228e..0bead78ff 100644 --- a/firmware/tools/make_airlines_db/README.md +++ b/firmware/tools/make_airlines_db/README.md @@ -3,6 +3,5 @@ Licensed under [GNU GPL v3](../../../LICENSE) USAGE: - - Copy file from: https://raw.githubusercontent.com/kx1t/planefence-airlinecodes/main/airlinecodes.txt - Run Python 3 script: `./make_airlines_db.py` - - Copy file to /ADSB folder on SDCARD + - Move file "airlines.db" to /ADSB folder on SDCARD diff --git a/firmware/tools/make_airlines_db/airlinecodes.txt b/firmware/tools/make_airlines_db/airlinecodes.txt index 9a613c943..9cde5c980 100644 --- a/firmware/tools/make_airlines_db/airlinecodes.txt +++ b/firmware/tools/make_airlines_db/airlinecodes.txt @@ -325,7 +325,7 @@ AMT,ATA Airlines,,United States AMU,Air Macau,AIR MACAO,Macao AMV,AMC Airlines,,Egypt AMW,Air Midwest,,United States -AMX,Aeroméxico,AEROMEXICO,Mexico +AMX,Aeromexico,AEROMEXICO,Mexico AMY,Air Ambar,AIR AMBAR,Dominican Republic AMZ,Amiya Airline,AMIYA AIR,Nigeria ANA,All Nippon Airways,ALL NIPPON,Japan @@ -408,7 +408,7 @@ ARC,Air Routing International Corp.,,United States ARD,Aerocondor,,Portugal ARE,Aires Aerovías de Integración Regional S.A.,AIRES,Colombia ARF,Aero Flight,,Germany -ARG,Aerolíneas Argentinas,ARGENTINA,Argentina +ARG,Aerolineas Argentinas,ARGENTINA,Argentina ARH,Aerohelicopteros,AEROHELCA,Venezuela ARI,Aero Vics,AEROVICS,Mexico ARJ,Aerojet de Costa Rica S.A.,,Costa Rica @@ -820,7 +820,7 @@ BNT,Bentiu Air Transport,BENTIU AIR,Sudan BNV,Benane Aviation Corporation,BENANE,Mauritania BNW,British North West Airlines,BRITISH NORTH,United Kingdom BNX,LAI - Línea Aérea IAACA,AIR BARINAS,Venezuela -BNZ,Aerolíneas Bonanza,AERO BONANZA,Mexico +BNZ,Bonza,BONZA,Australia BOA,Boniair,KUMANOVO,Macedonia BOB,Backbone A/S,BACKBONE,Denmark BOC,Aerobona,AEROBONA,Mexico @@ -1465,6 +1465,7 @@ DET,DETA Air,SAMAL,Kazakhstan DEV,Red Devils Parachute Display Team,RED DEVILS,United Kingdom DFA,Aero Coach Aviation,AERO COACH,United States DFC,Aeropartner,DARK BLUE,Czech Republic +DFL,Babcock AirAmbulance,MEDIFLIGHT,Sweden DFS,Dwyer Aircraft Services,DWYAIR,United States DGA,Yellow River Delta General Aviation,YELLOW RIVER,China DGO,DGO Jet,DGO JET,Mexico @@ -1592,8 +1593,10 @@ DVA,Discovery Airways,DISCOVERY AIRWAYS,United States DVB,Don Avia,DONSEBAI,Kazakhstan DVI,Aero Davinci International,AERO DAVINCI,Mexico DVN,Adventia,,Spain +DVY,Legends Airways,DEVIL RAY,United States DWA,Dense Airways,,United States DWD,Deutsche Luftverkehrsgesellschaft (DLT),,Germany +DWI,Arajet,DOMINICAN,Dominican Republic DWN,Dawn Air,DAWN AIR,United States DWR,Delaware Skyways,DELAWARE,United States DWT,Darwin Airline,DARWIN,Switzerland @@ -1905,6 +1908,7 @@ EZJ,Ezjet GT,GUYANA JET,Guyana EZS,easyJet Switzerland,TOPSWISS,Switzerland EZX,Eagle Express Air Charter,EAGLEXPRESS,Malaysia EZY,easyJet UK,EASY,United Kingdom +EZZ,ETF Airways,ENTERPRIZE,Croatia FAB,First Air,FIRST AIR,Canada FAC,Atlantic Helicopters,FAROECOPTER,Denmark FAD,Rog-Air,AIR FRONTIER,Canada @@ -2034,7 +2038,7 @@ FJI,Fiji Airways,PACIFIC,Fiji FJK,Fly Jet Kz,,Kazakhstan FJM,Fly Jamaica Airways,GREENHEART,Jamaica FJO,Flexjet Operations Malta Limited,FLEX MALTA,Malta -FRJ,Fly Jordan,SOLITAIRE AIR,Jordan +FJR,Fly Jordan,SOLITAIRE AIR,Jordan FJS,Florida Jet Service,FLORIDAJET,United States FKA,Flying kangaroo Airline,,Australia FKI,FLM Aviation Mohrdieck,KIEL AIR,Germany @@ -2397,7 +2401,7 @@ GPL,DLR,GERMAN POLAR,Germany GPM,Grup Air-Med,GRUPOMED,Spain GPR,GPM Aeroservicio,GPM AEROSERVICIO,Mexico GPX,GP Aviation,,Bulgaria -GRA,Guardian Air Asset Management,FLEX,South Africa +GRA,Costa Rica Green Airways,,,Costa Rica GRB,Phoenix Air Group,GREY BIRD,United States GRD,National Grid plc,GRID,United Kingdom GRE,Air Scotland,GREECE AIRWAYS,Greece @@ -2459,7 +2463,7 @@ GWN,Gwyn Aviation,GWYN,United Kingdom GWR,Aura Airlines,LEMON,Spain GWS,General Airways,GENAIR,South Africa GWY,USA3000 Airlines,GETAWAY,United States -GXA,Grixona,GRIXONA,Moldova +GXA,GlobalX Airlines,GEMINI,United States GXG,GermanXL,,Germany GXL,Star XL German Airlines,STARDUST,Germany GXY,Galaxy Airlines,GALAX,Japan @@ -2608,6 +2612,7 @@ HMC,Heliamerica De Mexico,HELIAMERICA,Mexico HMD,Charlie Hammonds Flying Service,HAMMOND,United States HME,Babcock MCS,HELIMED,United Kingdom HMF,Norrlandsflyg,LIFEGUARD SWEDEN,Sweden +HMJ,Harmony Jets,HARMONG JETS,Malta HMM,Hamra Air,HAMRA,United Arab Emirates HMP,Papair Terminal,PAPAIR TERMINAL,Haiti HMR,North American Charters,HAMMER,Canada @@ -2623,6 +2628,7 @@ HNR,Haiti National Airlines (HANA),HANAIR,Haiti HNT,Helicopteros Internacionales,HELICOP INTER,Mexico HNX,Hankook Airline,,South Korea HOA,Hola Airlines,HOLA,Spain +HOB,HL Aircraft LLC,HOBBY JET,United States HOG,Mahogany Air Charters,HOGAN AIR,Zambia HOL,Holiday Airlines (US Airline),HOLIDAY,United States HOM,Aero Homex,AERO HOMEX,Mexico @@ -3077,7 +3083,7 @@ JSM,Jet Stream,,Moldova JSN,Suncor Energy Inc,JETSUN,Canada JSP,Palmer Aviation,PALMER,United Kingdom JSR,Jusur airways,,Egypt -JST,Eastern Australia Airlines,,Australia +JST,Jetstar Airways,,Australia JSV,Japan Aircraft Service,,Japan JSW,Jigsaw Project,,United Kingdom JSX,JetSuiteX Air,BIGSTRIPE,United States @@ -3617,6 +3623,7 @@ MAK,MAT Macedonian Airlines,MAKAVIO,Macedonia MAL,Morningstar Air Express,MORNINGSTAR,Canada MAM,Aeródromo De La Mancha,AEROMAN,Spain MAN,Mannion Air Charter,MANNION,United States +MAO,Mayo Clinic,MAYO,United States MAQ,Mac Aviation,MAC AVIATION,Spain MAR,March Helicopters,MARCH,United Kingdom MAS,Malaysia Airlines,MALAYSIAN,Malaysia @@ -3633,6 +3640,7 @@ MBC,Airjet Exploracao Aerea de Carga,MABECO,Angola MBE,Martin-Baker,MARTIN,United Kingdom MBG,Zephyr Aviation,CHALGROVE,United Kingdom MBI,Mountain Bird,MOUNTAIN BIRD,United States +MBK,Chrono Jet,MATBLACK,Canada MBL,First City Air,FIRST CITY,United Kingdom MBN,Zambian Airways,ZAMBIANA,Zambia MBO,Mobil Oil,MOBIL,Canada @@ -4441,6 +4449,7 @@ PDI,Paradise Island Airways,PARADISE ISLAND,United States PDQ,PDQ Air Charter,DISPATCH,United States PDR,COMAV,SPEEDSTER,Namibia PDT,Piedmont Airlines,PIEDMONT,United States +PDU,Purdue University,PURDUE,United States PDV,Elicar,ELICAR,Italy PDY,Pen-Avia,PENDLEY,United Kingdom PEA,Pan Europeenne Air Service,,France @@ -4564,6 +4573,7 @@ PNH,Panh,KUBAN LIK,Russia PNK,Air Pink,AIRPINK,Serbia PNL,Aero Personal,AEROPERSONAL,Mexico PNM,Panorama,PANORAMA,Spain +PNO,Panorama Aviation,PANO,Canada PNP,Pineapple Air,PINEAPPLE AIR,Bahamas PNR,PAN Air,SKYJET,Spain PNS,Survey Udara (Penas),PENAS,Indonesia @@ -4931,6 +4941,7 @@ RNB,Rosneft-Baltika,ROSBALT,Russia RND,Rutland Aviation,RUTLAND,United Kingdom RNE,Air Salone,AIR SALONE,Sierra Leone RNG,Orange Aircraft Leasing,ORANGE,Netherlands +RNI,Rennia Aviation,RENNIA,United States RNM,Aeronem Air Cargo,AEROMNEM,Ecuador RNR,Air Cargo Masters,RUNNER,United States RNS,Ronso,RONSO,Mexico @@ -5216,6 +5227,7 @@ SFU,Solent Flight,SAINTS,United Kingdom SFW,Safi Airways,SAFI,AF SFX,S.K. Logistics,SWAMP FOX,United States SFY,Gulf Flite Center,SKY FLITE,United States +SFZ,Pionair,SKYFORCE,Australia SGA,Air Saigon,AIR SAIGON,Vietnam SGB,Sky King Inc.,SONGBIRD,United States SGC,SGC Aviation,SAINT GEORGE,Austria @@ -5270,7 +5282,7 @@ SIE,Sierra Express,SEREX,United States SIH,Skynet Airlines,BLUEJET,Ireland SII,Aero Servicios Ejecutivos Internacionales,ASEISA,Mexico SIJ,Seco International,,Japan -SIL,Servicios Aeronáuticos Integrales,SERVICIOS INTEGRALES,Mexico +SIL,Silver Airways,SILVER WINGS,United States SIM,Star Air,,Sierra Leone SIO,Sirio,SIRIO,Italy SIP,Air Spirit,AIR SPIRIT,United States @@ -5802,6 +5814,7 @@ TKC,Tikal Jets Airlines,TIKAL,Guatemala TKE,Take Air Line,ISLAND BIRD,France TKJ,Tarkim Aviation,TARKIM AVIATION,Turkey TKK,FlyADVANCED,,United States +TKM,JM Family Aviation,TACOMA,United States TKR,Canadian Interagency Forest Fire Centre,TANKER,Canada TKS,Tomsk-Avia,,Russia TKX,Tropical International Airways,TROPEXPRESS,Saint Kitts and Nevis @@ -5827,6 +5840,7 @@ TLW,Teamline Air,Teamline,Austria TLX,Telesis Transair,TELESIS,United States TLY,Top Fly,TOPFLY,Spain TMA,Trans Mediterranean Airlines,TANGO LIMA,Lebanon +TMB,Volato,TOMBO,United States TMC,Travel Management Company,TRAIL BLAZER,United States TMD,Transmandu,TRANSMANDU,Venezuela TME,Aero Taxi del Centro de Mexico,TAXICENTRO,Mexico @@ -6086,6 +6100,7 @@ UDC,DonbassAero,DONBASS AERO,Ukraine UDN,Dniproavia,DNIEPRO,Ukraine UEA,United Eagle Airlines,UNITED EAGLE,China UED,Air LA,AIR L-A,United States +UEE,United Eagle,EAGLE SLOVENIA,Slovenia UEJ,Jetcorp,,United States UES,Ues-Avia Aircompany,AVIASYSTEM,Ukraine UEU,United European Airlines,UNITED EUROPEAN,Romania @@ -6200,7 +6215,7 @@ VAL,Voyageur Airways,VOYAGEUR,Canada VAM,Ameravia,AMERAVIA,Uruguay VAN,Caravan Air,CAMEL,Mauritania VAP,Phuket Air,PHUKET AIR,Thailand -VAR,Veca Airlines,VECA,El Salvador +VAR,United Aviate Academy,VARNEY,United States VAS,ATRAN Cargo Airlines,ATRAN,Russian Federation VAT,Visionair,VISIONAIR,Ireland VAU,V Australia Airlines,,Australia @@ -6278,7 +6293,7 @@ VIS,Vision Air International,,Pakistan VIT,Aviastar Mandiri,AVIASTAR,Indonesia VIV,Aeroenlaces Nacionales,AEROENLACES,Mexico VIZ,Aerovis Airlines,AEROVIZ,Ukraine -VJA,ValuJet Airlines,CRITTER,United States +VJA,Vista America,ICONIC,United States VJC,Vietjet Air,VIETJET,Vietnam VJE,AvJet Routing,,United Arab Emirates VJM,Viajes Ejecutivos Mexicanos,VIAJES MEXICANOS,Mexico @@ -6320,7 +6335,7 @@ VNG,Aero Servicios Vanguardia,VANGUARDIA,Mexico VNK,Vipport Joint Stock Company,,Russia VNL,Vanilla Air,VANILLA,Japan VNP,Virgin Pacific,,Fiji -VNT,Avient Air Zambia,AVIENT,Zambia +VNT,Ventura,VENTURA,United States VNX,Fly Advance,VANCE,United States VNZ,Tbilaviamsheni,TBILAVIA,Georgia VOA,Viaggio Air,VIAGGIO,Bulgaria @@ -6331,7 +6346,7 @@ VOI,Volaris,VOLARIS,Mexico VOL,Blue Chip Jet,BLUE SPEED,Sweden VOO,Volotea,,Spain VOR,Flight Calibration Services Ltd.,FLIGHT CAL,United Kingdom -VOS,Rovos Air,ROVOS,South Africa +VOS,Volaris El Salvador,JETSAL,South Africa VOZ,Virgin Australia,VELOCITY,Australia VPA,DanubeWings,VIP TAXI,Slovakia VPB,Veteran Air,VETERAN,Ukraine @@ -6422,7 +6437,7 @@ WAU,Wizz Air Ukraine,,Ukraine WAV,Warbelow's Air Ventures,WARBELOW,United States WAW,Wings Airways,WING SHUTTLE,United States WAY,Airways,GARONNE,France -WAZ,Wizz Air,WIZZ SKY,United Arab Emirates +WAZ,Wizz Air Abu Dabi,WIZZ SKY,United Arab Emirates WBA,Finncomm Airlines,WESTBIRD,Finland WBR,Multi-Aero,WEBER,United States WCA,West Coast Airways,WEST-LEONE,Sierra Leone @@ -6499,6 +6514,8 @@ WLX,West Air Luxembourg,WEST LUX,Luxembourg WMA,Watermakers Air,WATERMAKERS,United States WML,Chantilly Air,MARLIN,United States WMN,Trident Aircraft,WATERMAN,United States +WMT,Wizz Air Malta,WIZZAIR MALTA,Malta +WMU,W.M. Uni. College of Aviation,SKYBRONCO,United States WNA,Winair,WINAIR,United States WNR,Wondair on Demand Aviation,WONDAIR,Spain WOA,World Airways,WORLD,United States @@ -6535,6 +6552,7 @@ WTP,Westpoint Air,WESTPOINT,Canada WTV,Western Aviators,WESTAVIA,United States WUE,Adolf Wurth GmbH,FASTY,Germany WUK,Wizz Air UK,WIZZ GO,United Kingdom +WUP,Wheels Up,UPJET,United States WVA,Hand D Aviation,WABASH VALLEY,United States WVL,Wizz Air Bulgaria,WIZZBUL,Bulgaria WVZ,Winair,,HR @@ -6548,7 +6566,7 @@ WYC,Wycombe Air Centre,WYCOMBE,United Kingdom WYG,Wyoming Airlines,WYOMING,United States WYT,2 Sqn No 1 Elementary Flying Training School,WYTON,United Kingdom WZP,Zip,ZIPPER,Canada -WZZ,Wizz Air,WIZZAIR,Hungary +WZZ,Wizz Air Hungary,WIZZAIR,Hungary X9F,FRA Air,,Germany XAA,Aeronautical Radio Inc,,United States XAB,Xabre Aerolineas,AERO XABRE,Mexico diff --git a/firmware/tools/make_airlines_db/make_airlines_db.py b/firmware/tools/make_airlines_db/make_airlines_db.py index 0c1b5a2ac..8a86c913d 100755 --- a/firmware/tools/make_airlines_db/make_airlines_db.py +++ b/firmware/tools/make_airlines_db/make_airlines_db.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 # Copyright (C) 2021 ArjanOnwezen +# Copyright (C) 2025 Tommaso Ventafridda # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -22,26 +23,251 @@ # as a source. # ------------------------------------------------------------------------------------- import csv +import os +import shutil import unicodedata -icao_codes=bytearray() -airlines_countries=bytearray() -row_count=0 -database=open("airlines.db", "wb") -with open('airlinecodes.txt', 'rt', encoding="utf-8") as csv_file: - sorted_lines=sorted(csv_file.readlines()[1:]) - for row in csv.reader(sorted_lines, quotechar='"', delimiter=',', quoting=csv.QUOTE_ALL, skipinitialspace=True): - icao_code=row[0] - # Normalize some unicode characters - airline=unicodedata.normalize('NFKD', row[1][:32]).encode('ascii', 'ignore') - country=unicodedata.normalize('NFKD', row[3][:32]).encode('ascii', 'ignore') - if len(icao_code) == 3 : - airline_padding=bytearray() - country_padding=bytearray() - icao_codes=icao_codes+bytearray(icao_code+'\0', encoding='ascii') - airline_padding=bytearray('\0' * (32 - len(airline)), encoding='ascii') - country_padding=bytearray('\0' * (32 - len(country)), encoding='ascii') - airlines_countries=airlines_countries+bytearray(airline+airline_padding+country+country_padding) - row_count+=1 -database.write(icao_codes+airlines_countries) -print("Total of", row_count, "ICAO codes stored in database") +import urllib.request +from dataclasses import dataclass +from typing import Dict, Set, Tuple + +@dataclass +class AirlineRecord: + """Represents an airline record with all relevant fields""" + + icao_code: str + airline: str + country: str + + def __hash__(self): + return hash(self.icao_code) + + def __eq__(self, other): + if not isinstance(other, AirlineRecord): + return False + return self.icao_code == other.icao_code + + def data_equals(self, other): + """Check if all data fields are equal (excluding ICAO code which is the key)""" + if not isinstance(other, AirlineRecord): + return False + return self.airline == other.airline and self.country == other.country + + +def backup_previous_file() -> bool: + """Backup the existing airlinecodes.txt file if it exists. Returns True if backup was made.""" + if os.path.exists("airlinecodes.txt"): + shutil.copy2("airlinecodes.txt", "airlinecodes_previous.txt") + print("Backed up previous airline codes file") + return True + return False + + +def download_airline_codes() -> None: + """Download the airline codes file from GitHub""" + url = "https://raw.githubusercontent.com/kx1t/planefence-airlinecodes/main/airlinecodes.txt" + print(f"Downloading airline codes database from {url}...") + try: + urllib.request.urlretrieve(url, "airlinecodes.txt") + print("Download completed successfully.") + except Exception as e: + print(f"Error downloading airline codes file: {e}") + raise + + +def parse_airline_file(filename: str) -> Dict[str, AirlineRecord]: + """Parse airline codes file and return a dictionary of records""" + records = {} + + if not os.path.exists(filename): + return records + + try: + with open(filename, "rt", encoding="utf-8") as csv_file: + sorted_lines = sorted(csv_file.readlines()[1:]) + for row in csv.reader( + sorted_lines, + quotechar='"', + delimiter=",", + quoting=csv.QUOTE_ALL, + skipinitialspace=True, + ): + if len(row) >= 4: # Ensure we have enough columns + icao_code = row[0] + # Normalize some unicode characters + airline = ( + unicodedata.normalize("NFKD", row[1][:32]) + .encode("ascii", "ignore") + .decode("ascii") + ) + country = ( + unicodedata.normalize("NFKD", row[3][:32]) + .encode("ascii", "ignore") + .decode("ascii") + ) + + if len(icao_code) == 3: + records[icao_code] = AirlineRecord( + icao_code=icao_code, airline=airline, country=country + ) + except Exception as e: + print(f"Warning: Could not parse airline file {filename}: {e}") + return {} + + return records + + +def compare_records( + old_records: Dict[str, AirlineRecord], new_records: Dict[str, AirlineRecord] +) -> Tuple[Set[str], Set[str], Set[str]]: + """Compare old and new records, return sets of new, deleted, and changed ICAO codes""" + old_keys = set(old_records.keys()) + new_keys = set(new_records.keys()) + + new_icao_codes = new_keys - old_keys + deleted_icao_codes = old_keys - new_keys + + # Check for changes in existing records + changed_icao_codes = set() + for icao in old_keys & new_keys: + if not old_records[icao].data_equals(new_records[icao]): + changed_icao_codes.add(icao) + + return new_icao_codes, deleted_icao_codes, changed_icao_codes + + +def write_database(records: Dict[str, AirlineRecord]) -> int: + """Write records to database file using original format""" + icao_codes = bytearray() + airlines_countries = bytearray() + row_count = 0 + + # Sort by ICAO code for consistency + sorted_records = sorted(records.values(), key=lambda r: r.icao_code) + + for record in sorted_records: + # Normalize and encode data (same as original) + airline = unicodedata.normalize("NFKD", record.airline[:32]).encode( + "ascii", "ignore" + ) + country = unicodedata.normalize("NFKD", record.country[:32]).encode( + "ascii", "ignore" + ) + + # Add ICAO code with null terminator (original format) + icao_codes = icao_codes + bytearray(record.icao_code + "\0", encoding="ascii") + + # Add padded data fields (original format) + airline_padding = bytearray("\0" * (32 - len(airline)), encoding="ascii") + country_padding = bytearray("\0" * (32 - len(country)), encoding="ascii") + + airlines_countries = airlines_countries + bytearray( + airline + airline_padding + country + country_padding + ) + row_count += 1 + + with open("airlines.db", "wb") as database: + database.write(icao_codes + airlines_countries) + + return row_count + + +def create_database() -> None: + """Create the airline database from the downloaded file""" + # Backup existing file before downloading new one + has_previous = backup_previous_file() + + # Download new file + download_airline_codes() + + # Parse both files for comparison + old_records = {} + if has_previous: + print("Parsing previous airline codes file...") + old_records = parse_airline_file("airlinecodes_previous.txt") + print(f"Found {len(old_records)} records in previous file") + + print("Parsing new airline codes file...") + new_records = parse_airline_file("airlinecodes.txt") + print(f"Found {len(new_records)} records in new file") + + # Compare records if we have a previous version + if old_records: + new_icao_codes, deleted_icao_codes, changed_icao_codes = compare_records( + old_records, new_records + ) + + # Print change statistics + print("\n" + "=" * 50) + print("AIRLINE CODES CHANGE SUMMARY") + print("=" * 50) + print(f"New records: {len(new_icao_codes):>8}") + print(f"Deleted records: {len(deleted_icao_codes):>8}") + print(f"Changed records: {len(changed_icao_codes):>8}") + print(f"Total records: {len(new_records):>8}") + print("=" * 50) + + # Show examples of changes (limited to avoid spam) + if new_icao_codes and len(new_icao_codes) <= 15: + print(f"\nNew ICAO codes: {', '.join(sorted(new_icao_codes))}") + elif new_icao_codes: + sample_new = sorted(list(new_icao_codes))[:10] + print( + f"\nSample new ICAO codes: {', '.join(sample_new)} (and {len(new_icao_codes)-10} more)" + ) + + if deleted_icao_codes and len(deleted_icao_codes) <= 15: + print(f"Deleted ICAO codes: {', '.join(sorted(deleted_icao_codes))}") + elif deleted_icao_codes: + sample_deleted = sorted(list(deleted_icao_codes))[:10] + print( + f"Sample deleted ICAO codes: {', '.join(sample_deleted)} (and {len(deleted_icao_codes)-10} more)" + ) + + if changed_icao_codes and len(changed_icao_codes) <= 15: + print(f"Changed ICAO codes: {', '.join(sorted(changed_icao_codes))}") + elif changed_icao_codes: + sample_changed = sorted(list(changed_icao_codes))[:10] + print( + f"Sample changed ICAO codes: {', '.join(sample_changed)} (and {len(changed_icao_codes)-10} more)" + ) + + # Show some specific examples of changes + if changed_icao_codes: + print(f"\nExample changes:") + for icao in sorted(list(changed_icao_codes))[:3]: + old_rec = old_records[icao] + new_rec = new_records[icao] + if old_rec.airline != new_rec.airline: + print( + f" {icao}: Airline '{old_rec.airline}' → '{new_rec.airline}'" + ) + if old_rec.country != new_rec.country: + print( + f" {icao}: Country '{old_rec.country}' → '{new_rec.country}'" + ) + else: + print( + "\nNo previous airline codes file found - this appears to be the first run" + ) + + # Create database from new records + print("\nCreating airline database...") + row_count = write_database(new_records) + print("Total of", row_count, "ICAO codes stored in database") + + +def cleanup_temp() -> None: + """Cleanup temporary files created during the process""" + if os.path.exists("airlinecodes_previous.txt"): + os.remove("airlinecodes_previous.txt") + + +if __name__ == "__main__": + try: + create_database() + cleanup_temp() + except Exception as e: + print(f"Error creating airline database: {e}") + else: + print("Airline database created successfully.") diff --git a/firmware/tools/make_icao24_db/README.md b/firmware/tools/make_icao24_db/README.md index 9eebfb695..573de78ae 100644 --- a/firmware/tools/make_icao24_db/README.md +++ b/firmware/tools/make_icao24_db/README.md @@ -3,6 +3,5 @@ Licensed under [GNU GPL v3](../../../LICENSE) USAGE: - - Copy file from: https://opensky-network.org/datasets/metadata/aircraftDatabase.csv - Run Python 3 script: `./make_icao24_db.py` - - Copy file to /ADSB folder on SDCARD + - Move "icao24.db" file to /ADSB folder on SDCARD diff --git a/firmware/tools/make_icao24_db/aircraftDatabase.csv b/firmware/tools/make_icao24_db/aircraftDatabase.csv index fc1a5b8f0..ae258d68d 100644 --- a/firmware/tools/make_icao24_db/aircraftDatabase.csv +++ b/firmware/tools/make_icao24_db/aircraftDatabase.csv @@ -988,7 +988,7 @@ "44ba14","OO-NPT","BEECH","Beech","Musketeer A23-19 Sport III","BE23","MB-31","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "ae174b","06-3857","RAYTHEON","Hawker Beechcraft Corp","T-6A Texan II","TEX2","PT-412","","L1T","United States Air Force","AIR CHIEF","AIO","","United States Air Force","","","","","","","","","false","false","false","","Reserved" "a5de00","N4774A","PIPER","Piper","PA-22-150","PA22","22-3923","","L1P","","","","","Jewett Robert A","","","2028-01-31","","1956-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" -"062f05","5U-MMS","ROCKWELL","","","C130","","","L4T","","","","","","","","","","","","","","false","false","false","","" +"062f05","5U-MMS","ROCKWELL","","","C130","4678","","L4T","","","","","Niger Military","","","","","","","","","false","false","false","","" "a29154","N2648L","REIMS","","","C172","","","L1P","","","","","","","","","","","","","","false","false","false","","" "4b0f90","HB-FXG","PILATUS","","PC-12/47E NG","PC12","","","L1T","Club St.x","","","","","","","","","","","","","false","false","false","","" "a490f9","N3935D","WREN","Cessna","182A","C182","34635","","L1P","","","","","Martin Jeffrey L","","","2029-07-31","","1957-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" @@ -1360,7 +1360,7 @@ "ad517b","N9573T","CESSNA","Cessna","210","C210","57373","","L1P","","","","","Boden Flying Llc","","","2027-04-30","","1959-01-01","","","CONT MOTOR I0-470 SERIES","false","false","false","","" "405aa1","G-TCHI","SUPERMARINE","Vickers Supermarine Ltd","SPITFIRE MK.T IX Spitfire","SPIT","6S-200618","","L1P","","","","","","","2008-11-19","","","1942-01-01","","","
","false","false","false","","" "a7ca6e","N6006E","COLEMILL","Beech","K35","BE35","D-5909","","L1P","","","","","Schoenau Michael W","","","2029-08-31","","1959-01-01","","","CONT MOTOR I0-470 SERIES","false","false","false","","" -"49d10f","OK-FTR","CESSNA","Cessna","Citation Mustang","C510","510-0053","","L2J","","","","","Ctr Flight Services","","","","","","","","","false","false","false","","" +"49d10f","OK-FTR","CESSNA","Cessna","510 Citation Mustang","C510","510-0053","","L2J","Atmospherica Aviation","","","","Atmospherica Aviation","","","","","","","","","false","false","false","","" "391d8c","F-GHMM","","Ultramagic","M-105 Hot Air Balloon","BALL","105/112","","","","","","","Private","","","","","","","","","false","false","false","","" "c03a70","C-WDJ","","Beech Aircraft Corporation","A23A (Beech)","","M 1037","","","","","","","John Albert Cabot","","1982-07-08","","","","","","","false","false","false","","" "a7a41c","N59141","CESSNA","Cessna","210L","C210","21060118","","L1P","","","","","Peters Mark E","","","2028-03-31","","1973-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" @@ -3488,6 +3488,7 @@ "a2b7bc","N2740M","PIPER","Piper","PA-12","PA12","12-1230","","L1P","","","","","Wroe Daniel C","","","2029-10-31","","","","","LYCOMING 0-290 SERIES","false","false","false","","" "aa5d43","N767TS","","Parker Jeff","RV-8","","82866","","","","","","","Parker Jeff","","","2029-03-31","","2022-01-01","","","AEROSPORT IO-360 SERIES","false","false","false","","" "405b7b","G-DDHX","","Schempp-hirth Gmbh & Co Kg","STANDARD CIRRUS B","GLID","635","","","","","","","Private","","2008-05-27","","","1976-01-01","","","0 x NO ENGINES
","false","false","false","","" +"60182b","EZ-F429","AIRBUS","Airbus Industrie","A330-243 (P2F)","A332","810","","L2J","Turkmenistan Airlines","TURKMENISTAN","TUA","T5","Turkmenistan Airlines","","","","","","","","2x RR Trent 772B-60 engines","false","false","false","","" "a8735d","N64340","REIMS","Cessna","172M","C172","17265178","","L1P","","","","","Mcneal Rodd C","","","2029-04-30","","1975-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "c80f0d","ZK-JCB","CESSNA","","","C206","","","L1P","","","","","","","","","","","","","","false","false","false","","" "44b650","OO-MRP","ROBINSON","Robinson","R22 Beta II","R22","4381","","H1P","","","","","Marrenco Nv","","","","","","","","","false","false","false","","" @@ -3575,6 +3576,7 @@ "7c5b6a","VH-SCC","CESSNA","Cessna","Citation Bravo","C55B","550-1058","","L2J","","","","","Macarthur Jet Charter P/l","","","","","","","","","false","false","false","","" "ac5f3d","N8969M","BEECH","Beech","95-B55 (T42A)","BE95","TC-561","","L2P","","","","","Triple Heaven Aircraft Leasing Inc","","","2030-04-30","","1964-01-01","","","CONT MOTOR I0-470 SERIES","false","false","false","","" "a190c0","N20MC","MOONEY","Mooney Aircraft Corp.","M20K","M20P","25-0067","","L1P","","","","","Global Sports Federation Inc","","","2027-11-30","","1979-01-01","","","CONT MOTOR TSIO-520 SER","false","false","false","","" +"a0fe65","N163SB","Bombardier","","BD-700-1A10 Global 6000","BD-700-1A10 Global 6000","9557","","","Netjets Aviation","DCM269","","","Netjets Aviation","","","","","","","","2","false","false","false","","" "adad85","N9800J","REIMS","","","C150","","","L1P","","","","","","","","","","","","","","false","false","false","","" "458823","OY-BAC","MOONEY","Mooney","M.20A Mark 20","M20P","1249","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a3b794","N339DL","VAN'S","","","RV9","","","L1P","","","","","","","","","","","","","","false","false","false","","" @@ -9362,7 +9364,7 @@ "a613d2","N491AC","CESSNA","Cessna","T210N","T210","21063673","","L1P","","","","","Ew Pegasus Llc","","","2029-06-30","","","","","CONT MOTOR TSIO-520 SER","false","false","false","","" "a74823","N5688S","BEECH","Beech","A23-19","BE23","MB-128","","L1P","","","","","Tanneberg Larry","","","2027-09-30","","1966-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "aa7ef8","N7757S","","Schweizer","SGS 2-33A","GLID","127","","","","","","","Bates Marcus L Jr","","","2027-12-31","","","","","NONE NONE","false","false","false","","" -"7cf9c9","A39-007","AIRBUS","Airbus Defence And Space","A330-203 MRTT","A332","898","","L2J","Royal Australian Air Force","AUSSIE","ASY","","Royal Australian Air Force","","","","","2007-01-01","","","2x GE CF6-80E","false","false","false","","Reserved" +"7cf9c9","A39-007","AIRBUS","","","A332","0898","","L2J","","","","","","","","","","","","","","false","false","false","","Reserved" "c06ac2","C-GOLD","BOMBARDIER","Bellanca Aircraft Corporation","7ECA (Bellanca)","GL5T","1099 75","","L2J","","","","","N Richard Nicol","","2004-11-24","","","","","","","false","false","false","","" "c00efd","C-FRO","","Aeronca Aircraft Corporation","S11BC 'CONV'X (Aeronca)","","11AC-979X","","","","","","","Normand Gingues","","2008-12-08","","","","","","","false","false","false","","" "3d0b34","D-ECMM","SAN","S.a.n.","Jodel D.150 Mascaret","D150","17","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -10009,7 +10011,7 @@ "aafd82","N807SV","PIPER","Piper Aircraft Inc","PA-44-180","PA44","4496530","","L2P","","","","","Board Of Trustees Of Western Michigan University","","","2029-04-30","","2021-01-01","","","LYCOMING IO-360-B1G6","false","false","false","","" "a09474","N1364W","MOONEY","Mooney","M20C","M20P","2645","","L1P","","","","","Triple B Properties Ltd","","","2028-03-31","","","","","LYCOMING O&VO-360 SER","false","false","false","","" "c01a6a","C-FKAB","PILATUS","Fritz Bortenlanger","RV-10 (Van'S)","PC12","40382","","L1T","","","","","Fritz H Bortenlanger","","2007-05-15","","","","","","","false","false","false","","" -"7c4ef2","VH-PVO","LEONARDO","Leonardo S.p.a. Helicopters","AW-139","A139","31878","","H2T","Starflight Victoria","","","","Gecas Australia","","2020-01-02","","","2019-01-01","","","2x Pratt & Whitney Canada PT6C-67C","false","false","false","","" +"7c4ef2","VH-PVO","LEONARDO","","","A139","","","H2T","","","","","","","","","","","","","","false","false","false","","" "a60256","N4868C","STITS","Cosman Michael A","SA-6B FLUT-R-BUG","SA6","2075","","L1P","","","","","Hefner Ronald J","","","2028-10-31","","1984-01-01","","","CONT MOTOR A&C75 SERIES","false","false","false","","" "a47496","N38645","PIPER","Piper","J5A","J5","5-1030","","L1P","","","","","Wright Cecil A","","","2029-01-31","","","","","CONT MOTOR C85 SERIES","false","false","false","","" "49210c","CS-HHL","NUSANTARA","","","B412","","","H2T","","","","","","","","","","","","","","false","false","false","","" @@ -15522,11 +15524,12 @@ "a0c7ae","N14986","RYAN","Ryan","Recruit STA","PT22","118","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "ae0469","162163","GRUMMAN","","","C2","","","L2T","","","","","","","","","","","","","","false","false","false","","Reserved" "c081f6","C-GXFP","REIMS","Cessna Aircraft Company","172M (Cessna)","C172","17261612","","L1P","","","","","Rice's Contracting Company Limited","","2013-10-07","","","","","","","false","false","false","","" +"4246a4","VP-BUG","DASSAULT","Dassault","Falcon 7X","FA7X","40","","L3J","Private","VPBUG","","","Private","","2023-07-25","","","2008-01-01","2008-01-01","","","false","false","false","ex SE-DJL ","" "a5268d","N43079","","Schaefer Donald E","MA30","","13DES","","","","","","","Schaefer Donald E","","","2029-06-30","","1996-01-01","","","ROTAX 503 SERIES","false","false","false","","" "a98295","N7113R","PIPER","Piper","PA-28-140","P28A","28-21812","","L1P","","","","","Newton Dennis E","","","2028-06-30","","1966-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a050f6","N1197G","TIGER","American General Acft Corp","AG5B","AA5","10104","","L1P","","","","","Flying Tigers Flight School Ltd","","","2029-03-31","","1992-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "a0d9ac","N154GL","RAYTHEON","Beech","1900D","B190","UE-154","","L2T","","LAKES AIR","GLA","","Alpine Aviation Express Llc","","","2027-05-31","","1995-01-01","","","P&W PT6A SER","false","false","false","","" -"a2e928","N287N","","Textron Aviation Inc","525B","","525B0610","","","","","","","Nicholas Services Llc","","","2029-07-31","","2020-01-01","","","WILLIAMS FJ44-3A","false","false","false","","" +"a2e928","N287N","CESSNA","Textron Aviation Inc","525B","C25B","525B0610","610","L2J","Nicholas Air","JTZ287","JTZ","","Nicholas Services Llc","","2024-01-21","2029-07-31","","2020-01-01","2020-02-28","","WILLIAMS FJ44-3A","false","false","false","","" "a6d86c","N540FC","ROBINSON","Robinson Helicopter","R22 BETA","R22","3858","","H1P","","","","","Raschio Ernesto","","","2028-07-31","","","","","LYCOMING O-360 SERIES","false","false","false","","" "acc10d","N92039","WREN","Cessna","182M","C182","18260014","","L1P","","","","","Newwing Llc","","","2029-06-30","","1969-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "a53b00","N436SH","LOT","Eurocopter","Squirrel AS.350 B2","AS50","2898","","H1T","","","","","Private","","","","","","","","","false","false","false","","" @@ -17697,7 +17700,7 @@ "a23b80","N243DS","DIAMOND","Diamond Aircraft Ind Inc","DA 40","DA40","40.325","","L1P","","","","","Pffc Llc","","","2027-09-30","","2003-01-01","","","","false","false","false","","" "aaf3ce","N8045P","PIPER","Piper","PA-24-250","PA24","24-3291","","L1P","","","","","Duncan Mark L","","","2027-10-31","","1962-01-01","","","LYCOMING 0-540 SERIES","false","false","false","","" "c08870","C-GZRJ","BRITISH AEROSPACE","British Aerospace","Avro 146 Series RJ100 (British Aerospace)","RJ1H","E3359","","L4J","","","","","Summit Air Ltd. (summit Air)","","2018-01-11","","","","","","","false","false","false","","" -"485e2e","PH-BKH","BOEING","","","B78X","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"485e2e","PH-BKH","BOEING","","787-10","B78X","","","L2J","","","","","","","","","","","","","","false","false","false","","" "c812e0","ZK-JSH","BRITISH AEROSPACE","British Aerospace","Jetstream 31-02","JS31","838","","L2T","","","","","Air Freight Nz","","","","","","","","","false","false","false","","" "a2b409","N2730R","RAYTHEON","Beech","F33A","BE33","CE-792","","L1P","","","","","Rp Aviation Inc","","","2029-11-30","","1978-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "3d08d2","D-EBPA","PIPER","Piper","PA-28 181 Archer III","P28A","2843596","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -19023,7 +19026,7 @@ "a7035a","N551CF","NORTH AMERICAN","North American","P-51D","P51","4484655","","L1P","","","","","Collings Foundation","","","2029-09-30","","1944-01-01","","","PACKARD RR V-1650-7","false","false","false","","" "a4b03b","N4009G","","Andrew Philip Richardson","A-88","","240","","","","","","","Magee Brian T","","","2029-12-31","","","","","NONE NONE","false","false","false","","" "a87a6c","N6452","","Linsenmeyer","SOPWITH TYPE 80 LERH","","6452","","","","","","","Weeks Kermit A","","","2029-04-30","","1979-01-01","","","LERHONE TYPE C","false","false","false","","" -"505e05","OM-EXP","PIPISTREL","","","PIVI","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"505e05","OM-EXP","PIPISTREL","Pipistrel","Virus ","PIVI","VSW121A0123","","L1P","","","","","Private Owner","","","","","","","","","false","false","false","","" "c02435","C-FNSM","ZENITH","Robert D. Malone","ZENAIR CH-701 (Zenair)","CH70","7-1675","","L1P","","","","","Garth L Post","","1997-11-14","","","","","","","false","false","false","","" "a05f1e","N123CW","RILEY","Cessna","310Q","C310","310Q0975","","L2P","","","","","Coastal Wings Llc","","","2030-01-31","","","","","","false","false","false","","" "ad0e3e","N940MC","TBM","Compagnie Daher","TBM 700","TBM7","1334","","L1T","","","","","Quarry Village Realty Llc","","","2027-11-30","","2020-01-01","","","P&W CANADA PT6A66D","false","false","false","","" @@ -20457,7 +20460,7 @@ "a9a608","N7201A","REIMS","Cessna","172","C172","29301","","L1P","","","","","Carleson Jesse R","","","2027-03-31","","1956-01-01","","","CONT MOTOR 0-300-A","false","false","false","","" "ac702a","N900LD","","Hawker Beechcraft Corp","Hawker 900XP","H900","HA-0213","","","","","","","West Coast Charters","","","","","","","","","false","false","false","","" "4074c1","G-ORST","EUROCOPTER","","","EC35","","","H2T","","","","","","","","","","","","","","false","false","false","","" -"c0582b","C-GHKC","AIRBUS","","","A333","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"c0582b","C-GHKC","AIRBUS","Airbus","A330-343 (Airbus)","A333","","","L2J","","","","","","","","","","","","","","false","false","false","","" "4056c1","G-DEUJ","","Schempp-hirth Flugzeugbau Gmbh","VENTUS B/16.6","GLID","162","","","","","","","Private","","2008-11-18","","","1984-01-01","","","0 x NO ENGINES
","false","false","false","","" "155368","RF-86888","ILYUSHIN","Ilyushin","IL-76 M","IL76","0013432966","","L4J","","","","","Russian Ministry Of Interior","","","","","","","","","false","false","false","","" "c02a1e","C-PYR","","Cessna Aircraft Company","170B (Cessna)","","26387","","","","","","","Roger Peter (roger) Bot","","2005-11-25","","","","","","","false","false","false","","" @@ -21944,7 +21947,7 @@ "484415","PH-BQL","BOEING","Boeing","777 206ER","B772","34711","","L2J","","KLM","KLM","","Klm Royal Dutch Airlines","","","","","","","","","false","false","false","","" "a031a7","N111TV","ROBINSON","Robinson Helicopter Co","R66","R66","0958","","H1T","","","","","Sky Helicopters Inc","","","2030-01-31","","2019-01-01","","","ROLLS-ROYC 250-C300/A1","false","false","false","","" "a418a5","N363NH","IAI","Israel Aircraft Industries","ASTRA SPX","ASTR","097","","L2J","","","","","Ut Air Llc","","","2027-12-31","","1998-01-01","","","AIRESEARCH TFE731 SER","false","false","false","","" -"440cce","OE-AMK","","","","BR23","","","","","","","","","","","","","","","","","false","false","false","","" +"440cce","OE-AMK","BRM AERO","","Bristell B23","BR23","","","L1P","","","","","Vorarlberger Alpenflieger Club","","","","","2022-01-01","","","1","false","false","false","","" "ab90ab","N844WB","VAN'S","Hays Wesley M Jr","RV6-A","RV6","24860","","L1P","","","","","Ida Aero Inc","","","2028-09-30","","2000-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "e02607","LV-BXG","CESSNA","","","C206","","","L1P","","","","","","","","","","","","","","false","false","false","","" "acf0f1","N933BK","PIPER","Piper","PA-28-140","P28A","28-7225113","","L1P","","","","","Kreul Robert W","","","2030-01-31","","1971-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" @@ -22840,7 +22843,7 @@ gillespie, Robin","","2008-10-23","","","2006-01-01","","","1x JABIRU 2200","fal "a7d8da","N60428","","Quicksilver","SPORT II","ULAC","867","","","","","","","Hoffman Terry","","","2028-07-31","","","","","","false","false","false","","" "3e7b1f","D-KLVB","","","","GLID","","","","","","","","","","","","","","","","","false","false","false","","" "ab154c","N813JC","VAN'S","Vans Aircraft Inc","RV-12","RV12","120219","","L1P","","","","","Orr Walter A","","","2030-02-28","","2011-01-01","","","ROTAX 912ULS SERIES","false","false","false","","" -"7c25ba","VH-HQK","EMBRAER","","","E50P","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"7c25ba","VH-HQK","EMBRAER","Embraer Executive Aircraft","EMB-500 Phenom 100","E50P","50000389","","L2J","Navair Flight Operations","","","","","","2022-07-13","","","2017-01-01","","","","false","false","false","","" "ad5fc3","N9609K","STINSON","Stinson","108-2","S108","108-2609","","L1P","","","","","Monoski Edward C","","","2028-12-31","","1947-01-01","","","FRANKLIN 6A4165 SERIES","false","false","false","","" "a0e6b5","N1571K","TEMCO","Luscombe","8A","L8","4298","","L1P","","","","","Dunham Roger S","","","2028-09-30","","1946-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" "781b50","B-721M","REIMS","","","C172","","","L1P","","","","","","","","","","","","","","false","false","false","","" @@ -24068,6 +24071,7 @@ gillespie, Robin","","2008-10-23","","","2006-01-01","","","1x JABIRU 2200","fal "a680b9","N518SB","LEARJET","Gates Learjet Corp","55C","LJ55","139A","","L2J","","","","","Tvpx Aircraft Solutions Inc Trustee","","","2029-08-31","","1979-01-01","","","GARRETT TFE731 SERIES","false","false","false","","" "a0370a","N11273","WACO OHIO","","","WACF","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a6d5d6","N54CS","STOLP","Sanderson C E","STARDUSTER II SA300","SA30","1808","","L1P","","","","","O'shea James","","","2030-01-31","","","","","LYCOMING 0-320 SERIES","false","false","false","","" +"3ff9d3","D-MYBU","SSH","","","BU31","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a0190a","N105UA","BOEING","Boeing","Boeing 747 451","B744","26473","","L4J","","UNITED","UAL","","United Airlines","","","","","","","","","false","false","false","","" "abab41","N851C","MITSUBISHI","Mitsubishi","MU-300 1A","MU30","A077SA","","L2J","","","","","Meritt Aviation Inc","","","","","","","","","false","false","false","","" "a14233","N180RR","","Southern Oaks Farm Llc","CCX-2000","","CCX-2000-0167","","","","","","","Southern Oaks Farm Llc","","","2030-01-31","","","","","","false","false","false","","" @@ -24144,6 +24148,7 @@ gillespie, Robin","","2008-10-23","","","2006-01-01","","","1x JABIRU 2200","fal "3d6b34","D-FMVS","MESSERSCHMITT","Hispano","Buchon HA-1112 M1L","ME09","234","","L1P","","","","","Meier Motors","","","","","","","","","false","false","false","","" "a96f9c","N707LU","REIMS","Cessna","172S","C172","172S11473","","L1P","","","","","Liberty University","","","2027-09-30","","2014-01-01","","","LYCOMING IO-360-L2A","false","false","false","","" "3d0f6f","D-EECD","DIAMOND","Diamond Aircraft","Diamond Star DA40","DA40","40.018","","L1P","","","","","Private","","","","","","","","","false","false","false","","" +"4cadac","EI-HJD","AIRBUS","Airbus Industrie","A320-272N","A20N","11313","","L2J","Ita Airways","","ITY","","Ita Airways","","","","","2023-01-01","","","","false","false","false","","" "34504d","EC-MDY","EUROCOPTER","Airbus Helicopters","EC135 P2+","EC35","1177","","H2T","","","","","Cuerpo Nacional De Policia","","","","","","","","","false","false","false","","" "458d70","OY-CKP","RAYTHEON","Beech","King Air B200","BE20","BB-951","","L2T","","","","","Cowi A/s","","","","","","","","","false","false","false","","" "45f03f","OY-9274","ICP","","","SVNH","","","L1P","","","","","","","","","","","","","","false","false","false","","" @@ -25403,6 +25408,7 @@ gillespie, Robin","","2008-10-23","","","2006-01-01","","","1x JABIRU 2200","fal "a1bdd7","N211GH","UNC","Bell","205A-1","UH1","30058","","H1T","","","","","Guardian Helicopters Inc","","","2028-02-29","","","","","","false","false","false","","" "0d0c55","XB-SVC","SWEARINGEN","","","SW3","","","L2T","","","","","","","","","","","","","","false","false","false","","" "a89cdb","N654P","LANCAIR","Hohl/askren/hartman","LANCAIR IVP","LNP4","LIV-046","","L1T","","","","","Grimm Air Llc","","","2030-01-31","","2005-01-01","","","CONT MOTOR TSIO-550 SER","false","false","false","","" +"49c338","OK-BUG08","","","","","","","","","","","","Private Owner","","","","","","","","","false","false","false","","" "a57fb6","N45304","TIGER","Gulfstream American Corp","AA-5B","AA5","AA5B1158","","L1P","","","","","Unruh Gerald R","","","2029-12-31","","1979-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "a830f2","N627HE","CIRRUS","Cirrus Design Corp","SR22","SR22","4855","","L1P","","","","","Locke Ventures Llc","","","2029-12-31","","2019-01-01","","","CONT MOTOR IO-550-N","false","false","false","","" "39a16b","F-HILL","LOT","Eurocopter","Squirrel AS.350 B3","AS50","7643","","H1T","","","","","Butterfly Sarl","","","","","","","","","false","false","false","","" @@ -26581,6 +26587,7 @@ gillespie, Robin","","2008-10-23","","","2006-01-01","","","1x JABIRU 2200","fal "a98273","N7112S","REIMS","Cessna","150H","C150","15067812","","L1P","","","","","Bridges Robert S","","","2028-10-31","","1967-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "c1e5b5","SERV","","","","SERV","","","","","","","","","","","","","","","","","false","false","false","","" "a6652d","N511AG","PIPER","Piper","PA-32-260","PA32","32-496","","L1P","","","","","Palmetto Cherokee Air Llc","","","2028-04-30","","1967-01-01","","","LYCOMING 0-540 SERIES","false","false","false","","" +"7caf5d","VH-8XB","DE HAVILLAND CANADA","Bombardier","DHC-8-402","DH8D","4293","","L2T","Aviair Pty Ltd","","","","Nac Aviation 4 Ltd","","2023-07-10","","","2010-01-01","","","","false","false","false","Operated by Nexus Airlines for Aviair","" "3b7686","E38","SABCA","Dassault-breguet","Alpha Jet E","AJET","E38","","L2J","Force Aerienne Francaise","FRENCH AIR FORCE","FAF","","French Air Force","","","","","","","","","false","false","false","","" "406cb5","G-HCEN","GUIMBAL","Helicopteres Guimbal Sa","GUIMBAL CABRI G2","G2CA","1079","","H1P","","","","","Helicentre Aviation Ltd","","2014-10-14","","","2014-01-01","","","1 x LYCOMING O-360-J2A
","false","false","false","","" "a6772b","N51559","WAGAERO","Piper","J3C-65","J3","10724","","L1P","","","","","Mckair Inc","","","2030-01-31","","1943-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" @@ -28101,6 +28108,7 @@ gillespie, Robin","","2008-10-23","","","2006-01-01","","","1x JABIRU 2200","fal "a1ec2d","N223AG","CANADAIR","Bombardier Inc","CL-600-2C10","CRJ7","10010","","L2J","","","","","Bank Of Utah Trustee","","","2029-03-31","","2001-01-01","","","GE CF34-8C5B1","false","false","false","","" "405d20","G-BIFP","","Colt Balloons Ltd","COLT 56C","BALL","097","","","","","","","Private","","2009-02-20","","","1980-01-01","","","0 x NO ENGINES
","false","false","false","","" "3ff4c5","D-MHBC","ALPI","","","PNR2","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"ae683b","","Boeing","Boeing","P-8 Poseidon","P8-?","","","L2J","","","","","United States Military","","","","","","","","","false","false","false","","" "403f20","G-FMLY","ROCKWELL","Commander Aircraft Company","COMMANDER 114B Commander","AC11","14655","","L1P","","","","","Private","","2013-11-13","","","1998-01-01","","","1 x LYCOMING IO-540-T4B5  ( MCCAULEY B3D32C419-C/G-82NHA-5 )
","false","false","false","","" "c00ae1","C-FEDC","STINSON","Consolidated Vultee Aircraft Corporation","108-1 (Stinson)","S108","108-1-890","","L1P","","","","","Murray R. Manning","","2008-01-10","","","","","","","false","false","false","","" "acef8d","N93205","","Let","L 33 SOLO","GLID","930205","","","","","","","Meline Marilyn R","","","2029-01-31","","1993-01-01","","","NONE NONE","false","false","false","","" @@ -29667,7 +29675,7 @@ gillespie, Robin","","2008-10-23","","","2006-01-01","","","1x JABIRU 2200","fal "4631db","OH-SWX","SWEARINGEN","","","BE9L","","","L2T","","","","","","","","","","","","","","false","false","false","","" "a9277e","N6893Y","TED SMITH","","","AEST","","","L2P","","","","","","","","","","","","","","false","false","false","","" "a033a4","N112AC","BEECH","Beech","95-B55 (T42A)","BE95","TC-681","","L2P","","","","","Jones Michael","","","2029-01-31","","1964-01-01","","","CONT MOTOR I0-470 SERIES","false","false","false","","" -"3cc57d","D-CCCB","LEARJET","Gates","Learjet 35 A","LJ35","35A-663","","L2J","Drf German Air Rescue","CIVIL AIR AMBULANCE","AMB","1I","Drf German Air Rescue","","","","","","","","2","false","false","false","","No ADS-B Emitter Category Information" +"3cc57d","D-CCCB","LEARJET","Gates","Learjet 35 A","LJ35","35-663","","L2J","Drf Luftrettung (german Air Rescue)","CIVIL AIR AMBULANCE","AMB","1I","Drf Luftrettung (german Air Rescue)","","","","","1990-01-01","","","","false","false","false","","" "46a257","SX-HRW","ROBINSON","Robinson","R44 Clipper","R44","1217","","H1P","","","","","Private","","","","","","","","","false","false","false","","" "4401be","OE-FAC","DIAMOND","","","DA42","","","L2P","","","","","","","","","","","","","","false","false","false","","" "a7c643","N60PZ","CIRRUS","Cirrus Design Corp","SR22T","S22T","1275","","L1P","","","","","Kettle Cove Services Inc","","","2029-05-31","","2016-01-01","","","CONT MOTOR TSIO-550-K","false","false","false","","" @@ -30016,7 +30024,7 @@ gillespie, Robin","","2008-10-23","","","2006-01-01","","","1x JABIRU 2200","fal "3dd2fd","D-HADP","EUROCOPTER-KAWASAKI","Airbus Helicopters","Airbus Helicopters MBB-BK 117 D-2 (H145)","EC45","20124","","H2T","","","","","Bundespolizei","","","","","","","","","false","false","false","","" "c03c88","C-WXZ","","H.e. Hill","JODEL F-11 (Jodel)","","F11 6130","","","","","","","Donald Babchyshyn","","1974-11-19","","","","","","","false","false","false","","" "761047","4270","GULFSTREAM AEROSPACE","Gulfstream Aerospace","Gulfstream Aerospace G450","GLF4","4270","","L2J","","","","","Pakistan Army","","","","","","","","","false","false","false","","" -"395d69","F-GXLJ","","","","A337","","","","","","","","","","","","","","","","","false","false","false","","" +"395d69","F-GXLJ","AIRBUS","Airbus Industrie","A330-743L Beluga XL","A337","1985","","L2J","Airbus Transport International","BELUGA","BGA","4Y","","","2021-10-04","","","2021-01-01","2021-07-20","","2x RR Trent 772B-60","false","false","false","Beluga XL4","" "c07a2c","C-GUGX","ST. JUST","Cessna Aircraft Company","A185F (Cessna)","C185","18502944","","L1P","","","","","Perry Nadon","","2018-10-17","","","","","","","false","false","false","","" "a76b70","N57749","PIPER","Piper","PA-36-285","PA36","36-7660065","","L1P","Millennium Air","NIGERJET","MLK","","Millennium Air Inc","","","2029-10-31","","1976-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" "c01e88","C-FLOP","","Howard T Wright","BOWERS FLY-BABY (Bowers)","","68 38","","","","","","","Howard T Wright","","1979-11-01","2001-06-07","","","","","","false","false","false","","" @@ -31612,6 +31620,7 @@ gillespie, Robin","","2008-10-23","","","2006-01-01","","","1x JABIRU 2200","fal "3909c0","F-GCOA","SOCATA","Socata","TB10 Tobago","TOBA","124","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "c823e9","ZK-KTH","","Niki Rotor Aviation","Kallithea","GYRO","007","","","","","","","Gyrate Nz Ltd","","","","","","","","","false","false","false","","" "acad45","N916DE","MCDONNELL DOUGLAS","Mcdonnell Douglas Aircraft Co","MD-88","MD88","53421","","L2J","","DELTA","DAL","","Delta Air Lines Inc","","","2027-08-31","","1993-01-01","","","P & W JT8D SERIES","false","false","false","","" +"e0b146","LV-KEF","BOEING","Boeing","Boeing 737-8U3","B738","","","L2J","Flybondi","","","","Flybondi","","","","","","","","","false","false","false","","" "a95738","N7002M","CESSNA","Cessna","175","C175","55302","","L1P","","","","","Apte John W","","","2028-08-31","","1958-01-01","","","CONT MOTOR GO-300 SERIES","false","false","false","","" "4b8645","TC-ARE","SARGENT-FLETCHER","Airparts Nz","Fletcher FU-24 950","FU24","247","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "0d0d10","XA-MLT","CESSNA","","","C68A","","","L2J","","","","","","","","","","","","","","false","false","false","","" @@ -34866,7 +34875,7 @@ gillespie, Robin","","2008-10-23","","","2006-01-01","","","1x JABIRU 2200","fal "383e00","F-BPQA","SOCATA","Socata","Rallye MS.892A Commodore 150","RALL","10808","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "acbce6","N92MB","VAN'S","","","RV7","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a0a950","N1414E","CHAMPION","Aeronca","7AC","CH7A","7AC-4977","","L1P","","","","","Klaas Jeffrey M","","","2027-06-30","","1946-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" -"3b77d5","2552","EUROCOPTER","Eurocopter","EC725 R2","EC25","2552","","H2T","Force Aerienne Francaise","FRENCH AIR FORCE","FAF","","French Air Force","","","","","","","","","false","false","false","","" +"3b77d5","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "405a5a","G-DEEO","","Grob-werke Gmbh And Co Kg","GROB G102 STANDARD ASTIR II","GLID","5015S","","","","","","","","","2010-09-21","","","1980-01-01","","","0 x NO ENGINES
","false","false","false","","" "a8903c","N6508T","REIMS","Cessna","150","C150","17908","","L1P","","","","","Manchester Eric S","","","2027-12-31","","1960-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "3c120f","D-AVVU","AIRBUS","","","A20N","","","L2J","","","","","","","","","","","","","","false","false","false","","" @@ -36153,6 +36162,7 @@ gillespie, Robin","","2008-10-23","","","2006-01-01","","","1x JABIRU 2200","fal "ad6e47","N96462","WREN","Cessna","182Q","C182","18266728","","L1P","","","","","Eof Llc","","","2030-02-28","","1978-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "a6777b","N5158J","REIMS","Cessna","172S","C172","172S9027","","L1P","","","","","Wings Of Wyoming Inc","","","2027-07-31","","2002-01-01","","","LYCOMING IO-360-L2A","false","false","false","","" "a0c17f","N148MD","CIRRUS","Cirrus Design Corp","SR22T","S22T","1480","","L1P","","","","","Mike Delta Llc","","","2027-06-30","","2017-01-01","","","CONT MOTOR TSIO-550-K","false","false","false","","" +"45ab21","OY-JYA","BOEING","Boeing","737-8KN (W)","B738","40253","4081","L2J","Jettime","JETTIME","JTG","JO","Pembroke","","","","","2012-01-01","","","2x CFMI CFM56-7B engines","false","false","false","","" "4064b3","G-CGSP","REIMS","Cessna Aircraft Company","CESSNA 152","C152","152-82543","","L1P","","","","","Private","","2011-04-13","","","1979-01-01","","","1 x LYCOMING O-235-L2C  ( MCCAULEY 1A103/TCM6958 )
","false","false","false","","" "ac0478","N87340","MOONEY","Engineering & Research","415-C","ERCO","513","","L1P","","","","","Eleazer Robert W Iii","","","2027-08-31","","1946-01-01","","","CONT MOTOR C85 SERIES","false","false","false","","" "aa32c1","N7560X","REIMS","Cessna","172B","C172","17248060","","L1P","","","","","Crew Gerald","","","2029-10-31","","1960-01-01","","","CONT MOTOR 0-300 SER","false","false","false","","" @@ -37859,7 +37869,7 @@ gillespie, Robin","","2008-10-23","","","2006-01-01","","","1x JABIRU 2200","fal "a472c7","N386NG","PILATUS","Pilatus Aircraft Ltd","PC-12/47E","PC12","1386","","L1T","","","","","P W Feenstra Construction Inc","","","2028-03-31","","","","","P&W CANADA PT6A-67P","false","false","false","","" "aa0ff1","N74770","MOONEY","Mooney","M20B","M20P","1770","","L1P","","","","","Dubois Aviation Inc","","","2027-07-31","","1961-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "a32286","N3006K","PIPER","Piper","PA-28-181","P28A","28-7990247","","L1P","","","","","Prescott Flying Club Inc","","","2029-04-30","","1978-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" -"4cad3f","EI-HMX","BOEING","","","B38M","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"4cad3f","EI-HMX","BOEING","","","B38M","","","L2J","Ryanair","RYANAIR","RYR","FR","","","","","","","","","","false","false","false","","" "7819f2","B-320N","AIRBUS","","","A20N","","","L2J","","","","","","","","","","","","","","false","false","false","","" "adbb92","N984SB","CESSNA","","","C510","","","L2J","","","","","","","","","","","","","","false","false","false","","" "3feb2f","D-MSKO","SYNAIRGIE","Best Off","SkyRanger","SKRA","","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -40638,7 +40648,7 @@ o'sullivan Arnould, Nicole","","2009-12-22","","","1946-01-01","","","1x BLACKBU "ab6e3e","N8357D","COLEMILL","Beech","J35","BE35","D-5470","","L1P","","","","","Quinn Robert F","","","2029-01-31","","1958-01-01","","","CONT MOTOR I0-470 SERIES","false","false","false","","" "a27178","N25694","TAYLORCRAFT (1)","Taylorcraft Aviation Corp","F19","TF19","F-078","","L1P","","","","","Sparks Gary C","","","2027-05-31","","1976-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "8a0924","PK-BGP","BOEING","","","B738","","","L2J","","","","","","","","","","","","","","false","false","false","","" -"e493e5","PR-AKJ","ATR","","","AT76","","","L2T","","","","","","","","","","","","","","false","false","false","","" +"e493e5","PR-AKJ","ATR","","ATR-72","AT76","","","L2T","Azul Linhas Aéreas Brasileiras","Azul","AZU","AD","","","","","","","","","","false","false","false","","" "a7f5e1","N61176","REIMS","Cessna","150J","C150","15070862","","L1P","","","","","Closson Dennis L","","","2029-03-31","","1969-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "c0a8f9","C-ILZS","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "7c12c3","VH-DZP","CESSNA","Cessna Aircraft Company","177","C177","17700138","","L1P","","","","","Berry, Ian William","","","","","1967-01-01","","","1x Textron Lycoming O-320","false","false","false","","" @@ -41866,7 +41876,7 @@ khan, Tony","","2014-05-30","","","2013-01-01","","","1x LYCOMING O-320-E3D","fa "38b0fb","F-PGMR","DYN'AERO","Dyn Aero","MCR-4S","MCR4","127","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "c09706","C-IFEZ","","Marclair Comp.","DENNISAIR 2000 (Marclair)","","00929","","","","","","","Clair A Dennis","","1997-05-12","2015-04-23","","","","","","false","false","false","","" "3d0ebb","D-EDVF","MOONEY","Mooney","M.20F Executive 21","M20P","670298","","L1P","","","","","Private","","","","","","","","","false","false","false","","" -"4b160f","HB-IJF","AIRBUS","Airbus Industries Company","A320 214","A320","562","","L2J","Swissair","SWISSAIR","SWR","SR","Swiss International Air Lines","","","","","","","","","false","false","false","","" +"4b160f","HB-IJF","AIRBUS","Airbus","A320 214","A320","562","","L2J","","Swissair","SWR","","Swiss International Air Lines","","","","","","","","","false","false","false","","" "a0504c","N1192M","REIMS","Cessna","172K","C172","17258692","","L1P","","","","","Garuda Aviation Inc","","","2029-07-31","","1969-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a7814d","N583CP","TBM","Socata","TBM 700","TBM7","208","","L1T","","","","","Douglas Andrew J","","","2028-10-31","","2001-01-01","","","P&W CANADA PT6A-64","false","false","false","","" "a2d0d5","N28030","PIPER","Piper","PA-28-181","P28A","2881352","","L1P","","","","","Cae Oxford Aviation Academy Phoenix Inc","","","2028-01-31","","","","","","false","false","false","","" @@ -50137,6 +50147,7 @@ khan, Tony","","2014-05-30","","","2013-01-01","","","1x LYCOMING O-320-E3D","fa "ac13b3","N8777Q","","Boeing","737-8","","67756","","","Southwest Airlines","SOUTHWEST","SWA","WN","Southwest Airlines Co","","","2029-09-30","","2022-01-01","","","CFM INTL LEAP-1B28 SER","false","false","false","","" "ad4804","N955JB","AIRBUS","Airbus","A321-231","A321","6757","","L2J","","JETBLUE","JBU","","Jetblue Airways Corp","","","2028-09-30","","2015-01-01","","","IAE V2533-A5","false","false","false","","" "78189a","B-30DJ","AIRBUS","","","A20N","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"7c6ca7","VH-VQX","EUROCOPTER-KAWASAKI","Airbus Helicopters","MBB-BK117 D-3","EC45","21097","","H2T","Western Australia Police","","","","State Of Western Australia","","2023-06-14","","","2023-01-01","","","","false","false","false","","" "a690d9","N522F","REIMS","Cessna","172K","C172","17258510","","L1P","","","","","N522f Llc","","","2030-01-31","","1970-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "3d1a81","D-EIHD","STAMPE","Stampe Et Renard","Stampe SV-4 B","SV4","1169","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "7c4ea7","VH-PTL","WESTLAND","Bell","47G-3B-1","B47G","6651","","H1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -51724,7 +51735,7 @@ khan, Tony","","2014-05-30","","","2013-01-01","","","1x LYCOMING O-320-E3D","fa "c02ac4","C-FQFB","YAKIMA AEROSPORT","Piper Aircraft Corporation","PA-18 (Piper)","PA18","18-3060","","L1P","","","","","Alton Irons","","2012-04-16","","","","","","","false","false","false","","" "8a02e8","PK-LJP","BOEING","Boeing","737NG 9GPER/W","B739","37291","","L2J","","LION INTER","LNI","","Lion Air","","","","","","","","","false","false","false","","" "a6856d","N5191V","CESSNA","Cessna","T210L","T210","21060857","","L1P","","","","","True Drilling Llc","","","2028-05-31","","1975-01-01","","","CONT MOTOR TSIO-520 SER","false","false","false","","" -"4072a5","G-TAWW","BOEING","Boeing Company","BOEING 737-8K5","B738","41663","","L2J","","TOMSON","TOM","","Thomson Airways","","2017-04-10","","","2015-01-01","","","2 x CFM CFM56-7B27E
","false","false","false","","" +"4072a5","G-TAWW","BOEING","Boeing Company","BOEING 737-8K5","B738","41663","","L2J","","TOMJET","TOM","","Tui Airways","","2017-04-10","","","2015-01-01","","","2 x CFM CFM56-7B27E
","false","false","false","","" "4d21c5","9H-SZN","AIRBUS","","A330-941","A339","","","L2J","Air Senegal International","AIR SENEGAL","SNG","V7","","","","","","","","","","false","false","false","","" "ad8e37","N97254","STINSON","","","S108","","","L1P","","","","","","","","","","","","","","false","false","false","","" "4d03c5","LX-N90447","BOEING","Boeing","E-3A Sentry","E3TF","22842","","L4J","","","","","Nato","","","","","","","","","false","false","false","","Reserved" @@ -57591,7 +57602,7 @@ khan, Tony","","2014-05-30","","","2013-01-01","","","1x LYCOMING O-320-E3D","fa "abae13","N85147","CHAMPION","Aeronca","7AC","CH7A","7AC-3878","","L1P","","","","","Kieffer Thomas P Iii","","","2028-05-31","","1946-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" "4b4279","HB-ZEN","EUROCOPTER","Eurocopter Deutschland Gmbh","EC135 T2+","EC35","0257","","H2T","Swift Copters Sa","","","","Hôpitaux Universitaire De Genève, Base Hélicoptère","","2002-12-20","","","2002-01-01","","","SOCIÉTÉ TURBOMECA ARRIUS 2B2","false","false","false","","" "a9c42d","N7284E","WREN","Cessna","182B","C182","52284","","L1P","","","","","Foster Craig M","","","2028-02-29","","1959-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" -"39ca64","F-HSTE","HARBIN","","","E35L","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"39ca64","F-HSTE","HARBIN","","ERJ 135","E35L","","","L2J","Logan Air","LOGAN","LOG","","Logan Air","","","","","","","","","false","false","false","","" "c800e1","ZK-BLV","OGMA","","","DH82","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a83bca","N63EC","RILEY","Cessna","340A","C340","340A0121","","L2P","","","","","Augend Arsalan","","","2028-02-29","","1976-01-01","","","","false","false","false","","" "a595f5","N4590T","PIPER","Piper","PA-28R-200","P28R","28R-7235102","","L1P","","","","","Odonald John C","","","2028-01-31","","1972-01-01","","","LYCOMING I0360 SER","false","false","false","","" @@ -58971,6 +58982,7 @@ khan, Tony","","2014-05-30","","","2013-01-01","","","1x LYCOMING O-320-E3D","fa "485199","PH-RYS","","","","BALL","","","","","","","","","","","","","","","","","false","false","false","","" "a57087","N45HW","","Wimmer Herman J","J4B2","","337-2","","","","","","","Wimmer Herman J","","","2029-04-30","","1998-01-01","","","LYCOMING 0-235 SERIES","false","false","false","","" "c056e6","C-GGXP","REIMS","Cessna Aircraft Company","172N (Cessna)","C172","17268919","","L1P","","","","","9383-0701 Quebec Inc","","2018-12-04","","","","","","","false","false","false","","" +"505cfc","OM-M731","TOMARK","Tomark","SD-4 Viper","SD4","","","L1P","","","","","Private Owner","","","","","","","","Rotax 912iS","false","false","false","","" "4b8692","TC-ATR","AIRBUS","Airbus","Airbus A321 211","A321","1451","","L2J","","ATLASJET","KKK","","Atlasglobal","","","","","","","","","false","false","false","","" "a025e6","N1088K","TEMCO","","","L8","","","L1P","","","","","","","","","","","","","","false","false","false","","" "c8210a","ZK-MBA","VAN'S","","","RV12","","","L1P","","","","","","","","","","","","","","false","false","false","","" @@ -69926,6 +69938,7 @@ murphy, Noel","","2008-02-01","","","1940-01-01","","","1x CONTINENTAL MOTORS CO "3ef294","D-4605","","Schleicher","K 8 B","GLID","8235","","","","","","","Private","","","","","","","","","false","false","false","","" "a54235","N438QA","","Pezetel","SZD-48-1JANTAR STD 2","GLID","W 908","","","","","","","Glenn Roy","","","2028-09-30","","","","","NONE NONE","false","false","false","","" "a6fc66","N5495D","REIMS","Cessna","172N","C172","17272587","","L1P","","","","","Sorbi Aviation Inc","","","2028-04-30","","1979-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" +"440049","OE-XNA","","Airbus Helicopters","H145","","20186","","","","","","","Ara Flugrettung","","2023-09-23","","","2017-01-01","","","","false","false","false","","" "a52435","N430MD","","Mattes Michael A","BUTTERCUP","","MB-1","","","","","","","Mattes Michael A","","","2030-03-31","","2011-01-01","","","LYCOMING O-235-C1","false","false","false","","" "aa46d5","N761SF","CESSNA","Cessna","210M","C210","21062475","","L1P","","","","","Paramount Enterprises Inc","","","2028-02-29","","1978-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "750262","9M-MTO","AIRBUS","Airbus","A330 323E","A333","1489","","L2J","","MALAYSIAN","MAS","","Malaysia Airlines","","","","","","","","","false","false","false","","" @@ -72918,6 +72931,7 @@ murphy, Noel","","2008-02-01","","","1940-01-01","","","1x CONTINENTAL MOTORS CO "406281","G-DEOX","","Carmam Sa","CARMAM M200 FOEHN","GLID","54","","","","","","","","","2010-02-08","","","1969-01-01","","","0 x NO ENGINES
","false","false","false","","" "404481","G-BZNV","","Lindstrand Balloons Ltd","LBL 31A","BALL","741","","","","","","","Private","","2000-12-12","","","2001-01-01","","","0 x NO ENGINES
","false","false","false","","" "a4dd1b","N412RX","EUROCOPTER","Airbus Helicopters","EC 130 T2","EC30","8542","","H1T","","","","","Tvpx Aircraft Solutions Inc Trustee","","","2029-05-31","","2018-01-01","","","SAFRAN ARRIEL 2D","false","false","false","","" +"4bf0c3","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "a83b63","N63A","MUSTANG","Coblentz Fred P","BUSHBY MUSTANG II","MUS2","M-II-784","","L1P","","","","","Venissat Eric F","","","2028-05-31","","1990-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a8ae80","N659DM","MUDRY","Avions Mudry Cie","CAP 232","CP23","10","","L1P","","","","","Ftr Esc Llc","","","2030-03-31","","1996-01-01","","","LYCOMING AEIO-540 SER","false","false","false","","" "3d144b","D-EFXZ","AQUILA","Aquila","AT-01 A-210","A210","AT01-239","","L1P","","","","","Rwl German Flight Academy","","","","","","","","","false","false","false","","" @@ -73576,7 +73590,7 @@ murphy, Noel","","2008-02-01","","","1940-01-01","","","1x CONTINENTAL MOTORS CO "ab061a","N8093N","PIPER","Piper","PA-28-140","P28A","28-25336","","L1P","","","","","Brock Ronnie Lee","","","2027-09-30","","","","","LYCOMING 0-320 SERIES","false","false","false","","" "a4f5c6","N419CE","CESSNA","Cessna","525C","C25C","525C0192","","L2J","","","","","Crescent Electric Supply Company Inc","","","2030-04-30","","2015-01-01","","","WILLIAMS FJ44-4A","false","false","false","","" "ac9b2c","N911JB","CESSNA","Textron Aviation Inc","525B","C25B","525B0596","","L2J","","","","","M2 Jb Llc","","","2029-10-31","","2019-01-01","","","WILLIAMS FJ44-3A","false","false","false","","" -"8a01c1","PK-GEP","BOEING","Boeing","737NG 8AS/W","B738","29931","","L2J","","INDONESIA","GIA","","Garuda Indonesia","","","","","","","","","false","false","false","","" +"8a01c1","PK-GEP","BOEING","Boeing","737NG 8AS/W","B738","29931","","L2J","Garuda Indonesia","INDONESIA","GIA","GA","Garuda Indonesia","","","","","","","","","false","false","false","","" "c06d94","C-GPMX","MAULE","Maule Aircraft Corporation","M-5-235C (Maule)","M5","7066C","","L1P","","","","","Bernard Ernest Joseph Roberge","","2018-11-23","","","","","","","false","false","false","","" "a853ed","N6359L","GULFSTREAM AMERICAN","American Aviation","AA-1A","AA1","AA1A-0359","","L1P","","","","","Beebe Andrew R","","","2029-09-30","","","","","LYCOMING 0-235 SERIES","false","false","false","","" "ad789d","N96705","REIMS","Cessna","172P","C172","17276105","","L1P","","","","","Christiansen Aviation Llc","","","2029-08-31","","1984-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" @@ -73857,7 +73871,7 @@ murphy, Noel","","2008-02-01","","","1940-01-01","","","1x CONTINENTAL MOTORS CO "0d8348","YV3427","IAI","","","ASTR","","","L2J","","","","","","","","","","","","","","false","false","false","","" "a14321","N18004","REIMS","Cessna","150L","C150","15073722","","L1P","","","","","Hause James H","","","2029-11-30","","1972-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "a9f148","N74MD","YAKOVLEV","S C Aerostar S A","YAK-52TW","YK52","0212301","","L1P","","","","","Birdwell David W","","","2029-12-31","","2002-01-01","","","AEROMOTORS M-14PFXDK","false","false","false","","" -"3c66c3","D-AIVC","AIRBUS","","A350-941","A359","","","L2J","Lufthansa","LUFTHANSA","DLH","LH","","","","","","","","","","false","false","false","","" +"3c66c3","D-AIVC","AIRBUS","","","A359","","","L2J","","","","","","","","","","","","","","false","false","false","","" "ad1ab7","N9430T","CESSNA","Cessna","210","C210","57230","","L1P","","","","","Rmb Leasing Inc","","","2028-03-31","","1960-01-01","","","CONT MOTOR I0-470 SERIES","false","false","false","","" "a0a1a9","N14PN","REIMS","Cessna","R172K","C172","R1722602","","L1P","","","","","Nefas Paul J","","","2029-01-31","","1977-01-01","","","CONT MOTOR IO-360 SER","false","false","false","","" "a11fb6","N1713S","SIKORSKY","Schweizer","269 C-1","H269","0214","","H1P","","","","","Bristow Academy Inc","","","","","","","","","false","false","false","","" @@ -74386,6 +74400,7 @@ murphy, Noel","","2008-02-01","","","1940-01-01","","","1x CONTINENTAL MOTORS CO "a54d0a","N4400W","PIPER","Piper Aircraft Inc","PA-28-181","P28A","2843713","","L1P","","","","","Cae Oxford Aviation Academy Phoenix Inc","","","2029-09-30","","2013-01-01","","","LYCOMING O-360-A4M","false","false","false","","" "14815b","RA-33115","SHIJIAZHUANG","Antonov","An-2","AN2","114247304","","L1P","Avialesookhrana","AVIALESOOKHRANA","FFA","","Avialesookhrana","","","","","","","","","false","false","false","","" "aa6faa","N7714H","ZENITH","","","CH60","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"440b1e","OE-IWW","AIRBUS","Airbus Industrie","A320-216 (W","A320","","","L2J","Easyjet Europe","EASY","EJU","U2","Easyjet Europe","","","","","2014-01-01","","","","false","false","false","","" "4030f8","G-BSCH","SKYSTAR","Baldoon Leisure Flying Co Ltd","DENNEY KITFOX Kitfox","FOX","PFA 172-11621","","L1P","","","FOX","","Private","","2015-09-24","","","1990-01-01","","","1 x ROTAX 582
","false","false","false","","" "a154e4","N185SW","ST. JUST","Cessna","A185F","C185","18503199","","L1P","","","","","K And S Aviation Inc","","","2028-05-31","","1977-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "4012f8","G-CEUF","","P And M Aviation Ltd","QUIK GT450 Quik","ULAC","8325","","","","","","","Private","","2007-10-12","","","2007-01-01","","","1 x ROTAX 912 ULS  ( WARP DRIVE ground adjustable pitch )
","false","false","false","","" @@ -79619,6 +79634,7 @@ harney, John","","2008-09-16","","","2005-01-01","","","1x LYCOMING IO-540-AE1A5 "a4b1ae","N401PS","MOONEY","Mooney","M20R","M20P","29-0401","","L1P","","","","","Lesmeister Dean","","","2027-09-30","","2005-01-01","","","CONT MOTOR IO-550 SERIES","false","false","false","","" "405bab","G-CFGH","JABIRU","Sargant Df","JABIRU J160","JAB2","PFA 346-14693","","L1P","","","","","Private","","2014-05-09","","","2008-01-01","","","1 x JABIRU 2200A
","false","false","false","","" "acca52","N923LJ","CESSNA","Cessna","560XL","C56X","560-6124","","L2J","","","","","Bhi Real Estate Llc","","","2028-01-31","","2012-01-01","","","P&W CANADA PW545C","false","false","false","","" +"4bf0e2","","","","","","","","","","","","","","","","","","","","","","false","false","false","Ground vehicle","" "3ee8c7","D-2096","","Rolladen-schneider","LS1 d","GLID","169","","","","","","","Private","","","","","","","","","false","false","false","","" "aa8523","N777XP","RAYTHEON","Beech","300","BE30","FA-124","","L2T","","","","","Rbwdb Aircraft Llc","","","2027-05-31","","1987-01-01","","","P&W CANADA PT6A-67A","false","false","false","","" "a504ae","N422SS","MOONEY","Mooney","M20R","M20P","29-0339","","L1P","","","","","Southern Aircraft Consultancy Inc Trustee","","","2029-07-31","","2004-01-01","","","CONT MOTOR IO-550 SERIES","false","false","false","","" @@ -80294,6 +80310,7 @@ harney, John","","2008-09-16","","","2005-01-01","","","1x LYCOMING IO-540-AE1A5 "a43a30","N3712R","PIPER","Piper","PA-28-180","P28A","28-5798","","L1P","","","","","Mcbride Charles E","","","2028-03-31","","1970-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "abc03d","N85617","CHAMPION","Aeronca","7AC","CH7A","7AC-4361","","L1P","","","","","Fogle Michael D","","","2029-12-31","","1946-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" "a649e2","N504MC","HARBIN","Eurocopter","EC120B","EC20","1159","","H1T","","","","","Bhh Leasing #4 Llc","","","2029-12-31","","","","","TURBOMECA ARRIUS 2F","false","false","false","","" +"4abb5c","LOT071A","BOEING","Boeing Industry","B738","B738","","6082","L2J","Lot Polish Airlines","POLLOT","LOT","738/99L","Polish Airlimes","","1999-06-12","","","1997-12-17","1998-02-14","","2x117 kN CFMI CFM56-7B turbofans","false","false","false","","" "40524e","G-CERP","","P And M Aviation Ltd","QUIK GT450 Quik","ULAC","8285","","","","","","","Private","","2017-02-25","","","2007-01-01","","","1 x ROTAX 912ULS  ( WARP DRIVE ground adjustable pitch )
","false","false","false","","" "aca5a0","N914B","","Let","L-23 SUPER BLANIK","GLID","917914","","","","","","","Puget Sound Soaring Association","","","2027-03-31","","1992-01-01","","","NONE NONE","false","false","false","","" "c081c7","C-GXDU","","Let-kunovice Cssr","L-13 BLANIK (Blanik)","","025724","","","","","","","Saskatoon Soaring Club Inc.","","1976-05-12","2018-02-09","","","","","","false","false","false","","" @@ -81183,7 +81200,7 @@ harney, John","","2008-09-16","","","2005-01-01","","","1x LYCOMING IO-540-AE1A5 "a0130c","N1036J","","Aero Commander","112","","36","","","","","","","Premier Jets Inc","","","2030-02-28","","","","","LYCOMING I0360 SER","false","false","false","","" "a67bc6","N517DL","REIMS","Cessna","172N","C172","17268965","","L1P","","","","","Delta Leema Aviation Llc","","","2030-02-28","","1977-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "ac66ad","N8989P","PIPER","Piper","PA-24-260","PA24","24-4450","","L1P","","","","","Lentz Stephen J","","","2027-06-30","","1966-01-01","","","LYCOMING TI0-540 SER","false","false","false","","" -"7c44da","VH-NVW","WESTLAND","Westland","Scout AH.1","SCOU","F9525","","H1T","","","","","Royal Australian Navy Historic Flight","","","","","","","","","false","false","false","","" +"7c44da","VH-NVW","BOEING","Boeing","737-7K2","B737","30369/3407","","L2J","Virgin Australia","VELOCITY","VOZ","DJ","Yamasa C-,.ltd","","","","","2010-06-10","","","JET","false","false","false","","" "406899","G-CPII","MUDRY","Avions Mudry Et Cie","CAP 231 Cap 231","CP23","07","","L1P","","","","","Private","","2014-07-08","","","1988-01-01","","","1 x LYCOMING AEIO-540-L1B5D  ( MT-PROPELLER MTV-14-B-C/C190-17 )
","false","false","false","","" "7c26da","VH-HYK","ROBINSON","Robinson Helicopter Co","R22 BETA","R22","3542","","H1P","","","","","Weston, Peter Robert Wade","","","","","2004-01-01","","","1x Textron Lycoming O-360-J2A","false","false","false","","" "c88036","DQ-HTF","ROBINSON","Robinson","R44 Clipper II","R44","12086","","H1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -83340,6 +83357,7 @@ harney, John","","2008-09-16","","","2005-01-01","","","1x LYCOMING IO-540-AE1A5 "3d2309","D-ELND","REIMS","Reims/cessna","F150H","C150","0367","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a9d853","N733XX","REIMS","Cessna","172N","C172","17268641","","L1P","","","","","Hann Bruce E","","","2030-04-30","","","","","","false","false","false","","" "ae1708","91-0472","TAI","General Dynamics","F-16DJ Fighting Falcon","F16","CD-27","","L1J","United States Air Force","AIR CHIEF","AIO","","United States Air Force","","","","","","","","","false","false","false","","" +"02a1a5","TS-INF","AIRBUS","Airbus Industrie","","A320","5867","","L2J","Nouvel Air Tunisie","NOUVELAIR","LBT","BJ","Aercap","","","","","2013-01-01","","","","false","false","false","","" "a9396f","N6939A","","Cessna","172","","29039","","","","","","","Ertas Efe Y","","","2029-05-31","","1956-01-01","","","CONT MOTOR 0-300 SER","false","false","false","","" "7041c2","XY-ALC","BOEING","Boeing","737NG 86N/W","B738","43407","","L2J","","UNIONAIR","UBA","","Myanmar National Airlines","","","","","","","","","false","false","false","","" "a1b1bc","N208WN","BOEING","Boeing","737-7H4","B737","29856","","L2J","","SOUTHWEST","SWA","","Southwest Airlines Co","","","2030-03-31","","2005-01-01","","","CFM INTL. CFM56 SERIES","false","false","false","","" @@ -86339,7 +86357,7 @@ harney, John","","2008-09-16","","","2005-01-01","","","1x LYCOMING IO-540-AE1A5 "a4250a","N36603","PIPER","Piper","PA-28-161","P28A","28-7816673","","L1P","","","","","J&j Holdings Of Pella Llc","","","2027-10-31","","1978-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a15e35","N1878Z","CESSNA","Cessna","210-5","C210","205-0078","","L1P","","","","","Rpm Diesel Llc","","","2029-12-31","","1962-01-01","","","CONT MOTOR I0-470 SERIES","false","false","false","","" "c03ce4","C-FXBN","PIPER","Piper Aircraft Corporation","PA-28-140 (Piper)","P28A","28 24609","","L1P","","","","","Harris R Nuttall","","1989-12-07","","","","","","","false","false","false","","" -"08cec9","9S-ABM","AIRBUS","","","A320","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"08cec9","9S-ABM","AIRBUS","Airbus Industrie","A320","A320","03900","","L2J","African Company Airlines","AFRICOMPANY","FPY","","Compagnie Africaine D'aviation Caa","","2009-04-01","","","","","","","false","false","false","","" "a00be4","N1018J","ATR","Atr-gie Avions De Trnsp Region","ATR42-500","AT45","1018","","L2T","","","","","Wilmington Trust Co Trustee","","","2028-05-31","","","","","","false","false","false","","" "a6978d","N5238K","REIMS","Cessna","172P","C172","17274026","","L1P","","","","","Optic Air Llc","","","2029-12-31","","1980-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "abba36","N855D","COLEMILL","Beech","D55","BE55","TE-466","","L2P","","","","","Von Dresky Inc","","","2028-05-31","","1967-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" @@ -88114,6 +88132,7 @@ harney, John","","2008-09-16","","","2005-01-01","","","1x LYCOMING IO-540-AE1A5 "a5a95a","N464KB","CIRRUS","Cirrus Design Corp","SR22T","S22T","1786","","L1P","","","","","Stillwater Aviation Llc","","","2029-04-30","","2018-01-01","","","CONT MOTOR TSIO-550-K","false","false","false","","" "a791a7","N587TW","RAYTHEON","Beech","200","BE20","BB-587","","L2T","","","","","Aircraft Security Corp","","","2028-02-29","","1979-01-01","","","U/A CANADA PT6A SERIES","false","false","false","","" "a431ea","N37EV","","Sky Surfing Inc","ELA 10 ECLIPSE","","1001","","","","","","","Minelaza Usa Llc","","","2028-02-29","","2019-01-01","","","ROTAX 914ULS","false","false","false","","" +"3ff680","D-MAXF","","Shark.aero","Shark","","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a3f302","N3535J","REIMS","Cessna","150E","C150","15061235","","L1P","","","","","Debergh Marc T","","","2027-12-31","","1965-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "4b2d19","HB-RCB","PILATUS","Pilatus","P-3 05","PP3","497-46","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "154d70","RA-85360","TUPOLEV","Tupolev","Tu-154 B-2","T154","79A360","","L3J","","","","","Russian Air Force","","","","","","","","","false","false","false","","" @@ -91434,6 +91453,7 @@ harney, John","","2008-09-16","","","2005-01-01","","","1x LYCOMING IO-540-AE1A5 "a7810e","N583AA","SHANGHAI","Mcdonnell Douglas","DC-9-82(MD-82)","MD82","53160","","L2J","","","","","Pac Blue Aerospace","","","2029-01-31","","1991-01-01","","","P & W JT8D SERIES","false","false","false","","" "aa7863","N774FC","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "a6a1da","N5262D","CESSNA","","","C180","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"abc68a","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "405b10","G-DDRO","","Grob-werke Gmbh And Co Kg","TWIN ASTIR","GLID","3027","","","","","","","Private","","2015-10-19","","","1977-01-01","","","0 x NO ENGINES
","false","false","false","","" "a4b906","N403NV","MCDONNELL DOUGLAS","Mcdonnell Douglas","DC-9 88","MD88","49764","","L2J","","ALLEGIANT","AAY","","Allegiant Air","","","","","","","","","false","false","false","","" "ad39cd","N951QS","CESSNA","Cessna","Citation X","C750","750-0151","","L2J","","EXECJET","EJA","","Netjets","","","","","","","","","false","false","false","","" @@ -94932,6 +94952,7 @@ harney, John","","2008-09-16","","","2005-01-01","","","1x LYCOMING IO-540-AE1A5 "a6da7c","N5401W","PIPER","Piper","PA-28-160","P28A","28-469","","L1P","","","","","Wegner Eric E","","","2030-04-30","","1962-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "3ee664","D-1485","","Glaser-dirks","DG-200","GLID","2-16","","","","","","","Private","","","","","","","","","false","false","false","","" "484f67","PH-1490","","","","GLID","","","","","","","","","","","","","","","","","false","false","false","","" +"382d9a","","AIRBUS HELICOPTERS","","","H160","","","H2T","","","","","","","","","","","","","","false","false","false","","Rotorcraft" "a16105","N1882C","","Preceptor Aircraft","N3 PUP","","222","","","","","","","Higgins Joseph E","","","2029-03-31","","1997-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" "a9b370","N724LP","PIPER","Piper","PA-28-180","P28A","28-4962","","L1P","","","","","Bone Aviation Llc","","","2030-02-28","","1968-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "4068db","G-KSSA","MD HELICOPTERS","Md Helicopter Inc","MD 900 Explorer","EXPL","900-00123","","H2T","","","","","Kent Surrey And Sussex Air Ambulance","","2012-12-20","","","2007-01-01","","","2 x PRATT & WHITNEY CANADA PW207E
","false","false","false","","" @@ -96140,7 +96161,7 @@ harney, John","","2008-09-16","","","2005-01-01","","","1x LYCOMING IO-540-AE1A5 "a35236","N313CP","CESSNA","Cessna","182T","C82T","18282187","","L1P","","","","","Civil Air Patrol","","","2029-02-28","","2009-01-01","","","LYCOMING IO-540-AB1A5","false","false","false","","" "a4a05d","N3979","","Travel Air","4000","","328","","","","","","","Trebon Gregory","","","2028-10-31","","1928-01-01","","","CONT MOTOR R670-SERIES","false","false","false","","" "a73934","N56478","VULTEE","Consolidated Vultee","BT-13A","VALI","7356","","L1P","","","","","American Airpower Heritage Flying Museum","","","2029-01-31","","1941-01-01","","","P&W R1340 SERIES","false","false","false","","" -"504e27","ER-BAM","BOEING","Boeing","Boeing 747-409BDSF","B744","24312","954","L4J","Aerotrans Cargo","BACHYT","ATG","","Aerotrans Cargo","","","","","","","","PW PW4056","false","false","false","","No ADS-B Emitter Category Information" +"504e27","ER-BAM","BOEING","Boeing","747 409BDSF","B744","24312","","L4J","","","","","Aerotranscargo","","","","","","","","","false","false","false","","" "3d4397","D-EXVR","PITTS","Aviat","Pitts Special S-2B","PTS2","5272","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "4b19e8","HB-JVC","FOKKER","Fokker Aircraft B.v.","F28 MARK 0100","F100","11501","","L2J","Helvetic Airways","HELVETIC","OAW","2L","Helvetic Airways Ag","","2004-02-18","","","1994-01-01","","","ROLLS-ROYCE PLC TAY 650-15","false","false","false","","" "402c5a","G-BOYX","ROBINSON","Robinson Helicopter Co Inc","ROBINSON R22 BETA","R22","0862","","H1P","","","","","Robin Towle","","1990-11-06","","","1988-01-01","","","1 x LYCOMING O-320-B2C
","false","false","false","","" @@ -99267,6 +99288,7 @@ houlihan, Olive","","2015-07-08","","","2011-01-01","","","1x ROTAX 912-UL","fal "344294","EC-LRM","AIRBUS","Airbus","Airbus A320 232","A320","1349","","L2J","","VUELING","VLG","","Vueling Airlines","","","","","","","","","false","false","false","","" "a95991","N701PG","ZENITH","Winder Paul G","ZENITH CH 701","CH70","7-6117","","L1P","","","","","Winder Paul G","","","2028-02-29","","2006-01-01","","","ROTAX 912UL SERIES","false","false","false","","" "3f06af","D-9752","","Grob","G 102 Astir CS","G102","1220","","","","","","","Private","","","","","","","","","false","false","false","","" +"347292","EC-614","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "a58491","N4549F","ST. JUST","Cessna","A185E","C185","185-1045","","L1P","","","","","Metro Orthopedic Physical Therapy Inc","","","2028-10-31","","1966-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "ab7d77","N83992","CHAMPION","Aeronca","7AC","CH7A","7AC-2678","","L1P","","","","","Mandala Michael L","","","2028-01-31","","1946-01-01","","","CONT MOTOR C85 SERIES","false","false","false","","" "4248e3","VQ-BIA","BOEING","Boeing","Boeing 747 4KZFSCD","B744","36785","","L4J","","","","","Airbridgecargo","","","","","","","","","false","false","false","","" @@ -100293,7 +100315,7 @@ houlihan, Olive","","2015-07-08","","","2011-01-01","","","1x ROTAX 912-UL","fal "a5c2a5","N470RV","WREN","Cessna","182M","C182","18259314","","L1P","","","","","Pollick Matthew T","","","2027-04-30","","1968-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "a3241c","N301M","","Scoda Aeronautica Ltda","SUPER PETREL LS","","S0396","","","","","","","Super Petrel Usa Inc","","","2029-12-31","","2022-01-01","","","ROTAX 912 IS","false","false","false","","" "3ee6a2","D-1547","","Glaser-dirks","DG-100G Elan","GLID","E40-G22","","","","","","","Private","","","","","","","","","false","false","false","","" -"39c402","F-HRAC","ROBINSON","","","R66","","","H1T","","","","","","","","","","","","","","false","false","false","","" +"39c402","F-HRAC","ROBINSON","","R66","R66","","","H1T","","","","","","","","","","","","","","false","false","false","","" "484fa5","PH-EGM","DIAMOND","Diamond Aircraft","Diamond Star DA40 NG","DA40","40.N003","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a1965c","N201GM","NORTH AMERICAN ROCKWELL","Aero Commander","200D","M200","312","","L1P","","","","","Sundale Aviation Inc","","","2028-07-31","","1966-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "3e65be","D-KDSO","STEMME","Stemme","Stemme S10 VT","S10S","11-111","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -107365,7 +107387,7 @@ quinlan, Matthew","","2013-12-18","","","2012-01-01","","","1x LYCOMING IO-360-A "a44e25","N377DP","BOMBARDIER","Bombardier Inc","BD-100-1A10","CL30","20377","","L2J","","","","","Daleridge Road Aviation Inc","","","2028-12-31","","2012-01-01","","","HONEYWELL AS907-1-1A","false","false","false","","" "c086de","C-GZBX","","Cessna Aircraft Company","152 (Cessna)","","15283575","","","","","","","Aero Academy Inc.","","1979-09-12","2014-05-12","","","","","","false","false","false","","" "ae574f","15-46009","BOEING","","","B762","","","L2J","","","","","","","","","","","","","","false","false","false","","Reserved" -"4b43ac","HB-ZQI","EUROCOPTER-KAWASAKI","Airbus","MBB-BK 117 D-2","EC45","20225","","H2T","Schweizerische Luft-ambulanz Ag","SWISS AMBULANCE","SAZ","","Schweizerische Luft-ambulanz Ag","","2018-09-21","","","2018-01-01","","","TURBOMECA ARRIEL 2E","false","false","false","","" +"4b43ac","HB-ZQI","EUROCOPTER-KAWASAKI","Airbus","MBB-BK 117 D-2","EC45","20225","","H2T","Schweizerische Luft-ambulanz Ag","","","","Schweizerische Luft-ambulanz Ag","","2018-09-21","","","2018-01-01","","","TURBOMECA ARRIEL 2E","false","false","false","","" "a8b140","N6595R","BEECH","Beech","B19","BE19","MB-714","","L1P","","","","","Big Bend Community College","","","2028-09-30","","1974-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "43e7d2","M-WHAT","EUROCOPTER","Eurocopter","EC135 T2+","EC35","0511","","H2T","Starspeed","STARSPEED","SSP","","Starspeed Ltd","","","","","","","","","false","false","false","","" "aaeeea","N803VN","","Dji","INSPIRE 1","DRON","W21ADA11021379","","","","","","","City Of Naperville Fire Dept","","","2030-01-31","","","","","","false","false","false","","" @@ -110235,6 +110257,7 @@ quinlan, Matthew","","2013-12-18","","","2012-01-01","","","1x LYCOMING IO-360-A "a69eaf","N5256D","REIMS","Cessna","172N","C172","17272475","","L1P","","","","","Pacific Aviation Charter Services Llc","","","2027-10-31","","1979-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "71ce74","HL9674","SIKORSKY","","","S76","","","H2T","","","","","","","","","","","","","","false","false","false","","" "a43659","N3701U","WREN","Cessna","182G","C182","18255101","","L1P","","","","","Bowley Steven Jon","","","2027-08-31","","","","","CONT MOTOR O-470 SERIES","false","false","false","","" +"3ff8be","D-MWLT","","Tecnam","P92 Echo Mk II","","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a54e6e","N441BA","ROBINSON","Robinson Helicopter Company","R44 II","R44","14500","","H1P","","","","","Helino Llc","","","2029-03-31","","2021-01-01","","","LYCOMING IO-540-AE1A5","false","false","false","","" "43c32e","LS326","FAIREY","Fairey","Swordfish II","SWOR","","","L1P","","","","","Royal Naval Historic Flight","","","","","","","","","false","false","false","","" "a4029f","N358BA","","Let","L-23 SUPER BLANIK","GLID","998320","","","","","","","Civil Air Patrol Inc","","","2028-04-30","","1999-01-01","","","NONE NONE","false","false","false","","" @@ -113809,6 +113832,7 @@ quinlan, Matthew","","2013-12-18","","","2012-01-01","","","1x LYCOMING IO-360-A "401fc0","G-BJNY","HINDUSTAN","Aeronca Aircraft Corporation","AERONCA 11CC Super Chief","AR11","11CC-264","","L1P","","","","","Private","","1985-07-02","","","1949-01-01","","","1 x CONTINENTAL MOTORS CORP C85-8F
","false","false","false","","" "c06a6d","C-GOHW","","Michael Ethridge","CH701SP (Zenair)","","3301","","","","","","","Kevin Cassell","","2018-11-26","","","","","","","false","false","false","","" "a88df2","N650NM","","Aeronautics Defense Systems Lt","AEROLIGHT","","250","","","","","","","Regents Of New Mexico State University","","","2029-07-31","","","","","","false","false","false","","" +"4bce12","TC-SPR","BOEING","Boeing","737-8JP (W) ","B738","39444","3965","L2J","Sunexpress","SUNEXPRESS","SXS","XQ","Avolon","","","","","","","","2x CFMI CFM56-7B engines","false","false","false","","" "ad3fc4","N95293","","Okraska Raymond H","SR-16","","91672","","","","","","","Okraska Raymond H","","","2028-07-31","","1996-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "a1decb","N22BK","BEECH","Beech","B-60","BE60","P-312","","L2P","","","","","Aday B Joe","","","2028-04-30","","1974-01-01","","","LYCOMING TI0-541 SER","false","false","false","","" "38263a","F-WWVN","DASSAULT","Dassault","Dassault Falcon 7X","FA7X","247","","L3J","Dassault Aviation","","DAB","","Dassault Aviation","","","","","","","","","false","false","false","","" @@ -114076,6 +114100,7 @@ quinlan, Matthew","","2013-12-18","","","2012-01-01","","","1x LYCOMING IO-360-A "4853fc","PH-1PU","","","","ZZZZ","","","","","","","","","","","","","","","","","false","false","false","","" "a175df","N1931V","REIMS","Cessna","172M","C172","17263799","","L1P","","","","","Malone Shawn H","","","2027-11-30","","1974-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a1e8fc","N222FR","","American","AA-1B","","AA1B-0002","","","","","","","Grusinski Joel A","","","2029-09-30","","1972-01-01","","","LYCOMING 0-235 SERIES","false","false","false","","" +"3ff13d","D-MAQE","SSH","","","BU31","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a7749f","N58LX","RAYTHEON","Textron Aviation Inc","G58","BE58","TH-2525","","L2P","","","","","Vino Rolling Stock Llc","","","2029-03-31","","2019-01-01","","","CONT MOTOR IO-550-C","false","false","false","","" "a3f878","N355ME","REIMS","Cessna","172S","C172","172S8590","","L1P","","","","","Bode Aviation Inc","","","2027-09-30","","2000-01-01","","","LYCOMING I0360 SER","false","false","false","","" "ab9bce","N847W","","Perth Amboy","BIRD BK","","2049-29","","","","","","","Reid Robert W","","","2030-03-31","","1930-01-01","","","KINNER K5 SERIES","false","false","false","","" @@ -114743,7 +114768,7 @@ quinlan, Matthew","","2013-12-18","","","2012-01-01","","","1x LYCOMING IO-360-A "a23847","N242JT","CESSNA","Cessna","560XL","C56X","560-6131","","L2J","","","","","Cmmr Enterprise Llc","","","2027-07-31","","2013-01-01","","","P&W CANADA PW545C","false","false","false","","" "a76e9f","N5781C","CESSNA","Cessna","170A","C170","19735","","L1P","","","","","Sipple Ronald W Jr","","","2030-02-28","","1950-01-01","","","CONT MOTOR C145 SERIES","false","false","false","","" "acb248","N917SM","IAI","Israel Aircraft Industries","ASTRA SPX","ASTR","099","","L2J","","","","","Legacy Cloud Llc","","","2029-02-28","","1998-01-01","","","ALLIEDSIGN TFE731 SERIES","false","false","false","","" -"3008b0","I-PNTQ","SABCA","","","A109","","","H2T","","","","","","","","","","","","","","false","false","false","","" +"3008b0","I-PNTQ","SABCA","","","A109","","","H2T","Elitaliana","","","","Elitaliana","","","","","","","","","false","false","false","","" "a7484d","N5689Z","PIPER","","","PA22","","","L1P","","","","","","","","","","","","","","false","false","false","","" "7c3411","VH-KKJ","SIKORSKY","Hughes Helicopters","269C","H269","800952","","H1P","","","","","Red Balloon Helicopters Pty Ltd","","","","","1980-01-01","","","1x Textron Lycoming HIO-360","false","false","false","","" "a9c8d6","N73BL","PIPER","Piper Aircraft Inc","PA-32R-301T","P32T","3257450","","L1P","","","","","Southern Aircraft Consultancy Inc Trustee","","","2028-06-30","","","","","","false","false","false","","" @@ -115614,7 +115639,7 @@ quinlan, Matthew","","2013-12-18","","","2012-01-01","","","1x LYCOMING IO-360-A "3e5c21","D-KABX","VICKERS-SLINGSBY","Scheibe","SF-25D Falke","SF25","46124D","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "406eb6","G-TZED","SOCATA","Societe De Construction D'avions De Tourisme De D'affaires","SOCATA TB200 Tobago Xl","TOBA","1813","","L1P","","","","","","","2015-06-15","","","1997-01-01","","","1 x LYCOMING IO-360-A1B6  ( HARTZELL HC-C2YK-1BF/F7666A-2 )
","false","false","false","","" "c03c87","C-WXY","","Canadian Car & Foundry Co. Limited","HARVARD 4 (Harvard)","","CCF4 255","","","","","","","T C Holdings Inc.","","2006-05-12","","","","","","","false","false","false","","" -"395d68","F-GXLI","","","","A337","","","","","","","","","","","","","","","","","false","false","false","","" +"395d68","F-GXLI","AIRBUS","Airbus Industrie","A330-743L Beluga XL","A337","1930","","L2J","Airbus Transport International","BELUGA","BGA","4Y","","","2020-10-26","","","2020-01-01","2020-07-02","","2x RR Trent 772B-60","false","false","false","Beluga XL3","" "c01e87","C-FLOO","THRUSH","Thrush Aircraft, Inc.","S2R-H80 (Thrush Aircraft)","SS2T","H80-219DC","","L1T","","","","","College Farms Ltd","","2018-04-13","","","","","","","false","false","false","","" "401cfc","G-BFIG","REIMS","Reims Aviation Sa","REIMS CESSNA FR172K Reims Hawk Xp","C172","0615","","L1P","","","","","Private","","2017-05-02","","","1977-01-01","","","1 x CONTINENTAL MOTORS CORP IO-360-KB  ( MCCAULEY 2A34C203/90DCA-14 )
","false","false","false","","" "a3025a","N293TT","CESSNA","Textron Aviation Inc","680A","C68A","680A0293","","L2J","","","","","Rsbssh Llc","","","2029-11-30","","2021-01-01","","","P&W CANADA PW306D1","false","false","false","","" @@ -118527,7 +118552,7 @@ keating, John","","1990-12-20","","","1949-01-01","","","1x CONTINENTAL MOTORS C "a64da8","N505MT","NUSANTARA","Bell","407","B407","53307","","H1T","Med-trans Corp","","","","Med-trans Corp","","","2030-01-31","","1998-01-01","","","ROLLS-ROYC 250-C47B","false","false","false","","" "a47e01","N389PC","PIPER","Piper","PA 46-350P","PA46","4636482","","L1P","","","","","N1543t Llc","","","2028-02-29","","2010-01-01","","","LYCOMING TIO-540-AE2A","false","false","false","","" "3dd810","D-HCBO","EUROCOPTER","","","EC35","","","H2T","","","","","","","","","","","","","","false","false","false","","" -"7cfa71","A56-001","DASSAULT","Dassault Aviation","Falcon 7X","FA7X","283","","L3J","Royal Australian Air Force","AUSSIE","ASY","","Royal Australian Air Force","","","","","2018-01-01","","","","false","false","false","","" +"7cfa71","A56-001","DASSAULT","Dassault","","FA7X","283","","L3J","","","","","","","","","","","","","","false","false","false","","" "a085ba","N1325V","REIMS","Cessna","R172K","C172","R1722162","","L1P","","","","","Colorado Northwestern Community College","","","2029-08-31","","1976-01-01","","","CONT MOTOR IO-360 SER","false","false","false","","" "3e6f62","D-KHJM","GLASER-DIRKS","Glaser-dirks","DG-800B","DG80","8-125B54","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a29536","N2659U","RAYTHEON","Beech","A36","BE36","E-2316","","L1P","","","","","Mec Management Llc","","","2028-02-29","","1986-01-01","","","CONT MOTOR IO-550 SERIES","false","false","false","","" @@ -122848,7 +122873,7 @@ keating, John","","1990-12-20","","","1949-01-01","","","1x CONTINENTAL MOTORS C "a2a031","N2688M","RILEY","Cessna","414A","C414","414A0334","","L2P","","","","","El Pegasus Llc","","","2029-07-31","","1979-01-01","","","CONT MOTOR TSIO-520 SER","false","false","false","","" "a66a62","N512RP","LANCAIR","Cessna Aircraft Co","LC41-550FG","COL4","411084","","L1P","","","","","Van Bortel Aircraft Inc","","","","","2008-01-01","","","CONT MOTOR TSIO-550-C","false","false","false","","" "a34d1c","N31110","SEGUIN","Piper","PA-34-220T","PA34","3449319","","L2P","","","","","Anica Properties Llc","","","2028-08-31","","2005-01-01","","","CONT MOTOR TSIO-360 SER","false","false","false","","" -"a11fc1","N17133","BOEING","Boeing","757-224","B752","29282","","L2J","United Airlines","UNITED","UAL","UA","United Airlines Inc","","","2029-12-31","","1998-01-01","","","ROLLS-ROYC RB211535E4B37","false","false","false","","No ADS-B Emitter Category Information" +"a11fc1","N17133","BOEING","Boeing","757-224","B752","29282","840","L2J","United Airlines","UNITED","UAL","UA","United Airlines Inc","","","2029-12-31","","1998-01-01","","","ROLLS-ROYC RB211535E4B37","false","false","false","","" "a5cda5","N473QH","SIKORSKY","Sikorsky","S-76B","S76","760331","","H2T","","","","","Brown Helicopter Inc","","","2028-06-30","","1986-01-01","","","P&W PT6 SERIES","false","false","false","","" "a813b7","N61981","LISUNOV","Douglas","DC3A","DC3","2216","","L2P","","","","","Siderwicz Christopher J","","","2028-06-30","","1940-01-01","","","P & W R-1830 SERIES","false","false","false","","" "ab66b0","N8336G","PIPER","Piper","PA-28-181","P28A","28-8190167","","L1P","","","","","Esla Properties Llc","","","2029-08-31","","1981-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" @@ -124812,6 +124837,7 @@ doyle, Derek","","2009-05-11","","","2005-01-01","","","1x ROTAX 912-ULS","false "a0305a","N111EM","PIPER","Piper","PA-28-181","P28A","28-8690042","","L1P","","","","","Mccue Inc","","","2027-08-31","","1985-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "c0435a","C-FZND","TAYLOR-YOUNG","Taylorcraft Aviation Corporation","BC12D-85 (Taylorcraft)","TAYB","12035","","L1P","","","","","Noonan Engineering Ltd","","1986-06-06","","","","","","","false","false","false","","" "ae11bb","03-3689","RAYTHEON","Raytheon Aircraft Company","T-6A Texan II","TEX2","PT-235","","L1T","United States Air Force","AIR CHIEF","AIO","","United States Air Force","","","","","","","","","false","false","false","","Reserved" +"010243","SU-GFS","AIRBUS","Airbus Industrie","A321-251NX","A21N","11231","","L2J","Egyptair","EGYPTAIR","MSR","MS","Egyptair","","","","","","","","2x CFMI LEAP-1A32 engines","false","false","false","","" "a2b0e3","N2724W","MOONEY","Mooney","M20C","M20P","3338","","L1P","","","","","Dugan Aviation Llc","","","2030-03-31","","1966-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "aadf20","N8WA","RUTAN","Alexander William","VARIEZE","VEZE","2001","","L1P","","","","","Lecka Thomas Michael","","","2028-09-30","","1990-01-01","","","LYCOMING 0-235 SERIES","false","false","false","","" "406a3b","G-MUJD","VAN'S","El-deen Mf","VANS RV-12","RV12","LAA 363-15145","","L1P","","","","","Private","","2013-08-15","","","2015-01-01","","","1 x ROTAX 912ULS  ( SENSENICH 2A0R5R70E )
","false","false","false","","" @@ -128699,7 +128725,7 @@ doyle, Derek","","2009-05-11","","","2005-01-01","","","1x ROTAX 912-ULS","false "a8793c","N645QR","","Andrew Philip Richardson Dba","A-60S","","211","","","","","","","Lutz Julius K","","","2027-05-31","","2016-01-01","","","NONE NONE","false","false","false","","" "c0c6e5","C-IXII","","Rans Inc.","S-12 XL AIRAILE (Rans)","","05970801","","","","","","","Barry K Halliwell","","2003-05-16","2007-03-26","","","","","","false","false","false","","" "40544d","G-CJKY","SCHEMPP-HIRTH","Schempp-hirth Flugzeugbau Gmbh","VENTUS CT","VENT","181","","L1P","","","","","Private","","2007-10-29","","","1993-01-01","","","
","false","false","false","","" -"e493d1","PR-YRQ","AIRBUS","","","A20N","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"e493d1","PR-YRQ","AIRBUS","Airbus","A320Neo","A20N","","","L2J","Azul Linhas Aéreas Brasileiras","Azul","AZU","AD","","","","","","","","","","false","false","false","","" "c083c6","C-GXXL","DE HAVILLAND CANADA","The De Havilland Aircraft Of Canada, Limited","DHC-2 (Dehavilland)","DHC2","1607","","L1P","","","","","Rodolfo Bianco","","2000-08-09","","","","","","","false","false","false","","" "ad6dcf","N9643M","MOONEY","","","M20P","","","L1P","","","","","","","","","","","","","","false","false","false","","" "c065c6","C-GMOB","PIPER","Piper Aircraft Corporation","PA-31-350 (Piper)","PA31","317852072","","L2P","","","","","Northern Skies Air Service Ltd.","","2018-04-24","","","","","","","false","false","false","","" @@ -136445,6 +136471,7 @@ doyle, Derek","","2009-05-11","","","2005-01-01","","","1x ROTAX 912-ULS","false "ac46e6","N890SB","VAN'S","Lippert Barry M","RV-9A","RV9","91095","","L1P","","","","","Eason Richard E","","","2028-01-31","","2009-01-01","","","LYCOMING O-320-D3G","false","false","false","","" "1558ea","RA-88298","YAKOVLEV","","","YK40","","","L3J","","","","","","","","","","","","","","false","false","false","","" "ac28e6","N8829R","NORTHERN","Downer","BELLANCA 14-19-3","B14A","4181","","L1P","","","","","Pierce Larry J","","","2027-10-31","","1960-01-01","","","CONT MOTOR I0-470 SERIES","false","false","false","","" +"3cc0d3","D-CAID","CESSNA","Cessna","CITATION SOVEREIGN +","C680","680-0506","","L2J","Drf Luftrettung (german Air Rescue)","CIVIL AIR AMBULANCE","AMB","1I","Drf Luftrettung (german Air Rescue)","","","","","2014-01-01","","","","false","false","false","","" "ad51ee","N95763","SIKORSKY","Sikorsky","H-19D Chickasaw","S55P","551173","","H1P","","","","","Private","","","","","","","","","false","false","false","","" "3c5efa","D-AGWZ","AIRBUS","Airbus","A319 132","A319","5978","","L2J","","GERMAN WINGS","GWI","","Germanwings","","","","","","","","","false","false","false","","" "502d37","YL-LDJ","AIRBUS","","","A320","","","L2J","","","","","","","","","","","","","","false","false","false","","" @@ -138105,7 +138132,7 @@ doyle, Derek","","2009-05-11","","","2005-01-01","","","1x ROTAX 912-ULS","false "a6f17e","N54665","","Piper","PA-28-140","","28-7425233","","","","","","","Show-me Flight Group Llc","","","2030-02-28","","1974-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "448ae7","OO-BWG","","Ultramagic","N-300 Hot Air Balloon","BALL","300/41","","","","","","","Private","","","","","","","","","false","false","false","","" "a1e4a2","N2209P","SEGUIN","Piper","PA-23-250","PA23","27-3788","","L2P","","","","","Ruppel Robert E Jr","","","2028-12-31","","1967-01-01","","","LYCOMING IO-540 SER","false","false","false","","" -"7c6c2d","VH-VNJ","AIRBUS","Airbus","A320 232","A320","2982","","L2J","","","","","Tigerair Australia","","","","","","","","","false","false","false","","" +"7c6c2d","VH-VNJ","AIRBUS","Airbus","A320 232","A320","2982","","L2J","Virgin Australia Airlines","VELOCITY","VOZ","VA","Virgin Australia","","","","","","","","","false","false","false","","" "a6905f","N522AC","BOMBARDIER","Bombardier Inc","BD-100-1A10","CL35","20664","","L2J","","","","","Cindago Llc","","","2028-06-30","","2016-01-01","","","HONEYWELL AS907-2-1A","false","false","false","","" "a91d10","N68686","","Baby Ace","D","","QD-1","","","","","","","Mckaye Thomas","","","2028-07-31","","","","","CONT MOTOR A&C65 SERIES","false","false","false","","" "a6771a","N5155S","PIPER","Piper","PA-28-180","P28A","28-7105009","","L1P","","","","","Moss Jimmy David","","","2027-09-30","","1970-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" @@ -138425,6 +138452,7 @@ doyle, Derek","","2009-05-11","","","2005-01-01","","","1x ROTAX 912-ULS","false "478046","LN-OBF","TAI","","","AS32","","","H2T","","","","","","","","","","","","","","false","false","false","","" "406e50","G-CISD","","Wilkinson Tj","SACKVILLE AH-31","BALL","03","","","","","","","Private","","2015-04-22","","","2015-01-01","","","0 x NO ENGINES
","false","false","false","","" "a8486d","N63260","REIMS","Cessna","150M","C150","15077211","","L1P","","","","","Van Hise Austin S","","","2029-12-31","","1975-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" +"4a777a","QZZ-BC27","ZJA","Zja Ink","","DVJQ","1822","","Z391","Dat Danish Air Transport","DANISH","DTQ","DN","Kazakhstan Owner Ultimate","","2023-09-25","2023-09-25","","2023-09-25","2023-09-25","","","false","false","false","","" "14a5ce","RA-42446","YAKOVLEV","Yakovlev","Yak-42 D","YK42","4520423308017","","L3J","","","","","Mchs Rossii","","","","","","","","","false","false","false","","" "a4f451","N41808","CHAMPION","Bellanca","7GCBC","CH7B","558-73","","L1P","","","","","Noble Raymond D","","","2027-12-31","","1973-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "ad3804","N9507R","COLEMILL","Beech","K35","BE35","D-6078","","L1P","","","","","Harrison Dennis N","","","2030-03-31","","1959-01-01","","","CONT MOTOR I0-470 SERIES","false","false","false","","" @@ -139207,7 +139235,7 @@ toner, Trevor","","2014-11-13","","","1974-01-01","","","1x LYCOMING O-320-E2G", "a966bc","N7047E","CESSNA","Cessna","175A","C175","56547","","L1P","","","","","John E Rush","","","2029-08-31","","1960-01-01","","","CONT MOTOR GO-300 SERIES","false","false","false","","" "a0372d","N11283","REIMS","Cessna","150L","C150","15075297","","L1P","","","","","J F Aviation Inc","","","2029-04-30","","1973-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "a69fe7","N526H","COLEMILL","Beech","35-B33","BE35","CD-636","","L1P","","","","","Hausch James P Ii","","","2028-11-30","","1963-01-01","","","CONT MOTOR IO-470-K","false","false","false","","" -"3ff9f6","D-MCCH","VANESSA AIR","","","VL3","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"3ff9f6","D-MCCH","VANESSA AIR","","VL-3 Evolution","VL3","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a0192d","N105VL","","Joseph F Salomone","RV-10","","40744","","","","","","","Tjh Management Llc","","","2029-03-31","","","","","LYCOMING IO 540 SER","false","false","false","","" "aa5d1c","N767SC","SEGUIN","Piper","PA-23-250","PA23","27-7754060","","L2P","","","","","Clegg Stephen A","","","2028-07-31","","1977-01-01","","","LYCOMING TI0-540 SER","false","false","false","","" "ad2412","N946GK","","Gary Burtoft","EXCALIBUR","","010220","","","","","","","Burtoft Gary Edward","","","2029-01-31","","2021-01-01","","","HIRTH 3203","false","false","false","","" @@ -139509,6 +139537,7 @@ toner, Trevor","","2014-11-13","","","1974-01-01","","","1x LYCOMING O-320-E2G", "add33c","N990GC","LEARJET","Bombardier","Learjet 31","LJ31","31-033A","","L2J","","","","","Live Lucky Aviation Llc","","","","","","","","","false","false","false","","" "aba5e1","N85KA","ST. JUST","Cessna","A185F","C185","18503404","","L1P","","","","","Anderson Keith W","","","2029-01-31","","1977-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "c03f09","C-XWQ","","Cessna Aircraft Company","172K (Cessna)","","17257351","","","","","","","Peter Hiebert Friesen","","1970-05-28","","","","","","","false","false","false","","" +"43c92e","ZM700","WESTLAND","","","H64","","","H2T","Army Air Corps","ARMYAIR","AAC","","British Army","","","","","","","","","false","false","false","","" "ad721d","N9657Y","COLEMILL","Beech","P35","BE35","D-7072","","L1P","","","","","Limor Yoram","","","2029-10-31","","1962-01-01","","","CONT MOTOR I0-470 SERIES","false","false","false","","" "3ee0a7","D-0016","","Schempp-hirth","Discus CS","GLID","233CS","","","","","","","Private","","","","","","","","","false","false","false","","" "402673","G-MNKE","","Solar Wings Ltd","PEGASUS PHOTON","ULAC","SW-WP-0008","","","","","","","Private","","2012-04-19","","","1986-01-01","","","1 x SOLO KLEINMOTOREN GMBH 210  ( NEWTON Type 21L )
","false","false","false","","" @@ -139722,7 +139751,7 @@ toner, Trevor","","2014-11-13","","","1974-01-01","","","1x LYCOMING O-320-E2G", "a68a99","N520TB","SKYSTAR","","","FOX","","","L1P","","","","","","","","","","","","","","false","false","false","","" "38262a","F-BJRK","YAKIMA AEROSPORT","Piper","PA-18 135 Super Cub","PA18","18-3774","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a63449","N4993A","CESSNA","Cessna","180","C180","32390","","L1P","","","","","Baker Brandon Heath","","","2029-11-30","","","","","","false","false","false","","" -"06a0a2","A7-HHE","BOEING","Boeing","747 8KB BBJ","B748","37544","1439","L4J","Qatar Amiri Flight","AMIRI","QAF","","Qatar Amiri Flight","","2012-02-28","","","2012-01-01","","","","false","false","false","","" +"06a0a2","A7-HHE","BOEING","Boeing","BOEING 747-8","B748","37544","1439","L4J","Qatar Amiri Flight","AMIRI","QAF","","Qatar Amiri Flight","","2012-02-28","","","2012-01-01","","","4x GE","false","false","false","","" "a61649","N49109","REIMS","","","C152","","","L1P","","","","","","","","","","","","","","false","false","false","","" "ab38e9","N822GK","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "7cbc1d","19-4342","FANTASY AIR","","","ALGR","","","L1P","","","","","","","","","","","","","","false","false","false","","" @@ -140026,6 +140055,7 @@ toner, Trevor","","2014-11-13","","","1974-01-01","","","1x LYCOMING O-320-E2G", "a7b8f9","N597SA","ROBINSON","Robinson","R44 Raven","R44","1604","","H1P","","","","","Private","","","","","","","","","false","false","false","","" "aa2807","N7533Z","STOLP","Robert Miller","ACRODUSTER SA750","SA75","001","","L1P","","","","","Sullivan William P","","","2028-07-31","","2008-01-01","","","LYCOMING O-320-A2B","false","false","false","","" "acac64","N91556","ROGERSON HILLER","Hiller","UH-12B","UH12","300","","H1P","","","","","Parks Leasing Inc","","","2028-02-29","","1952-01-01","","","FRANKLIN 6A&6V335 SER","false","false","false","","" +"4bce0f","TC-SPO","BOEING","Boeing","737-8MA (W)","B738","40946","4916","L2J","Sunexpress","SUNEXPRESS","SXS","XQ","Avolon","","","","","2014-01-01","","","2x CFMI CFM56-7B engines","false","false","false","","" "a1dee9","N22CQ","STODDARD-HAMILTON","Johnson Stephen C","SPORTSMAN GS-2","GLST","7274","","L1P","","","","","Reilly Michael R","","","2029-09-30","","2008-01-01","","","LYCOMING IO-390 SER","false","false","false","","" "45a190","OY-HLP","ROBINSON","Robinson","R44 Clipper II","R44","10191","","H1P","","","","","Private","","","","","","","","","false","false","false","","" "a728db","N560VX","CESSNA","Cessna","560","C560","560-0512","","L2J","","","","","Via-560vx Llc","","","2028-03-31","","1999-01-01","","","P&W CANADA JT15D 5 SER","false","false","false","","" @@ -140331,7 +140361,7 @@ toner, Trevor","","2014-11-13","","","1974-01-01","","","1x LYCOMING O-320-E2G", "a8bba1","N66195","REIMS","Cessna","150M","C150","15075911","","L1P","","","","","Mckee Benjamin E","","","2029-10-31","","1974-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "c00966","C-FDON","CESSNA","Cessna Aircraft Company","208B (Cessna)","C208","208B2015","","L1T","","","","","Conair Group Inc.","","2012-12-13","","","","","","","false","false","false","","" "ac0820","N8744K","BELL","Bell Helicopter Textron Canada","505","B505","65278","","H1T","","","","","Irondequoit Acquisitions Llc","","","2030-04-30","","2019-01-01","","","SAFRAN ARRIUS 2R","false","false","false","","" -"7c4209","VH-NBV","BOEING","","","B737","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"7c4209","VH-NBV","BOEING","The Boeing Co.","737-7K2","B737","39446","","L2J","Virgin Australia","VELOCITY","VOZ","DJ","","","2022-09-12","","","2011-01-01","","","","false","false","false","","" "a5f7ab","N484CD","CIRRUS","Cirrus Design Corp","SR20","SR20","2589","","L1P","","","","","Noble Air Leasing Llc","","","2027-08-31","","2020-01-01","","","LYCOMING IO-390-C3B6","false","false","false","","" "7c2409","VH-HEJ","ROBINSON","Robinson Helicopter Co","R44","R44","1045","","H1P","","","","","Kilto Station Pty Ltd","","","","","2001-01-01","","","1x Textron Lycoming O-540-F1B5","false","false","false","","" "46069b","OH-CNB","REIMS","Reims/cessna","FR172E Rocket","C172","0042","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -141563,6 +141593,7 @@ quinn, John","","2014-04-11","","","2001-01-01","","","1x ROTAX 912-UL","false", "a775bf","N58YK","YAKOVLEV","Yakovlev","YAK 52","YK52","866302","","L1P","","","","","Nolan John R","","","2028-03-31","","1986-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" "ab5115","N8281G","REIMS","Cessna","177RG","C77R","177RG0181","","L1P","","","","","Widtfeldt John R","","","2028-05-31","","1971-01-01","","","LYCOMING IO-360-A1B6D","false","false","false","","" "c028e0","C-FPML","","Cessna Aircraft Company","180F (Cessna)","","18051291","","","","","","","Westcoast Wild Adventures Ltd","","1999-06-01","","","","","","","false","false","false","","" +"4bce15","TC-SPU","BOEING","Boeing","737-8U3 (W) ","B738","31763","3177","L2J","Sunexpress","SUNEXPRESS","SXS","XQ","Bbam","","","","","","","","2x CFMI CFM56-7B engines","false","false","false","","" "3eee05","D-3438","","Schleicher","ASK 13","GLID","13556","","","","","","","Private","","","","","","","","","false","false","false","","" "a6a779","N528JL","DASSAULT","Dassault-breguet","FALCON 10","FA10","76","","L2J","","","","","Phoenix Rising Aviation Inc","","","2030-04-30","","","","","","false","false","false","","" "a4d5c2","N410ST","PIPER","Piper Aircraft Inc","PA 46-350P","PA46","4636410","","L1P","","","","","Aerogi Services Llc","","","2027-11-30","","2007-01-01","","","LYCOMING TIO-540-AE2A","false","false","false","","" @@ -142333,7 +142364,7 @@ mullin, Michael","","2010-05-27","","","1999-01-01","","","1x ROTAX 912-UL","fal "4402e2","OE-FSR","CESSNA","Cessna","Citation CJ1+","C525","525-0634","","L2J","","","","","Austro Control Gmbh","","","","","","","","","false","false","false","","" "a8a271","N65554","CESSNA","Cessna","UC-78B","T50","5647","","L2P","","","","","Calvin James L","","","2029-05-31","","1943-01-01","","","JACOBS L4 /R755-7","false","false","false","","" "a46f54","N385R","PIPER","Piper","PA-46-310P","PA46","46-8508038","","L1P","","","","","Advanced Technology Distributors Inc","","","2028-01-31","","1985-01-01","","","CONT MOTOR TSIO-520 SER","false","false","false","","" -"4b82db","5002","RAYTHEON","","","BE20","","","L2T","","","","","","","","","","","","","","false","false","false","","" +"4b82db","5002","RAYTHEON","Beechcraft","BE200 Super King Air","BE20","","","L2T","General Directorate Of Mapping","HANDE","","","","","","","","","","","PW PT6A-41","false","false","false","","" "a0063f","N100RV","MAULE","Maule","MX-7-180A","M7","20029C","","L1P","","","","","Maule Group Ltd","","","2028-02-29","","","","","LYCOMING O&VO-360 SER","false","false","false","","" "a11e75","N171SA","PANHA","Bell","OH-58A","B06","71-20628","","H1T","","","","","Alabama Law Enforcement Agency","","","2028-04-30","","","","","","false","false","false","","" "a1b02b","N208EM","CESSNA","Cessna","208B","C208","208B2100","","L1T","","","","","Global Automation Solutions Inc","","","2027-09-30","","2009-01-01","","","P&W CANADA PT6A-114A","false","false","false","","" @@ -142355,7 +142386,7 @@ mullin, Michael","","2010-05-27","","","1999-01-01","","","1x ROTAX 912-UL","fal "e48b45","PT-FKK","HARBIN","Embraer","Legacy 650","E35L","14501188","","L2J","","","","","Cb Air Taxi Aereo","","","","","","","","","false","false","false","","" "a7ed41","N61JV","CESSNA","Cessna","421C","C421","421C0097","","L2P","","","","","61jv Llc","","","2027-06-30","","","","","CONT MOTOR GTSI0-520-F-K","false","false","false","","" "7c7af1","VH-YKJ","HOAC","","","DV20","","","L1P","","","","","","","","","","","","","","false","false","false","","" -"7c0a23","VH-CAD","DASSAULT","Avions Marcel Dassault - Breguet Aviation","MYSTERE - FALCON 900","F900","36","","L3J","","","","","Falconair Maintenance Pty Ltd","","","","","1987-01-01","","","3x Allied Signal Engines TFE731-5BR-1C (ALLIED SIGN)","false","false","false","","" +"7c0a23","VH-CAD","DASSAULT","Avions Marcel Dassault - Breguet Aviation","MYSTERE - FALCON 900","F900","36","","L3J","Falcon Air Operation Pty Ltd","","","","Falconair Maintenance Pty Ltd","","","","","1987-01-01","","","3x Allied Signal Engines TFE731-5BR-1C (ALLIED SIGN)","false","false","false","","" "4bcdf5","TC-SOU","BOEING","Boeing","737-8Z9","B738","30420","","L2J","Sunexpress","SUNEXPRESS","SXS","XQ","","","","","","","","","","false","false","false","","" "ab37b0","N8215Y","PIPER","","","PA30","","","L2P","","","","","","","","","","","","","","false","false","false","","" "a3f4fa","N354PM","LEARJET","Gates Lear Jet","35","LJ35","015","","L2J","","","","","Alliance Air Parts Inc","","","","","1975-01-01","","","GARRETT TFE731 SERIES","false","false","false","","" @@ -143436,7 +143467,7 @@ mullin, Michael","","2010-05-27","","","1999-01-01","","","1x ROTAX 912-UL","fal "43eca6","2-WTAB","BOEING","","","B738","","","L2J","","","","","","","","","","","","","","false","false","false","","" "a351a6","N31271","","Balloon Works","FIREFLY 7-15","BALL","F71004","","","","","","","Allison J R","","","2029-04-30","","0001-01-01","","","NONE NONE","false","false","false","","" "a23e70","N24369","TAYLOR-YOUNG","Taylorcraft","BL-65","TAYB","1705","","L1P","","","","","Norman John W","","","2029-03-31","","1940-01-01","","","LYCOMING 0-145B SERIES","false","false","false","","" -"c031c7","C-FSWC","","Cessna Aircraft Company","T206H (Cessna)","","T20608438","","","","","","","Government Of Canada, Royal Canadian Mounted Police","","2004-05-12","","","","","","","false","false","false","","" +"c031c7","C-FSWC","","Cessna Aircraft Company","T206H (Cessna)","","T20608438","","","Government Of Canada","","","","Government Of Canada, Royal Canadian Mounted Police","","2004-05-12","","","","","","","false","false","false","","" "ad79db","N96798","WREN","Cessna","182Q","C182","18266856","","L1P","","","","","Curl Kathryn Ann","","","2028-08-31","","","","","","false","false","false","","" "a96f71","N707KA","DE HAVILLAND CANADA","Dehavilland","DHC-3","DHC3","106","","L1P","","","","","Kenmore Air Harbor Llc","","","2030-04-30","","","","","NONE NONE","false","false","false","","" "a000c7","N1HX","RAYTHEON","Beech","200","BE20","BB-361","","L2T","","","","","Centralav Llc","","","2028-01-31","","1978-01-01","","","P&W CANADA PT6A-60A","false","false","false","","" @@ -146322,6 +146353,7 @@ mullin, Michael","","2010-05-27","","","1999-01-01","","","1x ROTAX 912-UL","fal "402fe9","G-OFTI","PIPER","Piper Aircraft Corporation","PIPER PA-28-140 Cherokee","P28A","28-7325201","","L1P","","","","","Private","","2017-02-24","","","1972-01-01","","","1 x LYCOMING O-320-E3D  ( SENSENICH 74DM6-0-58 )
","false","false","false","","" "4b0f62","HB-FVM","PILATUS","Pilatus Aircraft Ltd.","PC-12/47E","PC12","1291","","L1T","Leonardo Flyers Ag","","","","Leonardo Flyers Ag","","2011-06-22","","","2011-01-01","","","PRATT & WHITNEY CANADA CORP. PT6A-67P","false","false","false","","" "7c6d37","VH-VUX","BOEING","The Boeing Co.","737-8FE","B738","37823","","L2J","Virgin Australia Airlines","VELOCITY","VOZ","VA","Virgin Australia","","2020-11-11","","","2010-09-01","","","","false","false","false","","No ADS-B Emitter Category Information" +"4401e7","OE-AHA","SSH","","","BU31","","","L1P","","","","","","","","","","","","","","false","false","false","","" "7807f8","B-3678","PIPER","","","PA44","","","L2P","","","","","","","","","","","","","","false","false","false","","" "a6446a","N5025E","CHAMPION","Bellanca","8KCAB","BL8","438-78","","L1P","","","","","Stokes Field Llc","","","2030-01-31","","1978-01-01","","","LYCOMING AEIO-360 SER","false","false","false","","" "7c1b7d","VH-FPR","CHAMPION","American Champion Aircraft Corp","8GCBC","BL8","385-97","","L1P","","","","","Eedy, Peter George","","","","","1997-01-01","","","1x Textron Lycoming O-360","false","false","false","","" @@ -148411,7 +148443,7 @@ mullin, Michael","","2010-05-27","","","1999-01-01","","","1x ROTAX 912-UL","fal "a1b243","N2081N","","Cessna","140","","12317","","","","","","","Jerome Jeffrey A","","","2030-03-31","","","","","CONT MOTOR C85 SERIES","false","false","false","","" "c07885","C-GTQQ","REIMS","Cessna Aircraft Company","172N (Cessna)","C172","17272152","","L1P","","","","","Catherine Black","","2014-12-12","","","","","","","false","false","false","","" "c802f5","ZK-DJL","REIMS","","","C77R","","","L1P","","","","","","","","","","","","","","false","false","false","","" -"399966","F-HGLG","LEARJET","Bombardier","Learjet 75","LJ75","45-570","0","L2J","Ixair","X-BIRD","IXR","","Ixair","","","","","","","","","false","false","false","","" +"399966","F-HGLG","LEARJET","Learjet","75","LJ75","45-570","","L2J","","","399966","","","","","","","","","","","false","false","false","","" "43ebc9","2-RLAO","ATR","","","AT45","","","L2T","","","","","","","","","","","","","","false","false","false","","" "4058fa","G-DCMG","","","","GLID","","","","","","","","","","","","","","","","","false","false","false","","" "3e177e","D-IACC","COLEMILL","Beech","Baron B55","BE55","TC-1737","","L2P","","","","","Private","","","","","","","","","false","false","false","","" @@ -149761,7 +149793,7 @@ mullin, Michael","","2010-05-27","","","1999-01-01","","","1x ROTAX 912-UL","fal "a27c95","N2599W","MOONEY","Mooney","M20E","M20P","950","","L1P","","","","","Binger Thomas C","","","2027-10-31","","1965-01-01","","","LYCOMING I0360 SER","false","false","false","","" "a4fcfd","N420Q","","Quest Aircraft Company Llc","KODIAK 100","K100","100-0083","","","","","","","Air Attack Inc","","","2027-02-28","","2012-01-01","","","P&W CANADA PT6A-34","false","false","false","","" "300582","I-CFAG","SIKORSKY","","","S64","","","H2T","","","","","","","","","","","","","","false","false","false","","" -"c038a7","C-FVLU","BOEING","The Boeing Company","787-9 (Boeing)","B789","38360","","L2J","Air Canada","AIR CANADA","ACA","AC","Air Canada","","2018-02-02","","","","","","","false","false","false","","" +"c038a7","C-FVLU","BOEING","The Boeing Company","787-9 (Boeing)","B789","38360","659","L2J","Air Canada","AIR CANADA","ACA","AC","Air Canada","","2018-02-02","","","","","","2xGE","false","false","false","","" "a324cc","N301UA","","Drs Technologies","SENTRY HP","DRON","HP-27","","","","","","","University Of Alaska Fairbanks","","","2029-09-30","","","","","","false","false","false","","" "a98f96","N715KW","CIRRUS","Cirrus Design Corp","SR22T","S22T","1048","","L1P","","","","","Jgw Aviation I","","","2028-06-30","","2015-01-01","","","CONT MOTOR TSIO-550-K","false","false","false","","" "ab0065","N808JH","RACA","Md Helicopters Inc","369E","H500","0577E","","H1T","","","","","Jack Harter Helicopters Inc","","","2027-08-31","","2008-01-01","","","ROLLS-ROYC 250-C20","false","false","false","","" @@ -151929,6 +151961,7 @@ The seven occupants were killed and the aircraft was destroyed. No post impact f "3cd3c6","D-CHMS","PILATUS","","","PC24","","","L2J","","","","","","","","","","","","","","false","false","false","","" "ab473c","N826AY","CANADAIR","Bombardier Inc","CL-600-2B19","CRJ2","8026","","L2J","Delta Air Lines","DELTA","DAL","DL","Delta Air Lines Inc","","","2030-03-31","","2005-01-01","","","GE CF34 SERIES","false","false","false","","" "38ab3b","F-WTBU","AIRBUS","","","A332","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"102b11","QVI392","BOBOA","Boboa","","S79024","9036","","S602","Swiss International Air Lines","SWISS","SWR","LX","Qvi 2023","","2023-07-30","2023-07-30","","2023-07-30","2023-07-30","","","false","false","false","","" "7c3092","VH-JVO","RILEY","Cessna Aircraft Company","310R","C310","310R0539","","L2P","","","","","Shoal Air Pty. Ltd.","","","","","1976-01-01","","","2x Teledyne-continental Motors IO-520","false","false","false","","" "ada08c","N9774B","CESSNA","","","C72R","","","L1P","","","","","","","","","","","","","","false","false","false","","" "4038db","G-BVKL","","Cameron Balloons Ltd","CAMERON A-180","BALL","3255","","","","","","","Private","","2012-04-04","","","1994-01-01","","","0 x NO ENGINES
","false","false","false","","" @@ -152505,7 +152538,7 @@ The seven occupants were killed and the aircraft was destroyed. No post impact f "c01564","C-FICP","","Mooney Aircraft Corporation","M20K (Mooney)","","25-0270","","","","","","","Derek Sibley","","2018-06-13","","","","","","","false","false","false","","" "a0e224","N156TB","DE HAVILLAND CANADA","Dehavilland","BEAVER DHC-2 MK.1","DHC2","1014","","L1P","","","","","Dalks Leasing Inc","","","2028-04-30","","1956-01-01","","","P&W R-985 SERIES","false","false","false","","" "393645","F-GNSF","RAYTHEON","Beech","Baron 58","BE58","TH-1706","","L2P","","","","","Private","","","","","","","","","false","false","false","","" -"3004a6","I-PNTE","SABCA","","","A109","","","H2T","","","","","","","","","","","","","","false","false","false","","" +"3004a6","I-PNTE","SABCA","","AW109S","A109","","","H2T","","","","","Elitaliana","","","","","","","","","false","false","false","","" "a64cfd","N505EX","BELL","Bell Helicopter Textron Canada","505","B505","65260","","H1T","","","","","Angel Wings Aviation Llc","","","2030-01-31","","2019-01-01","","","SAFRAN ARRIUS 2R","false","false","false","","" "aa973c","N78142","REIMS","Cessna","172K","C172","17257499","","L1P","","","","","Partyka Kenneth M","","","2030-01-31","","1968-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "aa0a53","N746RH","LOT","Eurocopter","AS 350 B2","AS50","2603","","H1T","","","","","United Helicopter Leasing Llc","","","2029-01-31","","1992-01-01","","","TURBOMECA ARRIEL 1D1","false","false","false","","" @@ -155331,7 +155364,7 @@ The seven occupants were killed and the aircraft was destroyed. No post impact f "3c6741","D-AIZA","AIRBUS","Airbus","A320 214","A320","4097","","L2J","","LUFTHANSA","DLH","","Lufthansa","","","","","","","","","false","false","false","","" "a8dc80","N670J","JABIRU","Jabiru Usa Sport Aircraft Llc","J170-SP","JAB2","186","","L1P","","","","","Ruzicka Daniel M","","","2029-04-30","","2008-01-01","","","JABIRU 2200","false","false","false","","" "a1ba3c","N210HL","CESSNA","Cessna","T210N","T210","21063225","","L1P","","","","","Fern Hill Aviation Llc","","","2029-07-31","","1979-01-01","","","","false","false","false","","" -"7c60d8","VH-TEY","CESSNA","","","C25A","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"7c60d8","VH-TEY","CESSNA","Cessna Aircraft Company","525A","C25A","525A-0094","","L2J","Teys Australia Pty Ltd","","","","","","","","","","","","WILLIAMS INTERNATIONAL","false","false","false","","" "a4004e","N357RJ","YAKIMA AEROSPORT","Piper","PA-18-150","PA18","18-5071","","L1P","Eagle Aviation","GYPSY","GYP","","Eagle Aviation Inc","","","2028-01-31","","1956-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a64ac5","N504WE","","Textron Aviation Inc","G58","","TH-2454","","","","","","","Architectural Supplements Aviation Llc","","","2030-03-31","","2016-01-01","","","CONT MOTOR IO-550-C","false","false","false","","" "861ef8","JA615A","BOEING","Boeing","767 381ER","B763","35877","","L2J","","ALL NIPPON","ANA","","All Nippon Airways","","","","","","","","","false","false","false","","" @@ -157340,6 +157373,7 @@ The seven occupants were killed and the aircraft was destroyed. No post impact f "a8051e","N616AX","DASSAULT","Dassault Aviation","MIRAGE F1 CT","MRF1","227","","L1J","","","","","Airborne Tactical Advantage Co Llc","","","2028-11-30","","","","","","false","false","false","","" "c8181e","ZK-MVS","TECNAM","","","SIRA","","","L1P","","","","","","","","","","","","","","false","false","false","","" "ad09be","N9392H","REIMS","Cessna","172M","C172","17266135","","L1P","","","","","Obx Airplanes Llc","","","2027-11-30","","1975-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" +"5084c8","","","","","","","","","","","","","","","","","","","","","","false","false","false","Last seen taking off Goma, DRC on 29th August 2023","" "a183c7","N197SL","STEEN","Matt Travis","STEEN SKYBOLT","BOLT","SL1","","L1P","","","","","Sleeper Llc","","","2030-04-30","","2020-01-01","","","LYCOMING IO-360-A1A","false","false","false","","" "c06486","C-GMBT","AIR TRACTOR","Air Tractor, Inc.","AT-401B (Air Tractor)","AT3P","401B-0992","","L1P","","","","","Western Canadian Aerial Ltd.","","2017-03-01","","","","","","","false","false","false","","" "a1d8e4","N218TA","MOONEY","Mooney International Corp","M20V","M20T","33-0012","","L1P","","","","","J Van Mooney Leasing Llc","","","2028-03-31","","2018-01-01","","","CONT MOTOR TSIO-550-G","false","false","false","","" @@ -158162,6 +158196,7 @@ The seven occupants were killed and the aircraft was destroyed. No post impact f "a71790","N556V","","Alexander Vagner","TANGO 2","GYRO","000005","","","","","","","Wiest John W","","","2028-01-31","","2017-01-01","","","YAMAHA ALL MDLS A/B","false","false","false","","" "39472d","F-GRZN","CANADAIR","Bombardier","Bombardier CRJ 700","CRJ7","10264","","L2J","","","","","Hop!","","","","","","","","","false","false","false","","" "c0084c","C-DDR","","Fleet Manufacturing Limited","80 (Fleet)","","003","","","","","","","William J Alder","","2015-09-29","","","","","","","false","false","false","","" +"4864a7","PH-WDB","","Tecnam","P2010 TDI","","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a45154","N3778Z","YAKIMA AEROSPORT","Piper","PA-18-150","PA18","18-7460","","L1P","","","","","Ward Nelson H","","","2029-07-31","","1960-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a05449","N120GA","IAI","Gulfstream Aerospace","Gulfstream Aerospace G150","G150","320","","L2J","","","","","Gulfstream Aerospace Lp","","","","","","","","","false","false","false","","" "a6d1bc","N5389D","CESSNA","Cessna","180A","C180","50289","","L1P","","","","","Mushrush Wayne L","","","2029-07-31","","1958-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" @@ -159138,6 +159173,7 @@ The seven occupants were killed and the aircraft was destroyed. No post impact f "39d431","F-HVBR","AEROSPOOL","Aerospool","WT9 Dynamic LSA","WT9","DY445/2012","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a06d76","N1268K","TEMCO","Luscombe","8E","L8","3995","","L1P","","","","","Larson Frank O","","","2028-08-31","","1946-01-01","","","CONT MOTOR C85 SERIES","false","false","false","","" "aaf784","N8055N","PIPER","","","P28A","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"4b19fd","HB-JVX","EMBRAER","Embraer","ERJ-190STD (190-100)","E190","19000603","","L2J","Helvetic Airways","HELVETIC","OAW","2L","Truenoord","","","","","","","","","false","false","false","","" "a1bb9d","N210XP","CESSNA","Cessna","T210K","T210","21059336","","L1P","","","","","Smith O L Iii","","","2029-10-31","","1970-01-01","","","CONT MOTOR TSIO-520 SER","false","false","false","","" "44da74","OO-VST","TECNAM","","","P06T","","","L2P","","","","","","","","","","","","","","false","false","false","","" "400e90","G-BYWM","GROB","Grob-werke Gmbh And Co Kg","GROB G115E Tutor","G115","82148/E","","L1P","","","","","Ministry Of Defence","","2000-11-17","","","2000-01-01","","","1 x LYCOMING AEIO-360-B1F  ( MT-PROPELLER MTV-12-B-C/C183-17E )
","false","false","false","","" @@ -160102,6 +160138,7 @@ The seven occupants were killed and the aircraft was destroyed. No post impact f "385d97","F-BXMX","SOCATA","Socata","Rallye MS.880B Club","RALL","2590","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a28c93","N26300","TIGER","Grumman American Avn. Corp.","AA-5A","AA5","AA5A0513","","L1P","","","","","Newhauser Charles D Jr","","","2028-07-31","","1977-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "c018a7","C-FJIS","CESSNA","Cessna Aircraft Company","120X (Cessna)","C120","13832","","L1P","","","","","Marcel Beauseigle","","2005-07-25","","","","","","","false","false","false","","" +"4cada6","EI-INA","AIRBUS","Airbus Industrie","A320-271N ","A20N","11201","","L2J","Ita Airways","ITY","","","Avolon","","","","","2022-01-01","","","2x PW PW1127G engines","false","false","false","","" "781a02","B-099C","COMAC","","","AJ27","","","L2J","","","","","","","","","","","","","","false","false","false","","" "a0b1ad","N144BH","PANHA","Bell","206B","B06","1600","","H1T","","","","","Abc Helicopters Inc","","","2029-05-31","","1975-01-01","","","ALLISON 250-C20B","false","false","false","","" "343247","EC-KTU","LOT","Eurocopter","Squirrel AS.350 B3","AS50","4520","","H1T","","","","","Taf Helicopters Sa","","","","","","","","","false","false","false","","" @@ -165591,6 +165628,7 @@ The seven occupants were killed and the aircraft was destroyed. No post impact f "a56fed","N45BS","YAKOVLEV","","","YK52","","","L1P","","","","","","","","","","","","","","false","false","false","","" "732048","EP-HBH","SUD","Sud Aviation","Alouette III SA.316B","ALO3","1061","","H1T","","","","","Helicopter Services Organisation","","","","","","","","","false","false","false","","" "a7135f","N555QC","SIKORSKY","Sikorsky","S-76 C","S76","760555","","H2T","","","","","Wells Fargo Bank Northwest Na Trustee","","","","","","","","","false","false","false","","" +"010245","SU-GFU","AIRBUS","Airbus Industrie","A321-251NX","A21N","11352","","L2J","Egyptair","EGYPTAIR","MSR","MS","Egyptair","","","","","2023-01-01","","","2x CFMI LEAP-1A32 engines","false","false","false","","" "addb27","N992MC","RACA","","","H500","","","H1T","","","","","","","","","","","","","","false","false","false","","" "a37219","N321AT","AIR TRACTOR","Air Tractor Inc","AT-502B","AT5T","502B-2746","","L1T","","","","","West Central Aerial Llc","","","2027-05-31","","2011-01-01","","","P&W CANADA PT6A-34AG","false","false","false","","" "a12a92","N1741P","PIPER","Piper","PA-22-150","PA22","22-2531","","L1P","","","","","Wright Russell W","","","2030-03-31","","1954-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" @@ -170579,7 +170617,7 @@ denman, Peter","","2007-03-28","","","1978-01-01","","","0x ","false","false"," "a35d6d","N316DG","PIPER","","","P32R","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a5ddf6","N47731","TAYLORCRAFT (1)","Taylorcraft","DCO-65","TAYD","L-4628","","L1P","","","","","Brownsville Barnstormers Flying Museum Inc","","","2030-04-30","","1942-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" "c03d8e","C-FXIB","REIMS","Cessna Aircraft Company","172I (Cessna)","C172","172-56723","","L1P","","","","","Bruce R Irvine","","2011-11-23","","","","","","","false","false","false","","" -"a95859","N701AV","TBM","Socata","TBM 700","TBM7","179","","L1T","","","","","Tango Alpha Sierra Llc","","","2029-02-28","","2000-01-01","","","P&W PT6A SER","false","false","false","","" +"a95859","N701AV","TBM","Socata","TBM 700","TBM7","179","","L1T","","","","","Tango Alpha Sierra Llc","","","2029-02-28","","2000-01-01","","","P&W PT6A SER","false","false","false","KBDU based","" "0d0e31","XA-DIJ","LEARJET","","","LJ35","","","L2J","","","","","","","","","","","","","","false","false","false","","" "c01f8e","C-FLYR","CESSNA","Cessna Aircraft Company","140 (Cessna)","C140","12733","","L1P","","","","","David R Rose","","1997-11-14","","","","","","","false","false","false","","" "3ea218","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" @@ -174029,6 +174067,7 @@ denman, Peter","","2007-03-28","","","1978-01-01","","","0x ","false","false"," "a1b522","N209TG","AIRPLANE FACTORY","Gregory Donald Sutton","SLING 2","SLG2","273K","","L1P","","","","","Sutton Gregory Donald","","","2029-09-30","","2019-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" "ab883a","N842KT","EXTRA","","","E300","","","L1P","","","","","","","","","","","","","","false","false","false","","" "c02ed8","C-FRTF","WAGAERO","Ron Riley","CUBY ACRO TRAINER (Wagaero)","J3","R-6","","L1P","","","","","Harry J Brooks","","2017-06-19","","","","","","","false","false","false","","" +"4bb296","TC-LTV","AIRBUS","Airbus Industrie","A321-271NX","A21N","","11312","L2J","Turkish Airlines","TURKISH","THY","TK","Smbc","","","","","","","","2x PW PW1133G engines","false","false","false","","" "a37eb5","N324RT","SEGUIN","Piper","PA-23-250","PA23","27-3210","","L2P","","","","","Torres Rafael","","","2030-04-30","","1966-01-01","","","LYCOMING TI0-540 SER","false","false","false","","" "abdb11","N863MB","LOT","Airbus Helicopters Inc","AS350B3","AS50","7814","","H1T","","","","","Reach Air Medical Services Llc","","","2030-02-28","","2014-01-01","","","TURBOMECA ARRIEL 2D","false","false","false","","" "0d832b","YV3287","EUROCOPTER","","","EC35","","","H2T","","","","","","","","","","","","","","false","false","false","","" @@ -176778,7 +176817,7 @@ denman, Peter","","2007-03-28","","","1978-01-01","","","0x ","false","false"," "a37d0d","N3239E","REIMS","Cessna","172N","C172","17271478","","L1P","","","","","Leaf Air Llc","","","2028-03-31","","1978-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a6b720","N5314Z","","Aerostar International Inc","S-57A","BALL","S57A-3233","","","","","","","Prairie Sky Inc","","","2028-01-31","","2002-01-01","","","NONE NONE","false","false","false","","" "440ad1","OE-ISK","AIRBUS","","","A332","","","L2J","","","","","","","","","","","","","","false","false","false","","" -"4cc52f","TF-ICC","BOEING","","","B39M","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"4cc52f","TF-ICC","BOEING","","737-9","B39M","","","L2J","","","","","","","","","","","","","","false","false","false","","" "ade91b","N996BW","","","","ZZZZ","","","","","","","","","","","","","","","","","false","false","false","","" "ad6858","N963LU","","Uvify","810-00028","","213682IFOD01060000728","","","","","","","Pixis Drones Llc","","","2029-12-31","","","","","","false","false","false","","" "a95bbd","N7018H","WAGAERO","Piper","J3C-65","J3","20262","","L1P","","","","","Leyner Robert E","","","2030-02-28","","","","","","false","false","false","","" @@ -181017,6 +181056,7 @@ denman, Peter","","2007-03-28","","","1978-01-01","","","0x ","false","false"," "403408","G-BTJL","PIPER","Piper Aircraft Corporation","PIPER PA-38-112 Tomahawk","PA38","38-79A0863","","L1P","","","","","","","2013-10-14","","","1979-01-01","","","1 x LYCOMING O-235-L2C  ( SENSENICH 72CK-0-56 )
","false","false","false","","" "a2c41b","N2779L","REIMS","Cessna","172H","C172","17255979","","L1P","","","","","Resetar Douglas J","","","2030-04-30","","1967-01-01","","","CONT MOTOR 0-300 SER","false","false","false","","" "acac66","N91558","WREN","Cessna","182M","C182","18259818","","L1P","","","","","Cole Christopher W","","","2028-08-31","","1969-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" +"4bc885","TC-RDE","AIRBUS","Airbus Industrie","A321-251NX","A21N","11240","","L2J","Pegasus Airlines","SUNTURK","PGT","PC","Pegasus","","","","","","","","2x CFMI LEAP-1A32 engines","false","false","false","","" "44054c","OE-IZK","GULFSTREAM AEROSPACE","Gulfstream Aerospace","Gulfstream Aerospace G450","GLF4","4200","","L2J","","","","","M Jet Aviation Gmbh","","","","","","","","","false","false","false","","" "ab0c85","N81059","CESSNA","Cessna","140","C140","10349","","L1P","","","","","Auxano Wilmington Llc","","","2028-09-30","","1946-01-01","","","CONT MOTOR C85 SERIES","false","false","false","","" "406406","G-IMMI","","Escapade Aircraft Ltd","ESCAPADE KID","ULAC","EAL KID 000","","","","","","","","","2014-08-04","","","2010-01-01","","","
","false","false","false","","" @@ -181807,6 +181847,7 @@ denman, Peter","","2007-03-28","","","1978-01-01","","","0x ","false","false"," "a0ca8c","N150DT","REIMS","Cessna","150B","C150","15059671","","L1P","","","","","Watson Matthew L","","","2027-03-31","","1962-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "a8c8c1","N665WA","PIPER","Piper","PA-46-600TP","P46T","4698165","","L1T","","","","","41rp Holdings Llc","","","2028-10-31","","2021-01-01","","","P&W CANADA PT6A-42A","false","false","false","","" "406dc0","G-DLOW","","Grob Flugzeugbau Gmbh & Co Kg","GROB G103 TWIN II Twin Ii","GLID","3585","","","","","","","The Vale Of The White Horse Gliding Society","","2015-02-16","","","1980-01-01","","","0 x NO ENGINES
","false","false","false","","" +"4bce14","TC-SPT","BOEING","Boeing","737-8U3 (W)","B738","30144","3249","L2J","Sunexpress","SUNEXPRESS","SXS","XQ","Bbam","","","","","","","","2x CFMI CFM56-7B engines","false","false","false","","" "c0621d","C-GLEA","MOONEY","Mooney Aircraft Corporation","M20K (Mooney)","M20T","25-0754","","L1P","","","","","G. Baumeister Ltd","","2011-05-05","","","","","","","false","false","false","","" "c00679","C-FCLS","DE HAVILLAND CANADA","Boeing Of Canada Ltd. De Havilland Division","DHC-8-106 (Dehavilland)","DH8A","249","","L2T","Air Creebec","CREE","CRQ","","Air Creebec Inc.","","2005-05-13","","","","","","","false","false","false","","" "c0441d","C-FZUQ","PANHA","Bell Helicopter Company","206B (Bell)","B06","629","","H1T","","","","","Government Of Canada, National Research Council","","1971-04-07","","","","","","","false","false","false","","" @@ -182194,7 +182235,7 @@ denman, Peter","","2007-03-28","","","1978-01-01","","","0x ","false","false"," "aa1e8c","N751JD","ZENITH","J Vandermolen/d M Vandermolen","ZENITH 750 STOL","CH75","8753","","L1P","","","","","Vandermolen David M","","","2029-12-31","","2021-01-01","","","JABIRU 3300A","false","false","false","","" "a73e11","N566JW","WREN","Cessna","182F","C182","18254448","","L1P","","","","","Ross Stephen D","","","2027-11-30","","1962-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "a20cb5","N231FA","MOONEY","Mooney Aircraft Corp.","M20K","M20P","25-0020","","L1P","","","","","Dan Aviation Services Llc","","","2029-11-30","","1978-01-01","","","CONT MOTOR TSIO-360 SER","false","false","false","","" -"a8985e","N653FB","","Airbus Helicopters Inc","AS350B3","","9235","","","","","","","Airbus Helicopters Inc","","","2029-11-30","","2022-01-01","","","SAFRAN ARRIEL 2D","false","false","false","","" +"a8985e","N653FB","","Airbus Helicopters Inc","AS350B3","","9235","","","City Of Phoenix","","","","Airbus Helicopters Inc","","","2029-11-30","","2022-01-01","","","SAFRAN ARRIEL 2D","false","false","false","Phoenix PD (POLICE)","" "a345ca","N31PN","PIPER","Piper","PA-31P","PA31","31P-7630009","","L2P","","","","","Rhs Consulting Ltd","","","2028-12-31","","1976-01-01","","","LYCOMING TIGO-541SER","false","false","false","","" "abdf49","N864SF","CESSNA","Cessna","208B","C208","208B0864","","L1T","","","","","Suburban Air Express Inc","","","2027-08-31","","2000-01-01","","","P&W PT6A SER","false","false","false","","" "a73104","N5622P","PIPER","Piper","PA-24","PA24","24-691","","L1P","","","","","Baker Franklin E","","","2030-01-31","","1959-01-01","","","LYCOMING 0-540 SERIES","false","false","false","","" @@ -183094,6 +183135,7 @@ denman, Peter","","2007-03-28","","","1978-01-01","","","0x ","false","false"," "a4d52a","N410LR","CESSNA","Cessna","172R","C72R","17280257","","L1P","","","","","Wings Over Texas Holdings Llc","","","2029-10-31","","1997-01-01","","","LYCOMING I0-360-B1E","false","false","false","","" "ac5aa1","N89523","CESSNA","Cessna","140","C140","8559","","L1P","","","","","Lindsey Caleb","","","2030-01-31","","1946-01-01","","","CONT MOTOR C85 SERIES","false","false","false","","" "71ce82","HL9682","LEONARDO","","","A169","","","H2T","","","","","","","","","","","","","","false","false","false","","" +"3ff8cc","D-MWUE","AEROSPOOL","","WT9 Dynamic","WT9","","","L1P","","","","","","","","","","","","","","false","false","false","","" "aa3e13","N75917","REIMS","Cessna","172N","C172","17268040","","L1P","","","","","Abs Aviation","","","2028-07-31","","1976-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a18f36","N2VK","TED SMITH","Smith","AEROSTAR 601P","AEST","61P-0328-093","","L2P","","","","","Wings & Rotors Llc","","","2028-09-30","","","","","LYCOMING TI0-540 SER","false","false","false","","" "a44072","N373RL","NUSANTARA","Bell","407","B407","53373","","H1T","","","","","Rotorcraft Leasing Company Llc","","","2028-08-31","","1999-01-01","","","ALLISON 250-C47","false","false","false","","" @@ -188128,6 +188170,7 @@ denman, Peter","","2007-03-28","","","1978-01-01","","","0x ","false","false"," "40438d","G-GYTO","PIPER","The New Piper Aircraft Inc","PIPER PA-28-161 Cherokee Warrior Iii","P28A","2842082","","L1P","","","","","Private","","2017-02-22","","","2000-01-01","","","1 x LYCOMING O-320-D3G  ( SENSENICH 74DM6-0-60 )
","false","false","false","","" "a32217","N3003D","RILEY","Cessna","310","C310","35203","","L2P","","","","","Roach James M","","","2029-12-31","","1955-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "401a3b","G-EAVX","","Standard Motor Company Ltd","SOPWITH PUP Pup","UNDEFINED","B1807","","","","","","","","","1978-01-16","","","1916-01-01","","","
","false","false","false","","" +"3d1378","D-EFPW","DIAMOND","Diamond Aircraft Industries Gmbh","DA40 NG","DA40","40.N606","","L1P","Fe Air Charter Gmbh","","","","","","2023-07-17","","","2023-06-28","2023-06-28","","1","false","false","false","","" "4685f5","SX-AOU","PIPER","Piper","PA-32 260 Cherokee Six","PA32","32-1294","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a049f9","N118AP","PILATUS","Pilatus","PC-12/45","PC12","175","","L1T","","","","","Roadkill Aviation Llc","","","2027-03-31","","1997-01-01","","","P&W CANADA PT6A-66 SER","false","false","false","","" "c02bb4","C-FQOH","REIMS","Cessna Aircraft Company","150F (Cessna)","C150","15063674","","L1P","","","","","G Michael Regan","","1997-09-15","","","","","","","false","false","false","","" @@ -190357,7 +190400,7 @@ denman, Peter","","2007-03-28","","","1978-01-01","","","0x ","false","false"," "a9200e","N6873W","PIPER","Piper","PA-28-140","P28A","28-21029","","L1P","","","","","Lian Jay A","","","2027-06-30","","1965-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a897d2","N6529Y","CESSNA","Cessna","T210N","T210","21064421","","L1P","","","","","Bbd Lynch Family Lp","","","2029-03-31","","","","","CONT MOTOR TSIO-520 SER","false","false","false","","" "ac1763","N8787H","TUSCO","North American","NAVION","NAVI","NAV-4-787","","L1P","","","","","Jed Homes Inc","","","2027-11-30","","","","","","false","false","false","","" -"382d1a","","","","H225","","","","","","","","","","","","","","","","","","false","false","false","","Rotorcraft" +"382d1a","","EUROCOPTER-HARBIN","","H175","EC75","","","H2T","","","","","","","","","","","","","","false","false","false","","Rotorcraft" "a9020e","N68ND","CHAMPION","American Champion Aircraft","8KCAB","BL8","668-92","","L1P","","","","","Sand Nicholas Patrick","","","2027-08-31","","1992-01-01","","","LYCOMING AEIO-360 SER","false","false","false","","" "3c19a5","D-AYSM","GULFSTREAM AEROSPACE","Gulfstream Aerospace","Gulfstream Aerospace G650","GLF6","6146","","L2J","Mhs Aviation Gmbh","","","M2","Mhs Aviation Gmbh","","","","","","","","","false","false","false","","" "380f1a","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" @@ -195267,7 +195310,7 @@ denman, Peter","","2007-03-28","","","1978-01-01","","","0x ","false","false"," "acc2ed","N921LT","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "401be9","G-IIDC","MUSTANG","Trudgill Mja","MIDGET MUSTANG","MIMU","PFA 168-1327","","L1P","","","","","Private","","2012-11-21","","","2005-01-01","","","1 x CONTINENTAL MOTORS CORP O-200-A
","false","false","false","","" "390249","F-GASJ","ROBINSON","Robinson","R66","R66","0573","","H1T","","","","","Private","","","","","","","","","false","false","false","","" -"3e24e9","D-IFEF","DIAMOND","Diamond Aircraft Industries Gmbh","DA62","DA62","62.162","","L2P","Fe Air Charter Gmbh","","","","","","","","","2021-06-29","2021-06-29","","2","false","false","false","","" +"3e24e9","D-IFEF","DIAMOND","Diamond Aircraft Industries Gmbh","DA62","DA62","62.162","","L2P","Fe Air Charter Gmbh","","","","","","2021-07-08","","","2021-07-08","2021-07-08","","2","false","false","false","","" "ac32f0","N8851N","PIPER","Piper","PA-28-140","P28A","28-25703","","L1P","","","","","Bloodworth Nathan B","","","2028-03-31","","","","","LYCOMING 0-320 SERIES","false","false","false","","" "c097cd","C-IFMQ","","Six-chuter Inc.","SKYE RYDER AEROCHUTE SR2 (Six-Chuter)","","97-1625-2","","","","","","","George Wood","","1997-12-23","2009-09-02","","","","","","false","false","false","","" "502d36","YL-LDI","AIRBUS","","","A320","","","L2J","","","","","","","","","","","","","","false","false","false","","" @@ -195360,6 +195403,7 @@ denman, Peter","","2007-03-28","","","1978-01-01","","","0x ","false","false"," "a82542","N624BR","RAYTHEON","Bombardier Inc","BD-700-1A10","GLEX","9236","","L2J","","","","","Tvpx Aircraft Solutions Inc Trustee","","","2028-06-30","","2007-01-01","","","ROLLS DEUT BR700-710A220","false","false","false","","" "a95e8f","N7021Z","ROBINSON","Robinson","R66","R66","0383","","H1T","","","","","Private","","","","","","","","","false","false","false","","" "ae52ea","11-08846","MERIDIONALI","","","H47","","","H2T","","","","","","","","","","","","","","false","false","false","","" +"4b194c","HB-JPC","AIRBUS","Airbus Industrie","A321-271NX","A21N","","","L2J","Swiss International Air Lines","SWISS","SWR","LX","Swiss International Air Lines","","","","","2023-01-01","","","2x PW PW1133G engines","false","false","false","","" "a9b921","N72545","CESSNA","Cessna","140","C140","9715","","L1P","","","","","Watkins James G","","","2030-03-31","","1946-01-01","","","CONT MOTOR C85 SERIES","false","false","false","","" "3f5067","5X+XX","TRANSALL","","Transall C-160D","C160","","","L2T","","","","","Luftwaffe ltg-63","","","","","","","","","false","false","false","","" "3fc384","D-OLMA","","Balony Kubicek","BB Hot Air Balloon","BALL","331","","","","","","","Private","","","","","","","","","false","false","false","","" @@ -198122,7 +198166,7 @@ denman, Peter","","2007-03-28","","","1978-01-01","","","0x ","false","false"," "a90b3c","N682GA","GILES","Gulfstream Aerospace","G200","G200","202","","L1P","","","","","Avrj Llc","","","","","","","","","false","false","false","","" "3ee205","D-0366","","Schleicher","ASK 21","GLID","21671","","","","","","","Private","","","","","","","","","false","false","false","","" "484b08","PH-YNC","","Cameron","Z-150 Hot Air Balloon","BALL","11175","","","","","","","Private","","","","","","","","","false","false","false","","" -"3ffa1a","D-MMBF","","","","PRIM","","","","","","","","","","","","","","","","","false","false","false","","" +"3ffa1a","D-MMBF","","Blackshape","Blackshape Prime","PRIM","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a437eb","N371EE","RACA","Mcdonnell Douglas Helicopters","369 E","H500","0371E","","H1T","","","","","Private","","","","","","","","","false","false","false","","" "a7b38e","N5959A","CIRRUS","Cirrus Design Corp","SR20","SR20","1526","","L1P","","","","","Cardinal 177b Llc","","","2028-05-31","","2005-01-01","","","CONT MOTOR IO-360 SER","false","false","false","","" "a7f153","N61011","PIPER","Piper Aircraft Inc","PA-28R-201","P28R","2844139","","L1P","","","","","Inter American University Of Puerto Rico","","","2027-06-30","","2008-01-01","","","LYCOMING IO-360-C1C6","false","false","false","","" @@ -199962,7 +200006,7 @@ cunningham, John","","2017-01-18","","","1997-01-01","","","1x ROTAX 582","false "4786d3","LN-LME","PIPER","Piper","PA-28 140 Cherokee","P28A","28-24441","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a300a2","N293AC","CHAMPION","Champion","7ECA","CH7A","1355-95","","L1P","","","","","Weaver Roger D","","","2029-12-31","","1995-01-01","","","LYCOMING 0-235 SERIES","false","false","false","","" "acd336","N92508","PIPER","Piper","PA-12","PA12","12-31","","L1P","","","","","Rich Aircraft Services Llc","","","2029-04-30","","1946-01-01","","","LYCOMING 0-235 SERIES","false","false","false","","" -"a64e26","N505SU","BELL","Bell Textron Canada Ltd","505","B505","65302","","H1T","","","","","Southern Utah University","","","2027-07-31","","2020-01-01","","","SAFRAN ARRIUS 2R","false","false","false","SUU Pilot Training Program","" +"a64e26","N505SU","BELL","Bell Textron Canada Ltd","505","B505","65302","","H1T","Iron County Sheriff's Department","","","","Southern Utah University","","","2027-07-31","","2020-01-01","","","SAFRAN ARRIUS 2R","false","false","false","(POLICE) Shared use by Iron County Sheriffs Department and Southern Utah University pilot training program.","" "3aabf1","2640","EUROCOPTER","Eurocopter","EC725 AP","EC25","2640","","H2T","Aviation Legere De L'armee De Terre","FRENCH ARMY","FMY","","French Army","","","","","","","","","false","false","false","","" "a559e0","N444EC","MOONEY","Mooney","M20R","M20P","29-0467","","L1P","","","","","Ovation Llc","","","2028-01-31","","2006-01-01","","","CONT MOTOR IO-550-G","false","false","false","","" "a3fb07","N3559V","CESSNA","Cessna","140","C140","14834","","L1P","","","","","Armstrong Scott T","","","2028-02-29","","","","","CONT MOTOR C90 SERIES","false","false","false","","" @@ -200956,7 +201000,7 @@ cunningham, John","","2017-01-18","","","1997-01-01","","","1x ROTAX 582","false "a66f72","N51334","REIMS","Cessna","150J","C150","15069931","","L1P","","","","","Cragg Noel J","","","2028-02-29","","1968-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "a2a086","N269BA","COLEMILL","Beech","J35","BE35","D-5618","","L1P","","","","","Corporate Aviation Center Llc","","","2029-01-31","","1958-01-01","","","CONT MOTOR I0-470 SERIES","false","false","false","","" "a7d7c5","N604TA","TECNAM","Costruzioni Aeronautiche Tecna","P2008","P208","081","","L1P","","","","","Goldfine Eric I","","","2027-12-31","","2013-01-01","","","ROTAX 914 SERIES","false","false","false","","" -"7c6785","VH-UQF","FOKKER","","","F100","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"7c6785","VH-UQF","FOKKER","","","F100","","","L2J","Alliance Airlines Pty Limited","","","","","","","","","","","","","false","false","false","","" "a7b9c5","N5970E","","Cessna","150","","17470","","","","","","","Kolodziejczak Benjamin D","","","2029-10-31","","1959-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "a24422","N245S","PIPER","Piper","PA 46-350P","PA46","4636104","","L1P","","","","","Sharpaire Llc","","","2028-11-30","","1997-01-01","","","LYCOMING TI0-540 SER","false","false","false","","" "a3fe53","N3566T","TAYLORCRAFT (1)","Taylorcraft Aviation Corp","F19","TF19","F-026","","L1P","","","","","Bird Avery L","","","2029-04-30","","","","","CONT MOTOR 0-200 SERIES","false","false","false","","" @@ -203570,7 +203614,7 @@ cunningham, John","","2017-01-18","","","1997-01-01","","","1x ROTAX 582","false "a57180","N45TV","NUSANTARA","Bell Helicopter Textron Canada","407","B407","53295","","H1T","","","","","Redding Air Services Inc","","","2028-05-31","","1998-01-01","","","ALLISON 250-C47B","false","false","false","","" "aba533","N85CB","","Cameron Balloons","V-56","BALL","302","","","","","","","Buzzards Glory Balloon Co Llc","","","2030-02-28","","1976-01-01","","","NONE NONE","false","false","false","","" "a7c9dd","N6002","ZENITH","","","CH70","","","L1P","","","","","","","","","","","","","","false","false","false","","" -"7cfa72","A56-002","DASSAULT","Dassault Aviation","Falcon 7X","FA7X","284","","L3J","Royal Australian Air Force","AUSSIE","ASY","","Royal Australian Air Force","","","","","2018-01-01","","","","false","false","false","","" +"7cfa72","A56-002","DASSAULT","","","FA7X","284","","L3J","","","","","","","","","","","","","","false","false","false","","" "a0d7b8","N1530M","WREN","Cessna","182P","C182","18264365","","L1P","","","","","March Edward Russell Jr","","","2029-02-28","","1975-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "486490","PH-1670","","","","GLID","","","","","","","","","","","","","","","","","false","false","false","","" "a4a8fc","N4LU","GULFSTREAM AMERICAN","Grumman American Avn. Corp.","AA-1C","AA1","AA1C0033","","L1P","","","","","Herson David A","","","2028-01-31","","1977-01-01","","","LYCOMING 0-235 SERIES","false","false","false","","" @@ -205771,6 +205815,7 @@ cunningham, John","","2017-01-18","","","1997-01-01","","","1x ROTAX 582","false "490d0a","CS-CHJ","BOMBARDIER","Bombardier","Challenger 300","CL35","","","L2J","","","","","","","","","","","","","","false","false","false","","" "adef31","N9971T","WREN","","","C182","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a38623","N326RT","RAYTHEON","Beech","200","BE20","BB553","","L2T","","","","","Perfect Agreements Leasing Inc","","","2028-03-31","","1979-01-01","","","P&W CANADA PT6A-60A","false","false","false","","" +"4a2aac","YR-JUL","AIRBUS","Airbus Industrie","A320-232","A320","3863","","L2J","Dan Air","JOC","","","Aviatior Capital","","","","","2009-01-01","","","2x IAE V2527-A5 engines","false","false","false","","" "c01846","C-FJEZ","ST. JUST","Cessna Aircraft Company","A185F (Cessna)","C185","18503991","","L1P","","","","","Allen Albert Larsen","","2006-08-21","","","","","","","false","false","false","","" "a9a7f2","N721H","MAULE","Maule","M-7-260C","M7","30021C","","L1P","","","","","Show Me Shortline Co Llc","","","2027-10-31","","","","","","false","false","false","","" "0d0be5","XB-LVR","RAYTHEON","","","BE58","","","L2P","","","","","","","","","","","","","","false","false","false","","" @@ -205784,6 +205829,7 @@ cunningham, John","","2017-01-18","","","1997-01-01","","","1x ROTAX 582","false "c04844","C-GBJN","EUROCOPTER","Eurocopter","EC130 B4","EC30","4637","","H1T","","","","","Peak Aviation Inc","","","","","","","","","false","false","false","","" "504e5a","ER-BBB","BOEING","Boeing","747-433BDSF","B744","25075","868","L4J","Aerotranscargo","Moldcargo","ATG","","Aerotranscargo","","2020-09-11","","","1991-07-24","2021-02-13","","4 x PW PW4056","false","false","false","","" "a03089","N111GJ","CESSNA","Cessna","550","C550","5500187","","L2J","","","","","Malik Hassan","","","2027-07-31","","1980-01-01","","","P&W CANADA JT15D-4","false","false","false","","" +"3ff7ec","D-MHGX","","Remos","G-X","","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a01744","N10498","REIMS","Cessna","150L","C150","15074890","","L1P","","","","","Scoma Steven G","","","2029-03-31","","","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "aa3d33","N759TT","WREN","Cessna","182Q","C182","18266334","","L1P","","","","","Trend Companies Llc","","","2028-09-30","","1978-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "49d4c6","OK-AFT","PIPER","","","P28R","","","L1P","","","","","","","","","","","","","","false","false","false","","" @@ -207065,6 +207111,7 @@ cunningham, John","","2017-01-18","","","1997-01-01","","","1x ROTAX 582","false "a66b72","N51211","CONVAIR","","","CVLP","","","L2P","","","","","","","","","","","","","","false","false","false","","" "acf875","N935CG","","Craig Raymond Iii / Grant D","AIRCAM","ULAC","AC172","","","","","","","Doran David L","","","2029-12-31","","2016-01-01","","","ROTAX 912ULS SERIES","false","false","false","","" "a3da8e","N3476W","PIPER","Piper","PA-32-260","PA32","32-352","","L1P","","","","","Fletcher Gayle J","","","2029-11-30","","1966-01-01","","","LYCOMING 0-540 SERIES","false","false","false","","" +"452134","LZ-FSA","AIRBUS","Airbus Industrie","A320-232","A320","4247","","L2J","Fly2sky","VAW","","","Avolon","","","","","","","","2x IAE V2527-A5 engines","false","false","false","","" "a2325b","N2400D","CESSNA","Cessna","170B","C170","20552","","L1P","","","","","Long James R","","","2027-12-31","","1952-01-01","","","LYCOMING 0-340 SERIES","false","false","false","","" "a6e03f","N542KD","MCDONNELL DOUGLAS","Boeing Co","MD-11F","MD11","48542","","L3J","Western Global Airlines","WESTERN GLOBAL","WGN","KD","M48542 Llc","","","2028-04-30","","1994-01-01","","","GE CF6-80C2D1F","false","false","false","","No ADS-B Emitter Category Information" "400ee3","G-BYVF","GROB","Grob-werke Gmbh And Co Kg","GROB G115E Tutor","G115","82116/E","","L1P","","","","","Ministry Of Defence","","2000-06-30","","","2000-01-01","","","1 x LYCOMING AEIO-360-B1F  ( MT-PROPELLER MTV-12-B-C/C183-17E )
","false","false","false","","" @@ -214254,6 +214301,7 @@ cunningham, John","","2017-01-18","","","1997-01-01","","","1x ROTAX 582","false "a0986e","N1376T","PIPER","Piper","PA-28-140","P28A","28-7225486","","L1P","","","","","Proflite Aero Services Llc","","","2030-01-31","","1972-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a3d01a","N345CG","RAYTHEON","Beech","58P","BE58","TJ-468","","L2P","","","","","Gregory C Gell Aviation Llc","","","2030-01-31","","1984-01-01","","","CONT MOTOR TSIO-520-WB","false","false","false","","" "ad478e","N955DJ","BEECH","Beech","95-C55","BE95","TE-300","","L2P","","","","","Gray John Michael","","","2030-01-31","","1967-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" +"395d66","F-WBXL","AIRBUS","Airbus Industrie","Airbus A330-743L Beluga XL","A337","1824","","L2J","Airbus Transport International","BELUGA","BGA","4Y","","","","","","2018-01-01","2018-07-19","","2x RR Trent 772B-60","false","false","false","Beluga XL1 - will become F-GXLG","" "a860a3","N639RA","RAYTHEON","Hawker Beechcraft Corp","4000","HA4T","RC-22","","L2J","","","","","Scaled Composites Llc","","","2030-04-30","","2009-01-01","","","P&W CANADA PW308A","false","false","false","","" "c0b03b","C-IOTE","RANS","Rans Co","COYOTE TR (Rans)","COY2","8500048","","L1P","","","","","Stan G White","","1993-12-01","","","","","","","false","false","false","","" "a0eb45","N1587S","BEECH","Beech","95-A55","BE95","TC-322","","L2P","","","","","Gabay William G","","","2028-07-31","","1962-01-01","","","CONT MOTOR I0-470 SERIES","false","false","false","","" @@ -217764,6 +217812,7 @@ cunningham, John","","2017-01-18","","","1997-01-01","","","1x ROTAX 582","false "a973cd","N708RR","","Lindstrand Balloons","210S","BALL","5415","","","","","","","A R B C Inc Dba","","","","","","","","","false","false","false","","" "a4c565","N40609","WAGAERO","Piper","J3C-65","J3","7362","","L1P","","","","","Prentice Robert D","","","2028-11-30","","1941-01-01","","","CONT MOTOR A&C75 SERIES","false","false","false","","" "a1fe6f","N22777","OGMA","Dehavilland","DHC-1","DHC1","C1-0105","","L1P","","","","","Whyte Eric","","","2028-10-31","","1950-01-01","","","DEHAV ENG GIPSY MAJOR","false","false","false","","" +"4bcda6","TC-SMF","BOEING","Airbus Industrie","737-8 MAX","B38M","43300","7461","L2J","Sunexpress","SUNEXPRESS","SXS","XQ","Sunexpress","","","","","","","","","false","false","false","","" "a656a8","N50720","REIMS","Cessna","150J","C150","15069506","","L1P","","","","","Smith Bruce Allan","","","2027-05-31","","1968-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "c09eba","C-IICV","","Per Il Volo","MINIPLANE (PER IL VOLO)","PARA","800804059","","","","","","","Martin Lavoie","","2018-09-18","","","","","","","false","false","false","","" "a1d81d","N218KB","","Lund Steven R","HATZ KB1","","218","","","","","","","Lund Deborah A","","","2030-01-31","","1990-01-01","","","KINNER R5 SERIES","false","false","false","","" @@ -220219,7 +220268,7 @@ cunningham, John","","2017-01-18","","","1997-01-01","","","1x ROTAX 582","false "ae5a56","15-72362","EUROCOPTER-KAWASAKI","","","EC45","","","H2T","","","","","","","","","","","","","","false","false","false","","Reserved" "a1e148","N220CW","SCHLEICHER","Schleicher","ASW-20","AS20","20366","","L1P","","","","","Roth Thomas E","","","2027-11-30","","1981-01-01","","","NONE NONE","false","false","false","","" "06a275","QA370","PILATUS","","","PC21","","","L1T","","","","","","","","","","","","","","false","false","false","","" -"43c92f","ZM701","WESTLAND","","","H64","","","H2T","","","","","","","","","","","","","","false","false","false","","Reserved" +"43c92f","ZM701","WESTLAND","","","H64","","","H2T","Army Air Corps","ARMYAIR","AAC","","British Army","","","","","","","","","false","false","false","","Reserved" "a57c7a","N4524M","TIGER","Gulfstream American Corp","AA-5B","AA5","AA5B1102","","L1P","","","","","Fields David B Trustee","","","2028-04-30","","","","","","false","false","false","","" "a5b28c","N4662J","PIPER","Piper","PA-28R-180","P28R","28R-30558","","L1P","","","","","Heagle Kyle E","","","2029-03-31","","","","","LYCOMING I0360 SER","false","false","false","","" "48d163","SP-WLD","REIMS","","","C152","","","L1P","","","","","","","","","","","","","","false","false","false","","" @@ -220609,7 +220658,7 @@ cunningham, John","","2017-01-18","","","1997-01-01","","","1x ROTAX 582","false "840fb9","JA04AX","LEONARDO","","","A139","","","H2T","","","","","","","","","","","","","","false","false","false","","" "a2e3d8","N28567","TEMCO","","","L8","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a548f5","N44HB","GULFSTREAM AMERICAN","Gulfstream American Corp.","G-1159A","GLF2","437","","L2J","","","","","Bartowjets Llc","","","2027-12-31","","1984-01-01","","","ROLLS-ROYC SPEY MK 511SR","false","false","false","","" -"7c4414","VH-NQE","FOKKER","Fokker Aircraft B.v.","F28 MK 0100","F100","11457","","L2J","","","","","Qantas Airways Limited","","","","","1993-01-01","","","2x Rolls Royce Ltd TAY 650-15","false","false","false","","" +"7c4414","VH-NQE","FOKKER","Fokker Aircraft B.v.","F28 MK 0100","F100","11457","","L2J","Network Aviation","","NWK","QF","Qantas Airways Limited","","2012-09-07","","","1993-01-01","","","2x Rolls Royce Ltd TAY 650-15","false","false","false","","" "739537","4X-OAG","AUSTFLIGHT","","","DRIF","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a2f5d6","N290DS","DIAMOND","Diamond Aircraft Ind Inc","DA 40","DA40","40.290","","L1P","","","","","Nakel Inc","","","2029-07-31","","2003-01-01","","","LYCOMING I0360 SER","false","false","false","","" "4849ab","PH-ZVC","YAKIMA AEROSPORT","Piper","PA-18 135 Super Cub","PA18","18-3855","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -223640,6 +223689,7 @@ corrigan, Brian","","2012-11-13","","","1999-01-01","","","1x JABIRU 2200A","fal "a03086","N111GF","WREN","Cessna","182P","C182","18263578","","L1P","","","","","Huggins Stephen M","","","2029-05-31","","1975-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "c04386","C-FZOV","PIPER","Kingsley Brown","BUSHMASTER (Bushmaster)","PA22","123456","","L1P","","","","","Kingsley Brown","","2009-11-26","","","","","","","false","false","false","","" "ae11e7","79-0001","BOEING","Boeing","E-3G Sentry","E3TF","21755","","L4J","United States Air Force","AIR CHIEF","AIO","","United States Air Force","","","","","","","","","false","false","false","","Reserved" +"01024e","SU-BUP","AIRBUS","Airbus Industrie","A320-251N ","A20N","","","L2J","Air Cairo","","MSC","","Air Cairo","","","","","2023-01-01","","","2x CFMI LEAP-1A26 engines","false","false","false","","" "a0f701","N161SM","PIPER","Piper","PA-28-161","P28A","28-7916508","","L1P","","","","","Morcom Aviation Services Inc Dba","","","2030-02-28","","1979-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a549c5","N44RK","SEGUIN","Piper","PA-34-200T","PA34","34-7770296","","L2P","","","","","Helmerich Jonathan David Jr","","","2030-02-28","","","","","CONT MOTOR TSIO-360 SER","false","false","false","","" "aadf2b","N8WM","RAYTHEON","Beech","A36","BE36","E-1199","","L1P","","","","","Beardog Aviation Llc","","","2030-02-28","","1977-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" @@ -224606,7 +224656,7 @@ corrigan, Brian","","2012-11-13","","","1999-01-01","","","1x JABIRU 2200A","fal "a905d7","N6802B","PIPER","Piper","PA-22-150","PA22","22-4097","","L1P","","","","","Hales Evan C","","","2028-01-31","","1956-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "3ff4b5","D-MLTM","RANS","","","COY2","","","L1P","","","","","","","","","","","","","","false","false","false","","" "3d4093","D-EWRZ","PZL-OKECIE","Pzl-okecie","Wilga PZL-104 35A","PZ04","118410","","L1P","","","","","Private","","","","","","","","","false","false","false","","" -"478e11","LN-AZE","REIMS","","","C172","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"478e11","LN-AZE","REIMS","","","C172","","","L1P","Scandinavian Aviation Academy","SCAVAC","SCQ","","Osm Aviation Academy","","","","","","","","","false","false","false","","" "a5bd82","N46907","REIMS","Cessna","152","C152","15283137","","L1P","","","","","Bagamaspad Alan Antonio","","","2028-03-31","","1979-01-01","","","LYCOMING 0-235 SERIES","false","false","false","","" "abd768","N862MR","ROBINSON","Robinson Helicopter Company","R44 II","R44","10420","","H1P","","","","","Heli-spray Llc","","","2030-02-28","","2004-01-01","","","LYCOMING IO-540 SER","false","false","false","","" "a7cacd","N60085","STEARMAN","Boeing","Stearman A75N1 PT-17 Kaydet","ST75","75-7481","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -225678,6 +225728,7 @@ corrigan, Brian","","2012-11-13","","","1999-01-01","","","1x JABIRU 2200A","fal "a5a427","N4625Y","PIPER","Piper","PA-25-235","PA25","25-4339","","L1P","","","","","Air Sailing Inc","","","2030-04-30","","1967-01-01","","","LYCOMING 0-540 SERIES","false","false","false","","" "c001af","C-FAQO","PIPER","Piper Aircraft Corporation","PA-28-140 (Piper)","P28A","28 26839","","L1P","","","","","Joseph Albert Mario (mario) Poulin","","2015-01-22","","","","","","","false","false","false","","" "a03cb9","N114TA","ROBINSON","Robinson","R44 Raven II","R44","13216","","H1P","","","","","Private","","","","","","","","","false","false","false","","" +"382d5a","","","","","H175","","","","","","","","","","","","","","","","","false","false","false","","Rotorcraft" "ae24ee","165819","NORTHROP GRUMMAN","","","E2","","","L2T","","","","","","","","","","","","","","false","false","false","","" "a63b79","N500RT","RACA","Hughes","369HS","H500","1050773S","","H1T","","","","","Cessna 210 Llc","","","2028-08-31","","1976-01-01","","","ALLISON 250-C20 SER","false","false","false","","" "a56108","N446BH","","Sikorsky","UH-60A","","85-24446","","","","","","","Brown Helicopter Inc","","","2029-07-31","","","","","","false","false","false","","" @@ -227093,7 +227144,7 @@ corrigan, Brian","","2012-11-13","","","1999-01-01","","","1x JABIRU 2200A","fal "ab1d6f","N815RJ","","Dji","MATRICE 600 PRO","DRON","K-06-DIRS14598","","","","","","","Rochester Institute Of Technology","","","2030-04-30","","","","","","false","false","false","","" "a0eed8","N1596R","TIGER","Grumman American Avn. Corp.","AA-5B","AA5","AA5B-0096","","L1P","","","","","Tc Aviation Ltd","","","2028-03-31","","1975-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "a638ca","N50NG","","Cartier Kerry L","CARTIER CARTIAERO","","3","","","","","","","Cartier Kerry L","","","2028-07-31","","1999-01-01","","","BOMBARDIER ROTAX (ALL)","false","false","false","","" -"7c6ba2","VH-VJO","CESSNA","","","C560","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"7c6ba2","VH-VJO","CESSNA","","560","C560","560-0232","","L2J","Coulson Aviation (australia) Pty Ltd","","","","State Of New South Wales Represented By Nsw Rural Fire Service","","","","","","","","","false","false","false","","" "abce51","N86US","","Magnaghi Aeronautica Spa","SKY ARROW LSA","","LSA028","","","","","","","Neary Michael","","","2028-10-31","","","","","ROTAX 912ULS2","false","false","false","","" "404157","G-ECAP","ROBIN","Avions Pierre Robin","PIERRE ROBIN HR200/120B","HR20","334","","L1P","","","","","Bulldog Aviation Ltd","","2014-06-26","","","1999-01-01","","","1 x LYCOMING O-235-L2A  ( MCCAULEY 1A135/JCM7147 )
","false","false","false","","" "3ef95f","D-6344","","Glasflugel","H206 Hornet","GLID","86","","","","","","","Private","","","","","","","","","false","false","false","","" @@ -229757,7 +229808,7 @@ corrigan, Brian","","2012-11-13","","","1999-01-01","","","1x JABIRU 2200A","fal "a80849","N6166Y","","Blue Heron","MARATHON","","BH18016","","","","","","","Witt Frank L","","","2028-11-30","","2001-01-01","","","ROTAX 582DCDI","false","false","false","","" "3ef727","D-5776","SCHEMPP-HIRTH","","","DUOD","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a44ac7","N376HC","PIPER","Piper","PA-32R-300","P32R","32R-7680322","","L1P","","","","","Mfd Aviation Inc","","","2029-11-30","","1976-01-01","","","LYCOMING TI0-540 SER","false","false","false","","" -"3cc9ab","D-CDRF","LEARJET","","","LJ35","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"3cc9ab","D-CDRF","LEARJET","Gates Learjet Corporation","LJ35A","LJ35","35-656","","L2J","Drf Luftrettung (german Air Rescue)","CIVIL AIR AMBULANCE","AMB","1I","Drf Luftrettung (german Air Rescue)","","","","","1990-01-01","","","","false","false","false","","" "383e5d","F-JRXF","","","","ULAC","","","","","","","","","","","","","","","","","false","false","false","","" "a9e233","N736JX","BOEING","Boeing","747-409","B744","33736","","L4J","","","","","Jetonex Llc","","","2028-10-31","","","","","","false","false","false","","" "c81a02","ZK-LJC","PIPER","","","P28A","","","L1P","","","","","","","","","","","","","","false","false","false","","" @@ -231357,6 +231408,7 @@ corrigan, Brian","","2012-11-13","","","1999-01-01","","","1x JABIRU 2200A","fal "3e68e8","D-KEXS","","","","GLID","","","","","","","","","","","","","","","","","false","false","false","","" "c0450b","C-GADU","","Cessna Aircraft Company","172K (Cessna)","","17258776","","","","","","","4257189 Canada Inc.","","2006-09-29","2016-09-07","","","","","","false","false","false","","" "aa893f","N7781E","CESSNA","Cessna","182T","C82T","18281621","","L1P","","","","","Domich Jeffrey E","","","2028-01-31","","2005-01-01","","","LYCOMING IO-540 SER","false","false","false","","" +"505d40","OM-M454","SHARK AERO","Shark Aero","Shark","SHRK","119","","L1P","","","","","Private Owner","","","","","","","","","false","false","false","","" "3c60d6","D-AHFV","BOEING","Boeing","Boeing 737NG 8K5/W","B738","30415","","L2J","","","TUI","","Tuifly","","","","","","","","","false","false","false","","" "a9998f","N7178S","REIMS","Cessna","150H","C150","15067878","","L1P","","","","","Mcclain Matthew S","","","2030-04-30","","1967-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "a85035","N6349K","REIMS","Cessna","150M","C150","15077658","","L1P","","","","","Collier Richard W","","","2027-12-31","","1975-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" @@ -235214,7 +235266,7 @@ corrigan, Brian","","2012-11-13","","","1999-01-01","","","1x JABIRU 2200A","fal "a8bf90","N663C","STINSON","Stinson","108-3","S108","108-3663","","L1P","","","","","Burkel Robert G","","","2027-09-30","","","","","FRANKLIN 6A4165 SERIES","false","false","false","","" "a4015e","N3571W","PIPER","Piper","PA-32-260","PA32","32-463","","L1P","","","","","Schutze Richard P Trustee","","","2027-10-31","","1966-01-01","","","LYCOMING 0-540 SERIES","false","false","false","","" "a89a71","N6531Y","SEGUIN","Piper","PA-23-250","PA23","27-3824","","L2P","","","","","Smith Henry C Iii","","","2029-06-30","","1967-01-01","","","LYCOMING TI0-540 SER","false","false","false","","" -"c8195c","ZK-NEH","DE HAVILLAND CANADA","Bombardier","DHC-8 311Q","DH8C","623","","L2T","","","","","Air New Zealand Link","","","","","","","","","false","false","false","","" +"c8195c","ZK-NEH","DE HAVILLAND CANADA","Bombardier","DHC-8 311Q","DH8C","623","","L2T","Air New Zealand","NEW ZEALAND","ANZ","NZ","Air New Zealand Link","","","","","","","","","false","false","false","","" "4ae190","SE-XLP","SAN","","","DR10","","","L1P","","","","","","","","","","","","","","false","false","false","","" "3fd5e2","D-OSKW","","Schroeder Fire Balloons","Hot Air Balloon","BALL","727","","","","","","","Private","","","","","","","","","false","false","false","","" "a52b92","N432LM","","Airborne Windsports Pty Ltd","EDGE XT-912-L","ULAC","XT-912-0523","","","","","","","Hamm Michael J","","","2027-06-30","","2017-01-01","","","ROTAX 912ULS SERIES","false","false","false","","" @@ -237287,7 +237339,7 @@ corrigan, Brian","","2012-11-13","","","1999-01-01","","","1x JABIRU 2200A","fal "a9c9d2","N73MN","DASSAULT","Dassault","Falcon 900 B","F900","150","","L3J","","","","","Central Business Jets Inc","","","","","","","","","false","false","false","","" "71bf84","HL7784","BOEING","Boeing","Boeing 777 3B5ER","B77W","37136","","L2J","","KOREANAIR","KAL","","Korean Air","","","","","","","","","false","false","false","","No ADS-B Emitter Category Information" "c01dea","C-FLIN","PIPER","Piper Aircraft Corporation","PA-31-350 (Piper)","PA31","31-8152013","","L2P","","","","","Weagamow Corporation","","2001-05-03","","","","","","","false","false","false","","" -"471f93","HA-LYX","AIRBUS","","","A320","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"471f93","HA-LYX","AIRBUS","Airbus Industries","A320-232(WL)","A320","8183","","L2J","Wizz Air","WIZZAIR","WZZ","W6","","","","","","","2018-04-10","","2 x IAE V2527-A5","false","false","false","","" "c1e412","SERV","","","","SERV","","","","","","","","","","","","","","","","","false","false","false","","" "44ea74","OO-ZST","","Zsls-krosno","SZD-22A Mucha Standard","GLID","531","","","","","","","Private","","","","","","","","","false","false","false","","" "401e90","G-TEXN","NORTH AMERICAN","North American Aviation Inc","T-6G Texan","T6","168-176","","L1P","","","","","Private","","2013-06-13","","","1950-01-01","","","1 x PRATT & WHITNEY R-1340-AN-1  ( HAMILTON STANDARD 12D40-6101/12 )
","false","false","false","","" @@ -238288,7 +238340,7 @@ corrigan, Brian","","2012-11-13","","","1999-01-01","","","1x JABIRU 2200A","fal "3fea17","D-MDGG","FLIGHT DESIGN","Flight Design","CT SW","FDCT","","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a19eb7","N203RZ","ZENITH","Zielke Ronald W","ZENITH 750","CH75","75-8685","","L1P","","","","","Atherton Bruce C","","","2030-01-31","","2018-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" "a57dc2","N453FD","BOMBARDIER","Bombardier Inc","BD-100-1A10","CL30","20453","","L2J","","","","","Shp-air Leasing Llc","","","2027-07-31","","2014-01-01","","","HONEYWELL AS907-1-1A","false","false","false","","" -"7c3b1c","VH-LYM","CESSNA","Cessna Aircraft Company","650","C650","650-7095","","L2J","","","","","Westpac Banking Corporation","","","","","1998-01-01","","","2x Honeywell International Inc. TFE731-4R-2S","false","false","false","","" +"7c3b1c","VH-LYM","CESSNA","Cessna Aircraft Company","650","C650","650-7095","","L2J","Edwards Coaches Pty. Limited","","","","Westpac Banking Corporation","","","","","1998-01-01","","","2x Honeywell International Inc. TFE731-4R-2S","false","false","false","","" "a6e825","N544PZ","CESSNA","Cessna","177B","C177","17701981","","L1P","","","","","Adler Paul D","","","2029-12-31","","1973-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "3002ae","I-REDY","LEONARDO","Agustawestland","AW.139","A139","31077","","H2T","Elidolomiti","ELIDOLOMITI","EDO","","Elidolomiti","","","","","","","","","false","false","false","","" "c05131","C-GETK","SONEX","Jim Wares","Sonex (Jim Wares)","SONX","1124","","L1P","","","","","Jim Wares","","2016-03-15","","","","","","","false","false","false","","" @@ -240089,6 +240141,7 @@ corrigan, Brian","","2012-11-13","","","1999-01-01","","","1x JABIRU 2200A","fal "3d4611","D-EYUB","REIMS","Reims/cessna","F172M","C172","1420","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a2b973","N275E","LEAR JET","Lear Jet Industries","Learjet 24 D","LJ24","24D-245","","L2J","","","","","Jennifer Chaney Inc","","","","","","","","","false","false","false","","" "a018da","N105SC","","Six Chuter West Llc","LEGEND XL","PARA","3145","","","","","","","Davey Christopher J","","","2027-03-31","","2014-01-01","","","ROTAX 912UL SERIES","false","false","false","","" +"ae5810","","","","","","","","","Us Air Force","","","","","","","","","","","","","false","false","false","","" "ac6c45","N9UJ","PANHA","Bell","206L Long Ranger IV","B06","52028","","H1T","","","","","Private","","","","","","","","","false","false","false","","" "000680","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "7c4a72","VH-OZO","CESSNA","Cessna Aircraft Company","404","C404","404-0653","","L2P","","","","","Stamford Park Investments Pty Ltd","","","","","1980-01-01","","","2x Teledyne-continental Motors TSIO-520-M","false","false","false","","" @@ -245132,6 +245185,7 @@ corrigan, Brian","","2012-11-13","","","1999-01-01","","","1x JABIRU 2200A","fal "c002ee","C-FBCV","","Husky Manufacturing Ltd.","NORSEMAN II (Husky)","ULAC","88B1150424","","","","","","","Swift Current Airport Ltd.","","2003-06-19","","","","","","","false","false","false","","" "a03df8","N1144E","CHAMPION","Aeronca","7AC","CH7A","7AC-4700","","L1P","","","","","Buergel Sandra J","","","2027-12-31","","1946-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" "a58047","N45349","REIMS","Cessna","177RG","C77R","177RG1109","","L1P","","","","","Moore Don R","","","2030-04-30","","1976-01-01","","","LYCOMING IO-360-A1B6D","false","false","false","","" +"4cada7","EI-INB","AIRBUS","Airbus Industrie","A320-271N","A20N","11261","","L2J","Ita Airways","","","","Avolon","","","","","","","","2x PW PW1127G engines","false","false","false","","" "c040b3","C-FYNA","","Cessna Aircraft Company","150J (Cessna)","","15070193","","","","","","","David Ewington","","1989-11-13","2001-06-06","","","","","","false","false","false","","" "ae1124","02-3649","RAYTHEON","","","TEX2","","","L1T","","","","","","","","","","","","","","false","false","false","","Reserved" "a718a9","N5564R","REIMS","Cessna","172F","C172","17253156","","L1P","","","","","Andersen David J","","","2030-04-30","","1965-01-01","","","CONT MOTOR 0-300 SER","false","false","false","","" @@ -249244,6 +249298,7 @@ corrigan, Brian","","2012-11-13","","","1999-01-01","","","1x JABIRU 2200A","fal "a092d9","N136Q","WREN","","","C182","","","L1P","","","","","","","","","","","","","","false","false","false","","" "c81121","ZK-UNB","REIMS","","","C152","","","L1P","","","","","","","","","","","","","","false","false","false","","" "aadde7","N8HN","PIPER","Piper","PA-28R-200","P28R","28R-7535277","","L1P","","","","","Kd Leasing Llc","","","2029-12-31","","1975-01-01","","","LYCOMING I0360 SER","false","false","false","","" +"49d56e","OK-PHA","EMBRAER","Embraer","Phenom 300E","E55P","50500611","","L2J","Oasis International Airlines","AMSTEL","AAN","","Ctr Viktoria Center S.r.o.","","2007-09-20","","","2021-12-16","","","2","false","false","false","","" "a67399","N5147A","BOEING","Boeing","737-83N","B738","32882","","L2J","","","","","Bank Of Utah Trustee","","","2029-04-30","","2002-01-01","","","CFM INTL CFM56-7B24","false","false","false","","" "ae15bc","04-05420","WESTLAND","Boeing-mcdonnell Douglas","AH-64D Apache","H64","PVD420","","H2T","","","","","United States Army","","","","","","","","","false","false","false","","" "adf019","N9978E","REIMS","","","C82R","","","L1P","","","","","","","","","","","","","","false","false","false","","" @@ -253826,7 +253881,7 @@ corrigan, Brian","","2012-11-13","","","1999-01-01","","","1x JABIRU 2200A","fal "406538","G-BVBK","","Thunder And Colt Ltd","COLT FLYING COFFEE JAR","BALL","2428","","","","","","","Private","","2011-02-18","","","1993-01-01","","","0 x NO ENGINES
","false","false","false","","" "a4ca39","N4079D","WREN","Cessna","182A","C182","34779","","L1P","","","","","Ernst Gregory R","","","2028-03-31","","1957-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "a8cf37","N667LC","","Gulfstream Aerospace","GIV-X (G450)","G450","4118","","","","","","","Flexjet Llc","","","2029-09-30","","2008-01-01","","","ROLLS-ROYC TAY 611-8C","false","false","false","","" -"ae048a","63-8008","BOEING","Boeing","KC-135R","K35R","18625","","L4J","United States Air Force","AIR CHIEF","AIO","","United States Air Force","","","","","","","","","false","false","false","","Reserved" +"ae048a","63-8008","BOEING","Boeing","KC-135R","K35R","18625","","L4J","100th Air Refuelling Wing (usafe)","AIR CHIEF","AIO","","United States Air Force","","","","","","","","","false","false","false","","Reserved" "c060f7","C-GKSS","PIPER","George Gibbs","ACRO SPORT (Acro Sport)","P28R","AS 1 GG","","L1P","","","","","Beverly L Whitman","","2010-06-29","","","","","","","false","false","false","","" "407736","G-DTPC","VAN'S","","","RV9","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a0b8ad","N14574","","Swanson","SPAD XIII","","C-1","","","","","","","Owls Head Transportation Museum","","","2027-04-30","","1975-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" @@ -262957,7 +263012,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "1506da","RA-67290","VIKING (2)","Viking Air","DHC-6 Twin Otter 400","DHC6","932","","L2T","","","","","Rosneft","","","","","","","","","false","false","false","","" "ab082c","N81MX","","Alvarez Alan Apodaca","DEFIANT","","12","","","","","","","Apodaca Alvarez Alan","","","2029-03-31","","","","","","false","false","false","","" "45e350","OY-XZP","HOFFMANN","Hoac","HK 36TTC 115 Super Dimona","DIMO","36536","","L1P","","","","","Private","","","","","","","","","false","false","false","","" -"407be2","G-EILA","AIRBUS","","A330-302","A333","","","L2J","Aer Lingus Uk","SHAMROCK","EIN","EI","","","","","","","","","","false","false","false","","" +"407be2","G-EILA","AIRBUS","","","A333","","","L2J","","","","","","","","","","","","","","false","false","false","","" "a2815a","N2600E","CHAMPION","Aeronca","7AC","CH7A","7AC-6182","","L1P","","","","","Antonell George F","","","2028-02-29","","1946-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" "a893c4","N6517F","REIMS","Cessna","150F","C150","15063117","","L1P","","","","","Snouffer Robert E","","","2027-10-31","","1966-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "a29038","N2640G","WREN","","","C182","","","L1P","","","","","","","","","","","","","","false","false","false","","" @@ -264621,7 +264676,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "ab8df8","N8434X","REIMS","Cessna","172C","C172","17248934","","L1P","","","","","Kopp Jeffrey L","","","2029-12-31","","1961-01-01","","","CONT MOTOR 0-300 SER","false","false","false","","" "a47ba1","N3882A","","Schweizer","SGS 1-26A","GLID","44","","","","","","","Bowlsbey Bryan W","","","2028-07-31","","1956-01-01","","","NONE NONE","false","false","false","","" "a0856a","N1323K","REIMS","Cessna","172S","C172","172S10348","","L1P","","","","","Flight Operations Aircraft Llc","","","2028-02-29","","2006-01-01","","","LYCOMING IO-360-L2A","false","false","false","","" -"394a62","F-GSTC","SATIC","Airbus","Airbus A300 B4-608ST Beluga","A3ST","765","","L2J","Airbus Transport International","BELOUGA","BGA","","Airbus Transport International","","","","","","","","","false","false","false","","" +"394a62","F-GSTC","SATIC","Airbus Industrie","A300-608ST Beluga","A3ST","765","","L2J","Airbus Transport International","BELOUGA","BGA","","Airbus Transport International","","1997-04-01","","","","","","","false","false","false","","" "c00b81","C-FEJG","","Michael Kuntz","AVID AMPHIBIAN (Avid Flyer)","","19","","","","","","","Donald G. Alp","","2004-04-08","","","","","","","false","false","false","","" "ab49a6","N8261F","PIPER","Piper","PA-28-181","P28A","28-7790235","","L1P","","","","","Daniels Neil Alan","","","2029-01-31","","","","","","false","false","false","","" "a20dbf","N231RS","MOONEY","Mooney Aircraft Corp.","M20K","M20P","25-0041","","L1P","","","","","Roth Carl R","","","2028-11-30","","","","","CONT MOTOR TSIO-360 SER","false","false","false","","" @@ -264813,6 +264868,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "a5d74f","N4759Q","ST. JUST","Cessna","A185E","C185","185-1220","","L1P","","","","","Campbell Air Llc","","","2027-10-31","","1967-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "c034f8","C-FUBN","CESSNA","The De Havilland Aircraft Of Canada Limited","DHC2 MK3 (Dehavilland)","C208","1622","","L1T","","","","","2241975 Ontario Inc.","","2010-07-29","","","","","","","false","false","false","","" "a89831","N653DG","CIRRUS","Cirrus Design Corp","SR22","SR22","0522","","L1P","","","","","De Vera Franco T","","","2028-03-31","","2003-01-01","","","CONT MOTOR IO-550 SERIES","false","false","false","","" +"48c26c","SP-RUM","BOEING","Boeing","Boeing 737-700","B737","29078","","L2J","Ryanair Sun","RYANAIR","RYR","FR","Buzz","","2024-01-03","","","","","","2x CFMI","false","false","false","","" "a1e90a","N222GE","PIPER","Piper","PA-32-260","PA32","32-7500020","","L1P","","","","","Smith Daniel J","","","2029-11-30","","1975-01-01","","","LYCOMING 0-540 SERIES","false","false","false","","" "a56097","N44571","PIPER","Piper","PA-28-151","P28A","28-7415670","","L1P","","","","","Boas Mark S","","","2030-04-30","","1974-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a40e1c","N360UP","BOEING","Boeing","767-34AF","B763","37946","","L2J","United Parcel Service","UPS","UPS","5X","C C & E I Llc","","","2029-07-31","","2013-01-01","","","GE CF6-80C2B6F","false","false","false","","Heavy (> 300000 lbs)" @@ -267825,7 +267881,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "402274","G-OCUB","WAGAERO","Piper Aircraft Corporation","PIPER J3C-90 Cub","J3","13215","","L1P","","","","","Private","","2010-04-08","","","1944-01-01","","","1 x CONTINENTAL MOTORS CORP C90-12F
","false","false","false","","" "400474","G-MONK","BOEING","Boeing Company","BOEING 757-2T7","B752","24105","","L2J","","","","","","","2015-05-08","","","1988-01-01","","","2 x ROLLS-ROYCE RB211-535E4-37
","false","false","false","","" "ad3bf6","N9519E","HINDUSTAN","Aeronca","11AC","AR11","11AC-1155","","L1P","","","","","Goth Warren W","","","2030-02-28","","","","","CONT MOTOR A&C65 SERIES","false","false","false","","" -"440972","OE-XFR","EUROCOPTER-KAWASAKI","","","EC45","","","H2T","","","","","","","","","","","","","","false","false","false","","" +"440972","OE-XFR","EUROCOPTER-KAWASAKI","","","EC45","20032","","H2T","","","","","Ara Flugrettung","","2018-04-01","","","2015-01-01","","","","false","false","false","","" "a5d644","N47513","INTERSTATE","Interstate","S-1B1","S1","181","","L1P","","","","","Sullivan Ronald E","","","2029-07-31","","","","","FRANKLIN 4ACG199H3","false","false","false","","" "c033cc","C-TPZ","","Aeronautical Corporation Of America","7BCM (Aeronca)","","47-1272","","","","","","","Lauren J Lee","","1995-02-06","","","","","","","false","false","false","","" "a85961","N637SV","CESSNA","Cessna","680","C680","680-0037","","L2J","","","","","Textron Financial Corp","","","2029-12-31","","2005-01-01","","","P&W CANADA PW306C","false","false","false","","" @@ -273233,6 +273289,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "3e6481","D-KDGJ","","Pilatus","B4-PC11","GLID","082","","","","","","","Private","","","","","","","","","false","false","false","","" "00af15","ZS-RUY","ROBINSON","Robinson","R44 Raven II","R44","12617","","H1P","","","","","Private","","","","","","","","","false","false","false","","" "45bd84","OY-OLD","DASSAULT","","","FA8X","","","L3J","","","","","","","","","","","","","","false","false","false","","" +"3ff51f","D-MWEJ","FLIGHT DESIGN","","","FDCT","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a9b723","N725LK","CIRRUS","Cirrus Design Corp","SR22","SR22","0668","","L1P","","","","","Duluth Aviators Llc","","","2028-03-31","","2003-01-01","","","CONT MOTOR IO-550 SERIES","false","false","false","","" "ab2a30","N8185W","PIPER","Piper","PA-32-301T","PA32","328024017","","L1P","","","","","Alaska Media Llc","","","2028-08-31","","1980-01-01","","","LYCOMING TI0-540 SER","false","false","false","","" "485018","PH-1522","SCHEMPP-HIRTH","Schempp-hirth","Nimbus 4D T","NIMB","8/29","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -273251,7 +273308,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "4b4c6b","HB-1988","","Rolladen-schneider Flugzeugbau Gmbh","LS 7-WL","GLID","7010","","","Wollschlegel, Philipp","","","","Wollschlegel, Philipp","","1989-04-18","","","1989-01-01","","","","false","false","false","","" "a9ec40","N7388N","WREN","Cessna","182P","C182","18263171","","L1P","","","","","Ferguson James S","","","2030-03-31","","1974-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "440b2d","OE-IWG","BOEING","","","B738","","","L2J","","","","","","","","","","","","","","false","false","false","","" -"7c5d62","VH-SQC","RAYTHEON","","","BE58","","","L2P","","","","","","","","","","","","","","false","false","false","","" +"7c5d62","VH-SQC","RAYTHEON","","","BE58","","","L2P","Bpw Aviation Pty Ltd","","","","Cullen, Anthony Charles","","","","","","","","","false","false","false","","" "a68194","N5180W","AIR TRACTOR","","","AT5T","","","L1T","","","","","","","","","","","","","","false","false","false","","" "4050ab","G-CEGL","IKARUS","Aerosport Ltd","IKARUS C42 FB80 Ikarus","C42","0609-6848","","L1P","","","","","Private","","2014-02-10","","","2006-01-01","","","1 x ROTAX 912-UL  ( NEUFORM fixed pitch )
","false","false","false","","" "a118f3","N17XT","RAND","Crousore Terry","KR-2","KR2","TC1","","L1P","","","","","Robinson Richard","","","2028-08-31","","","","","LYCOMING 0-145B SERIES","false","false","false","","" @@ -275123,7 +275180,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "a69945","N524RD","PILATUS","Pilatus Aircraft Ltd","PC-12/47E","PC12","1054","","L1T","","","","","Key Leasing Llc","","","2028-11-30","","","","","","false","false","false","","" "c02770","C-FOYH","","Aeronca Inc.","7AC (Aeronca)","","7AC 3870","","","","","","","Donald A Mackay","","1995-02-06","","","","","","","false","false","false","","" "a546f4","N4390Q","REIMS","Cessna","172L","C172","17260290","","L1P","","","","","Flying Mermaid Llc","","","2028-09-30","","1971-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" -"3f232b","D-LZFN","","Zeppelin","LZ N07-100 Airship","SHIP","001","","","","","","","Private","","","","","","","","","false","false","false","","" +"3f232b","D-LZFN","","Zeppelin Airship","LZ N07-100 Airship","SHIP","001","","B0-","","","","","Private","","","","","","","","","false","false","false","","" "a48728","N391GT","PEREIRA","Unmanned Aerial Research","OSPREY","GP3","99230000007","","A1P","","","","","Georgia Institute Of Technology","","","2028-01-31","","","","","","false","false","false","","" "7c7211","VH-WTF","CIRRUS","","","SR22","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a49133","N39362","LAKE","Lake","LA-4-200","LA4","519","","A1P","","","","","Nelson David F","","","2030-01-31","","1972-01-01","","","LYCOMING I0360 SER","false","false","false","","" @@ -275394,7 +275451,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "a3dda7","N3482C","CESSNA","Cessna","170","C170","26525","","L1P","","","","","Lacewell Matthew K","","","2027-01-31","","1954-01-01","","","CONT MOTOR 0-300 SER","false","false","false","","" "a52e83","N433CP","CIRRUS","Cirrus Design Corp","SR22","SR22","3070","","L1P","","","","","Paul Family Properties - Texas Llc","","","2029-03-31","","2008-01-01","","","CONT MOTOR IO-550-N","false","false","false","","" "31d972","I-A560","FLIGHT DESIGN","","","FDCT","","","L1P","","","","","","","","","","","","","","false","false","false","","" -"151dc5","RA-73157","AIRBUS","","","A359","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"151dc5","RA-73157","AIRBUS","Airbus Industrie","A350-941","A359","383","","L2J","Aeroflot Russian Airlines","AEROFLOT","AFL","SU","","","","","","","2020-02-03","","2x RR Trent XWB-84","false","false","false","","" "a9be67","N727JT","SUMMIT","Cessna","337","C337","337-0200","","L2P","","","","","Story Billy G","","","2027-11-30","","1965-01-01","","","CONT MOTOR IO-360 SER","false","false","false","","" "a477f9","N3872R","REIMS","","","C172","","","L1P","","","","","","","","","","","","","","false","false","false","","" "458964","OY-BKD","PIPER","Piper","PA-28 180 Cherokee D","P28A","28-4774","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -276697,7 +276754,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "a60e94","N49JN","RAYTHEON","Beech","400","BE40","RJ-3","","L2J","","","","","Sky Aviation Holdings Llc","","","","","","","","","false","false","false","","" "a6a04a","N526LZ","ZLIN","Zlin","526F","Z26","1239","","L1P","","","","","Pomeroy Thomas C","","","2029-08-31","","","","","AVIA M-137A","false","false","false","","" "3b7b91","F-ZBPZ","EUROCOPTER-KAWASAKI","Eurocopter","MBB-BK 117 C-2 (EC145)","EC45","9056","","H2T","","","","","Securite Civile","","","","","","","","","false","false","false","","" -"3c70c7","D-ALFG","BOEING","Boeing","Boeing 777-F","B77L","","","L2J","Lufthansa","LUFTHANSA","DLH","LH","Lufthansa","","","","","","","","","false","false","false","","" +"3c70c7","D-ALFG","BOEING","","","B77L","","","L2J","Lufthansa Cargo","LUFTHANSA CARGO","GEC","LH","","","","","","","","","","false","false","false","","" "a8eac1","N674BV","CIRRUS","","","SR22","","","L1P","","","","","","","","","","","","","","false","false","false","","" "4054fb","G-CHNC","","Alexander Schleicher Ohg Segelflugzeugbau","SCHLEICHER ASW 19 B","GLID","19297","","","","","","","Private","","2007-11-09","","","1980-01-01","","","0 x NO ENGINES
","false","false","false","","" "a4edb6","N41669","PIPER","Piper","PA-28-151","P28A","28-7415312","","L1P","","","","","Smooth Landings Llc","","","2028-08-31","","1974-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" @@ -277825,7 +277882,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "506c05","S5-AAE","CANADAIR","","","CRJ2","","","L2J","","","","","","","","","","","","","","false","false","false","","" "a35bcb","N3150Q","QUICKIE","Godbe Robert H","QUICKIE Q1","QUIC","397","","L1P","","","","","Camenzind Burton P","","","2029-03-31","","1982-01-01","","","ONAN ALL MDLS A/B","false","false","false","","" "4405aa","OE-HPG","BOMBARDIER","Bombardier","Challenger 300","CL30","20251","","L2J","","","","","Laudamotion Gmbh","","","","","","","","","false","false","false","","" -"471f95","HA-LYZ","AIRBUS","","","A320","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"471f95","HA-LYZ","AIRBUS","Airbus Industries","A320-232(WL)","A320","8355","","L2J","Wizz Air","WIZZAIR","WZZ","W6","Wizz Air","","","","","","2018-06-16","","2 x IAE V2527-A5","false","false","false","leased from Pembroke","" "a1b314","N2087M","VELOCITY","Mishler Kenneth","VELOCITY SUV FG","VELO","SUV106","","L1P","","","","","Klapaska Carl A","","","2030-03-31","","2002-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" "aa2f17","N7551","CESSNA","Cessna","180B","C180","50538","","L1P","","","","","Delash John M","","","2028-11-30","","","","","","false","false","false","","" "ae0e22","87-26003","WESTLAND","Sikorsky","UH-60L Blackhawk","H60","701210","","H2T","","","","","United States Army","","","","","","","","","false","false","false","","" @@ -278509,6 +278566,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "a9e7a0","N73710","REIMS","Cessna","172N","C172","17267623","","L1P","","","","","D10 Aviation Llc","","","2030-01-31","","1976-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "392577","F-GJLX","RACA","Hughes","369 D","H500","91-1058D","","H1T","","","","","Private","","","","","","","","","false","false","false","","" "c0423a","C-ZCB","","Piper Aircraft Corporation","PA-28-151 (Piper)","","28-7415038","","","","","","","William J Corbett","","1998-06-09","","","","","","","false","false","false","","" +"8940c3","A9C-NF","AIRBUS","Airbus Industrie","A321-253NX ","A21N","11221","","L2J","Gulf Air","GULF AIR","GFA","","Gulf Air","","","","","","","","2x CFMI LEAP-1A33 engines","false","false","false","","" "aa866e","N77770","COLEMILL","Cessna","320D","C320","320D0058","","L2P","","","","","Laney James R","","","2030-03-31","","","","","CONT MOTOR TSIO-520 SER","false","false","false","","" "a1cb6b","N2145F","TIGER","American","AA-5","AA5","AA5-0017","","L1P","","","","","Smith Jeffrey D","","","2027-03-31","","1972-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "44ea42","OO-ZRB","","Schleicher","K 8 B","GLID","12","","","","","","","Private","","","","","","","","","false","false","false","","" @@ -281819,6 +281877,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "484bb1","PH-973","","Glaser-dirks","DG-500T Elan Trainer","GLID","5E75T31","","","","","","","Private","","","","","","","","","false","false","false","","" "a20fb5","N2318P","TENNESSEE VALLEY","Alan J Colburn","BD-4","BD4","001","","L1P","","","","","Taylor Michael","","","2029-12-31","","2015-01-01","","","LYCOMING O-360-A1D","false","false","false","","" "151e2c","RA-73260","BOEING","","","B738","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"3de51d","D-HHAB","ROBINSON","","","R44","","","H1P","","","","","","","","","","","","","","false","false","false","","" "a73404","N563WA","BOEING","Boeing","767-3BG","B763","30563","","L2J","","","","","Nas Aircraft Leasing Company Llc","","","2029-08-31","","2000-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" "c81130","ZK-MAV","REIMS","","","C172","","","L1P","","","","","","","","","","","","","","false","false","false","","" "aaddf6","N8JC","CESSNA","Cessna","750","C750","750-0154","","L2J","","","","","Bank Of Utah Trustee","","","2028-05-31","","2001-01-01","","","ALLISON AE3007C SER","false","false","false","","" @@ -284784,7 +284843,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "a502b9","N4217X","THRUSH","Ayres Corporation","S2R-G10","SS2T","G10-168","","L1T","","","","","Earls Spray Service Inc","","","2029-08-31","","2001-01-01","","","AIRESEARCH TPE331 SERIES","false","false","false","","" "a61ace","N49265","VOLPAR","Beech","UC-45J","BE18","39265","","L2P","","","","","American Airpower Heritage Flying Museum","","","2027-09-30","","1943-01-01","","","P&W R-985 SERIES","false","false","false","","" "a74f1f","N570HG","","Dji","PHANTOM 1","DRON","AG152107336316","","","","","","","Gonzalez Marketing Llc","","","2028-07-31","","","","","","false","false","false","","" -"738c06","4X-ICA","BOEING","Boeing","747 4EVERF","B744","35172","","L4J","","CAL","ICL","","Cargo Air Lines","","","","","","","","","false","false","false","","" +"738c06","4X-ICA","BOEING","Boeing","747 4EVERF","B744","35172","","L4J","","CAL","ICL","","Challenge Airlines Il","","","","","","","","","false","false","false","","" "406366","G-CGMR","","Cameron Balloons Ltd","COLT BIBENDUM-110","BALL","4224","","","","","","","Balloon Preservation Group","","2010-04-20","","","1997-01-01","","","0 x NO ENGINES
","false","false","false","","" "aa3174","N756MP","CESSNA","Cessna","U206G","T206","U20604202","","L1P","","","","","Earp Kevin W","","","2029-03-31","","1977-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "a2cea5","N280GV","WUHAN","Enstrom","280FX","EN28","2100","","H1P","","","","","Burgar Charles G","","","2029-08-31","","","","","","false","false","false","","" @@ -284893,7 +284952,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "a684e0","N519WP","NUSANTARA","Bell","412 EP","B412","36682","","H2T","","","","","Private","","","","","","","","","false","false","false","","" "a380df","N32497","STEARMAN","Boeing","A75N1(PT17)","ST75","75-1423","","L1P","","","","","White William Brian","","","2029-10-31","","","","","CONT MOTOR W670 SERIES","false","false","false","","" "acb3d8","N9176B","","Aerostar International Inc","RAVEN S52A","BALL","S52A-3013","","","","","","","Montgomery Daniel C","","","2028-02-29","","1994-01-01","","","NONE NONE","false","false","false","","" -"e94c4f","CP-3151","BOEING","","","B738","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"e94c4f","CP-3151","BOEING","Boeing","737-8","B738","","","L2J","Boliviana De Aviación","BOLIVIANA","BOV","OB","","","","","","","","","","false","false","false","","" "adcbed","N9885K","PIPER","","","PA32","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a362df","N317X","MAULE","Maule","M-5-235C","M5","6127C","","L1P","","","","","Bogner Matthew L","","","2030-04-30","","1975-01-01","","","LYCOMING IO-540 SER","false","false","false","","" "ac8fc4","N90836","","Brian James F","BUCCANEER","","B2B1052","","","","","","","Brian James F","","","2028-08-31","","1995-01-01","","","BOMBARDIER ROTAX (ALL)","false","false","false","","" @@ -285579,6 +285638,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "a5604d","N4455X","PIPER","Piper","PA-28-151","P28A","28-7615013","","L1P","","","","","Harding Candace B","","","2029-06-30","","1975-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "3ff092","D-MESC","AEROSPOOL","","","WT9","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a716af","N556L","CIRRUS","Cirrus Design","SR22","SR22","0132","","L1P","","","","","Private","","","","","","","","","false","false","false","","" +"8015a6","VT-AEQ","BOEING","Boeing","B777W","B77W","","","L2J","Air India Limited","AIRINDIA","AIC","AI","Air India","","","","","","","","","false","false","false","","" "7c198c","VH-FBY","AIR TRACTOR","Amateur Built Aircraft","FLY BABY","AT8T","V268","","L1T","","","","","Tennant, David John","","","","","2002-01-01","","","1x Teledyne-continental Motors O-200 (CONTINENTAL)","false","false","false","","" "3ce54a","D-CODE","RUAG","Dornier","Do 228 101","D228","7083","","L2T","","","","","Dlr Flugbetrieb","","","","","","","","","false","false","false","","" "401bf4","G-BDJR","NORD","Societe Nationale De Constructions Aeronautiques Du Nord","NORD NC858","NC85","2","","L1P","","","","","Private","","2015-01-16","","","1950-01-01","","","1 x CONTINENTAL MOTORS CORP C90-14F
","false","false","false","","" @@ -286171,7 +286231,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "a701c7","N5500D","COLEMILL","","","BE35","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a3ed0b","N352JH","SPORTAVIA-PUTZER","","","RS18","","","L1P","","","","","","","","","","","","","","false","false","false","","" "c05a0f","C-GICS","","Wayne Douglas Christians","CAVALIER SA102.5 (Cavalier)","","71107","","","","","","","Ken E Manchulenko","","1984-03-16","2001-06-26","","","","","","false","false","false","","" -"7c683b","VH-UVH","RAYTHEON","","","B350","","","L2T","","","","","","","","","","","","","","false","false","false","","" +"7c683b","VH-UVH","RAYTHEON","","","B350","","","L2T","Pesca Aviation Pty Ltd","","","","","","","","","","","","","false","false","false","","" "4ae2b3","SE-XUS","PAI","Neico","Lancair 320","LNC2","573","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "c03c0f","C-FWTI","PIPER","Piper Aircraft Corporation","PA-12 (Piper)","PA12","12 39","","L1P","","","","","Prime Transmissions & Parts Ltd","","2012-09-21","","","","","","","false","false","false","","" "a9cbbb","N730HA","REIMS","Cessna","172M","C172","17267246","","L1P","","","","","Honaker Group Llc","","","2028-05-31","","","","","LYCOMING 0-320 SERIES","false","false","false","","" @@ -288506,7 +288566,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "a21ac4","N23472","WAGAERO","Piper","J3C-65","J3","3188","","L1P","","","","","Farrier John M","","","2028-05-31","","1939-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" "c080f9","C-GWVW","","Larry J. Friedel","B8M (Bensen)","GYRO","LJF 1","","","","","","","Larry J Friedel","","1976-04-13","","","","","","","false","false","false","","" "abed58","N868JA","TBM","Socata","TBM 700","TBM7","1063","","L1T","","","","","Ward John Jr","","","2029-01-31","","2015-01-01","","","P&W CANADA PT6A66D","false","false","false","","" -"a0a9d1","N14174","EMBRAER","Embraer","EMB-145XR","E45X","14500876","","L2J","United Airlines","UNITED","UAL","UA","United Airlines Inc","","","2027-06-30","","2004-01-01","","","ROLLS-ROYC AE3007 SER","false","false","false","","No ADS-B Emitter Category Information" +"a0a9d1","N14174","EMBRAER","Embraer","EMB-145XR","E45X","14500876","","L2J","","ACEY","ASQ","","United Airlines Inc","","","2027-06-30","","2004-01-01","","","ROLLS-ROYC AE3007 SER","false","false","false","","" "abe506","N8659J","REIMS","Cessna","150G","C150","15066559","","L1P","","","","","Thomas Chase D","","","2029-09-30","","1967-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "a5558e","N4428U","REIMS","Cessna","150D","C150","15060428","","L1P","","","","","Atlanta Sky Signs Llc","","","2029-10-31","","","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "c097b2","C-IFLP","","Pro Design","COMPACT 37 (Pro Design)","ULAC","609604719","","","","","","","Neel Gabriel","","1998-05-21","","","","","","","false","false","false","","" @@ -291698,6 +291758,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "c0751b","C-GSJA","PIPER","Piper Aircraft Corporation","PA-24-250 (Piper)","PA24","24-945","","L1P","","","","","Prolab Instrument Services Inc","","1987-04-27","","","","","","","false","false","false","","" "a5b9be","N4680U","CESSNA","Cessna","180G","C180","18051380","","L1P","","","","","Foster Randy","","","2027-12-31","","1964-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "a3059c","N294PA","PIPER","Piper","PA-28-181","P28A","2843504","","L1P","","","","","Coco Aircraft Inc","","","2028-08-31","","2002-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" +"3008b9","I-HELO","SABCA","","","A109","","","H2T","Elitaliana","","","","Elitaliana","","","","","","","","","false","false","false","","" "c0571b","C-GGZQ","PANHA","Bell Helicopter Textron","206L (Bell)","B06","45006","","H1T","","","","","Canadian Helicopters Limited - H�licopt�res Canadiens Limit�e","","2018-02-08","","","","","","","false","false","false","","" "ae5dcc","168625","BELL-BOEING","","","V22","","","T2T","","","","","","","","","","","","","","false","false","false","","Reserved" "a1e4be","N221AF","YALO","Lingbeck Gary L","AVID FLYER STOL","AVID","350","","L1P","","","","","Lingbeck Gary L","","","2027-05-31","","1990-01-01","","","BOMBARDIER ROTAX (ALL)","false","false","false","","" @@ -294913,6 +294974,7 @@ mccormack, Paul","","2007-03-28","","","1968-01-01","","","0x ","false","false" "a0d597","N153CS","CESSNA","","","C82S","","","L1P","","","","","","","","","","","","","","false","false","false","","" "ac7434","N901PM","LEARJET","Learjet Inc","60","LJ60","404","","L2J","","","","","Lcs Donohoe Logistics Llc","","","2028-09-30","","2011-01-01","","","P&W CANADA PW305A","false","false","false","","" "4078aa","G-BSKP","SUPERMARINE","","","SPIT","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"3c7a4a","D-ANRJ","AIRBUS","Airbus Industrie","A330-941 ","A339","","2033","L2J","Condor Flugdienst","CONDOR","CFG","DE","Condor","","","","","2023-01-01","","","2x RR Trent 7000-72 engines","false","false","false","","" "c04c28","C-GCVV","PIPER","Piper Aircraft Corporation","PA-28R-180 (Piper)","P28R","28R-30433","","L1P","","","","","Chris Virgil","","2005-08-03","","","","","","","false","false","false","","" "3efad3","D-6716","GLASER-DIRKS","Glaser-dirks","DG-505 Elan Orion","DG50","5E153X10","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a09278","N136LC","","Coen Laurence W","COEN-VLCTY STD/RG-E","","DM0316","","","","","","","Jewell David S","","","2028-10-31","","2005-01-01","","","FRANKLIN 6A-350SER","false","false","false","","" @@ -299848,7 +299910,7 @@ finnan, John","","2007-03-28","","","1966-01-01","","","0x ","false","false","f "3d1add","D-EIKR","ROBIN","Robin","DR.400 180 Regent","DR40","1839","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "39950a","F-HFIK","ISSOIRE","Issoire Aviation","APM-30 Lion","APM3","35","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "39aa1c","27-AEA","","","","ULAC","","","","","","","","","","","","","","","","","false","false","false","","" -"505c60","OM-M090","TOMARK","","","SD4","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"505c60","OM-M090","TOMARK","Tomark","SD-4 Viper","SD4","29422","","L1P","","","","","Private Owner","","","","","","","","Rotax 912","false","false","false","","" "a170af","N192MC","REIMS","Cessna","172S","C172","172S10162","","L1P","","","","","Warrington Flying Club Inc","","","2027-08-31","","2006-01-01","","","LYCOMING IO-360-L2A","false","false","false","","" "a418eb","N363RC","","Piper","PA-32-300","","32-40438","","","","","","","Williams Eric S","","","2029-07-31","","","","","LYCOMING TI0-540 SER","false","false","false","","" "ae5cda","88-26112","WESTLAND","","","H60","","","H2T","","","","","","","","","","","","","","false","false","false","","Reserved" @@ -300188,6 +300250,7 @@ finnan, John","","2007-03-28","","","1966-01-01","","","0x ","false","false","f "a9397b","N6939N","CESSNA","Cessna","T210N","T210","21063161","","L1P","","","","","Sky West Aviation Inc Trustee","","","2029-02-28","","1978-01-01","","","CONT MOTOR TSIO-520 SER","false","false","false","","" "c076a1","C-GSYA","MOONEY","Mooney Aircraft Corporation","M20K (Mooney)","M20T","25-0445","","L1P","","","","","Peter Gervais Consulting Inc.","","2012-09-14","","","","","","","false","false","false","","" "a59835","N46KT","","Burton William Granville","WGB KNIGHT TWISTER","","VP046KT","","","","","","","Leblanc John C","","","2028-07-31","","2009-01-01","","","LYCOMING 0-290 SERIES","false","false","false","","" +"009f30","XZZNSG-482903","QQA","Qqa 472","","QQA89","","","482","Emirates Airlines","EMIRATES","UAE","EK","Fvizzzx","","2023-07-26","2023-07-26","","2023-07-26","2023-07-26","","","false","false","false","","" "c058a1","C-GHOQ","LOT","","","AS50","","","H1T","","","","","","","","","","","","","","false","false","false","","" "7c1b74","VH-FPI","PIPER","Piper Aircraft Corp","PA-44-180","PA44","44-7995204","","L2P","Full Throttle Aero","","","","Full Throttle Aero Pty. Ltd.","","2018-02-15","","","1979-01-01","","","2x Textron Lycoming O-360","false","false","false","","Light (< 15500 lbs)" "e47e96","PR-ABB","BOEING","Boeing","767 316F/W","B763","29881","","L2J","","","","","Latam Cargo Brasil","","","","","","","","","false","false","false","","" @@ -301389,7 +301452,7 @@ finnan, John","","2007-03-28","","","1966-01-01","","","0x ","false","false","f "c093d1","C-IDZK","","Quad City Ultralight Aircraft Corp.","CHALLENGER II (Quad City)","ULAC","CH20692-0856","","","","","","","Kirk Mckibbon","","2018-07-31","","","","","","","false","false","false","","" "c02303","C-FNGS","CHAMPION","Aeronca Manufacturing Corporation","7ACX (Aeronca)","CH7A","7AC 4023X","","L1P","","","","","Hogan & Greenfield Design-build Ltd.","","2016-07-27","","","","","","","false","false","false","","" "3fd2ab","D-ORFF","","Ultramagic","M-105 Hot Air Balloon","BALL","105/111","","","","","","","Private","","","","","","","","","false","false","false","","" -"4d2256","9H-QBD","BOEING","Boeing","737-8AS (W)","B738","61579","5448","L2J","Ryanair Ltd. - Ireland","RYANAIR","RYR","","Malta Air","","","","","","","","CFMI CFM56-7B26","false","false","false","","" +"4d2256","9H-QBD","BOEING","","","B738","","","L2J","Ryanair","RYANAIR","RYR","FR","","","","","","","","","","false","false","false","","" "abb55e","N85337","CHAMPION","Aeronca","7AC","CH7A","7AC-4076","","L1P","","","","","Port Townsend Aero Museum","","","2028-11-30","","","","","CONT MOTOR A&C65 SERIES","false","false","false","","" "accd94","N924FS","RUTAN","Banquer Shane P","VARIEZE","VEZE","415","","L1P","","","","","Sweet Thomas L","","","2029-08-31","","2012-01-01","","","CONT MOTOR 0-200-A","false","false","false","","" "acaf94","N9162A","","Thibodeaux James","QUICKSILVER","","MXL11394","","","","","","","Sievers Brad M","","","2030-03-31","","","","","ROTAX 503 SERIES","false","false","false","","" @@ -301788,7 +301851,7 @@ finnan, John","","2007-03-28","","","1966-01-01","","","0x ","false","false","f "48558c","PH-ITI","LOT","Airbus Helicopters","Squirrel AS.350 B3e (H125)","AS50","8378","","H1T","","","","","Private","","","","","","","","","false","false","false","","" "a3bca8","N34TK","REIMS","Cessna","150J","C150","15070364","","L1P","","","","","Oakley Lance Emmett","","","2030-02-28","","1969-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "ab830e","N8406L","REIMS","Cessna","172I","C172","17256606","","L1P","","","","","Vee Neal Aviation","","","2028-10-31","","1968-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" -"7c5b71","VH-SCJ","RAYTHEON","","","BT36","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"7c5b71","VH-SCJ","RAYTHEON","Raytheon Aircraft Company","A36","BT36","","","L1P","Stump, John Claude Witherington","","","","Windella Agricultural Company Pty Limited","","","","","","","","","false","false","false","","" "acb356","N9172M","WREN","Cessna","182P","C182","18264718","","L1P","","","","","Webster Lyle H","","","2030-01-31","","1976-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "a95a49","N701WR","ZENITH","Womack Andrew G","STOL CH701","CH70","7-7944","","L1P","","","","","Womack Andrew Glen","","","2029-10-31","","2020-01-01","","","ROTAX 912ULS SERIES","false","false","false","","" "a9cd66","N7300C","NORTH AMERICAN","North American","AT-6D","T6","43763","","L1P","","","","","American Airpower Heritage Flying Museum Inc","","","2028-05-31","","1958-01-01","","","P&W R1340 SERIES","false","false","false","","" @@ -302994,7 +303057,7 @@ finnan, John","","2007-03-28","","","1966-01-01","","","0x ","false","false","f "a50f18","N425KE","CESSNA","Cessna","425","C425","425-0231","","L2T","Princess Air","","","8Q","Princess Air Llc","","","2028-07-31","","1985-01-01","","","P&W CANADA PT6A-60A","false","false","false","","" "ae5ec1","162029","PANHA","","","B06","","","H1T","","","","","","","","","","","","","","false","false","false","","" "a1e5b3","N221LA","LOT","Airbus Helicopters Inc","AS350B3","AS50","7900","","H1T","","","","","Lapd Air Support Division","","","2028-06-30","","2014-01-01","","","TURBOMECA ARRIEL 2D","false","false","false","","" -"addd59","N99265","REIMS","","","C172","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"addd59","N99265","REIMS","","C172","C172","","","L1P","","","","","","","","","","","","","","false","false","false","","" "4401ee","OE-DLP","REIMS","Reims/cessna","FR172G Rocket","C172","0179","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "ac0528","N87391","MOONEY","Ercoupe","415-C","ERCO","564","","L1P","","","","","Specht Leo M","","","2029-02-28","","","","","CONT MOTOR C85 SERIES","false","false","false","","" "7807ff","B-6835","AIRBUS","Airbus","A320 232","A320","4986","","L2J","","SHENZHEN AIR","CSZ","","Shenzhen Airlines","","","","","","","","","false","false","false","","" @@ -306367,7 +306430,7 @@ finnan, John","","2007-03-28","","","1966-01-01","","","0x ","false","false","f "a637b7","N50BG","ROCKWELL","Rockwell International","114","AC11","14184","","L1P","","","","","Adderley Michael E","","","2029-09-30","","1976-01-01","","","LYCOMING IO-540-T4B5","false","false","false","","" "abcd1d","N86GJ","","Olson Philip R","JUST ACFT SUPERSTOL","SSTL","JA283-01-13","","","","","","","Olson Philip R Trustee","","","2029-08-31","","2014-01-01","","","ROTAX 912ULS SERIES","false","false","false","","" "0101a7","SU-BQK","AIRBUS","Airbus","A320 214","A320","3925","","L2J","","NILEBIRD","NIA","","Nile Air","","","","","","","","","false","false","false","","" -"485c7c","PH-CEO","CIRRUS","","","SR22","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"485c7c","PH-CEO","CIRRUS","","SR22","SR22","4135","","L1P","Nosig Services B.v.","","","","Nosig Services B.v.","","","","","2014-01-01","2014-01-01","","1","false","false","false","","" "abaf1d","N852DM","LANCAIR","P D Macdonald/d M Macdonald","LANCAIR EVOLUTION","EVOP","EVO-0059","","L1P","","","","","Hardscrabble Aviation Llc","","","2029-09-30","","2015-01-01","","","P&W CANADA PT6A-135A","false","false","false","","" "51113c","ES-NTA","ATR","","","AT45","","","L2T","","","","","","","","","","","","","","false","false","false","","" "a7c3a3","N6MC","","Aerotek","PITTS S-2A","","2034","","","","","","","Arriaga Emilio Fernandez","","","2029-12-31","","","","","LYCOMING I0360 SER A&C","false","false","false","","" @@ -307255,7 +307318,7 @@ finnan, John","","2007-03-28","","","1966-01-01","","","0x ","false","false","f "ac754f","N9010V","","Beech","F33A","","CE-324","","","","","","","Drake Devin R","","","2029-06-30","","","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "51011c","EW-535SL","EVEKTOR","","","EVSS","","","L1P","","","","","","","","","","","","","","false","false","false","","" "48440a","PH-2S8","","Solar Wings","Pegasus Quantum 15","ULAC","6723","","","","","","","Private","","","","","","","","","false","false","false","","" -"a6b140","N530JL","RACA","Md Helicopters Inc","369FF","H500","0251FF","","H1T","","","","","Las Vegas Metropolitan Police Department","","","2028-12-31","","2015-01-01","","","ROLLS-ROYC 250-C30","false","false","false","","" +"a6b140","N530JL","RACA","Md Helicopters Inc","369FF","H500","0251FF","","H1T","","","","","Las Vegas Metropolitan Police Department","","","2028-12-31","","2015-01-01","","","ROLLS-ROYC 250-C30","false","false","false","POLICE","" "a6305c","N4981S","PIPER","Piper","PA-28R-200","P28R","28R-35701","","L1P","","","","","Gray Bradley D","","","2030-03-31","","1970-01-01","","","LYCOMING I0360 SER","false","false","false","","" "c06d08","C-GPHN","LOT","Societe Nationale Industrielle Aerospatiale","AS 350 BA (Aerospatiale)","AS50","1251","","H1T","","","","","H�li-inter Inc.","","2018-10-17","","","","","","","false","false","false","","" "a9fcb4","N74225","TIGER","Grumman American Avn. Corp.","AA-5B","AA5","AA5B-0166","","L1P","","","","","Campbell Thomas J Iii","","","2027-08-31","","1975-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" @@ -310812,6 +310875,7 @@ finnan, John","","2007-03-28","","","1966-01-01","","","0x ","false","false","f "505d7a","OM-KAM","WREN","","","C182","","","L1P","","","","","","","","","","","","","","false","false","false","","" "3ff203","D-MZSM","ZENITH","Roland Aircraft","Z-602 Economy","CH60","Z-9552","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a02664","N109CQ","CESSNA","Textron Aviation Inc","182T","C82T","18282462","","L1P","","","","","N5160t Llc","","","2027-10-31","","2016-01-01","","","LYCOMING IO-540-AB1A5","false","false","false","","" +"407e45","G-SUNB","AIRBUS","Airbus","A321neo","A21N","11379","","L2J","Jet2.com","CHANNEX","EXS","LS","Jet2","","","","","","","","","false","false","false","","" "789254","B-KJA","BOEING","","","B738","","","L2J","","","","","","","","","","","","","","false","false","false","","" "a79ee1","N590RC","LOCKHEED","Canadair","T33-AN MK3","T33","590","","L1J","","","","","South Florida Vintage Warbird Preservation Society","","","2029-08-31","","1957-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" "a0b2af","N144MR","VAN'S","","","RV4","","","L1P","","","","","","","","","","","","","","false","false","false","","" @@ -312113,6 +312177,7 @@ finnan, John","","2007-03-28","","","1966-01-01","","","0x ","false","false","f "c09a17","C-IGJE","HUMMEL","Steven M. Karasek","HUMMELBIRD (Hummelbird)","HUML","HB071830","","L1P","","","","","Steven M Karasek","","2000-05-24","","","","","","","false","false","false","","" "ac3d0c","N888RH","MITSUBISHI","Mitsubishi","MU-2 Marquise","MU2","737SA","","L2T","","","","","Air 1st Aviation Companies Inc","","","","","","","","","false","false","false","","" "a5afbb","N46584","REIMS","Cessna","172K","C172","17257369","","L1P","","","","","Rizzo Joseph V","","","2029-02-28","","1968-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" +"4cc573","TF-ICF","BOEING","Boeing","737-8 MAX","B38M","42834","7077","L2J","Icelandair","ICEAIR","ICE","FI","Icelandair","","","","","","","","","false","false","false","","" "a500b3","N421PZ","CESSNA","Cessna","421B","C421","421B0806","","L2P","","","","","Gloria Bachelder Md Pc Dba","","","2029-01-31","","1974-01-01","","","CONT MOTOR GTSIO-520-C","false","false","false","","" "c0400b","C-YGO","","Cessna Aircraft Company","182A (Cessna)","","51162","","","","","","","Gavin A Chester","","2016-06-02","","","","","","","false","false","false","","" "a3f6ee","N35462","WAGAERO","","","J3","","","L1P","","","","","","","","","","","","","","false","false","false","","" @@ -313858,7 +313923,7 @@ finnan, John","","2007-03-28","","","1966-01-01","","","0x ","false","false","f "ae0238","58-0074","BOEING","Boeing","Boeing KC-135T","K35R","17819","","L4J","United States Air Force","AIR CHIEF","AIO","","United States Air Force","","","","","","","","","false","false","false","","" "a20f89","N2317E","CHAMPION","Aeronca","7AC","CH7A","7AC-5894","","L1P","","","","","Doell John Homer","","","2028-05-31","","1946-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" "ac7478","N901SE","CIRRUS","Cirrus Design Corp","SR20","SR20","2601","","L1P","","","","","Southeastern Oklahoma State University","","","2027-11-30","","2020-01-01","","","LYCOMING IO-390-C3B6","false","false","false","","" -"7c683e","VH-UVK","AIRBUS","","","A320","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"7c683e","VH-UVK","AIRBUS","Airbus Industrie","A320-232","A320","2316","","L2J","Network Aviation","","NWK","QF","Qantas Airways","","2020-12-11","","","2004-01-01","","","","false","false","false","","" "510045","EW-275TI","SHAANXI","Antonov","An-12 BK","AN12","00347210","","L4T","","","","","Ruby Star Airways","","","","","","","","","false","false","false","","" "4ae2b6","SE-XUV","VAN'S","Vans","RV-6 A","RV6","25191","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a3ff0c","N357CM","CHRISTEN","Aviat Aircraft Inc","A-1B","HUSK","2373","","L1P","","","","","Mandes George J","","","2027-07-31","","2006-01-01","","","LYCOMING O-360-A1P","false","false","false","","" @@ -316841,7 +316906,7 @@ finnan, John","","2007-03-28","","","1966-01-01","","","0x ","false","false","f "ac9ec4","N912GW","CESSNA","Cessna","525A","C25A","525A0304","","L2J","","","","","Mt Management Llc","","","2027-09-30","","2006-01-01","","","WILLIAMS FJ44-3A-24","false","false","false","","" "a3ea43","N351TX","LEARJET","Gates Learjet Corp.","35A","LJ35","127","","L2J","","","","","Dodson International Parts Inc","","","2027-12-31","","1977-01-01","","","GARRETT TFE731 SERIES","false","false","false","","" "ab52f5","N829GW","VAN'S","Combs Geoffrey W","RV-10","RV10","40033","","L1P","","","","","Combs Geoffrey W","","","2029-07-31","","","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" -"440cbc","OE-IRB","RAYTHEON","Bombardier","Bombardier Global Express XRS","GLEX","9336","","L2J","Lauda Motion","LAUDA MOTION","LDM","","Signa","","","","","","","","","false","false","false","","" +"440cbc","OE-IRB","RAYTHEON","Bombardier","Bombardier Global Express XRS","GLEX","9336","","L2J","Lauda Motion","LAUDA MOTION","LDM","","Signa (rene Benko)","","","","","","","","","false","false","false","","" "3e9ac8","30+59","EUROFIGHTER","","Eurofigher 2000","EUFI","3059","","L2J","","","","","Luftwaffe Taktlwg-74","","","","","","","","","false","false","false","","" "43e95f","M-YTAF","TRADEWIND TURBINES","","","B36T","","","L1T","","","","","","","","","","","","","","false","false","false","","" "47854b","LN-DAY","REIMS","Reims/cessna","F172","C172","1608","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -317007,7 +317072,7 @@ finnan, John","","2007-03-28","","","1966-01-01","","","0x ","false","false","f "aa2486","N7525H","PIPER","","","PA12","","","L1P","","","","","","","","","","","","","","false","false","false","","" "390133","F-GAJT","GULFSTREAM AMERICAN","American Aviation","AA-1B","AA1","AA1B-0663","","L1P","","","AA1","","Private","","","","","","","","","false","false","false","","" "8a065f","PK-ARP","PIPER","","","P28A","","","L1P","","","","","","","","","","","","","","false","false","false","","" -"403878","G-ROBA","GROB","Burkhart Grob Luft-und Raumfahrt Gmbh And Co Kg","GROB G115D 2","G115","82011","","L1P","","","","","Private","","2016-03-29","","","1994-01-01","","","1 x LYCOMING AEIO-320-D1B  ( HOFFMANN HO23C HM-188 156 )
","false","false","false","","" +"403878","G-ROBA","GROB","Burkhart Grob Luft-und Raumfahrt Gmbh And Co Kg","GROB G115D 2","G115","82011","","L1P","","","","","Adastral Flying Displays Ltd","","2016-03-29","","","1994-01-01","","","1 x LYCOMING AEIO-320-D1B  ( HOFFMANN HO23C HM-188 156 )
","false","false","false","","" "aa622a","N7684F","PIPER","Piper","PA-28-151","P28A","28-7715238","","L1P","","","","","Lettunich Mitchell C","","","2027-05-31","","","","","LYCOMING 0-320 SERIES","false","false","false","","" "a1cd1a","N215LL","LANCAIR","Richardson R L","LANCAIR LEGACY","LEG2","LS227","","L1P","","","","","Northern Colorado Capital Holdings Llc","","","2029-05-31","","2010-01-01","","","CONT MOTOR IO-550 SERIES","false","false","false","","" "abb072","N852TC","SINGAPORE","Siai Marchetti","S-211","S211","017","","L1J","","","","","Ssbm Llc","","","2028-05-31","","1985-01-01","","","P&W CANADA JT15D-4","false","false","false","","" @@ -320904,7 +320969,7 @@ o'reilly, Shane","","2015-05-21","","","2007-01-01","","","1x ROTAX 912-UL","fal "aaaac1","N787CH","LEARJET","Learjet Inc","45","LJ45","45-266","","L2J","","","","","Lj-45 Llc","","","2029-10-31","","2005-01-01","","","HONEYWELL TFE731-20BR","false","false","false","","" "498d6e","OK-CKN","MORAVAN","Let","Cmelak Z-37A","Z37P","15-29","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "3d1325","D-EFMR","REIMS","Reims/cessna","F172M","C172","1378","","L1P","","","","","Private","","","","","","","","","false","false","false","","" -"7c7591","VH-XIB","LEONARDO","","","A139","","","H2T","","","","","","","","","","","","","","false","false","false","","" +"7c7591","VH-XIB","LEONARDO","Leonardo S.p.a. Helicopters","AW139","A139","","","H2T","Lifeflight Australia Limited","","","","Lci Helicopters Twenty One Limited","","","","","","","","","false","false","false","","" "a24368","N245JP","HOAC","Diamond Aircraft Ind Inc","DA20-C1","DV20","C0245","","L1P","","","","","Slow Air Llc","","","2029-10-31","","2003-01-01","","","CONT MOTOR IO-240 SER","false","false","false","","" "a071b1","N128CW","CIRRUS","Cirrus Design Corp","SR22","SR22","3949","","L1P","","","","","Tres Ninos Llc","","","2028-10-31","","2013-01-01","","","CONT MOTOR IO-550-N","false","false","false","","" "a62273","N4948Q","ST. JUST","Cessna","A185F","C185","18503583","","L1P","","","","","White Ronald A","","","2029-03-31","","1978-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" @@ -321875,7 +321940,7 @@ o'reilly, Shane","","2015-05-21","","","2007-01-01","","","1x ROTAX 912-UL","fal "a081e4","N1314Z","COLEMILL","Beech","N35","BE35","D-6746","","L1P","","","","","Gensler Jordan T","","","2028-05-31","","1961-01-01","","","CONT MOTOR I0-470 SERIES","false","false","false","","" "4aa507","SE-IHG","REIMS","Reims/cessna","F152","C152","1920","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "ab480f","N826KJ","WREN","Cessna","182L","C182","18259041","","L1P","","","","","Hlm Aircraft Llc","","","2028-10-31","","1968-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" -"7c3e72","VH-MMC","CESSNA","Cessna Aircraft Company","560","C680","560-0332","","L2J","","","","","Mackellar Mining Equipment Pty Ltd","","","","","1996-01-01","","","2x Pratt & Whitney Canada JT15D-5D","false","false","false","","" +"7c3e72","VH-MMC","CESSNA","Cessna Aircraft Company","560","C680","560-0332","","L2J","Revesco Aviation Pty Ltd","","","","Mackellar Mining Equipment Pty Ltd","","","","","1996-01-01","","","2x Pratt & Whitney Canada JT15D-5D","false","false","false","","" "781108","B-8979","AIRBUS","Airbus","A321 211SL","A321","7758","","L2J","","CHINA EASTERN","CES","","China Eastern Airlines","","","","","","","","","false","false","false","","" "adae6c","N98065","PIPER","","","P28A","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a3455e","N31KE","WREN","Cessna","182H","C182","18256600","","L1P","","","","","Wilcox John B","","","2028-04-30","","1965-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" @@ -322544,7 +322609,7 @@ o'reilly, Shane","","2015-05-21","","","2007-01-01","","","1x ROTAX 912-UL","fal "a1622b","N189AR","CESSNA","Textron Aviation Inc","208B","C208","208B5650","","L1T","","","","","Overstreet Investments Inc","","","2029-03-31","","2021-01-01","","","P&W CANADA PT6A-140","false","false","false","","" "c040da","C-FYON","REIMS","Cessna Aircraft Company","172K (Cessna)","C172","17258205","","L1P","","","","","Thomas Primeau","","2003-09-25","","","","","","","false","false","false","","" "ae114b","165985","RAYTHEON","Raytheon Aircraft Company","T-6A Texan II","TEX2","PT-152","","L1T","","","","","United States Navy","","","","","","","","","false","false","false","","Reserved" -"7c7772","VH-XVO","EMBRAER","","","E190","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"7c7772","VH-XVO","EMBRAER","","","E190","","","L2J","Alliance Airlines","UNITY","UTY","QQ","","","","","","","","","","false","false","false","","" "e808fc","CC-DPH","CESSNA","","","C25A","","","L2J","","","","","","","","","","","","","","false","false","false","","" "7c5972","VH-RYC","REIMS","","","C172","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a7c9b2","N60002","REIMS","Cessna","150J","C150","15069998","","L1P","","","","","Kirmeyer Dana L","","","2028-07-31","","1968-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" @@ -322706,6 +322771,7 @@ o'reilly, Shane","","2015-05-21","","","2007-01-01","","","1x ROTAX 912-UL","fal "a0535e","N12WS","VELOCITY","Stockman William K","VELOCITY 173FGE","VELO","3FE028","","L1P","","","","","Sierra Hotel Flying Club Llc","","","2027-11-30","","","","","","false","false","false","","" "780ec0","B-6166","BOEING","Boeing","737NG 89P/W","B738","41814","","L2J","","CHINA EASTERN","CES","","China Eastern Airlines","","","","","","","","","false","false","false","","" "a665c8","N511GM","REIMS","Cessna","150J","C150","15069802","","L1P","","","","","Crothall George","","","2028-06-30","","1968-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" +"a6d8e5","N540LA","BOEING","Boeing","767-316ER (BCF)(W)","B763","","","L2J","","","","","","","","","","","","","","false","false","false","","" "800c06","VT-GOT","AIRBUS","Airbus","A320 214","A320","3063","","L2J","","GOAIR","GOW","","Go Air","","","","","","","","","false","false","false","","" "c041f1","C-FYZG","PIPER","Piper Aircraft Corporation","PA-28-140 (Piper)","P28A","28 21256","","L1P","","","","","Eric Tremblay","","2017-11-02","","","","","","","false","false","false","","" "a00c0c","N1019P","","Cirrus Design Corp","SR20","","1037","","","","","","","Boondocks Solutions Llc","","","2030-03-31","","","","","CONT MOTOR IO-360 SER","false","false","false","","" @@ -324201,7 +324267,7 @@ o'reilly, Shane","","2015-05-21","","","2007-01-01","","","1x ROTAX 912-UL","fal "abaf92","N852JD","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "4a1037","YR-DAW","SHIJIAZHUANG","Antonov","An-2 R","AN2","1G208-12","","L1P","","","","","Sc Aeroserv Srl","","","","","","","","","false","false","false","","" "a2f070","N289LM","HELIO","Helio","H-391B","COUR","036","","L1P","","","","","Hawkins Lynn A","","","2030-01-31","","1956-01-01","","","LYCOMING GO-435","false","false","false","","" -"440996","OE-XRE","EUROCOPTER-KAWASAKI","Airbus Helicopters","H145","EC45","","","H2T","","","","","Ara Flugrettung","","","","","","","","2","false","false","false","","Rotorcraft" +"440996","OE-XRE","EUROCOPTER-KAWASAKI","Airbus Helicopters","H145","EC45","20056","","H2T","","","","","Ara Flugrettung","","2018-02-01","","","2015-01-01","","","2","false","false","false","","Rotorcraft" "a0a9c7","N1417U","REIMS","Cessna","172M","C172","17267085","","L1P","","","","","Overflight Llc","","","2027-07-31","","1976-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "4b898f","TC-BLO","","Ultramagic","N-425 Hot Air Balloon","BALL","425/89","","","","","","","Private","","","","","","","","","false","false","false","","" "a383cd","N3254F","MOONEY","Mooney","M20E","M20P","670047","","L1P","","","","","Maciel Cicero","","","2028-02-29","","1967-01-01","","","LYCOMING I0360 SER","false","false","false","","" @@ -327461,7 +327527,7 @@ haslett, Olivia","","2006-07-07","","","2000-01-01","","","1x JABIRU 2200A","fal "a0d5eb","N153GA","RAYTHEON","Beech","1900C","B190","UB-34","","L2T","Alpine Aviation","NETSTAR","LPC","","Alpine Aviation Inc","","","2029-09-30","","1985-01-01","","","P&W CANADA PT6A-60A","false","false","false","","" "a48b13","N392JV","ZENITH","Malloy Douglas G","CH 750 CRUZER","CH75","10346","","L1P","","","","","Malloy Douglas G","","","2028-07-31","","","","","","false","false","false","","" "a42f4e","N369SC","RACA","Hughes","369D","H500","380273D","","H1T","","","","","Vertical Flight Path Llc","","","2029-02-28","","","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" -"345685","EC-MUF","AIRBUS","","A320-214","A320","","","L2J","","","","","","","","","","","","","2","false","false","false","","No ADS-B Emitter Category Information" +"345685","EC-MUF","AIRBUS","","","A320","","","L2J","","","","","","","","","","","","","","false","false","false","","" "aafbda","N80697","REIMS","Cessna","172M","C172","17266705","","L1P","","","","","Moe-air Llc","","","2027-08-31","","1976-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "00a591","ZS-OFG","SEGUIN","","","PA34","","","L2P","","","","","","","","","","","","","","false","false","false","","" "a6918c","N522ND","REIMS","Cessna","172S","C172","172S10977","","L1P","","","","","Spartan Education Llc","","","2029-07-31","","2009-01-01","","","LYCOMING IO-360-L2A","false","false","false","","Light (< 15500 lbs)" @@ -329950,6 +330016,7 @@ haslett, Olivia","","2006-07-07","","","2000-01-01","","","1x JABIRU 2200A","fal "116936","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "3ff342","D-MGWB","BREEZER","","","BREZ","","","L1P","","","","","","","","","","","","","","false","false","false","","" "7c7801","VH-XZN","BOEING","The Boeing Co.","737-838","B738","44575","","L2J","Qantas","QANTAS","QFA","QF","Qantas","","2014-03-18","","","2014-01-01","","","","false","false","false","","No ADS-B Emitter Category Information" +"407f84","GGHST","IKARUS","Comco","C42C","C42","","","L1P","","","","","","","2023-05-31","","","","","","1","false","false","false","","" "acebfa","N93116","REIMS","Cessna","152","C152","15285405","","L1P","","","","","Wichita Area Technical College","","","2027-10-31","","1981-01-01","","","LYCOMING 0-235 SERIES","false","false","false","","" "04c0fc","5Y-SOP","CESSNA","Cessna","208 B","C208","208B-2367","","L1T","","","","","Aberdair Aviation","","","","","","","","","false","false","false","","" "0d04af","XA-IAC","EMBRAER","Embraer","EMB-190 LR","E190","19000238","","L2J","","COSTERA","SLI","","Aeromexico Connect","","","","","","","","","false","false","false","","" @@ -330569,6 +330636,7 @@ haslett, Olivia","","2006-07-07","","","2000-01-01","","","1x JABIRU 2200A","fal "38c61c","F-JPBW","ZENITH","","","CH60","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a4a6bf","N3991M","PIPER","Piper","PA-28R-201T","P28R","28R-7803211","","L1P","","","","","Staruh Donald E","","","2027-09-30","","1978-01-01","","","CONT MOTOR TSIO-360 SER","false","false","false","","" "45b82a","OY-NAJ","MOONEY","","","M20P","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"395d6e","F-WWYX","AIRBUS","Airbus Industrie","A330-743L Beluga XL","A337","2041","","L2J","Airbus Transport International","BELUGA","BGA","4Y","","","","","","2023-01-01","2023-07-21","","2x RR Trent 772B-60","false","false","false","Beluga XL6 - will become F-GXLO","" "c01e8d","C-FLOU","YAKIMA AEROSPORT","Piper Aircraft Corporation","PA-18A-150 (Piper)","PA18","18-4865","","L1P","","","","","Fink's Sawmill Ltd","","2001-10-22","","","","","","","false","false","false","","" "a63560","N5BJ","CHAMPION","Champion","7KCAB","CH7A","187","","L1P","","","","","Linrud Michael A","","","2027-11-30","","1969-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a36e6a","N320BA","","Aerotechnik","L13 SE VIVAT","","970529","","","","","","","Adams Lew","","","2029-02-28","","1997-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" @@ -331514,7 +331582,7 @@ haslett, Olivia","","2006-07-07","","","2000-01-01","","","1x JABIRU 2200A","fal "a08a68","N134DR","VOLPAR","Beech","D-45","BE18","BG-169","","L2P","","","","","Rothenanger David A","","","2029-08-31","","1956-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "3e92df","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "a53fef","N4373Q","","Plyler Ronald J","CHALLENGER II","ULAC","CH2 1291-0770","","","","","","","Acevedo Jatniel","","","2029-01-31","","","","","BOMBARDIER ROTAX (ALL)","false","false","false","","" -"49e729","TWR","","","","TWR","","","","","","","","","","","","","","","","","false","false","false","","" +"49e729","TWR","","","","TWR","","","","","","","","Eindhoven Air Base","","","","","","","","","false","false","false","Ground vehicle","" "a5d1c6","N474UP","BOEING","Boeing","757-24APF","B752","28844","","L2J","United Parcel Service","UPS","UPS","5X","United Parcel Service Co","","","2028-02-29","","1999-01-01","","","ROLLS-ROYC RB-211 SERIES","false","false","false","","" "c0315e","C-FSSB","","Cessna Aircraft Company","172G (Cessna)","","17253651","","","","","","","David J Kaufman","","1997-06-10","","","","","","","false","false","false","","" "485ec6","PH-ZGZ","SWEARINGEN","","","BE9L","","","L2T","","","","","","","","","","","","","","false","false","false","","" @@ -331554,7 +331622,7 @@ haslett, Olivia","","2006-07-07","","","2000-01-01","","","1x JABIRU 2200A","fal "aac265","N7924P","PIPER","Piper","PA-24-250","PA24","24-3157","","L1P","","","","","West Texas Weather Modification Association","","","2028-09-30","","1962-01-01","","","LYCOMING 0-540 SERIES","false","false","false","","" "c01307","C-FHFI","REIMS","Cessna Aircraft Company","172M (Cessna)","C172","17262280","","L1P","","","","","Brenda L. Van Esch","","2018-02-27","","","","","","","false","false","false","","" "a1716c","N192US","MCDONNELL DOUGLAS","Douglas","DC-9-15F","DC91","47156","","L2J","","","","","Frontera Flight Holdings Inc","","","2030-04-30","","1967-01-01","","","P & W JT8D SERIES","false","false","false","","" -"71d870","970","KOREA AEROSPACE","","","SURN","","","H2T","","","","","","","","","","","","","","false","false","false","","" +"71d870","970","KOREA AEROSPACE","Korea Aerospace Industries","KUH-1P(CHAMSURI)","SURN","","","H2T","Korea National Police Agency","","","","Korea National Police Agency","","","","","","","","GE T700-701K","false","false","false","","" "7c7fbe","VH-ZIO","CESSNA","","","C210","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a5586a","N4432K","PIPER","","","PA46","","","L1P","","","","","","","","","","","","","","false","false","false","","" "489086","SP-EEG","REIMS","Cessna","172S Skyhawk SP","C172","172S10644","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -331779,6 +331847,7 @@ haslett, Olivia","","2006-07-07","","","2000-01-01","","","1x JABIRU 2200A","fal "4068cd","G-MRVN","","Pzl-bielsko","SZD-50-3 Puchacz","GLID","B-1618","","","","","","","The Bath Wilts And North Dorset Gliding Club Ltd","","2012-12-03","","","1987-01-01","","","0 x NO ENGINES
","false","false","false","","" "a57000","N45CL","","Littleton David A","TWINSTAR","ULAC","004","","","","","","","Vandeventer George W Jr","","","2028-03-31","","1996-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "acd774","N92643","WAGAERO","Piper","J3C-65","J3","17013","","L1P","","","","","Leyde Dale R","","","2029-10-31","","","","","CONT MOTOR C85 SERIES","false","false","false","","" +"490d83","CS-CLC","CANADAIR","Bombardier","CL-600-2B16 Challen.650","CL60","6185","","L2J","Netjets Europe","FRACTION","NJE","1I","Netjets Europe","","","","","2021-01-01","","","","false","false","false","","" "3eeaf6","D-2655","","Pzl-bielsko","SZD-50-3 Puchacz","GLID","B-1539","","","","","","","Private","","","","","","","","","false","false","false","","" "ac1d05","N88RT","NORTH AMERICAN","North American/victoria Mnt Lt","AT-6A","T6","2780","","L1P","","","","","Twin Lakes Aviation Llc","","","2029-09-30","","","","","P&W R1340 SERIES","false","false","false","","" "ad561a","N959AD","SINGAPORE","Douglas","AD-4N","A4","126959","","L1J","","","","","East Iowa Air Inc","","","2029-10-31","","1952-01-01","","","WRIGHT R3350-26WD","false","false","false","","" @@ -332421,6 +332490,7 @@ haslett, Olivia","","2006-07-07","","","2000-01-01","","","1x JABIRU 2200A","fal "3efc03","D-7020","","Glasflugel","H206 Hornet","GLID","53","","","","","","","Private","","","","","","","","","false","false","false","","" "a1cecc","N21520","WREN","Cessna","182P","C182","18261686","","L1P","","","","","Schroeder Benjamin","","","2029-10-31","","1973-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "a470a3","N3853E","CHAMPION","Aeronca","7AC","CH7A","7AC-7093","","L1P","","","","","Youngs William D Jr","","","2027-12-31","","1947-01-01","","","CONT MOTOR A&C75 SERIES","false","false","false","","" +"7c7778","","EMBRAER","Embraer","EMBRAER E190AR","E190","","","L2J","Qantaslink","QJET","QJE","QF","Qantas","","","","","","","","JET","false","false","false","","" "c08a6c","C-IAKX","","Donald Macdermid","MARGAREE RANGER (Donald Macdermid)","ULAC","M14784","","","","","","","Silver Dart Flying Club","","1984-08-08","","","","","","","false","false","false","","" "a4e3c0","N414HW","RILEY","Cessna","414A","C414","414A0114","","L2P","","","","","Williams Land Investments Llc","","","2027-10-31","","1978-01-01","","","CONT MOTOR TSIO-520 SER","false","false","false","","" "3932e3","F-GMXD","ROBIN","Robin","DR.400 140B Dauphin 4","DR40","2214","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -333678,7 +333748,7 @@ duggan, Helena","","2014-09-03","","","1991-01-01","","","1x ROTAX 582","false", "3ff291","D-MONN","B & F TECHNIK","","","FK9","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a67a82","N5163H","REIMS","Cessna","172S","C172","172S8933","","L1P","","","","","Edb Air Inc","","","2029-04-30","","2001-01-01","","","LYCOMING IO-360-L2A","false","false","false","","" "a35d3c","N316BH","","Donald Scott Hoover","BEARHAWK 4 PLACE","","1266","","","","","","","Hoover Donald Scott","","","2030-02-28","","","","","","false","false","false","","" -"7c5950","VH-RXE","SAAB-FAIRCHILD","Saab","340 B","SF34","275","","L2T","","REX","RXA","","Regional Express","","","","","","","","","false","false","false","","" +"7c5950","VH-RXE","SAAB-FAIRCHILD","Saab Aircraft Co.","340B","SF34","340B-275","","L2T","Regional Express","REX","RXA","ZL","Regional Express","","2007-08-30","","","1991-01-01","","","","false","false","false","","" "400bf5","G-AWFC","PIPER","Piper Aircraft Corporation","PIPER PA-28R-180 Cherokee Arrow","P28R","28R-30670","","L1P","","","","","Private","","2010-03-25","","","1968-01-01","","","1 x LYCOMING IO-360-B1E  ( HARTZELL HC-C2YK-1BF )
","false","false","false","","" "ac6b16","N9GF","PIPER","","","PA46","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a68c80","N52089","STEARMAN","Boeing","Stearman E75N1 PT-13D Kaydet","ST75","75-5051","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -334197,7 +334267,7 @@ duggan, Helena","","2014-09-03","","","1991-01-01","","","1x ROTAX 582","false", "ac1cca","N88PJ","MONNETT","Anderson John R","SONERAI II L","SRAI","1400","","L1P","","","","","Anderson John R","","","2028-11-30","","1988-01-01","","","VOLKSWAGEN CONVERSION","false","false","false","","" "a47dd1","N389ME","CESSNA","Cessna","182S","C82S","18280861","","L1P","","","","","Van Bortel Aircraft Inc","","","","","2000-01-01","","","LYCOMING IO-540 SER","false","false","false","","" "aa81fd","N7762P","PIPER","Piper","PA-24-250","PA24","24-2979","","L1P","","","","","Warfield Donald W","","","2027-11-30","","1962-01-01","","","LYCOMING 0-540 SERIES","false","false","false","","" -"7cf85c","A36-001","BOEING","Boeing","737-7DT/W BBJ","B737","30829","738","L2J","Royal Australian Air Force","AUSSIE","ASY","","Royal Australian Air Force","","","","","2000-01-01","2000-12-08","","2 x CFM56-7","false","false","false","","No ADS-B Emitter Category Information" +"7cf85c","A36-001","BOEING","Boeing","737NG 7DT/W BBJ","B737","30829","","L2J","Royal Australian Air Force","AUSSIE","ASY","","Royal Australian Air Force","","","","","","","","","false","false","false","","" "009ff9","ZS-MCE","RAYTHEON","Beech","King Air B200","BE20","BB-884","","L2T","","","","","Marce Bemarking Cc","","","","","","","","","false","false","false","","" "a3de69","N3487X","MOONEY","Mooney","M20C","M20P","3424","","L1P","","","","","Krzeminski Paul A","","","2028-05-31","","1966-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "8000c1","VT-SUS","DE HAVILLAND CANADA","Bombardier","DHC-8 402 NG","DH8D","4346","","L2T","","SPICEJET","SEJ","","Spicejet","","","","","","","","","false","false","false","","" @@ -337324,7 +337394,7 @@ duggan, Helena","","2014-09-03","","","1991-01-01","","","1x ROTAX 582","false", "a56f8d","N4498S","RAYTHEON","Beech","A36","BE36","E-714","","L1P","","","","","Budde Thomas K","","","2029-04-30","","1975-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "aa4019","N76KJ","PIPER","Piper","PA46-500TP","P46T","4697502","","L1T","","","","","Cws Aviation Llc","","","2027-12-31","","2012-01-01","","","P&W CANADA PT6A-42A","false","false","false","","" "a3b2c8","N3374V","COLEMILL","Beech","F35","BE35","D-4042","","L1P","","","","","Palotas Anne M","","","2029-09-30","","1955-01-01","","","CONT MOTOR E225 SERIES","false","false","false","","" -"7c5984","VH-RYU","BOEING","The Boeing Co.","737-800","B738","33794","","L2J","Regional Express","REX","RXA","ZL","","","2021-05-06","","","2003-08-01","","","","false","false","false","","" +"7c5984","VH-RYU","BOEING","Boeing","737-800","B738","","","L2J","Regional Express","REX","RXA","ZL","Rex Investment Holdings Pty Ltd","","","","","","","","JET","false","false","false","","" "44074f","OE-XCT","ROBINSON","Robinson","R22 Beta II","R22","4814","","H1P","Heli-austria","","","","","","","","","","","","","false","false","false","","" "e48b61","PP-KGL","RAYTHEON","Hawker Beechcraft Corp","King Air 200GT","BE20","BY-122","","L2T","","","","","Promoart Promocoes Artisticas Ltda","","","","","","","","","false","false","false","","" "a23621","N2410U","REIMS","Cessna","172D","C172","17250010","","L1P","","","","","Yellow Breast Aviation Llc","","","2029-08-31","","","","","CONT MOTOR 0-300 SER","false","false","false","","" @@ -337924,7 +337994,7 @@ duggan, Helena","","2014-09-03","","","1991-01-01","","","1x ROTAX 582","false", "a303b7","N2935S","PIPER","Piper","PA-28-181","P28A","28-7990563","","L1P","","","","","Jacksonville Airport Authority","","","2029-11-30","","1979-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "399597","F-HFMX","PIPISTREL","Pipistrel","Virus SW 121","PIVI","VSW1210008","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "ac844e","N9051V","PIPER","Piper","PA-28R-201T","P28R","28R-7703334","","L1P","","","","","White Air Ltd","","","2028-07-31","","1977-01-01","","","CONT MOTOR TSIO-360 SER","false","false","false","","" -"7c627b","VH-TQL","DE HAVILLAND CANADA","Bombardier","DHC-8 315Q","DH8C","603","","L2T","","JETSTAR","JST","","Jetstar Airways","","","","","","","","","false","false","false","","" +"7c627b","VH-TQL","DE HAVILLAND CANADA","Bombardier","DHC-8 315Q","DH8C","603","","L2T","Qantaslink","QJET","QJE","QF","Qantas","","","","","","","","","false","false","false","","" "ad9c84","N97611","WREN","","","C182","","","L1P","","","","","","","","","","","","","","false","false","false","","" "300411","I-RVEG","MACCHI","Aermacchi","MB.326 E","M326","6172","","L1J","","","","","Italian Air Force","","","","","","","","","false","false","false","","" "a5afab","N4658N","STEARMAN","Boeing","Stearman B75N1 N2S-3 Kaydet","ST75","75-6473","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -338430,6 +338500,7 @@ duggan, Helena","","2014-09-03","","","1991-01-01","","","1x ROTAX 582","false", "389e9c","F-JREM","","","","GLID","","","","","","","","","","","","","","","","","false","false","false","","" "ae6327","16-72432","EUROCOPTER-KAWASAKI","","","EC45","","","H2T","","","","","","","","","","","","","","false","false","false","","Reserved" "a0f2d3","N160MT","MUSTANG","Jones Darwin L","MUSTANG II","MUS2","10160M","","L1P","","","","","Day George E Jr","","","2029-10-31","","2007-01-01","","","LYCOMING O-320-E2A","false","false","false","","" +"1b10ac","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "a0d4d3","N1526M","RAYTHEON","Beech","58","BE58","TH-1711","","L2P","","","","","Garmin At Inc","","","2027-07-31","","1994-01-01","","","CONT MOTOR IO-550-C","false","false","false","","" "a069a9","N1257Y","RAYTHEON","Textron Aviation Inc","B300","BE30","FL-1257","","L2T","","","","","Tvpx Aircraft Solutions Inc Trustee","","","2029-01-31","","2021-01-01","","","P&W CANADA PT6A-60A","false","false","false","","" "a66869","N51160","CESSNA","Textron Aviation","Citation XLS+","C56X","560-6233","","L2J","","","","","Textron Aviation Inc","","","","","","","","","false","false","false","","" @@ -339255,7 +339326,7 @@ duggan, Helena","","2014-09-03","","","1991-01-01","","","1x ROTAX 582","false", "402edb","G-ILTS","PIPER","Piper Aircraft Corporation","PIPER PA-32-300 Cherokee Six","PA32","32-7940217","","L1P","","","","","Private","","2014-07-23","","","1979-01-01","","","1 x LYCOMING IO-540-K1G5  ( HARTZELL HC-C3YR-1RF/F7663R )
","false","false","false","","" "c0a41c","C-IKDV","","Kolb Aircraft Inc.","TWINSTAR MARK III (Kolb)","ULAC","M3-193","","","","","","","Robert John Fiedler","","2013-09-25","","","","","","","false","false","false","","" "a8c7a1","N665JN","GULFSTREAM AEROSPACE","Gulfstream Aerospace","GV-SP (G550)","GLF5","5126","","L2J","","","","","Umb Bank Na Trustee","","","2028-06-30","","2006-01-01","","","BMW ROLLS BR700-710C411","false","false","false","","" -"406ca0","G-HEMC","EUROCOPTER-KAWASAKI","Airbus Helicopters Deutschland Gmbh","MBB-BK 117 D-2 Ec145","EC45","20012","","H2T","","","","","Babcock Mcs Onshore","","2014-11-13","","","2014-01-01","","","2 x TURBOMECA ARRIEL 2E
","false","false","false","","" +"406ca0","G-HEMC","EUROCOPTER-KAWASAKI","Airbus Helicopters Deutschland Gmbh","MBB-BK 117 D-2 Ec145","EC45","20012","","H2T","East Anglian Air Ambulance","HLE","","","Babcock Mcs Onshore","","2014-11-13","","","2014-01-01","","","2 x TURBOMECA ARRIEL 2E
","false","false","false","","" "c02359","C-FNKA","REIMS","Cessna Aircraft Company","172B (Cessna)","C172","17248460","","L1P","","","","","James John Sophocleous","","2014-09-12","","","","","","","false","false","false","","" "a4b4dc","N402JE","GULFSTREAM AEROSPACE","Gulfstream Aerospace","GIV-X (G450)","GLF4","4266","","L2J","","","","","Tvpx Aircraft Solutions Inc Trustee","","","2029-05-31","","2012-01-01","","","ROLLS-ROYC TAY 611-8C","false","false","false","","" "a21674","N2333P","PIPER","Piper","PA-38-112","PA38","38-79A0949","","L1P","","","","","Singleton Daniel L","","","2029-01-31","","1979-01-01","","","LYCOMING 0-235 SERIES","false","false","false","","" @@ -340247,7 +340318,7 @@ o'neill, Brian","","2007-03-28","","","1980-01-01","","","0x ","false","false", "aceb02","N931ST","","Durrence Jesse","ZENITH 701","","6185","","","","","","","Bos Ranch Llc","","","2028-12-31","","2007-01-01","","","ROTAX 912UL SERIES","false","false","false","","" "a4a6b8","N3991E","STEARMAN","Jones Peter M","BOEING/JONES 75","ST75","AR-28","","L1P","","","","","Johnson Kenneth E","","","2028-02-29","","","","","","false","false","false","","" "45b823","OY-NAC","WREN","Cessna","182S Skylane","C182","18280099","","L1P","","","","","Private","","","","","","","","","false","false","false","","" -"395d67","F-GXLH","AIRBUS","Airbus","A330-743L Beluga XL","A337","","","L2J","Airbus Transport International","BELUGA","BGA","4Y","","","","","","","","","","false","false","false","","" +"395d67","F-GXLH","AIRBUS","Airbus Industrie","A330-743L Beluga XL","A337","1853","","L2J","Airbus Transport International","BELUGA","BGA","4Y","","","2019-12-06","","","2019-01-01","2019-04-15","","2x RR Trent 772B-60","false","false","false","Beluga XL2","" "c01e86","C-FLON","OGMA","The De Havilland Aircraft Of Canada, Limited","DHC-1A-1 (Dehavilland)","DHC1","24","","L1P","","","","","George B Engel","","1976-10-05","","","","","","","false","false","false","","" "a804df","N61585","REIMS","Cessna","172M","C172","17264658","","L1P","","","","","Mele Michael L","","","2029-05-31","","1975-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a36e63","N320AU","PIPER","Piper","PA-44-180","PA44","4496496","","L2P","","","","","Auburn University","","","2030-04-30","","2020-01-01","","","LYCOMING IO-360-B1G6","false","false","false","","" @@ -340660,7 +340731,7 @@ o'neill, Brian","","2007-03-28","","","1980-01-01","","","0x ","false","false", "a0039d","N10NX","STODDARD-HAMILTON","Smick Theodore H","GLASAIR III","GLAS","3319","","L1P","","","","","Smick Theodroe H","","","2029-03-31","","","","","","false","false","false","","" "a578a1","N4513N","TIGER","Gulfstream American Corp","AA-5B","AA5","AA5B0994","","L1P","","","","","Rspp Group Llc","","","2027-08-31","","1978-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "a7bb0e","N5979U","PIPER","Piper","PA-28-140","P28A","28-26867","","L1P","","","","","Wings Of Grace Ministries Inc","","","2027-12-31","","","","","LYCOMING 0-320 SERIES","false","false","false","","" -"748049","OD-EKF","RAYTHEON","Raytheon Aircraft Company","125 800XP","H25B","258710","","L2J","Corporate Airlink","CORPORATE","COO","","Corporate","","","","","","","","","false","false","false","","" +"748049","OD-EKF","RAYTHEON","Hawker Siddeley","HS.125","H25B","258710","","L2J","Corporate Airlink","CORPORATE","COO","","Corporate","","","","","","","","","false","false","false","","" "403d7e","G-MZHR","","Cyclone Airsports Ltd Trading As Pegasus Aviation","CYCLONE AX2000","ULAC","7307","","","","","","","Private","","2016-12-13","","","1997-01-01","","","1 x ROTAX 582  ( HELICE ECOPROP 174/L/130/3 )
","false","false","false","","" "a3fff3","N357MT","PIPER","Piper","PA-28-140","P28A","28-21389","","L1P","","","","","J & F Aviation Adventure Llc","","","2029-10-31","","","","","LYCOMING 0-320 SERIES","false","false","false","","" "a31c08","N3QK","QUICKIE","Weigart Adrian","QUICKIE","QUIC","85","","L1P","","","","","Weigart Adrian","","","2029-12-31","","","","","","false","false","false","","" @@ -340856,6 +340927,7 @@ o'neill, Brian","","2007-03-28","","","1980-01-01","","","0x ","false","false", "a78500","N584CK","RAYTHEON","Beech","58","BE58","TH-319","","L2P","Kalitta Charters","KALITTA","KFS","","Kalitta Charters Llc","","","2028-04-30","","1973-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "acbcb2","N92K","GENERAL AVIA","General Avia Costruzioni","F22","PINO","006","","L1P","","","","","Ssbm Llc","","","2028-03-31","","1995-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "a936a7","N693JD","CIRRUS","Cirrus Design Corp","SR22","SR22","3021","","L1P","","","","","Aimfar Llc","","","2028-01-31","","2008-01-01","","","CONT MOTOR IO-550-N","false","false","false","","" +"06a10f","A7-AOA","AIRBUS","Airbus Industrie","A350-1041","A35K","409","","L2J","Qatar Airways","QATARI","QTR","QR","Qatar Airways","","","","","2021-01-01","","","2x RR Trent XWB-97 engines","false","false","false","","" "383a7a","F-WWGV","DASSAULT","","","F2TH","","","L2J","","","","","","","","","","","","","","false","false","false","","" "8a05fe","PK-ARI","PIPER","","","P28A","","","L1P","","","","","","","","","","","","","","false","false","false","","" "4493fe","OO-D66","FLY SYNTHESIS","Fly Synthesis","Storch","STCH","250","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -341453,6 +341525,7 @@ o'neill, Brian","","2007-03-28","","","1980-01-01","","","0x ","false","false", "a629de","N4968M","TEXAS SPORT","Piper","PA-11","PA11","11-455","","L1P","","","","","Meggers Roger D","","","2027-11-30","","1948-01-01","","","CONT MOTOR C90 SERIES","false","false","false","","" "a15657","N1855S","RAYTHEON","Beech","F33A","BE33","CE-980","","L1P","","","","","1855 Sierra Llc","","","2030-04-30","","1981-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "aa0079","N7433J","PIPER","Piper","PA-28R-180","P28R","28R-30778","","L1P","","","","","Goodding James Clayton","","","2028-10-31","","1968-01-01","","","LYCOMING I0360 SER","false","false","false","","" +"3d0a90","D-ECGE","","Cirrus","SR20-G3","","","","L1P","","","","","","","","","","","","","","false","false","false","","" "40700f","G-CIZK","MAGNI","Magni Gyro","M-16 Tandem Trainer C","MM16","16-16-9534","","G1P","","","","","Gyromania Ltd","","","","","","","","","false","false","false","","" "a1229d","N172WP","REIMS","Cessna","172M","C172","17262635","","L1P","","","","","Aviair Llc","","","2029-12-31","","1973-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "aab13a","N7884Z","REIMS","Cessna","150C","C150","15059984","","L1P","","","","","Frenkel Amotz","","","2027-10-31","","1963-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" @@ -342198,7 +342271,7 @@ o'neill, Brian","","2007-03-28","","","1980-01-01","","","0x ","false","false", "391a34","F-GGRU","","Cameron","N-65 Hot Air Balloon","BALL","2287","","","","","","","Private","","","","","","","","","false","false","false","","" "a2d5c5","N282DS","DIAMOND","Diamond Aircraft Ind Inc","DA 40","DA40","40.282","","L1P","","","","","Dickinson Edward L","","","2027-05-31","","2003-01-01","","","LYCOMING I0360 SER","false","false","false","","" "a2b7c5","N2740W","MOONEY","Mooney","M20E","M20P","1038","","L1P","","","","","Lewis Paul M","","","2028-01-31","","1966-01-01","","","LYCOMING I0360 SER","false","false","false","","" -"43c930","ZM702","WESTLAND","","","H64","","","H2T","","","","","","","","","","","","","","false","false","false","","Reserved" +"43c930","ZM702","WESTLAND","","","H64","","","H2T","Army Air Corps","ARMYAIR","AAC","","British Army","","","","","","","","","false","false","false","","Reserved" "a2e7c3","N2868P","YAKIMA AEROSPORT","Piper","PA-18A 150","PA18","18-4457","","L1P","","","","","Redman Adam J","","","2027-11-30","","","","","LYCOMING 0-320 SERIES","false","false","false","","" "a0493a","N11749","REIMS","Cessna","150L","C150","15075611","","L1P","","","","","Adams Chad R","","","2028-01-31","","1974-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "7c3afd","VH-LXR","ROBINSON","Robinson Helicopter Co","R22 BETA","R22","1181","","H1P","","","","","Cloncurry Mustering Company Pty. Ltd.","","","","","1989-01-01","","","1x Textron Lycoming O-320-B2C","false","false","false","","" @@ -346566,6 +346639,7 @@ coughlan, James Edward","","2011-06-14","","","2009-01-01","","","1x LYCOMING O- "a068b7","N12501","REIMS","Cessna","172M","C172","17262024","","L1P","","","","","Bahneman Todd E","","","2028-07-31","","1973-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "4cc2ac","TF-FIG","BOEING","Boeing","757 23APF","B752","24456","","L2J","","ICEAIR","ICE","","Icelandair","","","","","","","","","false","false","false","","" "ad17d7","N9426Y","","Beech","N35","","D-6605","","","","","","","My Pilot Ltd","","","2029-05-31","","","","","CONT MOTOR I0-470 SERIES","false","false","false","","" +"c1e7de","Aviation Safety 204","","","","","","","","Gtaa","Safety 204","","","Gtaa","","","","","","","","","false","false","false","","Surface Vehicle – Emergency Vehicle" "3ee415","D-0894","","Rolladen-schneider","LS4","GLID","4387","","","","","","","Private","","","","","","","","","false","false","false","","" "484d18","PH-CRT","","Lindstrand","LBL.120A Hot Air Balloon","BALL","442","","","","","","","Private","","","","","","","","","false","false","false","","" "a56c06","N44895","NORTH AMERICAN","North American","NA-64","YALE","64-2221","","L1P","","","","","Yale Flying Co","","","2028-04-30","","","","","","false","false","false","","" @@ -349068,7 +349142,7 @@ coughlan, James Edward","","2011-06-14","","","2009-01-01","","","1x LYCOMING O- "7c5e4d","VH-SWV","PIPER","","","P28A","","","L1P","","","","","","","","","","","","","","false","false","false","","" "e4891f","2739","CESSNA","Cessna","208 C-98A","C208","208B-2271","","L1T","","BRAZILIAN AIR FORCE","BRS","","Brazilian Air Force","","","","","","","","","false","false","false","","" "c09262","C-IDLH","","Paratour","SD-100 (Paratour)","PARA","00095","","","","","","","Luc Cloutier","","2004-08-20","","","","","","","false","false","false","","" -"ae04fe","58-0100","BOEING","Boeing","KC-135R","K35R","17845","","L4J","United States Air Force","AIR CHIEF","AIO","","United States Air Force","","","","","","","","","false","false","false","","Reserved" +"ae04fe","58-0100","BOEING","Boeing","KC-135R","K35R","17845","","L4J","Air Mobility Command","REACH","RCH","MC","United States Air Force","","","","","","","","","false","false","false","","Reserved" "3e6515","D-KDMB","SCHLEICHER","Schleicher","ASH 31 Mi","AS31","31075","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "710102","HZ-AK73","BOEING","Boeing","Boeing 777 FFG","B77L","60339","","L2J","","SAUDIA","SVA","","Saudi Arabian Airlines","","","","","","","","","false","false","false","","" "a868df","N6409S","COLEMILL","Beech","V35B","BE35","D-9838","","L1P","","","","","Passell Donald H","","","2028-04-30","","1976-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" @@ -351502,7 +351576,7 @@ coughlan, James Edward","","2011-06-14","","","2009-01-01","","","1x LYCOMING O- "aa358f","N757RP","REIMS","Cessna","152","C152","15279946","","L1P","","","","","Boyne Valley Flyers Club Inc","","","2029-05-31","","1977-01-01","","","LYCOMING 0-235 SERIES","false","false","false","","" "c05513","C-GGFQ","REIMS","Cessna Aircraft Company","172K (Cessna)","C172","17259078","","L1P","","","","","Beno�t Moreau","","2018-01-26","","","","","","","false","false","false","","" "872830","JA9016","SUD-EST","Sud Aviation","Alouette II SE.313B","ALO2","1896","","H1T","","","","","Private","","","","","","","","","false","false","false","","" -"140aeb","RA-02795","HARBIN","","","E35L","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"140aeb","RA-02795","HARBIN","Embraer","","E35L","","","L2J","","","","","Wagner Group","","2019-10-01","","","","","","","false","false","false","","" "473a80","HA-WEA","REIMS","","","C152","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a02413","N108SY","EMBRAER","Embraer S A","ERJ 170-200 LR","E75L","17000401","","L2J","","SKYWEST","SKW","","Skywest Airlines Inc","","","2027-05-31","","2014-01-01","","","GE CF34-8E5","false","false","false","","" "a68cac","N521AG","MOONEY","Mooney Aircraft Corp.","M20K","M20P","25-0139","","L1P","","","","","Aviation Fury Llc","","","2029-01-31","","1979-01-01","","","CONT MOTOR TSIO-360 SER","false","false","false","","" @@ -353101,6 +353175,7 @@ coughlan, James Edward","","2011-06-14","","","2009-01-01","","","1x LYCOMING O- "501dd0","9A-CQE","DE HAVILLAND CANADA","Bombardier","DHC-8 402 NG","DH8D","4300","","L2T","","CROATIA","CTN","","Croatia Airlines","","","","","","","","","false","false","false","","" "a5392d","N4358M","PIPER","Piper","PA-46-310P","PA46","46-8408048","","L1P","","","","","Kimt Llc","","","2030-02-28","","1984-01-01","","","CONT MOTOR TSIO-520 SER","false","false","false","","" "4ae1cd","SE-XNM","VAN'S","","","RV6","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"02a1a6","TS-ING","AIRBUS","Airbus Industrie","A320-214 (W)","A320","","","L2J","Nouvel Air Tunisie","NOUVELAIR","LBT","BJ","Aercap","","","","","2013-01-01","","","2x CFMI CFM56-5B4 engines","false","false","false","","" "a730df","N5621M","TAYLOR-YOUNG","Taylorcraft","BC12-D","TAYB","12021","","L1P","","","","","Center Charles C","","","2027-10-31","","1948-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" "ac558f","N894QA","","Adams Balloons Llc","A-B","BALL","280","","","","","","","Balloons Over Bloomington Llc","","","2029-10-31","","","","","","false","false","false","","" "a0b0c0","N1434G","COLEMILL","Beech","35-B33","BE35","CD-456","","L1P","","","","","Wagner Carl","","","2030-01-31","","1962-01-01","","","CONT MOTOR I0-470 SERIES","false","false","false","","" @@ -354216,6 +354291,7 @@ coughlan, James Edward","","2011-06-14","","","2009-01-01","","","1x LYCOMING O- "c0373f","C-FUXY","REIMS","Cessna Aircraft Company","172 (Cessna)","C172","36517","","L1P","","","","","Philip Pozer","","2017-12-01","","","","","","","false","false","false","","" "ed5524","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "a72883","N560SJ","CESSNA","Cessna","560XL","C56X","5605215","","L2J","","","","","Smith Family Aviation Llc","","","2028-02-29","","2001-01-01","","","P&W CANADA PW545A","false","false","false","","" +"503d76","LY-NFK","AIRBUS","Airbus Industrie","A321-211 (W)","A321","6511","","L2J","Marabu Airlines","","","","Heston Airlines","","","","","","","","","false","false","false","","" "a62d12","N4974W","TUSCO","Ryan","NAVION NAV 4","NAVI","1322","","L1P","","","","","Kraus Tahj","","","2027-08-31","","","","","","false","false","false","","" "a3871c","N3261G","NORTH AMERICAN","North American","SNJ-5","T6","90612","","L1P","","","","","Ms Aero Inc","","","2027-04-30","","1946-01-01","","","P&W R1340 SERIES","false","false","false","","" "c07504","C-GSID","ST. JUST","Cessna Aircraft Company","A185F (Cessna)","C185","18504153","","L1P","","","","","Vaughn R Richmond","","1999-05-10","","","","","","","false","false","false","","" @@ -363691,6 +363767,7 @@ coughlan, James Edward","","2011-06-14","","","2009-01-01","","","1x LYCOMING O- "a2661c","N2538J","WREN","Cessna","182","C182","33208","","L1P","","","","","Watts Noah D","","","2029-05-31","","","","","","false","false","false","","" "a814ce","N62KJ","CESSNA","Cessna","180A","C180","32933","","L1P","","","","","Stephani Timothy M","","","2030-01-31","","1957-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "a54df9","N4407Q","","Cessna","172M","","17261698","","","","","","","Sund Manufacturing Co","","","2029-06-30","","","","","LYCOMING 0-320 SERIES","false","false","false","","" +"45213b","LZ-DCL","BOEING","","","B738","","","L2J","","","","","","","","","","","","","","false","false","false","","" "ac8c0b","N90734","WESTLAND","Bell","TH-13T Sioux","B47G","3799","","H1P","","","","","Private","","","","","","","","","false","false","false","","" "a8c5b0","N66417","STEARMAN","Boeing","B75N1","ST75","75-6826","","L1P","","","","","Lowe Thomas E","","","2027-10-31","","1942-01-01","","","CONT MOTOR W670 SERIES","false","false","false","","" "aae65f","N801JC","CIRRUS","Cirrus Design Corp","SR22T","S22T","1833","","L1P","","","","","Tyzack Aviation Llc","","","2027-08-31","","2018-01-01","","","CONT MOTOR TSIO-550-K","false","false","false","","" @@ -364835,7 +364912,7 @@ coughlan, James Edward","","2011-06-14","","","2009-01-01","","","1x LYCOMING O- "7c704b","VH-WGT","VAN'S","","","RV7","","","L1P","","","","","","","","","","","","","","false","false","false","","" "7cf922","A41-210","MCDONNELL DOUGLAS","Boeing Defence","C-17A Globemaster III","C17","50240/AU5","AUS-5","L4J","Royal Australian Air Force","AUSSIE","ASY","","Royal Australian Air Force","","","","","2011-01-01","","","4x Pratt & Whitney F117-PW-100","false","false","false","","No ADS-B Emitter Category Information" "781dc6","B-221X","BOEING","","","B77L","","","L2J","","","","","","","","","","","","","","false","false","false","","" -"440037","OE-IJR","AIRBUS","","","A320","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"440037","OE-IJR","AIRBUS","","","A320","","","L2J","Easyjet Europe","EASY","EZY","U2","Easyjet","","","","","","","","","false","false","false","","" "a52423","N430LL","CHRISTEN","Aviat Aircraft Inc","A-1C-200","HUSK","3381","","L1P","","","","","Lee Aviation Services Llc","","","2029-04-30","","2021-01-01","","","LYCOMING IO-360-A1D6","false","false","false","","" "457c04","665","PILATUS","","","PC9","","","L1T","","","","","","","","","","","","","","false","false","false","","" "e48c1b","PR-SEU","LEONARDO","","","A139","","","H2T","","","","","","","","","","","","","","false","false","false","","" @@ -366627,7 +366704,7 @@ coughlan, James Edward","","2011-06-14","","","2009-01-01","","","1x LYCOMING O- "a3a9ea","N335RS","REIMS","Cessna","172N","C172","17268562","","L1P","","","","","Yould Eric P Trustee","","","2028-04-30","","1977-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a92eb9","N691DA","DIAMOND","","","DA62","","","L2P","","","","","","","","","","","","","","false","false","false","","" "403594","G-MWZR","","Solar Wings Aviation Ltd","PEGASUS QUASAR IITC Quasar Ii","ULAC","SW-WQT-0500","","","","","","","Private","","2006-08-15","","","1992-01-01","","","1 x ROTAX 503-2V  ( HELICE ARPLAST 162 CM X 15 DEG AT 53.5 )
","false","false","false","","" -"4242df","VP-BUG","BOEING","Boeing","Boeing 737NG 86J/W","B738","37741","","L2J","","SIBERIAN AIRLINES","SBI","","S7 Airlines","","","","","","","","","false","false","false","","" +"4242df","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "aa4619","N761JT","COLEMILL","Beech","35-C33A","BE35","CE-153","","L1P","","","","","Stahlberg Jeffrey C","","","2029-10-31","","1967-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "009b42","ZS-KHT","PILATUS","Pilatus","PC-XII NG 47E","PC12","1599","","L1T","","","","","Adventum Aviation P/l","","","","","","","","","false","false","false","","" "896585","A6-AUA","AIRBUS","","","A320","","","L2J","","","","","","","","","","","","","","false","false","false","","" @@ -368177,6 +368254,7 @@ o'reilly, Patrick","","2012-06-15","","","2003-01-01","","","1x ROTAX 912-ULS"," "a2221f","N2367H","MOONEY","Ercoupe","415-C","ERCO","2992","","L1P","","","","","Goodman Harlon","","","2030-01-31","","1946-01-01","","","CONT MOTOR A&C75 SERIES","false","false","false","","" "a31c55","N3TM","WAGAERO","Piper","J3C-65","J3","22164","","L1P","","","","","Sea-air Ltd","","","2028-07-31","","1946-01-01","","","CONT MOTOR C85 SERIES","false","false","false","","" "8a0381","PK-LKQ","BOEING","Boeing","737NG 8GP/W","B738","38727","","L2J","","LION INTER","LNI","","Lion Air","","","","","","","","","false","false","false","","" +"440db0","OE-IDX","AIRBUS","Airbus Industrie","A320-216 (W)","A320","","","L2J","Easyjet","EASY","EJU","U2","Macquarie Airfinance","","","","","2013-01-01","","","2x CFMI CFM56-5B6 engines","false","false","false","","" "a4ce34","N409BL","SEGUIN","Piper","PA-23-250","PA23","27-2174","","L2P","","","","","Arapahoe Flight Club Llc","","","2029-11-30","","","","","LYCOMING 0-540 SERIES","false","false","false","","" "0d08ae","2006","RAYTHEON","Raytheon Aircraft Company","T-6C+ Texan II","TEX2","PM-52","","L1T","","","","","Mexican Air Force","","","","","","","","","false","false","false","","" "a82c5b","N62582","FLEET","Fairchild","PT-19A M-62A","FA62","T41-757","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -369416,7 +369494,7 @@ o'reilly, Patrick","","2012-06-15","","","2003-01-01","","","1x ROTAX 912-ULS"," "a56b7d","N44858","PIPER","Piper","PA-28-161","P28A","28-7816032","","L1P","","","","","Klimple Wade","","","2028-12-31","","1977-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a21a9e","N2346Z","BEECH","Beech","23","BE23","M-65","","L1P","","","","","Southeast Equipment Llc","","","2028-05-31","","","","","LYCOMING 0-320 SERIES","false","false","false","","" "a05ea1","N1228S","","Schweizer","SGS 2-33A","GLID","213","","","","","","","Connecticut Soaring Association Inc","","","2030-03-31","","1971-01-01","","","NONE NONE","false","false","false","","" -"486402","PH-JEN","CIRRUS","","","SF50","","","L1J","","","","","","","","","","","","","","false","false","false","","" +"486402","PH-JEN","CIRRUS","Cirrus Design","","SF50","","","L1J","","","","","","","","","","","","","","false","false","false","","" "44033f","OE-HMR","DASSAULT","Dassault","Dassault Falcon 2000EX EASy","F2TH","152","","L2J","","","","","Tupack Verpackungen Gmbh","","","","","","","","","false","false","false","","" "a7c5b4","N60JF","CORBY","Fitzgerald John N Jr","CJ-1","CJ1","1","","L1P","","","","","Zorc Bill","","","2028-07-31","","","","","","false","false","false","","" "0d0a24","XA-UYK","ATR","Avions De Transport Regional","ATR 42 600","AT46","1211","","L2T","","TRANS-AEROMAR","TAO","","Aeromar","","","","","","","","","false","false","false","","" @@ -370657,7 +370735,7 @@ o'reilly, Patrick","","2012-06-15","","","2003-01-01","","","1x ROTAX 912-ULS"," "aac499","N793QS","BOMBARDIER","Bombardier Inc","BD-100-1A10","CL35","20636","","L2J","","EXECJET","EJA","","Netjets Sales Inc","","","2028-04-30","","2016-01-01","","","HONEYWELL AS907-2-1A","false","false","false","","" "a7d540","N60332","FLEET","Fairchild(howard)","M-62C(PT-23A)","FA62","225SL","","L1P","","","","","Gertsen Ronald H","","","2028-04-30","","1946-01-01","","","CONT MOTOR R670-SERIES","false","false","false","","" "acf7e0","N9347P","PIPER","Piper","PA-24-260","PA24","24-4846","","L1P","","","","","Bajema Rick W","","","2030-01-31","","1969-01-01","","","LYCOMING TI0-540 SER","false","false","false","","" -"395d6d","F-GXLN","","","","A337","","","","","","","","","","","","","","","","","false","false","false","","" +"395d6d","F-GXLN","AIRBUS","Airbus Industrie","A330-743L Beluga XL","A337","2027","","L2J","Airbus Transport International","BELUGA","BGA","4Y","","","2022-09-26","","","2022-01-01","2022-07-21","","2x RR Trent 772B-60","false","false","false","Beluga XL5","" "cd3f0a","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "4b0f14","HB-FSM","PILATUS","","","PC12","","","L1T","","","","","","","","","","","","","","false","false","false","","" "a860aa","N639RH","AERO (2)","Aero Vodochody","L-39","L39","232203","","L1J","","","","","Oklahoma Museum Of Flying","","","2027-09-30","","1982-01-01","","","IVCHENKO AL-25SERIES","false","false","false","","" @@ -371123,6 +371201,7 @@ o'reilly, Patrick","","2012-06-15","","","2003-01-01","","","1x ROTAX 912-ULS"," "c018a9","C-FJIU","CESSNA","Cessna Aircraft Company","180A (Cessna)","C180","32752","","L1P","","","","","Kyle Gordon Cameron","","2010-02-18","","","","","","","false","false","false","","" "a03df9","N1144F","WREN","Cessna","182","C182","33279","","L1P","","","","","Bandit Air Llc","","","2029-05-31","","1956-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "a58048","N4535","NATIONAL AERONAUTICS","Cassutt","IIIM","CASS","J-1","","L1P","","","","","Van Meter Alan P","","","2030-01-31","","","","","CONT MOTOR C90 SERIES","false","false","false","","" +"4cada8","EI-INC","AIRBUS","Airbus Industrie","A320-271N","A20N","11288","","L2J","Ita Airways","","","","Avolon","","","","","","","","2x PW PW1127G engines","false","false","false","","" "a9038e","N680DM","VAN'S","Daniel P Green","RV-7","RV7","001","","L1P","","","","","Green Daniel P","","","2029-12-31","","2014-01-01","","","LYCOMING IO-360 SERIES","false","false","false","","" "a0eeba","N1595W","BEECH","Beech","95-B55 (T42A)","BE95","TC-1448","","L2P","","","","","Hope John W","","","2027-04-30","","","","","CONT MOTOR I0-470 SERIES","false","false","false","","" "aa84e8","N777VE","","One Aviation","EA550","EA55","550-0283","","","","","","","Tvpx Ars Inc Trustee","","","","","","","","","false","false","false","","" @@ -373963,7 +374042,7 @@ o'reilly, Patrick","","2012-06-15","","","2003-01-01","","","1x ROTAX 912-ULS"," "a23fd1","N244KW","ROBINSON","Robinson Helicopter Company","R44 II","R44","14515","","H1P","","","","","Winter Karl Anthony","","","2029-07-31","","2022-01-01","","","LYCOMING IO-540-AE1A5","false","false","false","","" "a4a33e","N39826","BELLANCA","Bellanca","17-30A","BL17","73-30499","","L1P","","","","","Chardon Stephen A","","","2028-09-30","","1972-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "3e78b9","D-KKXL","","","","GLID","","","","","","","","","","","","","","","","","false","false","false","","" -"3d4678","D-EYYA","","","","BR23","","","","","","","","","","","","","","","","","false","false","false","","" +"3d4678","D-EYYA","","Brm Aero","Bristell B23","BR23","","","L1P","","","","","","","","","","","","","","false","false","false","","" "3c4b07","D-ABXG","AIRBUS","Airbus","Airbus A330 223","A332","802","","L2J","","AIR BERLIN","BER","","Air Berlin","","","","","","","","","false","false","false","","" "a1be69","N211ND","","Uav Factory Usa","PENGUIN C","","PNC 0053","","","","","","","Und Aerospace Foundation","","","2029-12-31","","","","","","false","false","false","","" "c81486","ZK-WWI","REDFERN","","","NPOR","","","L1P","","","","","","","","","","","","","","false","false","false","","" @@ -375167,7 +375246,7 @@ o'reilly, Patrick","","2012-06-15","","","2003-01-01","","","1x ROTAX 912-ULS"," "a9bf2f","N727ST","HOWARD (1)","Howard Aircraft","DGA-15P","DG15","1010","","L1P","","","","","Bakosh John M","","","2029-01-31","","1944-01-01","","","P & W R-985-AN-1","false","false","false","","" "49d479","OK-RUM","REIMS","","","C172","","","L1P","","","","","","","","","","","","","","false","false","false","","" "8a05a0","PK-BYI","REIMS","","","C172","","","L1P","","","","","","","","","","","","","","false","false","false","","" -"e49271","PR-AKG","ATR","","","AT76","","","L2T","","","","","","","","","","","","","","false","false","false","","" +"e49271","PR-AKG","ATR","Airbus","ATR-72","AT76","","","L2T","Azul Linhas Aéreas Brasileiras","Azul","AZU","AD","","","","","","","","","","false","false","false","","" "c0a785","C-ILLK","","Scout Paramotor Premier Consulting S.r.o","Carbon (SCOUT)","PARA","0541","","","","","","","Rodney Pieters","","2018-08-16","","","","","","","false","false","false","","" "3d0fd5","D-EEGB","BEECH","","","BE23","","","L1P","","","","","","","","","","","","","","false","false","false","","" "39c866","F-HSDG","MOONEY","Mooney","M.20K Model 231","M20T","25-0817","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -378807,6 +378886,7 @@ o'reilly, Patrick","","2012-06-15","","","2003-01-01","","","1x ROTAX 912-ULS"," "a82412","N6232T","REIMS","Cessna","150E","C150","15060932","","L1P","","","","","Forester Billyjoe O","","","2029-05-31","","1964-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "a9de43","N735GQ","WREN","Cessna","182Q","C182","18265416","","L1P","","","","","735gq Llc","","","2027-11-30","","1977-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "a40acb","N36JR","REIMS","Cessna","172S","C172","172S11204","","L1P","","","","","Gqm Aviation Llc","","","2029-08-31","","","","","LYCOMING IO-360-L2A","false","false","false","","" +"3c64b1","D-AIEQ","AIRBUS","Airbus Industrie","A321-271NX","A21N","11267","","L2J","Lufthansa","LUFTHANSA","DLH","LH","Lufthansa","","","","","","","","2x PW PW1133G engines","false","false","false","","" "ad58b0","N95916","TAYLOR-YOUNG","Taylorcraft","BC12-D","TAYB","8216","","L1P","","","","","Beachy Ronald","","","2029-11-30","","1946-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" "a5320f","N434AW","CANADAIR","Bombardier Inc","CL-600-2B19","CRJ2","7322","","L2J","","AIR WISCONSIN","AWI","","Air Wisconsin Airlines Llc","","","2029-07-31","","1999-01-01","","","GE CF34 SERIES","false","false","false","","" "a176f4","N1939S","REIMS","Cessna","172S","C172","172S9974","","L1P","","","","","Fallon Timothy","","","2028-10-31","","2005-01-01","","","LYCOMING IO-360-L2A","false","false","false","","" @@ -379702,6 +379782,7 @@ o'reilly, Patrick","","2012-06-15","","","2003-01-01","","","1x ROTAX 912-ULS"," "a00082","N1FC","IAI","Iai Ltd","GULFSTREAM G280","G280","2079","","L2J","","","","","Tvpx Ars Inc Trustee","","","2027-10-31","","2015-01-01","","","HONEYWELL AS907-2-1G","false","false","false","","" "43c154","ZA591","PANAVIA","Panavia","Tornado GR.4","TOR","BS034","","L2J","Royal Air Force","VORTEX","SHF","","Royal Air Force","","","","","","","","","false","false","false","","" "4851bc","PH-1HX","","","","ZZZZ","","","","","","","","","","","","","","","","","false","false","false","","" +"505f50","OM-M099","TOMARK","Tomark","SD-4 Viper LX","SD4","018","","L1P","","","","","Private Owner","","","","","","","","Rotax 912","false","false","false","","" "390b11","F-GCYR","REIMS","Reims/cessna","F172P","C172","2104","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a7fcfa","N6135R","CESSNA","Cessna","172RG","C72R","172RG0089","","L1P","","","","","Burke William J","","","2030-01-31","","1979-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" "a3a1ac","N333HJ","PIPER","Piper","PA-39","PA30","39-29","","L2P","","","","","Southern Aircraft Consultancy Inc Trustee","","","2028-02-29","","","","","LYCOMING IO-320 SERIES","false","false","false","","" @@ -385363,6 +385444,7 @@ o'reilly, Patrick","","2012-06-15","","","2003-01-01","","","1x ROTAX 912-ULS"," "399e8d","F-HHUN","","Schroeder Fire Balloons","G40/24 Hot Air Balloon","BALL","1202","","","","","","","Private","","","","","","","","","false","false","false","","" "a445e3","N3746T","PIPER","Piper","PA-28R-180","P28R","28R-30958","","L1P","","","","","Heinemann Daniel J","","","2030-03-31","","1968-01-01","","","LYCOMING I0360 SER","false","false","false","","" "a90b6d","N682J","JABIRU","Jabiru Usa Sport Aircraft Llc","J170-SP","JAB2","206","","L1P","","","","","Jpw Aviation Inc","","","2029-03-31","","2009-01-01","","","JABIRU 2200","false","false","false","","" +"3ffa4b","D-MVUS","","Flight Design Ctls","","","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a08a71","N134E","","U-fly-it Light Sport Acft Llc","CHALLENGER II","ULAC","CH2-0402-B-2212","","","","","","","Roark Thomas M","","","2028-02-29","","2004-01-01","","","ROTAX 503 DCDI","false","false","false","","" "aa939b","N7805P","PIPER","Piper","PA-24-250","PA24","24-3073","","L1P","","","","","N6760s Llc","","","2029-10-31","","1962-01-01","","","LYCOMING 0-540 SERIES","false","false","false","","" "a1f2c4","N2244C","CESSNA","Cessna","180","C180","30544","","L1P","","","","","Skywagon Aero Llc","","","2027-09-30","","","","","CONT MOTOR O-470 SERIES","false","false","false","","" @@ -386134,7 +386216,7 @@ o'reilly, Patrick","","2012-06-15","","","2003-01-01","","","1x ROTAX 912-ULS"," "7bbc74","21045","ILYUSHIN","Ilyushin","IL-76 MD","IL76","1033416524","","L4J","","","","","Chinese Air Force","","","","","","","","","false","false","false","","" "c81d73","ZK-SEB","COLEMILL","","","BE55","","","L2P","","","","","","","","","","","","","","false","false","false","","" "3945ca","F-GROK","","Cameron","N-65 Hot Air Balloon","BALL","4654","","","","","","","Private","","","","","","","","","false","false","false","","" -"3edb51","D-KYAB","","","","GLID","","","","","","","","","","","","","","","","","false","false","false","","" +"3edb51","D-KYAB","","Lange Aviation","Antares 20 E","GLID","","","","","","","","","","","","","","","","","false","false","false","","" "aabbf4","N791CF","UNC","Bell","UH-1H","UH1","68-16245","","H1T","","","","","Hagglund Carl D","","","2027-08-31","","","","","","false","false","false","","" "a052e6","N12RX","","Rockwell International","112","","270","","","","","","","Ortega Marcos Joaquin","","","2029-11-30","","1975-01-01","","","LYCOMING IO-360-C1D6","false","false","false","","" "a29f4c","N26813","TIGER","Gulfstream American Corp","AA-5A","AA5","AA5A0738","","L1P","","","","","Weingart Matthew S","","","2027-12-31","","1978-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" @@ -391468,6 +391550,7 @@ dunne, Alan","","2011-02-10","","","1958-01-01","","","1x CONTINENTAL MOTORS COR "a4e23c","N4134U","REIMS","Cessna","150D","C150","15060134","","L1P","","","","","Porterfield Tom","","","2028-10-31","","1963-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "009ab5","ZS-KCI","RAYTHEON","","","BE36","","","L1P","","","","","","","","","","","","","","false","false","false","","" "c05636","C-GGQV","CHRISTEN","Aviat Aircraft Inc.","A-1B (Christen)","HUSK","2371","","L1P","","","","","Malcolm Bachand","","2010-06-11","","","","","","","false","false","false","","" +"505c4c","OM-M666","BRM AERO","Brm Aero Bristell","NG-5","NG5","","","L1P","","","","","Private Owner","","","","","","","","Rotax 912","false","false","false","","" "a02536","N1083J","STINSON","Stinson","108-3","S108","108-4776","","L1P","","","","","Beerman William C","","","2028-01-31","","1948-01-01","","","FRANKLIN 6A4165 SERIES","false","false","false","","" "3d0a6a","D-ECES","WREN","","","C182","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a1b915","N21VS","NORTH AMERICAN","North American","T-6G","T6","168-622","","L1P","","","","","Schilleci Victor Iv","","","2030-04-30","","1950-01-01","","","P&W R1340 SERIES","false","false","false","","" @@ -396999,6 +397082,7 @@ kernan, Michaela","","2011-08-29","","","2004-01-01","","","1x ROTAX 912-UL","fa "3fdf5f","D-OWAH","","Thunder & Colt","AX.7-65SI Hot Air Balloon","BALL","2562","","","","","","","Private","","","","","","","","","false","false","false","","" "a553ff","N442W","RAYTHEON","Beech","A36","BE36","E-2356","","L1P","","","","","Hayden Stephen Lin","","","2029-12-31","","1987-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" "c09833","C-IFQO","ASAP","Canadian Ultralight Manufacturing Ltd.","CHINOOK PLUS 2 (Canadian Ultralight)","CHIN","02277X3","","L1P","","","","","Dwight Krislock","","2014-09-16","","","","","","","false","false","false","","" +"407be","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "a09f83","N13939","CESSNA","Cessna","177B","C177","17702477","","L1P","","","","","Diessner Daniel J","","","2029-08-31","","1976-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "c804a3","ZK-KVB","REIMS","","","C172","","","L1P","","","","","","","","","","","","","","false","false","false","","" "aa8d22","N7792P","PIPER","Piper","PA-24-250","PA24","24-3009","","L1P","","","","","Vab Aero Inc","","","2027-10-31","","1962-01-01","","","LYCOMING 0-540 SERIES","false","false","false","","" @@ -398270,6 +398354,7 @@ kernan, Michaela","","2011-08-29","","","2004-01-01","","","1x ROTAX 912-UL","fa "ac97f1","N910PA","TBM","Socata","TBM 700","TBM7","1205","","L1T","","","","","Alanlee Logistics Llc","","","2030-01-31","","2017-01-01","","","P&W CANADA PT6A66D","false","false","false","","" "c06fe5","C-GQJS","","Piper Aircraft Corporation","PA-28-161 (Piper)","","28-7716191","","","","","","","Fabio Gelsomini","","2016-08-30","","","","","","","false","false","false","","" "a974f6","N7082T","REIMS","Cessna","172","C172","46682","","L1P","","","","","Garrett Kasey L","","","2028-08-31","","","","","CONT MOTOR 0-300 SER","false","false","false","","" +"505e7d","OM-S507","VANESSA AIR","Jmb Aircraft","VL-3 Evolution","VL3","507","","L1P","","","","","Private Owner","","","","","","","","Rotax 915iS","false","false","false","","" "a956f6","N7000R","PIPER","Piper","PA-28-140","P28A","28-21693","","L1P","","","","","Jilek Peter Andrew","","","2028-01-31","","1966-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "ad322b","N9499A","CESSNA","Cessna","140A","C140","15320","","L1P","","","","","Gourdin Gordon O","","","2028-12-31","","","","","","false","false","false","","" "3d1a62","D-EIFY","RAYTHEON","","","BE33","","","L1P","","","","","","","","","","","","","","false","false","false","","" @@ -398967,6 +399052,7 @@ kernan, Michaela","","2011-08-29","","","2004-01-01","","","1x ROTAX 912-UL","fa "a58d32","N457MB","","","","ULAC","","","","","","","","","","","","","","","","","false","false","false","","" "a12c6f","N175H","","Huff Roger","HH FOX 4","","01-12-47-03","","","","","","","Knapp Keir D","","","2029-08-31","","2005-01-01","","","ROTAX SEE BOMBADIER","false","false","false","","" "ab915e","N8442L","PIPER","","","P32R","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"49b0a4","OK-2807","Schempp-Hirth","Schempp-hirth","Ventus c","","389","","","Ladislav Jozsa","","","","Ladislav Jozsa","","2019-12-12","","","1988-01-01","1988-01-01","","0","false","false","false","Glider","" "4052ff","G-CEZZ","FLIGHT DESIGN","P And M Aviation Ltd","FLIGHT DESIGN CTSW","FDCT","8326","","L1P","","","","","Private","","2012-05-16","","","2007-01-01","","","1 x ROTAX 912 ULS  ( WARP DRIVE ground adjustable pitch )
","false","false","false","","" "aca861","N91430","CESSNA","Cessna","180H","C180","18052080","","L1P","","","","","Jetceo Llc","","","2030-03-31","","1969-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "a21e53","N2356X","PIPER","Piper","PA-31T1","PA31","31T-8104003","","L2P","","","","","Pegasus Ii Llc","","","2029-05-31","","1980-01-01","","","P&W CANADA PT6A-60A","false","false","false","","" @@ -401344,7 +401430,7 @@ kernan, Michaela","","2011-08-29","","","2004-01-01","","","1x ROTAX 912-UL","fa "49c077","OK-QUA94","TL ULTRALIGHT","","","TL30","","","L1P","","","","","","","","","","","","","","false","false","false","","" "c03f71","C-FYAQ","CESSNA","Cessna Aircraft Company","180H (Cessna)","C180","18052015","","L1P","","","","","Andre Bouchard","","1986-06-16","","","","","","","false","false","false","","" "a7ff6d","N614US","VAN'S","Ronald S Jarrell","VANS RV-14A","RV14","140671","","L1P","","","","","Jarrell Ronald S","","","2028-03-31","","2021-01-01","","","LYCOMING YIO-390 SER","false","false","false","","" -"7c1c4f","VH-FVL","ATR","Atr - Gie Avions De Transport Regional","ATR72-212A","AT75","974","","L2T","","","","","Avation Airframe Holding Pte Ltd","","","","","2011-01-01","","","2x Pratt & Whitney Canada PW127M","false","false","false","","" +"7c1c4f","VH-FVL","ATR","Atr - Gie Avions De Transport Regional","ATR72-212A","AT75","974","","L2T","Aerlink","","","","Avation Airframe Holding Pte Ltd","","2021-11-20","","","2011-01-01","","","2x Pratt & Whitney Canada PW127M","false","false","false","","" "3e93e5","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "3d0dd1","D-EDMF","YAKIMA AEROSPORT","Piper","PA-18 150 Super Cub","PA18","18-8780","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "ae1fd0","11-72193","EUROCOPTER-KAWASAKI","Eurocopter","UH-72A Lakota","EC45","9453","","H2T","","","","","United States Army","","","","","","","","","false","false","false","","Reserved" @@ -405227,6 +405313,7 @@ kernan, Michaela","","2011-08-29","","","2004-01-01","","","1x ROTAX 912-UL","fa "7c6394","VH-TYE","COLEMILL","","","BE35","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a5354b","N4347D","PIPER","Piper","PA-28-161","P28A","28-8416081","","L1P","","","","","Martin Aviation Llc","","","2027-09-30","","1984-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a3bc9d","N34SZ","FUJI","Beech","A45","T34P","53-4120","","L1P","","","","","Whitt Ronald D","","","2028-11-30","","1953-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" +"452143","LZ-FSC","AIRBUS","Airbus Industrie","A321-231","A321","","1711","L2J","Fly2sky","","","","Aerovista","","","","","","","","2x IAE V2533-A5 engines","false","false","false","","" "a24031","N244PS","CANADAIR","Bombardier","CRJ 200LR","CRJ2","7912","","L2J","","","","","American Eagle","","","","","","","","","false","false","false","","" "4b1a29","HB-JXP","AIRBUS","","A320-214 (W)","A320","","","L2J","Easyjet Switzerland","TOPSWISS","EZS","DS","","","","","","","","","","false","false","false","","" "c827d6","ZK-VNX","VAN'S","","","RV14","","","L1P","","","","","","","","","","","","","","false","false","false","","" @@ -406411,7 +406498,7 @@ kernan, Michaela","","2011-08-29","","","2004-01-01","","","1x ROTAX 912-UL","fa "a35fcf","N3162X","REIMS","Cessna","150G","C150","15064562","","L1P","","","","","Schilling Mark F","","","2028-08-31","","1966-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "a2fc70","N2916W","PIPER","","","PA44","","","L2P","","","","","","","","","","","","","","false","false","false","","" "a54282","N438TC","","Thunder & Colt Airborne Amer","COLT 69A","","2259USA","","","","","","","Conrad David G","","","2027-04-30","","1992-01-01","","","NONE NONE","false","false","false","","" -"440096","OE-IVR","AIRBUS","","","A320","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"440096","OE-IVR","AIRBUS","","A320-214","A320","","","L2J","Easyjet","EASY","EZY","U2","","","","","","","","","","false","false","false","","" "a0a0c7","N14EM","PAI","Marshall Ernest H","LANCAIR 235","LNC2","EM1","","L1P","","","","","Davis Kerry N","","","2029-11-30","","1992-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a46af8","N384JK","IAI","Israel Aircraft Industries","GULFSTREAM 200","GALX","069","","L2J","","","","","Travelconfirm Aerolease Inc","","","2030-01-31","","2002-01-01","","","P&W CANADA PW306A","false","false","false","","" "acc99a","N923D","STINSON","Stinson","108-2","S108","108-2923","","L1P","","","","","Musick Terry G","","","2028-02-29","","1947-01-01","","","FRANKLIN 6A4165 SERIES","false","false","false","","" @@ -407096,7 +407183,7 @@ kernan, Michaela","","2011-08-29","","","2004-01-01","","","1x ROTAX 912-UL","fa "ac8c26","N9074W","","May Lemuel & May Tim","LEZA-LOCKWOOD AIRCAM","ULAC","AC-094","","","","","","","May Tim","","","2029-11-30","","2001-01-01","","","BOMBARDIER ROTAX (ALL)","false","false","false","","" "7c6a53","VH-VAD","RAYTHEON","Hawker Beechcraft Corp.","B200C King Air","BE20","BL-154","","L2T","Pel-air Aviation","","","","Air Ambulance Victoria","","2011-04-04","","","2010-01-01","","","","false","false","false","Operated for Air Ambulance Victoria","Light (< 15500 lbs)" "a53c0a","N4362D","WAGAERO","Evans Richard","WAG AERO ACRO II","J3","780","","L1P","","","","","Brinkerhoff Jeffrey C","","","2028-01-31","","1992-01-01","","","LYCOMING HIO-360 SER","false","false","false","","" -"356341","T.24-01","AIRBUS","","","A332","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"356341","T.24-01","AIRBUS","","","A332","T.24-01","","L2J","Spanish Air Force","AIRMIL","AME","","Spanish Air Force","","2015-12-31","","","","","","","false","false","false","","" "a844e7","N6318D","REIMS","","","C172","","","L1P","","","","","","","","","","","","","","false","false","false","","" "ac6e26","N90PP","REIMS","Cessna","A150L","C150","A1500419","","L1P","","","","","N90pp Llc","","","2030-01-31","","1973-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "a6197b","N492WA","PILATUS","Pilatus","PC-12/45","PC12","492","","L1T","","","","","Rgp Aviation Llc","","","2027-05-31","","2003-01-01","","","P&W CANADA PT6A-67B","false","false","false","","" @@ -407472,7 +407559,7 @@ macsweeney, Seamus","","2007-12-20","","","2001-01-01","","","1x ROTAX 582","fal "a5a7c0","N46343","QUICKIE","Miller Robert","SUPER QUICKIE Q1","QUIC","RWM-SQ1","","L1P","","","","","Kilbarger Shawn R","","","2028-07-31","","2005-01-01","","","ROTAX SEE BOMBADIER","false","false","false","","" "40578b","G-DCTO","","Slingsby Sailplanes Ltd","SLINGSBY T59D Kestrel","GLID","1816","","","","","","","Private","","2008-01-09","","","1973-01-01","","","0 x NO ENGINES
","false","false","false","","" "a7a182","N591E","RACA","Md Helicopters Inc","369E","H500","0591E","","H1T","","","","","Atomic Eft Llc","","","2030-04-30","","2008-01-01","","","ROLLS-ROYC 250-C20B","false","false","false","","" -"3c4a05","D-ABPE","BOEING","","","B789","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"3c4a05","D-ABPE","BOEING","The Boeing Company","787-9","B789","","","L2J","","","","","","","","","","","","","","false","false","false","","" "c81384","ZK-BEN","OGMA","","","DH82","","","L1P","","","","","","","","","","","","","","false","false","false","","" "3d2776","D-ENES","AQUILA","Aquila","AT-01 A-210","A210","AT01-153","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "39bcf7","F-HPHX","RAYTHEON","","","H25B","","","L2J","","","","","","","","","","","","","","false","false","false","","" @@ -409500,6 +409587,7 @@ macsweeney, Seamus","","2007-12-20","","","2001-01-01","","","1x ROTAX 582","fal "a957ca","N7006T","REIMS","Cessna","172","C172","46606","","L1P","","","","","Fraas Stephan H","","","2027-09-30","","1959-01-01","","","CONT MOTOR 0-300 SER","false","false","false","","" "c09700","C-IFET","","William Armitage","PARASCENDER II (Parascender)","PARA","220086","","","","","","","William Martin Armitage","","1997-08-22","","","","","","","false","false","false","","" "a4d960","N411RT","PIPER","Piper","PA-28R-200","P28R","28R-7235301","","L1P","","","","","Althouse Jerry L","","","2028-05-31","","1972-01-01","","","LYCOMING I0360 SER","false","false","false","","" +"4b3aca","HB-WGW","MAGNI","Magni Gyro Srl","M16","MM16","16234634","","G1P","Verein Magni","","","","Verein Magni","","2023-08-10","","","2023-01-01","","","1x BRP-ROTAX GMBH & CO KG, ROTAX 914 UL2","false","false","false","","" "448a6a","OO-BSJ","","Thunder & Colt","AX.3-17/5C Sky Chariot","BALL","279","","","","","","","Private","","","","","","","","","false","false","false","","" "a2cf95","N280SK","HARBIN","","","E145","","","L2J","","","","","","","","","","","","","","false","false","false","","" "a647e8","N5033T","CESSNA","Cessna","T182T","C82S","T18208454","","L1P","","","","","33 Tango Llc","","","2030-04-30","","2005-01-01","","","LYCOMING TI0-540 SER","false","false","false","","" @@ -411079,6 +411167,7 @@ macsweeney, Seamus","","2007-12-20","","","2001-01-01","","","1x ROTAX 582","fal "504e43","ER-BBJ","BOEING","Boeing","747 412F","B744","26558","","L4J","","","","","Aerotranscargo","","","","","","","","","false","false","false","","" "009380","ZS-HJJ","PANHA","Bell","206B Jet Ranger III","B06","3152","","H1T","","","","","Private","","","","","","","","","false","false","false","","" "c02bf1","C-FQQQ","LANCAIR","Kevin Ruark","LANCAIR IV-P (Lancair)","LNP4","LIV-428","","L1T","","","","","Internetworks Ltd.","","2011-07-15","","","","","","","false","false","false","","" +"3ff7d5","D-MHEK","","Jmb Aircraft","VL-3 Evolution","","","","L1P","","","","","","","","","","","","","","false","false","false","","" "e20063","LV-S048","TECNAM","","","ASTO","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a6869a","N52AE","PANHA","Bell Helicopter Textron","206L-1","B06","45758","","H1T","","","","","Air Evac Ems Inc","","","2028-09-30","","","","","","false","false","false","","" "3a266d","F-OJTN","AIRBUS","Airbus","A340 313X","A343","395","","L4J","","TAHITI AIRLINES","THT","","Air Tahiti Nui","","","","","","","","","false","false","false","","" @@ -411991,7 +412080,7 @@ macsweeney, Seamus","","2007-12-20","","","2001-01-01","","","1x ROTAX 582","fal "ac87d0","N9060B","CHAMPION","Champion","7FC","CH7A","7FC-148","","L1P","","","","","Waite Myron A","","","2028-01-31","","1958-01-01","","","CONT MOTOR C90 SERIES","false","false","false","","" "c01848","C-FJFB","PIPER","Piper Aircraft Corp.","PA-12X (Piper)","PA12","12 407X","","L1P","","","","","Carol Gaouette","","2014-02-26","","","","","","","false","false","false","","" "a0e508","N157JR","RAYTHEON","Beech","58","BE58","TH-1639","","L2P","","","","","Ridge Care Aviation Llc","","","2029-02-28","","1991-01-01","","","CONT MOTOR IO-550 SERIES","false","false","false","","" -"505c23","OM-PAC","WREN","Reims/cessna","F182Q Skylane","C182","0102","","L1P","","","","","Private","","","","","","","","","false","false","false","","" +"505c23","OM-PAC","WREN","Reims-cessna","F182Q Skylane","C182","F18200102","","L1P","Compact Skydive","","","","Private Owner","","1979-01-01","","","","","","Continental Motors","false","false","false","","" "a7dbcd","N605WG","HARBIN","Embraer","EMB-135BJ","E35L","14500980","","L2J","","","","","Tvpx Aircraft Solutions Inc Trustee","","","2027-09-30","","2007-01-01","","","ROLLS-ROYC AE 3007A1E","false","false","false","","" "392eeb","F-GLXL","SUD","","","LAMA","","","H1T","","","","","","","","","","","","","","false","false","false","","" "3d0a41","D-ECDD","REIMS","Reims/cessna","FR172G Rocket","C172","0199","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -412209,7 +412298,7 @@ macsweeney, Seamus","","2007-12-20","","","2001-01-01","","","1x ROTAX 582","fal "a8945d","N652CC","CESSNA","Cessna","650","C650","650-7107","","L2J","","","","","Su-n16 Llc","","","2027-10-31","","1999-01-01","","","GARRETT TFE731 SERIES","false","false","false","","" "c08df4","C-IBTR","","Cascade Ultralites Inc.","KASPERWING 1-80B (Cascade Ultralites)","ULAC","TC022018","","","","","","","Donald E Nataros","","1992-12-08","","","","","","","false","false","false","","" "c81a74","ZK-BRI","BRISTOL","Bristol","F.2B Fighter","BFIT","7434","","L1P","","","","","The Vintage Aviator Limited","","","","","","","","","false","false","false","","" -"71d91d","969","KOREA AEROSPACE","","","SURN","","","H2T","","","","","","","","","","","","","","false","false","false","","" +"71d91d","969","KOREA AEROSPACE","Korea Aerospace Industries","KUH-1P(CHAMSURI)","SURN","","","H2T","Korea National Police Agency","","","","Korea National Police Agency","","","","","","","","GE T700-701K","false","false","false","","" "3aab49","F-MGAH","WESTLAND","","","GAZL","","","H1T","","","","","","","","","","","","","","false","false","false","","" "a05cf4","N122UT","","Ultramagic Sa","M-130","","130/62","","","","","","","Pacific Rim Adventures Inc","","","2029-11-30","","2008-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" "3d2e66","D-EPVA","PIPER","Piper","PA-28 180 Cherokee","P28A","28-7305352","","L1P","","","","","Private","","","","","","","","","false","false","false","","" @@ -417783,6 +417872,7 @@ macsweeney, Seamus","","2007-12-20","","","2001-01-01","","","1x ROTAX 582","fal "401f4e","G-BIVA","ROBIN","Avions Pierre Robin","PIERRE ROBIN R2112 Alpha","R200","137","","L1P","","","","","Private","","2015-09-18","","","1978-01-01","","","1 x LYCOMING O-235-L2A  ( SENSENICH 72CKS6-0-56 )
","false","false","false","","" "a8a25a","N6555F","REIMS","Cessna","150F","C150","15063155","","L1P","","","","","Thompson Jeffrey L","","","2029-11-30","","","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "c04ec7","C-GDVQ","PIPER","Piper Aircraft Corporation","PA-28-140 (Piper)","P28A","287625129","","L1P","","","","","David G Cochrane","","2018-07-12","","","","","","","false","false","false","","" +"a319","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "ad81db","N97FT","GULFSTREAM AEROSPACE","Gulfstream Aerospace","Gulfstream Aerospace G550","GLF5","5498","","L2J","","","","","Jet Edge","","","","","","","","","false","false","false","","" "3ef275","D-4574","","Schempp-hirth","Discus CS","GLID","126CS","","","","","","","Private","","","","","","","","","false","false","false","","" "aa64b6","N769TX","CIRRUS","","","S22T","","","L1P","","","","","","","","","","","","","","false","false","false","","" @@ -420327,6 +420417,7 @@ macsweeney, Seamus","","2007-12-20","","","2001-01-01","","","1x ROTAX 582","fal "781dbc","B-729U","REIMS","","","C172","","","L1P","","","","","","","","","","","","","","false","false","false","","" "ade05c","N99310","MOONEY","","","ERCO","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a36c08","N32AS","","","","GLID","","","","","","","","","","","","","","","","","false","false","false","","" +"3c7a4b","D-ANRK","AIRBUS","Airbus Industrie","A330-941","A339","2040","","L2J","Condor Flugdienst","CONDOR","CFG","DE","Condor","","","","","2023-01-01","","","2x RR Trent 7000-72 engines","false","false","false","","" "a277c2","N2581S","","Balloon Works","FIREFLY 7-15","BALL","F7-795","","","","","","","Saul Garrett M","","","2028-01-31","","","","","NONE NONE","false","false","false","","" "c04c29","C-GCVW","VAN'S","Thomas Jones","RV 7 (Van'S)","RV7","71466","","L1P","","","","","Darren Scarlett","","2010-08-20","","","","","","","false","false","false","","" "ac5fec","N897GA","TIGER","American General Acft Corp","AG5B","AA5","10076","","L1P","","","","","Dutton Robert A","","","2029-02-28","","1991-01-01","","","LYCOMING O-360-A4K","false","false","false","","" @@ -422230,7 +422321,7 @@ shortt, N","","2007-03-28","","","1963-01-01","","","0x ","false","false","fals "ab384a","N822AA","DASSAULT","Dassault/sud","FAN JET FALCON","FA20","195","","L2J","Usa Jet Airlines","JET USA","JUS","U7","Usa Jet Airlines Inc","","","2029-07-31","","1969-01-01","","","GE CF700 SERIES","false","false","false","","" "a7cdcb","N6013V","CESSNA","Cessna","182T","C82T","18281798","","L1P","","","","","Bmf Resources Inc","","","2029-03-31","","2006-01-01","","","LYCOMING IO-540-AB1A5","false","false","false","","" "a14013","N18TY","VAN'S","Yeager Thomas H","RV8","RV8","80364","","L1P","","","","","Yeager Thomas H","","","2027-06-30","","2017-01-01","","","LYCOMING YO-360 SERIES","false","false","false","","" -"440325","OE-GBR","CESSNA","Cessna","Citation XLS","C56X","560-5749","","L2J","","","","","Abc Bedarfsflug Gmbh","","","","","","","","","false","false","false","","" +"440325","OE-GBR","CESSNA","Cessna","Citation XLS","C56X","560-5749","","L2J","Abc Bedarfsflug Gmbh","","","","Signa","","","","","","","","","false","false","false","","" "a12213","N172RA","REIMS","Cessna","172S","C172","172S9919","","L1P","","","","","Fjiro Aviation N172ra Llc","","","2028-02-29","","2005-01-01","","","LYCOMING IO-360-L2A","false","false","false","","" "780936","B-6428","AIRBUS","Airbus","A319 115","A319","5330","","L2J","","CHINA EASTERN","CES","","China Eastern Airlines","","","","","","","","","false","false","false","","" "710040","HZ-AKN","BOEING","Boeing","777 268ER","B772","28357","","L2J","","SAUDIA","SVA","","Saudi Arabian Airlines","","","","","","","","","false","false","false","","" @@ -422722,6 +422813,7 @@ shortt, N","","2007-03-28","","","1963-01-01","","","0x ","false","false","fals "c07af1","C-GUOM","REIMS","Cessna Aircraft Company","172N (Cessna)","C172","17268234","","L1P","","","","","Keven Jalbert","","2017-11-29","","","","","","","false","false","false","","" "c1e554","SERV","","","","SERV","","","","","","","","","","","","","","","","","false","false","false","","" "ad152c","N942G","SCHLEICHER","Alexander Schleicher Gmbh & Co","ASW 27-18","AS29","29043","","L1P","","","","","Incorpfin Ltd","","","2029-07-31","","","","","NONE NONE","false","false","false","","" +"a03273","N1111P","GULFSTREAM AEROSPACE","Gulfstream","Gulfstream V","GLF5","536","","L2J","Clay Lacy Aviation","CLAY-LACY","CLY","","Clay Lacy","","","","","","","","","false","false","false","","" "390d04","F-GDIE","REIMS","Reims/cessna","F152","C152","1898","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "e80b2e","CC-DHI","RAYTHEON","","","BE30","","","L2T","","","","","","","","","","","","","","false","false","false","","" "a35fe7","N3163L","AIR TRACTOR","Air Tractor Inc","AT-250","AT2P","2500491","","L1P","","","","","Kubecka Donald","","","2028-04-30","","1983-01-01","","","P&W R-985 SERIES","false","false","false","","" @@ -429824,7 +429916,7 @@ duggan, Helena","","2012-03-22","","","1987-01-01","","","1x WALTER MIKRON 2","f "a974cb","N7081K","PAI","Torrance Thomas J","LANCAIR 320","LNC2","191","","L1P","","","","","Frangos Legal Llc","","","2027-04-30","","1995-01-01","","","LYCOMING I0360 SER","false","false","false","","" "a0453c","N11628","REIMS","Cessna","150L","C150","15075582","","L1P","","","","","Monon Bell Aviation Llc","","","2028-01-31","","1974-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "c0583c","C-GHKT","YAKIMA AEROSPORT","Piper Aircraft Corporation","PA-18-150 (Piper)","PA18","18 7409141","","L1P","","","","","Chad Wiebe","","2014-07-17","","","","","","","false","false","false","","" -"505e73","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" +"505e73","OM-TST","TOMARK","Tomark","SD-4 Viper","SD4","","","L1P","","","","","Private Owner","","","","","","","","Rotax 912","false","false","false","","" "390a34","F-GCRU","ROBIN","Robin","DR.400 120 Petit Prince","DR40","1481","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a2c5c5","N278SA","REIMS","Cessna","177RG","C77R","177RG0571","","L1P","","","","","Southern Aircraft Consultancy Inc Trustee","","","2028-01-31","","1974-01-01","","","LYCOMING IO-360-A1B6D","false","false","false","","" "a68ff6","N5217D","REIMS","Cessna","172N","C172","17272454","","L1P","","","","","Optima Aviation Llc Dba","","","2028-02-29","","1979-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" @@ -429979,6 +430071,7 @@ duggan, Helena","","2012-03-22","","","1987-01-01","","","1x WALTER MIKRON 2","f "781db5","B-329T","AIRBUS","","","A20N","","","L2J","","","","","","","","","","","","","","false","false","false","","" "ade055","N9931T","WREN","","","C182","","","L1P","","","","","","","","","","","","","","false","false","false","","" "38d9bb","F-CHAI","","","","GLID","","","","","","","","","","","","","","","","","false","false","false","","" +"3c7a44","D-ANRD","AIRBUS","Airbus Industrie","A330-941","A339","1972","","L2J","Condor Flugdienst","CONDOR","CFG","DE","Condor","","","","","2023-01-01","","","2x RR Trent 7000-72 engines","false","false","false","","" "a4715c","N3858Q","REIMS","Cessna","172L","C172","17259958","","L1P","","","","","Pylant Morgan","","","2030-01-31","","1971-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a31f02","N30WW","THORP","Williams William F","THORP S-18","T18","1","","L1P","","","","","Hr Air Llc","","","2029-05-31","","1994-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "a1e099","N22VX","RAYTHEON","Beech","58P","BE58","TJ-171","","L2P","","","","","Butz Michael Patrick","","","2027-05-31","","1978-01-01","","","CONT MOTOR TSIO 520SER","false","false","false","","" @@ -432471,7 +432564,7 @@ walsh, Michael","","2007-03-28","","","1960-01-01","","","0x ","false","false", "a51899","N4274W","","Aero Sp Z O O","AT-4 LSA","","AT4-013","","","","","","","Plane And Simple Llc","","","2027-04-30","","2007-01-01","","","ROTAX 912ULS SERIES","false","false","false","","" "a5e75a","N48MG","MONNETT","Martelet Ronald G","MONI","MONI","144","","L1P","","","","","Sniegocki David F","","","2028-01-31","","1993-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" "adaff0","N981MB","RAYTHEON","","","BE36","","","L1P","","","","","","","","","","","","","","false","false","false","","" -"a07fec","N131LK","GULFSTREAM AEROSPACE","Gulfstream Aerospace","GV-SP (G550)","GLF5","5266","","L2J","","","","","Bank Of Utah Trustee","","","2029-08-31","","2010-01-01","","","ROLLS DEUT BR700-710C411","false","false","false","","" +"a07fec","N131LK","GULFSTREAM AEROSPACE","Gulfstream Aerospace","GV-SP (G550)","GLF5","5266","","L2J","","","","","Bank Of Utah Trustee","","2015-01-22","2029-08-31","","2010-01-01","","","ROLLS DEUT BR700-710C411","false","false","false","","" "ad8ad1","N9718E","BELLANCA","","","BL17","","","L1P","","","","","","","","","","","","","","false","false","false","","" "3965e4","F-GZPE","PIAGGIO","Piaggio","P-180 Avanti","P180","1064","","L2T","Pan Europeenne Air Service","","PEA","","Pan Europeenne Air Service","","","","","","","","","false","false","false","","" "aa080f","N7454P","PIPER","Piper","PA-24","PA24","24-2644","","L1P","","","","","Creation Industries Llc","","","2030-04-30","","1961-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" @@ -432526,7 +432619,7 @@ walsh, Michael","","2007-03-28","","","1960-01-01","","","0x ","false","false", "a66a60","N512RM","LANCAIR","Smooth Landing Llc","EVOLUTION","EVOT","043","","L1T","","","","","Smooth Landing Llc","","","2029-02-28","","2013-01-01","","","P&W CANADA PT6A-135","false","false","false","","" "ac8446","N9051M","CESSNA","Cessna","180H","C180","18052151","","L1P","","","","","Grant Rory C","","","2029-05-31","","1970-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "adf06d","N998AT","BOEING","Boeing","Boeing 717-2BD","B712","55142","","L2J","","DELTA","DAL","","Delta Air Lines","","","","","","","","","false","false","false","","No ADS-B Emitter Category Information" -"7c6273","VH-TQD","DE HAVILLAND CANADA","Bombardier","DHC-8 315Q","DH8C","598","","L2T","","JETSTAR","JST","","Jetstar Airways","","","","","","","","","false","false","false","","" +"7c6273","VH-TQD","DE HAVILLAND CANADA","Bombardier","DHC-8 315Q","DH8C","598","","L2T","Qantaslink","QLINK","QLK","QF","Qantas","","","","","","","","","false","false","false","","" "a60e9b","N49JV","VAN'S","","","RV6","","","L1P","","","","","","","","","","","","","","false","false","false","","" "485301","PH-GGY","BOEING","Boeing","Boeing 737NG 8EH/W","B738","37599","","L2J","","TRANSAVIA","TRA","","Transavia","","","","","","","","","false","false","false","","" "a21705","N2337U","PIPER","Piper","PA-28-236","P28B","28-7911300","","L1P","","","","","One Niner Right Llc","","","2029-05-31","","1979-01-01","","","LYCOMING 0-540 SERIES","false","false","false","","" @@ -438191,6 +438284,7 @@ walsh, Michael","","2007-03-28","","","1960-01-01","","","0x ","false","false", "aafbb8","N80688","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "148107","RA-33031","SHIJIAZHUANG","Antonov","An-2 R","AN2","1G218-18","","L1P","","","","","Barkol Airlines","","","","","","","","","false","false","false","","" "a0eb9b","N15898","","Rearwin","8500","","478","","","","","","","Andrews Leon V","","","2029-10-31","","","","","LEBLOND 70 SERIES","false","false","false","","" +"49d53f","OK-GTX","IAI","Gulfstream","Gulfstream G280","G280","","2253","L2J","Eclair Aviation","ECLAIR","ECC","","Eclair","","","","","","","","","false","false","false","","" "39d193","F-HUMT","LEONARDO","Agustawestland","AW.139","A139","41505","","H2T","","","","","Heli-union Sa","","","","","","","","","false","false","false","","" "4401e8","OE-LQC","AIRBUS","","","A319","","","L2J","","","","","","","","","","","","","","false","false","false","","" "a525d4","N4302Z","YAKIMA AEROSPORT","Piper","PA-18-150","PA18","18-8611","","L1P","","","","","Sportsmans Air Service Inc","","","2029-03-31","","1967-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" @@ -440393,6 +440487,7 @@ walsh, Michael","","2007-03-28","","","1960-01-01","","","0x ","false","false", "a730cb","N56202","PIPER","Piper","PA-28-180","P28A","28-7305551","","L1P","","","","","Kunze Paul C","","","2028-02-29","","1973-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "a50580","N42202","WREN","Cessna","182L","C182","18258895","","L1P","","","","","Palmer Charles L","","","2027-04-30","","1968-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "a9b364","N724LB","","","","BALL","","","","","","","","","","","","","","","","","false","false","false","","" +"4cc56e","TF-PPF","AIRBUS","","A320neo","A20N","11344","","L2J","Play","Player","FPY","OG","","","2023-04-11","","","","2023-03-16","","","false","false","false","","" "a5fdd5","N4852L","PIPER","Piper","PA-28-180","P28A","28-4201","","L1P","","","","","Mohle Darren H","","","2028-10-31","","1967-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "384501","F-BRIB","PIPER","Piper","PA-28 235 Cherokee","P28B","28-10583","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a0ad51","N1426J","ROCKWELL","Rockwell International","112A","AC11","426","","L1P","","","","","Zimmerman Shawn M","","","2030-01-31","","1975-01-01","","","LYCOMING I0360 SER","false","false","false","","" @@ -442169,6 +442264,7 @@ walsh, Michael","","2007-03-28","","","1960-01-01","","","0x ","false","false", "a207a1","N23RC","SNOBIRD","Rotory Club Llc","SNOBIRD ADVENTURER 6","SNAD","132","","G1P","","","","","Rotary Club Llc","","","2027-07-31","","2020-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" "4bd094","TC-TDT","REIMS","Cessna","172Q Cutlass","C172","17275882","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "c02ed6","C-FRTD","YAKIMA AEROSPORT","Piper Aircraft Corporation","PA-18-150 (Piper)","PA18","18-7449","","L1P","","","","","2023604 Ontario Inc.","","2003-06-03","","","","","","","false","false","false","","" +"4bb294","TC-LTT","AIRBUS","Airbus Industrie","A321-271NX","A21N","","","L2J","Turkish Airlines","TURKISH","THY","TK","Smbc, Sbi S7 Airlines Ntu","","","","","","","","2x PW PW1133G engines","false","false","false","","" "a54025","N43749","TAYLOR-YOUNG","Taylorcraft","BC12-D","TAYB","7408","","L1P","","","","","Ven Horst Joe J","","","2029-02-28","","1946-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" "aa62c5","N7688W","PIPER","Piper","PA-28-180","P28A","28-1679","","L1P","","","","","Burns Joyce A","","","2029-07-31","","1964-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "a92723","N6891B","","Piper","PA-18S-150","","18-5080","","","","","","","Schachle Theodore A","","","2030-02-28","","","","","LYCOMING 0-320 SERIES","false","false","false","","" @@ -442992,7 +443088,7 @@ walsh, Michael","","2007-03-28","","","1960-01-01","","","0x ","false","false", "e48421","PR-PFN","HARBIN","Embraer","ERJ-145 LR","E145","145002","","L2J","","","","","Brazilian Federal Police","","","","","","","","","false","false","false","","" "a04b68","N118RF","CESSNA","Cessna","208B","C208","208B0574","","L1T","","","","","Randigo Llc","","","2028-01-31","","1996-01-01","","","P&W CANADA PT6A-114A","false","false","false","","" "868da9","JA7713","ROBINSON","Robinson","R22 Beta","R22","0584","","H1P","","","","","Private","","","","","","","","","false","false","false","","" -"505c2c","OM-S177","","","","ULAC","","","","","","","","","","","","","","","","","false","false","false","","" +"505c2c","OM-S177","","Blackshape","Prime","ULAC","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a954a5","N700AY","TBM","Socata","TBM 700","TBM7","191","","L1T","","","","","Kellman Act Services Inc","","","2029-12-31","","2001-01-01","","","P&W PT6A SER","false","false","false","","" "a68daf","N521LR","CANADAIR","Bombardier Inc","CL-600-2C10","CRJ7","10261","","L2J","United Airlines","UNITED","UAL","UA","Wells Fargo Trust Co Na Trustee","","","2028-02-29","","2006-01-01","","","GE CF34-8C5B1","false","false","false","","No ADS-B Emitter Category Information" "c03816","C-FVGF","ATR","Aerospatiale - Aeritalia","ATR 42-300 (Aerospatiale)","AT43","119","","L2T","","AIR NORTH","ANT","","Air North Charter & Training Ltd","","2016-09-28","","","","","","","false","false","false","","" @@ -445472,7 +445568,7 @@ walsh, Michael","","2007-03-28","","","1960-01-01","","","0x ","false","false", "a13eec","N18GC","SEGUIN","","","PA23","","","L2P","","","","","","","","","","","","","","false","false","false","","" "a6453b","N503BN","CIRRUS","Cirrus Design Corp","SR22","SR22","1276","","L1P","","","","","Allegrezza Fred","","","2030-01-31","","2005-01-01","","","CONT MOTOR IO-550 SERIES","false","false","false","","" "448dc1","OO-CNA","REIMS","Reims/cessna","F150M","C150","1198","","L1P","","","","","Private","","","","","","","","","false","false","false","","" -"32005d","MM82055","LEONARDO","","","A169","","","H2T","","","","","","","","","","","","","","false","false","false","","" +"32005d","MM82055","LEONARDO","Leonardo Helicopters","","A169","","","H2T","","","","","Italian Guardia Di Finanza","","","","","","","","","false","false","false","","" "a7129f","N555GL","GULFSTREAM AMERICAN","Grumman","GIII","GLF3","403","","L2J","","","","","Ajeton Inc","","","","","","","","","false","false","false","","" "ac2036","N8800J","PIPER","","","P28A","","","L1P","","","","","","","","","","","","","","false","false","false","","" "adda67","N992DL","MCDONNELL DOUGLAS","Mcdonnell Douglas","DC-9 88","MD88","53344","","L2J","","DELTA","DAL","","Delta Air Lines","","","","","","","","","false","false","false","","" @@ -446069,7 +446165,7 @@ walsh, Michael","","2007-03-28","","","1960-01-01","","","0x ","false","false", "c0753d","C-GSKI","LOT","Eurocopter","AS 350 B-2 (Aerospatiale)","AS50","3377","","H1T","","","","","Blackcomb Helicopters Limited Partnership, By Its General Partner, Blackcomb Helicopters Ltd","","2007-09-25","","","","","","","false","false","false","","" "aaad4b","N7873C","PIPER","Piper Aircraft Inc","PA46-500TP","P46T","4697378","","L1T","","","","","Flying Goat Llc","","","2029-05-31","","","","","","false","false","false","","" "c0573d","C-GHAY","VAN'S","Eustace G. Bowhay","RV-6 (Van'S)","RV6","20383","","L1P","","","","","Fred Von Hardenberg","","2003-10-22","","","","","","","false","false","false","","" -"505d74","OM-JGA","TOMARK","","","SD4","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"505d74","OM-JGA","TOMARK","Tomark","SD-4 Viper","SD4","30790","","L1P","Private Owner","","","","","","","","","","","","Rotax 912","false","false","false","","" "ae0b93","83-23925","WESTLAND","","","H60","","","H2T","","","","","","","","","","","","","","false","false","false","","" "a08202","N1315U","REIMS","Cessna","172M","C172","17267004","","L1P","","","","","Mcgonagill Billy D","","","2030-01-31","","1976-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a0263d","N109BA","RAYTHEON","Beech","F33A","BE33","CE-1658","","L1P","","","","","Ball Edward C Ii","","","2028-12-31","","1992-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" @@ -450673,7 +450769,7 @@ walsh, Michael","","2007-03-28","","","1960-01-01","","","0x ","false","false", "a208b8","N230CF","LOCKHEED","Canadair","T-33","T33","21024","","L1J","","","","","Dillon Flight Test","","","2030-04-30","","1953-01-01","","","ROLLS-ROYC NENE","false","false","false","","" "ac4ca7","N8919J","PIPER","Piper","PA-28-180","P28A","28-2935","","L1P","","","","","Kelly Kevin R","","","2028-03-31","","1965-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "a03911","N113TR","PIPER","Piper","PA-32R-300","P32R","32R-7680207","","L1P","","","","","Bell Thomas E","","","2027-12-31","","1976-01-01","","","LYCOMING TI0-540 SER","false","false","false","","" -"7c2ad4","VH-IQU","EMBRAER","Embraer","ERJ-190-100 IGW","E190","19000091","","L2J","Cobham Aviation Services Australia","JETEX","JTE","NC","Gecas Australia Pty Ltd","","2021-07-21","","","2007-01-01","","","","false","false","false","Formerly named National Jet Systems","Light (< 15500 lbs)" +"7c2ad4","VH-IQU","EMBRAER","Embraer - Empresa Brasileira De Aeronautica","ERJ 190-100 IGW","E190","19000091","","L2J","National Jet Express","JETEX","JTE","NC","Aercap Australia","","2021-07-21","","","2007-01-01","","","","false","false","false","Formerly named National Jet Systems","Light (< 15500 lbs)" "a8631c","N64CH","LANCAIR","Annsec Corp","LEGACY 2000","LEG2","L2K-234","","L1P","","","","","Annsec Corp","","","2027-01-31","","","","","CONT MOTOR IO-550-N","false","false","false","","" "a3b2a4","N3373U","WREN","Cessna","182","C182","18254773","","L1P","","","","","Rms Industrial Sales Llc","","","2028-07-31","","1963-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "a0ebae","N159AR","SAASA","Maule","M-4-180V","M4","47013T","","L1P","","","","","Robertson Duncan","","","2028-07-31","","2007-01-01","","","LYCOMING O-360-C1F","false","false","false","","" @@ -450832,6 +450928,7 @@ walsh, Michael","","2007-03-28","","","1960-01-01","","","0x ","false","false", "3ff92e","D-MIKA","SSH","","","BU31","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a7ed67","N61LH","DIAMOND","Diamond Aircraft Ind Inc","DA 40","DA40","40.415","","L1P","","","","","Kane Aviation Llc","","","2028-11-30","","2004-01-01","","","LYCOMING I0360 SER","false","false","false","","" "ad8672","N9703M","MOONEY","","","M20P","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"ae5aa8","","BELL-BOEING","Bell-boeing","MV-22B Osprey","V22","","","T2T","Us Marine Corps","","","","Us Marine Corps","","","","","","","","","false","false","false","","" "c0203d","C-FMFK","RACA","The De Havilland Aircraft Of Canada Limited","DHC-3 (Dehavilland)","H500","54","","H1T","","","","","Province Of Manitoba","","2014-04-15","","","","","","","false","false","false","","" "a6fead","N55SL","PANHA","Bell Helicopter Textron Canada","206L-4","B06","52347","","H1T","","","","","Helicopters Inc","","","2027-06-30","","2007-01-01","","","ALLISON 250-C30P","false","false","false","","" "44e88b","OO-ZDK","","Glaser-dirks","DG-300 Elan","GLID","3E-17","","","","","","","Private","","","","","","","","","false","false","false","","" @@ -451507,7 +451604,7 @@ walsh, Michael","","2007-03-28","","","1960-01-01","","","0x ","false","false", "a4718d","N38594","PIPER","Piper","PA-28R-201T","P28R","28R-7703249","","L1P","","","","","Vineyard David D Md","","","2028-01-31","","1977-01-01","","","CONT MOTOR TSIO-360 SER","false","false","false","","" "a0f566","N161AA","AIRBUS","Airbus","A321-231","A321","7085","","L2J","","AMERICAN","AAL","","American Airlines Inc","","","2029-05-31","","2016-01-01","","","IAE V2533-A5","false","false","false","","" "ada486","N97859","WREN","","","C182","","","L1P","","","","","","","","","","","","","","false","false","false","","" -"3473cf","EC-NYR","HARBIN","","","E35L","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"3473cf","EC-NYR","HARBIN","Embraer","Legacy 650","E35L","14501145","","L2J","Gestair","GESTAIR","GES","GP","Gestair","","","","","","","","","false","false","false","","" "a4538d","N378WX","ROTORSPORT","Rotorsport Uk Ltd","ROTORSPORT UK CAVALO","CLON","RSUK-V00373","","G1P","","","","","Limited Gyroplanes Llc","","","2029-01-31","","2019-01-01","","","ROTAX 914UL","false","false","false","","" "888090","VN-A331","AIRBUS","Airbus","A321 231","A321","4945","","L2J","","VIET NAM AIRLINES","HVN","","Vietnam Airlines","","","","","","","","","false","false","false","","" "a9fba3","N742TB","BOWERS","Young","BOWERS FLYBABY","FB1A","01A","","L1P","","","","","Boudreau Thomas L","","","2028-04-30","","1976-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" @@ -453678,7 +453775,7 @@ walsh, Michael","","2007-03-28","","","1960-01-01","","","0x ","false","false", "a40017","N357PD","SIKORSKY","Schweizer","269D","H269","0038A","","H1P","","","","","Brown Helicopter Inc","","","2029-01-31","","2002-01-01","","","ROLLS-ROYC 250 20&30 SER","false","false","false","","" "aa5708","N7654J","PIPER","Piper","PA-28R-180","P28R","28R-31054","","L1P","","","","","Garrison Trading Llc","","","2030-04-30","","1969-01-01","","","CONT MOTOR IO-360 SER","false","false","false","","" "a41f22","N365CS","RAYTHEON","Beech","300","BE30","FA-120","","L2T","","","","","Angelina Aviation Llc","","","2029-03-31","","","","","P&W CANADA PT6A-60A","false","false","false","","" -"aa3908","N758PB","GULFSTREAM AEROSPACE","Gulfstream Aerospace Corp","GVI (G650ER)","GLF6","6396","","L2J","","","","","Poplar Glen Llc","","","2029-11-30","","2019-01-01","","","ROLLS DEUT BR700-725A112","false","false","false","","" +"aa3908","N758PB","GULFSTREAM AEROSPACE","Gulfstream Aerospace Corp","GVI (G650ER)","GLF6","6396","","L2J","","","","","Poplar Glen Llc","","","2029-11-30","","2019-01-01","","","ROLLS DEUT BR700-725A112","false","false","false","Jeff Bezos","" "c057db","C-GHHA","VIKING (2)","","","DHC6","","","L2T","","","","","","","","","","","","","","false","false","false","","" "abdd7f","N8638U","REIMS","Cessna","172F","C172","17252540","","L1P","","","","","Little Kenneth C","","","2029-01-31","","1965-01-01","","","CONT MOTOR 0-300 SER","false","false","false","","" "c095a0","C-IERF","","Goldwing Ltd.","GOLDWING (Avia Sport)","ULAC","TC 51806","","","","","","","Camil Laberge","","1984-09-21","","","","","","","false","false","false","","" @@ -457251,7 +457348,7 @@ walsh, Michael","","2007-03-28","","","1960-01-01","","","0x ","false","false", "a08433","N132SD","GULFSTREAM AEROSPACE","Gulfstream Aerospace","G-V","GLF5","537","","L2J","","","","","342 Ktcd Llc","","","2029-12-31","","1998-01-01","","","ROLLS DEUT BR700-710A110","false","false","false","","" "ad3353","N95LL","CESSNA","Cessna","Citation CJ3+","C25B","525B0456","","L2J","","","","","Leavitt Leasing Company Inc","","","","","","","","","false","false","false","","" "aa6c5d","N7707J","PIPER","Piper","PA-32-260","PA32","32-1074","","L1P","","","","","Spilman Lynn E","","","2029-09-30","","1968-01-01","","","LYCOMING 0-540 SERIES","false","false","false","","" -"7c5cb1","VH-SLF","LEARJET","","","LJ35","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"7c5cb1","VH-SLF","LEARJET","","","LJ35","","","L2J","Air Affairs Aviation Pty Ltd","","","","Air Affairs (australia) Pty. Ltd.","","","","","","","","","false","false","false","","" "aa0074","N7433D","PIPER","Piper","PA-22-150","PA22","22-5197","","L1P","","","","","Pierce Stephan L","","","2028-04-30","","1957-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "acece6","N9318X","WREN","Cessna","182E","C182","18253718","","L1P","","","","","Topnotch Aero Inc","","","2030-04-30","","1962-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "04c1e8","222","ALENIA","","","G222","","","L2T","","","","","","","","","","","","","","false","false","false","","" @@ -459876,7 +459973,7 @@ sheelan, Michael","","2006-08-21","","","2005-01-01","","","1x ROTAX 582","false "3d2c46","D-EPAC","PIPER","Piper","PA-20 135 Pacer","PA20","20-674","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "c0a8a1","C-ILWI","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "aa63fe","N769LN","TECNAM","Costruzioni Aeronautiche Tecna","P2010","TWEN","064/US","","L1P","","","","","Monticello Air Llc","","","2029-02-28","","2018-01-01","","","LYCOMING IO-390-C3B6","false","false","false","","" -"7cf85d","A36-002","BOEING","Boeing","737-7DF/W BBJ","B737","30790","613","L2J","Royal Australian Air Force","AUSSIE","ASY","","Royal Australian Air Force","","","","","2000-01-01","2000-07-10","","2 x CFM56-7","false","false","false","","No ADS-B Emitter Category Information" +"7cf85d","A36-002","BOEING","Boeing","737NG 7DF/W BBJ","B737","30790","","L2J","Royal Australian Air Force","AUSSIE","ASY","","Royal Australian Air Force","","","","","","","","","false","false","false","","" "3e655b","D-KDOT","HOFFMANN","Diamond","HK 36TTC 115 Super Dimona","DIMO","36.603","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a5235e","N430CP","REIMS","Cessna","172S","C172","172S8692","","L1P","","","","","Civil Air Patrol","","","2027-05-31","","2001-01-01","","","LYCOMING I0360 SER","false","false","false","","" "a63b94","N500SV","CESSNA","Textron Aviation Inc","525C","C25C","525C0350","","L2J","","","","","Peoples Management Of South Texas Inc Trustee","","","2028-04-30","","2021-01-01","","","WILLIAMS FJ44-4A","false","false","false","","" @@ -460675,7 +460772,7 @@ sheelan, Michael","","2006-08-21","","","2005-01-01","","","1x ROTAX 582","false "393b05","F-GOYF","AQUILA","Aquila","AT-01 A-210","A210","AT01-158","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "ad5d7d","N960PT","CESSNA","Cessna","510","C510","510-0238","","L2J","","","","","Dot Foods Inc","","","2030-03-31","","2009-01-01","","","P&W CANADA PW615F-A","false","false","false","","" "a0580d","N121GP","PIPER","Piper","PA-46-310P","PA46","46-8508086","","L1P","","","","","Taft Diversified Llc","","","2028-04-30","","1985-01-01","","","CONT MOTOR TSIO-520 SER","false","false","false","","" -"47a48c","LN-SAA","CESSNA","","","C68A","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"47a48c","LN-SAA","CESSNA","","","C68A","680A-0155","","L2J","Avincis Aviation Norway","","","","","","","","","2018-01-01","","","","false","false","false","","" "a34c01","N311RB","STODDARD-HAMILTON","Benson Rodney","GLASAIR III","GLAS","3238","","L1P","","","","","113wl Llc","","","2027-10-31","","2000-01-01","","","LYCOMING IO-540 SER","false","false","false","","" "a42972","N36755","STINSON","Stinson","10A","S10","8168","","L1P","","","","","Smith Andrew J","","","2027-12-31","","1941-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "c09cf0","C-IHLF","","Flycastelluccio","SNAP 100 (Fly Castelluccio)","PARA","3061","","","","","","","Luc Tr�panier","","2009-10-26","","","","","","","false","false","false","","" @@ -462445,7 +462542,7 @@ sheelan, Michael","","2006-08-21","","","2005-01-01","","","1x ROTAX 582","false "4d221f","9H-QEI","BOEING","","","B738","","","L2J","","","","","","","","","","","","","","false","false","false","","" "c019f6","C-FJVP","STINSON","Universal Aircraft Industries","108-1 (Stinson)","S108","108-878","","L1P","","","","","Warren L Anderson","","1996-09-24","","","","","","","false","false","false","","" "3d160c","D-EGPG","ROBIN","Robin","DR.400 120D Petit Prince","DR40","1544","","L1P","","","","","Private","","","","","","","","","false","false","false","","" -"440864","OE-FBD","CESSNA","","","C510","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"440864","OE-FBD","CESSNA","","Cessna 510 Citation Mustang","C510","","","L2J","","","","","","","","","","","","","","false","false","false","","" "a4c6d8","N407CD","CIRRUS","Cirrus Design Corp","SR22","SR22","1005","","L1P","","","","","Kelly George Sumner","","","2029-02-28","","2004-01-01","","","CONT MOTOR IO-550 SERIES","false","false","false","","" "7c4a6b","VH-OZH","CESSNA","Cessna Aircraft Company","208B","C208","208B0464","","L1T","","","","","Wrightsair Pty Ltd","","","","","1995-01-01","","","1x Pratt & Whitney Canada PT6A-114A","false","false","false","","" "a2505a","N2482E","CHAMPION","Aeronca","7AC","CH7A","7AC-6061","","L1P","","","","","Richmond Carl R","","","2027-12-31","","1946-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" @@ -464642,6 +464739,7 @@ sheelan, Michael","","2006-08-21","","","2005-01-01","","","1x ROTAX 582","false "a457c4","N3791Q","PIPER","Piper","PA-28-181","P28A","28-7790466","","L1P","Archer Aviation","ARCHER","DHM","","Archer Aviation","","","2029-10-31","","","","","","false","false","false","","" "4b4c5b","HB-1972","","Elan Tovarna Sportnega Orodja","DG-300 ELAN","GLID","3E289","","","Alpine Segelfluggruppe Zweisimmen","","","","Alpine Segelfluggruppe Zweisimmen","","1988-06-15","","","1988-01-01","","","","false","false","false","","" "394485","F-GREF","","","","BALL","","","","","","","","","","","","","","","","","false","false","false","","" +"493298","CS-LTX","CESSNA","Textron Aviation","","680A Citation Latitude","680A-0343","","C68A","Netjets Europe","FRACTION","NJE","1I","","","","","","","","","","false","false","false","","" "a6971d","N5235C","CESSNA","Cessna","206H","C206","20608319","","L1P","","","","","Louisiana Dept Of Wildlife & Fisheries","","","2028-11-30","","2009-01-01","","","LYCOMING IO-540-AC1A5","false","false","false","","" "ab2cd4","N819WW","EAA","Weber Wallace W","ACRO SPORT II","ACR2","273","","L1P","","","","","Juntunen Guy M","","","2027-11-30","","1991-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a3283e","N302RG","GOBOSH","Aero Sp Z O O","AT-4 LSA","AAT4","AT4-009","","L1P","","","","","Joshua Nadav","","","2030-04-30","","2007-01-01","","","ROTAX 912UL2","false","false","false","","" @@ -465512,7 +465610,7 @@ sheelan, Michael","","2006-08-21","","","2005-01-01","","","1x ROTAX 582","false "3df746","D-HNWW","EUROCOPTER-KAWASAKI","Airbus Helicopters","MBB-BK 117 D-2 (H145)","EC45","20144","","H2T","","","","","Polizei","","","","","","","","","false","false","false","","" "ab9230","N8448L","","Amateur Built","Bensen Gyrocopter B.8M","GYRO","D.P.1","","","","","","","Private","","","","","","","","","false","false","false","","" "a34ae6","N311DU","","Airbus Canada Lp","BD-500-1A11","","55153","","","Delta Air Lines","DELTA","DAL","DL","Delta Air Lines Inc","","","2029-06-30","","2022-01-01","","","P & W PW1521G SERIE","false","false","false","","" -"43e8e6","M-TRBS","CANADAIR","Bombardier","Bombardier Challenger 605","CL60","5836","","L2J","","","","","Arrow Management Property Corp","","","","","","","","","false","false","false","","" +"43e8e6","M-TRBS","CANADAIR","Bombardier","CL-600 Challenger 650","CL60","5386","","L2J","","","","","Arrow Management Property Corp","","","","","","","","","false","false","false","","" "aaeffe","N8034Z","PIPER","Piper","PA-32-301","PA32","32-8206016","","L1P","","","","","Eight Ball Flying Club Inc","","","2028-12-31","","1981-01-01","","","LYCOMING IO-540 SER","false","false","false","","" "403101","G-BRWA","CHAMPION","Aeronca Aircraft Corporation","AERONCA 7AC Champion","CH7A","7AC-351","","L1P","","","","","Private","","2016-06-17","","","1945-01-01","","","1 x CONTINENTAL MOTORS CORP A65-8
","false","false","false","","" "7c6238","VH-TOQ","ATR","Avions De Transport Regional","ATR 42 300F","AT43","079","","L2T","","","","","Toll Aviation","","","","","","","","","false","false","false","","" @@ -469647,7 +469745,7 @@ sheelan, Michael","","2006-08-21","","","2005-01-01","","","1x ROTAX 582","false "a363c7","N3174S","","Southern Powered Parachutes","CONDOR","PARA","A171CDR","","","","","","","Parks Reuben G","","","2029-09-30","","2003-01-01","","","ROTAX 582UL DCDI","false","false","false","","" "a96287","N7033U","RAYTHEON","Raytheon Aircraft Company","B300C","BE30","FM-13","","L2T","","","","","Silver Creek Aviation Services","","","2027-07-31","","","","","","false","false","false","","" "a4b1ee","N401SF","LEARJET","Learjet Inc","45","LJ45","247","","L2J","","","","","Rapid Response Llc","","","2029-05-31","","","","","","false","false","false","","" -"c827f1","ZK-MVX","ATR","","","AT76","","","L2T","","","","","","","","","","","","","","false","false","false","","" +"c827f1","ZK-MVX","ATR","","","AT76","","","L2T","Air New Zealand","NEW ZEALAND","ANZ","NZ","","","","","","","","","","false","false","false","","" "383288","F-BMUI","SUD","Gardan","GY-80 160 Horizon","GY80","103","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "ac3e30","N8882E","SONEX","Randall Christopher","RED DEVIL","WAIX","001","","L1P","","","","","Randall Christopher D","","","2028-12-31","","2008-01-01","","","LYCOMING O-320-E2D","false","false","false","","" "c809f1","ZK-CKT","ST. JUST","","","C185","","","L1P","","","","","","","","","","","","","","false","false","false","","" @@ -472415,7 +472513,7 @@ sheelan, Michael","","2006-08-21","","","2005-01-01","","","1x ROTAX 582","false "a2e294","N285WT","CIRRUS","Cirrus Design Corp","SR22","SR22","4847","","L1P","","","","","285wt Llc","","","2029-11-30","","2019-01-01","","","CONT MOTOR IO-550-N","false","false","false","","" "a7bbc8","N598GU","","Leroy Sanders","MODEL 1","","248","","","","","","","Guardamondo Justin T","","","2028-01-31","","2014-01-01","","","ROTAX 532","false","false","false","","" "ac9d59","N9114U","REIMS","Cessna","150M","C150","15078065","","L1P","","","","","Marek John M","","","2028-01-31","","1976-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" -"407bdc","G-RUKB","BOEING","737-8as (w)","","B738","","","L2J","Ryanair Uk","Ryanair UK","RUK","RK","","","","","","","","","","false","false","false","","" +"407bdc","G-RUKB","BOEING","737-8as (w)","","B738","","","L2J","Ryanair Uk","RYANAIR","RUK","FR","","","","","","","","","","false","false","false","","" "a68673","N5199B","REIMS","Cessna","172S","C172","172S9093","","L1P","","","","","Fly172s Llc","","","2027-09-30","","2002-01-01","","","LYCOMING IO-360-L2A","false","false","false","","" "aca631","N914GV","BOMBARDIER","Bombardier Inc","BD-100-1A10","CL30","20437","","L2J","","","","","Conexon Llc","","","2029-05-31","","2013-01-01","","","HONEYWELL AS907-1-1A","false","false","false","","" "c08258","C-GXJJ","STEARMAN","Boeing Airplane Company","PT17 (Boeing)","ST75","75 6700","","L1P","","","","","Stillmeadows Enterprises Ltd","","1986-04-09","2001-07-09","","","","","","false","false","false","","" @@ -472715,6 +472813,7 @@ sheelan, Michael","","2006-08-21","","","2005-01-01","","","1x ROTAX 582","false "a6b2dd","N5300Z","PIPER","Piper","PA-22-108","PA22","22-9002","","L1P","","","","","Thissell David W","","","2027-05-31","","1961-01-01","","","LYCOMING 0-235 SERIES","false","false","false","","" "06a083","A7-BAQ","BOEING","Boeing","777 3DZER","B77W","38247","910","L2J","Qatar Airways","QATARI","QTR","QR","Qatar Airways","","2010-12-22","","","2010-01-01","","","","false","false","false","","" "43c73d","ZJ950","EUROFIGHTER","Eurofighter","Typhoon FGR4","EUFI","BS047","","L2J","Royal Air Force","VORTEX","SHF","","Royal Air Force","","","","","","","","","false","false","false","","" +"a1272d","N17331","BOEING","Boeing","737-8 MAX","B38M","67589","8809","L2J","United Airlines","UNITED","UAL","UA","United Airlines","","2024-02-01","","","2024-02-01","2024-02-23","","2X CFMI LEAP-1B28 SER ","false","false","false","Delivered 2/23/2024","" "ac488d","N8906Q","THRUSH","Ayres Corporation","S2R-600","SS2P","2458R","","L1P","","","","","Randy Goering Inc","","","2027-04-30","","","","","","false","false","false","","" "a705dd","N55124","","Piper","PA-28-140","","28-7325329","","","","","","","Stroud Stephen D","","","2029-03-31","","","","","LYCOMING 0-320 SERIES","false","false","false","","" "8004d4","VT-CRA","LEARJET","Bombardier","Learjet 45","LJ45","45-019","","L2J","","","","","Quick Flight P/l","","","","","","","","","false","false","false","","" @@ -480073,6 +480172,7 @@ sheelan, Michael","","2006-08-21","","","2005-01-01","","","1x ROTAX 582","false "a47a92","N388S","CESSNA","Cessna","U206G","T206","U20606838","","L1P","","","","","Starr William E","","","2030-04-30","","1984-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "a45c92","N380PC","RAYTHEON","Beech","A36","BE36","E-1384","","L1P","","","","","Rhomberg Bernard B","","","2028-10-31","","1978-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "a02737","N109MA","UNC","Northwest Rotorcraft Llc","UH-1H","UH1","68-15334","","H1T","","","","","Minuteman Aviation Inc","","","2027-05-31","","1968-01-01","","","LYCOMING T-53 SERIES","false","false","false","","" +"3e3ee","D-IPAA","CESSNA","Textron Aviation Inc","525 Citation M2","C25M","","","L2J","Heron Luftfahrt","HERONAIR","HRN","","","","","","","","","","","false","false","false","","" "a200e9","N228YK","VIKING (2)","Dehavilland","DHC-6-200","DHC6","228","","L2T","","","","","Desert Sand Aircraft Leasing Co Inc","","","2029-05-31","","1969-01-01","","","P&W CANADA PT6A-60A","false","false","false","","" "a03142","N111PU","PITTS","Worthington Sean Thomas","PITTS S-1-11B","PTSS","14","","L1P","","","","","Worthington Sean T","","","2030-01-31","","2003-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" "a8c624","N6645H","WAGAERO","Piper","J3C-65","J3","19845","","L1P","","","","","Terra Mar Ceil Llc","","","2027-05-31","","1946-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" @@ -483232,7 +483332,7 @@ commins, Kieran","","2007-03-28","","","2002-01-01","","","0x ","false","false" "40240e","G-MJVP","","Eipper Aircraft Inc","QUICKSILVER MXII","ULAC","1149","","","","","","","Private","","1996-01-19","","","1983-01-01","","","  ( NEWTON fixed pitch )
","false","false","false","","" "a77cfa","N5817P","PIPER","","","PA24","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a2ce92","N280GA","","Gippsland","GA200","","2009825F","","","","","","","Cavanaugh Flying Service Inc","","","2028-07-31","","1998-01-01","","","LYCOMING 0-540 SERIES","false","false","false","","" -"0d0d36","XA-VRY","AIRBUS","","","A20N","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"0d0d36","XA-VRY","AIRBUS","Airbus Industrie","A320neo","A20N","10574","","L2J","Volaris","VOLARIS","VOI","Y4","","","2021-06-19","","","","2021-05-25","","","false","false","false","","" "385425","F-BVBF","REIMS","Reims/cessna","F150L","C150","1085","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a96624","N70423","WAGAERO","","","J3","","","L1P","","","","","","","","","","","","","","false","false","false","","" "4baa43","TC-JRC","AIRBUS","Airbus","A321 231","A321","2999","","L2J","","TURKAIR","THY","","Turkish Airlines","","","","","","","","","false","false","false","","" @@ -483621,7 +483721,7 @@ commins, Kieran","","2007-03-28","","","2002-01-01","","","0x ","false","false" "a1720e","N19204","REIMS","Cessna","150L","C150","15074234","","L1P","","","","","Eagle Flight Squadron Inc","","","2029-07-31","","1972-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "ae212e","02-26966","WESTLAND","","","H60","","","H2T","","","","","","","","","","","","","","false","false","false","","" "3d2e3a","D-EPTI","BRANDLI","Brandli","BX-2 Cherry","BX2","173SB","","L1P","","","","","Private","","","","","","","","","false","false","false","","" -"0101df","SU-GEV","BOEING","Boeing","787-9","B789","65087","877","L2J","Egyptair - Egypt","EGYPTAIR","MSR","","","","","","","","","","RR Trent 1000","false","false","false","","" +"0101df","SU-GEV","BOEING","","","B789","","","L2J","","","","","","","","","","","","","","false","false","false","","" "a54373","N43819","TAYLOR-YOUNG","Taylorcraft","BC12-D","TAYB","7478","","L1P","","","","","Gallette John B","","","2028-02-29","","1949-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" "44a83d","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "470b14","HA-EFC","PIAGGIO","","","P180","","","L2T","","","","","","","","","","","","","","false","false","false","","" @@ -484488,7 +484588,7 @@ commins, Kieran","","2007-03-28","","","2002-01-01","","","0x ","false","false" "a7ca1b","N60032","REIMS","Cessna","150J","C150","15070019","","L1P","","","","","Aero Investors Lc","","","2029-12-31","","1968-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "acecbb","N9317P","PIPER","Piper","PA-24-260","PA24","24-4813","","L1P","","","","","Futter John H","","","2028-07-31","","1969-01-01","","","LYCOMING TI0-540 SER","false","false","false","","" "780bc8","B-1913","BOEING","Boeing","737NG 85C/W","B738","39900","","L2J","","XIAMEN AIR","CXA","","Xiamen Airlines","","","","","","","","","false","false","false","","" -"4baacf","TC-JVO","BOEING","Boeing","737NG 8F2/W","B738","60031","","L2J","","TURKAIR","THY","","Turkish Airlines","","","","","","","","","false","false","false","","" +"4baacf","TC-JVO","BOEING","Boeing","737NG 8F2/W","B738","60031","","L2J","Turkish Airlines","TURKISH","THY","TK","Turkish Airlines","","","","","","","","","false","false","false","","" "404c8b","G-OHOV","ROTORWAY","Bird Mg","ROTORWAY EXECUTIVE 162F Executive","EXEC","6885","","H1P","","","","","Malcolm Graham Bird","","2004-09-14","","","2004-01-01","","","1 x ROTORWAY RI 162F
","false","false","false","","" "a265ad","N2535C","CESSNA","Cessna","170B","C170","26179","","L1P","","","","","Hulme Timothy L","","","2029-11-30","","1954-01-01","","","CONT MOTOR C145 SERIES","false","false","false","","" "3c1207","","","","","","","","","","","","","Airbus Testflight","","","","","","","","","false","false","false","","" @@ -486750,6 +486850,7 @@ commins, Kieran","","2007-03-28","","","2002-01-01","","","0x ","false","false" "3e8640","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "a54443","N43877","WAGAERO","Piper","J3C-65","J3","15208","","L1P","","","","","Murdock Thomas L","","","2028-08-31","","","","","","false","false","false","","" "a48ab9","N392FE","MCDONNELL DOUGLAS","Mcdonnell Douglas","MD-10-10F","DC10","46626","","L3J","","","","","Federal Express Corporation","","","2029-12-31","","1975-01-01","","","GE CF6-6","false","false","false","","" +"440257","OE-CTS","SSH","","","BU31","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a7c4ab","N6XS","ST. JUST","Cessna","A185E","C185","1851424","","L1P","","","","","Where On Earth Services Inc","","","2027-05-31","","","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "a52643","N43055","PIPER","Piper","PA-28-181","P28A","28-8390066","","L1P","","","","","Plain Plane Partners Llc","","","2027-07-31","","1983-01-01","","","LYCOMING 0-360-A1D","false","false","false","","" "ace95b","N93096","REIMS","Cessna","152","C152","15285399","","L1P","","","","","Visek Jerry J","","","2027-10-31","","1981-01-01","","","LYCOMING 0-235 SERIES","false","false","false","","" @@ -488101,7 +488202,7 @@ commins, Kieran","","2007-03-28","","","2002-01-01","","","0x ","false","false" "a12370","N1723V","REIMS","Cessna","172M","C172","17263725","","L1P","","","","","Ray Alan G","","","2028-07-31","","","","","LYCOMING 0-320 SERIES","false","false","false","","" "a69c3f","N525HQ","CESSNA","Cessna","525","C25A","525-0827","","L2J","","","","","Miss Blackwell Aviation Llc","","","2027-07-31","","2014-01-01","","","WILLIAMS FJ44-1AP","false","false","false","","" "008b25","ZS-EFC","SWEARINGEN","Beech","King Air A90","BE9L","LJ-161","","L2T","","","","","Legends Charter P/l","","","","","","","","","false","false","false","","" -"4ba99a","TC-JLZ","AIRBUS","Airbus","A319 132","A319","4790","","L2J","","TURKAIR","THY","","Turkish Airlines","","","","","","","","","false","false","false","","" +"4ba99a","TC-JLZ","AIRBUS","Airbus","A319 132","A319","4790","","L2J","Turkish Airlines","TURKISH","THY","TK","Turkish Airlines","","","","","","","","","false","false","false","","" "a005cf","N100MH","OGMA","Dehavilland","TIGER MOTH DH 82A","DH82","A17-122","","L1P","","","","","Glave William C","","","2029-07-31","","","","","ROLLS-ROYC GIPSY MK SER","false","false","false","","" "a2e40c","N2858P","PIPER","Piper","PA-22-150","PA22","22-3159","","L1P","","","","","Siegfried Richard W","","","2028-06-30","","1955-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "a64254","N502KW","REIMS","Cessna","150M","C150","15079064","","L1P","","","","","White Kenneth E","","","2027-09-30","","1976-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" @@ -495002,7 +495103,7 @@ shiel, M J","","2010-04-28","","","2007-01-01","","","1x ROTAX 912-ULS","false", "386480","F-AZEA","STAMPE","Sncan","Stampe SV-4 B","SV4","","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "a0c8db","N15LL","RUTAN","Lombard","VARIEZE","VEZE","LL-3","","L1P","","","","","Burk Ross","","","2027-03-31","","1978-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "43e7b2","M-GZOO","IAI","","","GALX","","","L2J","","","","","","","","","","","","","","false","false","false","","" -"7cfa73","A56-003","DASSAULT","Dassault Aviation","Falcon 7X","FA7X","286","","L3J","Royal Australian Air Force","AUSSIE","ASY","","Royal Australian Air Force","","","","","2019-01-01","","","3x PW307A","false","false","false","","" +"7cfa73","A56-003","DASSAULT","","","FA7X","286","","L3J","","","","","","","","","","","","","","false","false","false","","" "4041b6","G-BYOD","SLINGSBY","Slingsby Aviation Ltd","SLINGSBY T67M200 Firefly","RF6","2265","","L1P","","","","","Private","","2010-09-22","","","2001-01-01","","","1 x LYCOMING AEIO-360-A1E6  ( HOFFMANN HO-V 123K-KV / 180DT )
","false","false","false","","" "acb03c","N91664","TUSCO","","","NAVI","","","L1P","","","","","","","","","","","","","","false","false","false","","" "4023b6","G-MBTJ","","Solar Wings Ltd","TYPHOON/TRI-PACER","UNDEFINED","CSRS-01","","","","","","","","","2010-05-04","","","1982-01-01","","","1 x FUJI-ROBIN EC-25-PS  ( - ULTRASPORTS 54 IN X 27 IN )
","false","false","false","","" @@ -495155,7 +495256,7 @@ shiel, M J","","2010-04-28","","","2007-01-01","","","1x ROTAX 912-ULS","false", "aab467","N78901","MOONEY","Mooney","M20B","M20P","1915","","L1P","","","","","Emslie Ronald H","","","2028-09-30","","1961-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "a02a59","N11FB","","John P Pike","FLY BABY","","4130","","","","","","","Pike John P","","","2029-10-31","","","","","","false","false","false","","" "a72e7c","N562BL","","Biuro Projektowe B Bogumil Ber","SZD-56-2 DIANA-2","GLID","562106002","","","","","","","Yokoyama Kazuyoshi","","","2028-12-31","","2006-01-01","","","NONE NONE","false","false","false","","" -"a00c59","N102CE","BOMBARDIER","Bombardier Inc","BD-100-1A10","CL35","20849","","L2J","","","","","Centerpoint Energy Service Co Llc","","","2027-11-30","","2020-01-01","","","HONEYWELL AS907-2-1A","false","false","false","","" +"a00c59","N102CE","BOMBARDIER","Bombardier Inc","BD-100-1A10","CL35","20849","","L2J","Centerpoint Energy Service Co Llc","","","","Centerpoint Energy Service Co Llc","","","2027-11-30","","2020-01-01","","","HONEYWELL AS907-2-1A","false","false","false","","" "3d1f9a","D-EKFI","PIPER","Piper","PA-12 Super Cruiser","PA12","12-1528","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "c087d5","C-GZLK","REIMS","Cessna Aircraft Company","172N (Cessna)","C172","17269588","","L1P","","","","","Patrick Simpson","","2009-11-30","","","","","","","false","false","false","","" "a1be38","N211LE","RUTAN","Gray Charles B","LONG EZ","LGEZ","628","","L1P","","","","","Hardesty Jerry L","","","2027-07-31","","1983-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" @@ -495646,7 +495747,7 @@ shiel, M J","","2010-04-28","","","2007-01-01","","","1x ROTAX 912-ULS","false", "8007c6","VT-JFN","BOEING","Boeing","737NG 8AL/W","B738","39062","","L2J","","JET AIRWAYS","JAI","","Jet Airways","","","","","","","","","false","false","false","","" "a23548","N241SB","CHAMPION","Aeronca","7DC-CONV","CH7A","2131","","L1P","","","","","Fowler Gerald M","","","2027-08-31","","1946-01-01","","","CONT MOTOR C85 SERIES","false","false","false","","" "a99530","N7163Z","RUTAN","Simon M Stull","COZY MARK IV","COZY","1494","","L1P","","","","","Stull Simon M","","","2029-05-31","","2019-01-01","","","LYCOMING IO-360-A1A","false","false","false","","" -"06a1e4","A7-HBJ","BOEING","Boeing","747 8KB BBJ","B748","37075","1449","L4J","Qatar Amiri Flight","AMIRI","QAF","","Qatar Amiri Flight","","2015-07-01","","","2012-01-01","","","","false","false","false","","" +"06a1e4","A7-HBJ","BOEING","Boeing","Boeing 747-8KB BBJ","B748","37075","1449","L4J","Qatar Amiri Flight","AMIRI","QAF","","Hamad Bin Jassim Al Thani","","2015-07-01","","","2012-01-01","","","4x GE","false","false","false","","" "458c4e","OY-CBN","SOCATA","Socata","Rallye MS.894A Minerva 220","RALL","12019","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "ae2902","6018","WESTLAND","Sikorsky","MH-60T Jayhawk","H60","701700","","H2T","","","","","United States Coast Guard","","","","","","","","","false","false","false","","" "aa2dbb","N755MM","MAULE","Maule","M-5-210C","M5","6160C","","L1P","","","","","Dewberry Danny","","","2029-10-31","","1976-01-01","","","CONT MOTOR IO-360 SER","false","false","false","","" @@ -497465,7 +497566,7 @@ shiel, M J","","2010-04-28","","","2007-01-01","","","1x ROTAX 912-ULS","false", "3eaf2f","","","","","","","","","","","","","","","","","","","","","","false","false","false","German Airfore (GAF) Callsign, helicopter","" "3c5cb5","D-AGEU","BOEING","Boeing","737NG 75B/W","B737","28104","","L2J","","GERMANIA","GMI","","Germania","","","","","","","","","false","false","false","","" "0d0e3b","XA-VSP","AIRBUS","","","A20N","","","L2J","","","","","","","","","","","","","","false","false","false","","" -"7c3f17","VH-MQX","EMBRAER","Cessna Aircraft Company","U206G","E50P","U20604924","","L2J","","","","","Finn, Brian Peter","","","","","1979-01-01","","","1x Teledyne-continental Motors IO-520","false","false","false","","" +"7c3f17","VH-MQX","EMBRAER","Cessna Aircraft Company","U206G","E50P","U20604924","","L2J","Navair Flight Operations Pty Ltd","","","","Finn, Brian Peter","","","","","1979-01-01","","","1x Teledyne-continental Motors IO-520","false","false","false","","" "a0bd7a","N147JA","SCHEMPP-HIRTH","Schempp-hirth","DISCUS CS","DISC","147-CS","","L1P","","","","","Arnold Jason A","","","2028-07-31","","1994-01-01","","","NONE NONE","false","false","false","","" "a07a5b","N13RM","BELL","Bell Textron Canada Ltd","505","B505","65372","","H1T","","","","","Indigo Aviation Inc","","","2029-04-30","","2021-01-01","","","SAFRAN ARRIUS 2R","false","false","false","","" "a69347","N5224G","REIMS","Cessna","172S","C172","172S9144","","L1P","","","","","Bank Of Utah Trustee","","","2027-05-31","","2002-01-01","","","LYCOMING IO-360-L2A","false","false","false","","" @@ -499034,7 +499135,7 @@ mcmorrow, Frank Joseph","","2013-05-01","","","1941-01-01","","","1x CONTINENTAL "a03186","N111SM","SEGUIN","Piper","PA-34-200T","PA34","34-7770333","","L2P","","","","","Johnson Dean Scott","","","2029-10-31","","1977-01-01","","","CONT MOTOR TSIO-360 SER","false","false","false","","" "c04486","C-FZYR","REIMS","Cessna Aircraft Company","172F (Cessna)","C172","17252632","","L1P","","","","","George I Zylstra","","2008-10-02","","","","","","","false","false","false","","" "a9e9cb","N738LP","REIMS","","","C82R","","","L1P","","","","","","","","","","","","","","false","false","false","","" -"8990ec","B-18917","AIRBUS","","","A359","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"8990ec","B-18917","AIRBUS","Airbus Industrie","A350-941","A359","208","","L2J","China Airlines","DYNASTY","CAL","CI","","","2018-06-12","","","","2018-04-06","","2x RR Trent XWB-84 ","false","false","false","","" "ada721","N979X","MONNETT","","","SRAI","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a4e28a","N41362","FUJI","Cessna Claassen","305A(0-1A)","O1","22587","","L1P","","","","","Bird Dog N41362 Llc","","","2028-01-31","","1951-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" "a18f53","N2WP","","David W Peeler","JSX-2","ZZZZ","JSX0013","","","","","","","Peeler David W","","","2027-04-30","","","","","","false","false","false","","" @@ -502078,7 +502179,7 @@ mcmorrow, Frank Joseph","","2013-05-01","","","1941-01-01","","","1x CONTINENTAL "aaad62","N78731","TEXAS SPORT","Piper","PA-11","PA11","11-1483","","L1P","","","","","Griffen Thomas A","","","2027-08-31","","","","","CONT MOTOR C90 SERIES","false","false","false","","" "48d8ad","4085","TAI","General Dynamics","F-16D Fighting Falcon","F16","JD-10","","L1J","Polish Air Force","POLISH AIRFORCE","PLF","","Polish Air Force","","","","","","","","","false","false","false","","" "a1fe85","N2278U","QINGDAO","Brantly","B-2 B","BRB2","444","","H1P","","","","","Private","","","","","","","","","false","false","false","","" -"505d6a","OM-LKJ","TOMARK","","","SD4","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"505d6a","OM-LKJ","TOMARK","Tomark","SD-4","SD4","33592","","L1P","","","","","","","","","","","","","Rotax 912","false","false","false","","" "4b2ba0","HB-QNO","","Cameron Balloons Ltd.","Z-105","BALL","11390","","","Ballonclub A1","","","","Müller, Roman","","2010-04-20","","","2010-01-01","","","","false","false","false","","" "c80a0f","ZK-EVP","PIPER","","","PA27","","","L2P","","","","","","","","","","","","","","false","false","false","","" "a8505f","N635AR","DE HAVILLAND CANADA","De Havilland Canada","DHC-8 103","DH8A","047","","L2T","","","","","L-3 Communications","","","","","","","","","false","false","false","","" @@ -503891,6 +503992,7 @@ mcmorrow, Frank Joseph","","2013-05-01","","","1941-01-01","","","1x CONTINENTAL "ad69f5","N9632M","MOONEY","Mooney","M20F","M20P","670209","","L1P","","","","","Avimar","","","2029-03-31","","1966-01-01","","","LYCOMING I0360 SER","false","false","false","","" "440171","OE-LQW","AIRBUS","","","A319","","","L2J","","","","","","","","","","","","","","false","false","false","","" "780782","B-6793","AIRBUS","Airbus","A320 214","A320","4829","","L2J","","AIR CHINA","CCA","","Air China","","","","","","","","","false","false","false","","" +"3d3d02","D-EVIW","PIPISTREL","","","PIVI","","","L1P","","","","","","","","","","","","","","false","false","false","","" "49d3cf","OK-KEM","WREN","","","C182","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a5c07c","N47TT","ROCKWELL","Rockwell International","690C","AC90","11600","","L2T","","","","","Lon Air Llc","","","2027-12-31","","1979-01-01","","","AIRESEARCH TPE331-5&6SER","false","false","false","","" "484d7c","PH-JON","","Lindstrand","LBL.240A Hot Air Balloon","BALL","691","","","","","","","Private","","","","","","","","","false","false","false","","" @@ -507396,7 +507498,7 @@ mcmorrow, Frank Joseph","","2013-05-01","","","1941-01-01","","","1x CONTINENTAL "758568","RP-C5258","GULFSTREAM AEROSPACE","","","GLF4","","","L2J","","","","","","","","","","","","","","false","false","false","","" "3d2619","D-EMRH","SOCATA","Socata","TB10 Tobago","TOBA","14","","L1P","","","","","Private","","","","","","","","","false","false","false","","" "abd61b","N86184","YAKIMA AEROSPORT","Cowan","BREEZY RLU-1","RLU1","1976WKC","","L1P","","","","","Dewitt Elvin H","","","2029-05-31","","1976-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" -"4bca65","TC-RSE","LEARJET","","","LJ45","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"4bca65","TC-RSE","LEARJET","","","LJ45","","","L2J","Red Star","STARLINE","STR","","Redstar Aviation","","","","","","","","","false","false","false","","" "ab3420","N82062","CHAMPION","","","CH7A","","","L1P","","","","","","","","","","","","","","false","false","false","","" "8881cc","VN-A499","DASSAULT","","","FA8X","","","L3J","","","","","","","","","","","","","","false","false","false","","" "40682c","G-CHJW","","P And M Aviation Ltd","QUIK GTR Quik","ULAC","8630","","","","","","","Private","","2012-09-24","","","2012-01-01","","","1 x ROTAX 912ULS  ( WARP DRIVE ground adjustable pitch )
","false","false","false","","" @@ -507463,6 +507565,7 @@ mcmorrow, Frank Joseph","","2013-05-01","","","1941-01-01","","","1x CONTINENTAL "008244","ZS-AVR","CIRRUS","","","SR22","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a086f8","N133GM","RAYTHEON","Beech","F33A","BE33","CE-1170","","L1P","","","","","Bem Holdings Llc","","","2028-12-31","","1987-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "ad91bc","N9734P","YAKIMA AEROSPORT","","","PA18","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"094105","TY-ABT","CESSNA","Cessna","208 Caravan","C208","","","L1T","","","","","","","","","","","","","","false","false","false","","" "a068f8","N1252W","WACO","Waco","SRE","WACE","5153","","L1P","","","","","Poplar Grove Airmotive Inc","","","2028-12-31","","1941-01-01","","","P&W R-985 SERIES","false","false","false","","" "a90d8d","N6824D","","Minicab","GY-20","","1","","","","","","","Ross Kevin C","","","2030-04-30","","1964-01-01","","","CONT MOTOR C85 SERIES","false","false","false","","" "3ee456","D-0959","","Vogt","Lo.100 Zwergreiher","GLID","04","","","","","","","Private","","","","","","","","","false","false","false","","" @@ -509641,7 +509744,7 @@ mcmorrow, Frank Joseph","","2013-05-01","","","1941-01-01","","","1x CONTINENTAL "c089b0","C-IADR","","Ultraflight Inc.","LAZAIR (Lazair)","","A571","","","","","","","Jay D Prestwich","","1983-03-14","2001-10-11","","","","","","false","false","false","","" "c81630","ZK-ICJ","WESTLAND","Bell","47G-3B-1","B47G","3337","","H1P","","","","","Private","","","","","","","","","false","false","false","","" "e20017","TC-85","VIKING (2)","","","DHC6","","","L2T","","","","","","","","","","","","","","false","false","false","","" -"a6f96b","N549AR","","Raytheon Aircraft Company","B300C","","FM11","","","","","","","Academy Resources Llc","","","2028-12-31","","2003-01-01","","","P&W CANADA PT6A-60A","false","false","false","","" +"a6f96b","N549AR","RAYTHEON","Raytheon Aircraft Company","B300C","B350","FM11","","L2T","","","","","Academy Resources Llc","","","2028-12-31","","2003-01-01","","","P&W CANADA PT6A-60A","false","false","false","","" "a458f3","N38AB","SIKORSKY","Hughes","269A","H269","46-0503","","H1P","","","","","Jerry Lay Aviation Llc","","","2027-10-31","","","","","LYCOMING HIO-360-B1A","false","false","false","","" "ace20c","N92902","REARWIN","Commonwealth","REARWIN 185","SKYR","1633","","L1P","","","","","Palmenteri Louis J","","","2030-01-31","","1946-01-01","","","CONT MOTOR C85 SERIES","false","false","false","","" "aab4b1","N78925","MOONEY","Mooney","M20C","M20P","2037","","L1P","","","","","Skyschool Llc","","","2029-06-30","","1962-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" @@ -510070,6 +510173,7 @@ mcmorrow, Frank Joseph","","2013-05-01","","","1941-01-01","","","1x CONTINENTAL "a1fed9","N228BG","GROB","Burkhart Grob","G-103A TWIN II ACRO","G103","33995-K-228","","L1P","","","","","Utah Soaring Association Inc","","","2029-09-30","","1985-01-01","","","NONE NONE","false","false","false","","" "a2118c","N232SP","PIPER","Piper","PA-28-181","P28A","28-7990205","","L1P","","","","","Tucker Adam C","","","2028-06-30","","1978-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" "c057a8","C-GHFB","REIMS","Textron Aviation Inc.","172S (Cessna)","C172","172S12101","","L1P","","","","","Seneca College Of Applied Arts And Technology","","2018-01-12","","","","","","","false","false","false","","" +"505dbe","OM-MAR","TOMARK","Tomark","SD-4 Viper","SD4","","","L1P","","","","","Private Owner","","","","","","","","Rotax 912","false","false","false","","" "a95847","N701AB","SCOTTISH AVIATION","Scottish Aviation","BULLDOG MDL 120/121","BDOG","BH120/350","","L1P","","","","","Crouch Paul Alan","","","2027-09-30","","1976-01-01","","","LYCOMING IO-360-A1B6","false","false","false","","" "a026a8","N109FH","GROB","","","G109","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a008a8","N101CL","WESTLAND","Aerospatiale","SA341G GAZELLE","GAZL","1061","","H1T","","","","","Britronix Inc","","","2028-12-31","","1973-01-01","","","","false","false","false","","" @@ -511051,6 +511155,7 @@ mcmorrow, Frank Joseph","","2013-05-01","","","1941-01-01","","","1x CONTINENTAL "a048d9","N1172G","REIMS","Cessna","172G","C172","17254094","","L1P","","","","","Skranak James Robert","","","2029-08-31","","1966-01-01","","","CONT MOTOR 0-300 SER","false","false","false","","" "a56a28","N448US","DIAMOND","Diamond Aircraft Ind Inc","DA 40","DA40","40.708","","L1P","","","","","Gill Theodore J","","","2028-09-30","","2006-01-01","","","LYCOMING IO-360-M1A+","false","false","false","","" "38397a","F-WWGN","DASSAULT","","","F2TH","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"ae6bd3","85-0064","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "4b1c7b","HB-KUL","CIRRUS","","","SR22","","","L1P","","","","","","","","","","","","","","false","false","false","","" "a9bc50","N72609","CESSNA","Cessna","140","C140","9785","","L1P","","","","","Weeks Gary","","","2030-04-30","","","","","CONT MOTOR C85 SERIES","false","false","false","","" "a54c28","N440RV","VAN'S","Hess John G","RV-4","RV4","3910","","L1P","","","","","Taildragger Thunder Llc","","","2027-09-30","","","","","","false","false","false","","" @@ -511227,6 +511332,7 @@ mcmorrow, Frank Joseph","","2013-05-01","","","1941-01-01","","","1x CONTINENTAL "a867f9","N64027","REIMS","Cessna","R182","C82R","R18202021","","L1P","","","","","Snyder Brent R","","","2029-08-31","","1985-01-01","","","LYCOMING 0-540 SERIES","false","false","false","","" "a2ad21","N2714K","TEMCO","Luscombe","11A","L11","11-110","","L1P","","","","","Landreth Homer W","","","2028-01-31","","","","","CONT MOTOR E185 SERIES","false","false","false","","" "a69852","N524FL","PIPER","Piper","PA-28-140","P28A","28-7125351","","L1P","","","","","Moore Bruce W","","","2029-12-31","","1971-01-01","","","LYCOMING IO-320 SERIES","false","false","false","","" +"46c28d","SX-PTM","EMBRAER","Embraer","ERJ-190SR","E190","","","L2J","Air Serbia","AIR SERBIA","ASL","JU","","","","","","","","","","false","false","false","","" "a9a117","N7199H","SWEARINGEN","Beech","65-A90-4","BE65","LU-07","","L2P","","","","","Dynamic Avlease Inc","","","2027-04-30","","1971-01-01","","","P&W CANADA PT6A-20","false","false","false","","" "4051d0","G-CENJ","","Medway Microlights","SLA 100 EXECUTIVE","ULAC","240407","","","","","","","Private","","2007-05-02","","","2008-01-01","","","1 x ROTAX 912 ULS  ( ROCKWOOD COMPOSITES LTD ground adjustable pitch )
","false","false","false","","" "acd610","N926SM","JUST","Just Aircraft Co","HIGHLANDER","HIGH","JAESC0093","","L1P","","","","","Mercer Glenn S","","","2029-08-31","","2006-01-01","","","ROTAX 912ULS SERIES","false","false","false","","" @@ -512683,7 +512789,7 @@ mcmorrow, Frank Joseph","","2013-05-01","","","1941-01-01","","","1x CONTINENTAL "a8ba4f","N6610G","REIMS","Cessna","150L","C150","15072110","","L1P","","","","","Thomas Charles L","","","2028-09-30","","1970-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" "a74e28","N57XL","DE HAVILLAND CANADA","Dehavilland","DHC-2","DHC2","1680","","L1P","","","","","Arcus Aero Llc","","","2028-07-31","","1957-01-01","","","P&W R-985 SERIES","false","false","false","","" "e80604","CC-AWE","AIRBUS","Airbus","A320 232","A320","8028","","L2J","Jat","ROCKSMART","JAT","JA","Jetsmart","","","","","","","","","false","false","false","","Large (75000 to 300000 lbs)" -"7c4ef5","VH-PVR","LEONARDO","","","A139","","","H2T","","","","","","","","","","","","","","false","false","false","","" +"7c4ef5","VH-PVR","LEONARDO","Leonardo","Aw139","A139","","","H2T","Starflight Victoria Pty Ltd","0030","","","Victoria Police","","","","","","","","","false","false","false","","" "44e830","OO-ZAP","","Schleicher","K 8 B","GLID","8629","","","","","","","Private","","","","","","","","","false","false","false","","" "ac04be","N87360","EMBRAER","Embraer S A","ERJ 170-200 LR","E75L","17000705","","L2J","United Airlines","UNITED","UAL","UA","United Airlines Inc","","","2027-12-31","","2017-01-01","","","GE CF34-8E5","false","false","false","","" "40624e","G-EUYG","AIRBUS","Airbus Sas","AIRBUS A320-232","A320","4238","","L2J","","SPEEDBIRD","BAW","","British Airways","","2010-03-18","","","2010-01-01","","","2 x INTERNATIONAL AERO ENGINE V2527-A5
","false","false","false","","" @@ -513009,7 +513115,7 @@ rooney, Derek","","2012-03-08","","","2012-01-01","","","1x ROTAX 912-UL","false "ae1830","166336","WESTLAND","","","H60","","","H2T","","","","","","","","","","","","","","false","false","false","","" "a2441a","N245RS","HAWKER SIDDELEY","Hawker Siddeley","125 600FB","H25A","256027","","L2J","","","","","Conair Jet Sales Llc","","","","","","","","","false","false","false","","" "ac2c65","N88375","CHAMPION","Bellanca","7ECA","CH7A","1100-75","","L1P","","","","","Edgar Douglas","","","2028-01-31","","1975-01-01","","","LYCOMING 0-235 SERIES","false","false","false","","" -"7c0a92","VH-CDG","CESSNA","Cessna Aircraft Company","525","C525","525-0163","","L2J","","","","","Shazo Holdings Pty Ltd","","","","","1996-01-01","","","2x Williams International FJ44-1AP","false","false","false","","" +"7c0a92","VH-CDG","CESSNA","Cessna Aircraft Company","525","C525","525-0163","","L2J","Air Gold Coast Pty. Ltd.","","","","Shazo Holdings Pty Ltd","","","","","1996-01-01","","","2x Williams International FJ44-1AP","false","false","false","","" "406ea0","G-CIRY","EVEKTOR","Light Sport Aviation Ltd","EV-97 EUROSTAR SL MICROLIGHT Eurostar","EV97","2015-4222","","L1P","","","","","Private","","2015-07-17","","","2015-01-01","","","1 x ROTAX 912-UL  ( WOODCOMP KLASSIC 170/3/R )
","false","false","false","","" "ac0e65","N876UC","CESSNA","Cessna","560XL","C56X","560-5652","","L2J","","","","","Rps Holdings Inc","","","2030-02-28","","2006-01-01","","","P&W CANADA PW545B","false","false","false","","" "a443bf","N374ME","CESSNA","Cessna","T206H","T206","T20608223","","L1P","","","","","Kelley Aviation Llc","","","2028-04-30","","2000-01-01","","","LYCOMING TI0-540 SER","false","false","false","","" @@ -513075,6 +513181,7 @@ rooney, Derek","","2012-03-08","","","2012-01-01","","","1x ROTAX 912-UL","false "3f3a7f","D-OIBF","","Schroeder Fire Balloons","Hot Air Balloon","BALL","1527","","","","","","","Private","","","","","","","","","false","false","false","","" "4cad71","EI-MCF","REIMS","Cessna Aircraft Company","CESSNA 172R","C172","17280799","","L1P","","","","","O'connor Kieran Augustine","","2000-01-20","","","1999-01-01","","","1x LYCOMING IO-360-L2A","false","false","false","","" "c81da9","ZK-JIP","REIMS","","","C172","","","L1P","","","","","","","","","","","","","","false","false","false","","" +"3b7b39","F-ZBMM","DE HAVILLAND CANADA","De Havilland Canada","DH8D","DH8D","","","L2T","Sécurité Civile","MILAN","","","","","","","","","","","","false","false","false","","" "7c6b65","VH-VHZ","","","","GLID","","","","","","","","","","","","","","","","","false","false","false","","" "ac212e","N8807M","COLEMILL","Beech","S35","BE35","D-7330","","L1P","","","","","Catanese Marc V","","","2028-05-31","","1964-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "ab98f2","N8463P","PIPER","Piper","PA-28RT-201T","P28R","28R-8131193","","L1P","","","","","Sams J Mark","","","2030-02-28","","1981-01-01","","","CONT MOTOR TSIO-360 SER","false","false","false","","" @@ -513579,6 +513686,7 @@ rooney, Derek","","2012-03-08","","","2012-01-01","","","1x ROTAX 912-UL","false "a9567f","N700VX","TBM","Socata","TBM 700","TBM7","118","","L1T","","","","","William E Patterson","","","","","","","","","false","false","false","","" "a480e8","N39EV","EVEKTOR","Evektor - Aerotechnik A S","SPORTSTAR MAX","EVSS","2014 1725","","L1P","","","","","Heyroth Glen","","","2028-10-31","","2014-01-01","","","ROTAX 912ULS SERIES","false","false","false","","" "a9ae11","N7225R","RAYTHEON","Beech","58","BE58","TH-550","","L2P","","","","","Walker Michael E","","","2028-03-31","","1974-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" +"a449a3","N37562","BOEING","Boeing","Boeing 737-9 MAX","B39M","67591","8624","L2J","United Airlines","UNITED","UAL","UA","United Airlines","","","","","","2023-05-24","","2x CFMI LEAP-1B28","false","false","false","","" "a9a104","N7198Z","PIPER","Piper","PA-25-235","PA25","25-3095","","L1P","","","","","Piedmont Soaring Society","","","2029-10-31","","1964-01-01","","","LYCOMING 0-540 SERIES","false","false","false","","" "a1b8bf","N21SF","IAI","","","WW24","","","L2J","","","","","","","","","","","","","","false","false","false","","" "ac8a49","N907MJ","","Landis Michael C","MERLIN GT","","95046","","","","","","","Landis Michael C","","","2027-09-30","","","","","","false","false","false","","" @@ -513818,6 +513926,7 @@ rooney, Derek","","2012-03-08","","","2012-01-01","","","1x ROTAX 912-UL","false "a47969","N388EC","ROBINSON","Robinson Helicopter Company","R44 II","R44","10930","","H1P","","","","","Crab Creek Aviation Llc","","","2027-09-30","","2005-01-01","","","LYCOMING IO-540-AE1A5","false","false","false","","" "a7ee20","N61TT","RAYTHEON","Beech","F33A","BE33","CE-1238","","L1P","","","","","Gilbert Greg P","","","2029-02-28","","1988-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "403840","G-BVFM","RANS","Walton Pg","RANS S6-116 Coyote Ii","COY2","PFA 204A-12579","","L1P","","","","","Private","","2005-06-01","","","1994-01-01","","","1 x ROTAX 912-UL
","false","false","false","","" +"c080dd","C-GWUU","BOEING","Boeing","787-9 Dreamliner","B789","66991","1147","L2J","Air Canada","AIR CANADA","ACA","AC","Air Canada","","","","","","","","","false","false","false","","" "c062dd","C-GLLK","REIMS","Cessna Aircraft Company","172N (Cessna)","C172","17271979","","L1P","","","","","Guy Lapointe","","1997-09-10","","","","","","","false","false","false","","" "3f6bc6","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" "ae154e","02-05307","WESTLAND","Boeing-mcdonnell Douglas","AH-64D Apache","H64","PVD307","","H2T","","","","","United States Army","","","","","","","","","false","false","false","","" @@ -514151,6 +514260,7 @@ rooney, Derek","","2012-03-08","","","2012-01-01","","","1x ROTAX 912-UL","false "70c0a2","A4O-BE","BOEING","Boeing","737NG 81M/W","B738","37161","","L2J","","OMAN AIR","OMA","","Oman Air","","","","","","","","","false","false","false","","" "a23351","N2407E","","Spectrum Aircraft Corp","SA-20 VISTA","","SA-20-001","","","","","","","Archer Ashe","","","2028-07-31","","2002-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" "3f02b3","D-8732","","Pzl-bielsko","SZD-30 Pirat","GLID","B-315","","","","","","","Private","","","","","","","","","false","false","false","","" +"781f03","B-223G","BOEING","Boeing","777-F","B77L","67821","1741","L2J","China Southern Airlines","CHINA SOUTHERN","CSN","CZ","China Southern Airlines","","","","","2023-01-01","","","","false","false","false","","" "4b199a","HB-JSC","DASSAULT","Dassault Aviation","FALCON 7X","FA8X","430","","L3J","Dasnair Sa","","","","Alpcom Sa","","2018-01-19","","","2017-01-01","","","PRATT & WHITNEY CANADA CORP. PW307D","false","false","false","","" "7c776f","VH-XVL","EMBRAER","","","E190","","","L2J","","","","","","","","","","","","","","false","false","false","","" "49d445","OK-FEW","REIMS","","","C152","","","L1P","","","","","","","","","","","","","","false","false","false","","" @@ -516662,7 +516772,7 @@ rooney, Derek","","2012-03-08","","","2012-01-01","","","1x ROTAX 912-UL","false "800b0b","VT-GOQ","AIRBUS","Airbus","A320 214SL","A320","5990","","L2J","","GOAIR","GOW","","Go Air","","","","","","","","","false","false","false","","" "aa325c","N756WW","WREN","Cessna","TR182","C182","R18201181","","L1P","","","","","Lockwood William A","","","2030-01-31","","1979-01-01","","","LYCOMING 0-540 SERIES","false","false","false","","" "a8dc14","N670DS","CIRRUS","Cirrus Design Corp","SR22","SR22","4856","","L1P","","","","","Songbird Leasing Llc","","","2029-12-31","","2019-01-01","","","CONT MOTOR IO-550-N","false","false","false","","" -"adfeb4","73-1677","BOEING","Boeing","E-4B","B742","20683","","L4J","United States Air Force","AIR CHIEF","AIO","","United States Air Force","","","","","","","","","false","false","false","","Reserved" +"adfeb4","73-1677","BOEING","","","B742","","","L4J","","","","","","","","","","","","","","false","false","false","","Reserved" "a395a6","N33YK","YAKOVLEV","Yakovlev","YAK 52","YK52","9010910","","L1P","","","","","Mcmillan R Scott","","","2028-10-31","","1990-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" "ab4a92","N82677","CHAMPION","Aeronca","7AC","CH7A","7AC-1318","","L1P","","","","","Walker Jeffrey P","","","2028-04-30","","1946-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" "a8d99f","N67CP","RILEY","","","C340","","","L2P","","","","","","","","","","","","","","false","false","false","","" @@ -516746,6 +516856,7 @@ rooney, Derek","","2012-03-08","","","2012-01-01","","","1x ROTAX 912-UL","false "c2bd4b","295516","CASA","","","C295","","","L2T","","","","","","","","","","","","","","false","false","false","","" "c01cd3","C-FKXU","","Cessna Aircraft Company","150 (Cessna)","","17253","","","","","","","William Cotterall","","2007-03-09","","","","","","","false","false","false","","" "781047","B-1557","BOEING","Boeing","737NG 85C/W","B738","42933","","L2J","","","","","Jiangxi Air","","","","","","","","","false","false","false","","" +"45ab22","OY-JYB","BOEING","Boeing","737-8KN (W","B738","40254","4096","L2J","Jettime","JETTIME","JTG","JO","Pembroke","","","","","","","","2x CFMI CFM56-7B engines","false","false","false","","" "ac0479","N87341","RILEY","Cessna","310R","C310","310R0520","","L2P","","","","","N87341 Llc","","","2028-05-31","","1975-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" "acd33a","N9251B","CESSNA","Cessna","175","C175","55051","","L1P","","","","","Burke Charles M","","","2027-01-31","","1958-01-01","","","CONT MOTOR GO-300 SERIES","false","false","false","","" "aa32c2","N7560Y","PIPER","Piper","PA-30","PA30","30-623","","L2P","","","","","Stricklin Roy L","","","2030-01-31","","1964-01-01","","","LYCOMING IO-320 SERIES","false","false","false","","" @@ -517344,7 +517455,7 @@ rooney, Derek","","2012-03-08","","","2012-01-01","","","1x ROTAX 912-UL","false "a57514","N4504V","COLEMILL","Beech","35","BE35","D-1325","","L1P","","","","","Campbell Wayne E","","","2030-01-31","","1948-01-01","","","CONT MOTOR E185 SERIES","false","false","false","","" "aa97b4","N7818G","REIMS","Cessna","172L","C172","17259518","","L1P","","","","","Lippert Charles Phillip","","","2029-11-30","","1970-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "3fa994","83+20","WESTLAND","Westland","Lynx Mk.88A","LYNX","388","","H2T","German Navy","GERMAN NAVY","GNY","","German Navy","","","","","","","","","false","false","false","","" -"7c4798","VH-OFE","AIRBUS","","","A21N","","","L2J","","","","","","","","","","","","","","false","false","false","","" +"7c4798","VH-OFE","AIRBUS","Airbus Industrie","A321-251NX","A21N","09540","","L2J","Jetstar Airways","JETSTAR","JST","JQ","Qantas Airways","","2022-06-30","","","2022-01-01","","","","false","false","false","","" "a8d0a7","N6670W","PIPER","Piper","PA-28-140","P28A","28-20775","","L1P","","","","","Highland Asset Management","","","2029-04-30","","1965-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" "4077ec","G-LKSM","AIRPLANE FACTORY","","","SLG2","","","L1P","","","","","","","","","","","","","","false","false","false","","" "4059ec","G-CFPE","SCHEMPP-HIRTH","Schempp-hirth Flugzeugbau Gmbh","VENTUS CT","VENT","131","","L1P","","","","","Private","","2010-11-26","","","1988-01-01","","","
","false","false","false","","" @@ -519956,114 +520067,3 @@ rooney, Derek","","2012-03-08","","","2012-01-01","","","1x ROTAX 912-UL","false "45db07","OY-VXG","","Rolladen-schneider","LS1 f","GLID","183","","","","","","","Private","","","","","","","","","false","false","false","","" "780aab","B-LRG","AIRBUS","Airbus","A350 941","A359","53","","L2J","","CATHAY","CPA","","Cathay Pacific Airways","","","","","","","","","false","false","false","","" "adc505","N9869D","YAKIMA AEROSPORT","","","PA18","","","L1P","","","","","","","","","","","","","","false","false","false","","" -"c08be6","C-IAZL","","Ultraflight Manufacturing Ltd.","LAZAIR (Lazair)","ULAC","A586","","","","","","","Brad Hillman","","1994-03-15","","","","","","","false","false","false","","" -"ae5c57","169325","BOEING","Boeing","P-8A Poseidon","P8","62292","","L2J","","","","","United States Navy","","","","","","","","","false","false","false","","Reserved" -"c01b18","C-FKGT","BELL","Bell Helicopter Textron Division Of Textron Inc","212 (Bell)","B212","30901","","H2T","","","","","Tasman Helicopters Ltd","","2016-08-03","","","","","","","false","false","false","","" -"ac6ca0","N9Y","","","","","","","","","","","","","","","","","","","","","false","false","false","","" -"3ed88a","D-KWYS","GLASER-DIRKS","Glaser-dirks","DG-800A","DG80","8-4A3","","L1P","","","","","Private","","","","","","","","","false","false","false","","" -"c09de4","C-IHUP","","Back Bone","Shadow (Back Bone)","PARA","2C25","","","","","","","Jean-francois Pelneault","","2017-12-05","","","","","","","false","false","false","","" -"c031da","C-FSWV","CESSNA","Cessna Aircraft Company","180H (Cessna)","C180","18051535","","L1P","","","","","Robert Johnson","","1983-06-17","","","","","","","false","false","false","","" -"a685af","N5193R","REIMS","Cessna","172M","C172","17263410","","L1P","","","","","Haralson Aviation Inc","","","2029-12-31","","1974-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" -"a2ef5c","N2889X","CESSNA","Cessna","177","C177","17700289","","L1P","","","","","Kogele Donald J","","","2030-04-30","","1967-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" -"c013da","C-FHNL","EMBRAER","Embraer Empresa Brasileira De Aeronautica S.a.","ERJ 190-100 IGW (Embraer)","E190","19000070","","L2J","","AIR CANADA","ACA","","Air Canada","","2007-03-30","","","","","","","false","false","false","","" -"a7d3f7","N603SC","","Sceye Inc","AIRSHIP","SHIP","SSV 70.1","","","","","","","Sceye Inc","","","2027-02-28","","","","","","false","false","false","","" -"896271","A6-RTS","DASSAULT","Dassault","Dassault Falcon 900DX","F900","601","","L3J","Execujet Middle East","MIDJET","EJO","","Execujet Middle East","","","","","","","","","false","false","false","","" -"3d1011","D-EEIJ","WREN","Cessna","T182T Turbo Skylane","C182","T18208130","","L1P","","","","","Private","","","","","","","","","false","false","false","","" -"a07ee2","N13095","REIMS","Cessna","172M","C172","17262489","","L1P","","","","","Supreme Electric Co","","","2027-08-31","","1973-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" -"c827f9","ZK-CDM","ST. JUST","","","C185","","","L1P","","","","","","","","","","","","","","false","false","false","","" -"ac9788","N910JW","DASSAULT","Dassault-breguet","MYSTERE FALCON 900","F900","31","","L3J","","","","","F900b Llc","","","2029-06-30","","1987-01-01","","","GARRETT TFE731-5AR","false","false","false","","" -"c809f9","ZK-CLL","","","","ZZZZ","","","","","","","","","","","","","","","","","false","false","false","","" -"a27052","N2561Q","WREN","Cessna","182K","C182","18257761","","L1P","","","","","Mariposa Aviation Inc","","","2027-05-31","","1966-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" -"a4c8af","N407X","MAULE","Maule","M-5-235C","M5","7041C","","L1P","","","","","Michael Craig A","","","2028-10-31","","","","","LYCOMING 0-540 SERIES","false","false","false","","" -"a421f9","N3655U","WREN","Cessna","182F","C182","18255055","","L1P","","","","","Boggs Dennis E","","","2030-04-30","","1963-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" -"acbb60","N91963","WREN","Cessna","182M","C182","18259970","","L1P","","","","","Coral Reef Aviation Llc","","","2029-07-31","","1969-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" -"c07e42","C-GVVD","REIMS","","","C172","","","L1P","","","","","","","","","","","","","","false","false","false","","" -"a59dc6","N461ER","REIMS","Cessna","172S","C172","172S11596","","L1P","Embry-riddle Aeronautical University","SATSLAB","XSL","","Embry-riddle Aeronautical University Inc","","","2028-07-31","","2015-01-01","","","LYCOMING IO-360-L2A","false","false","false","","" -"e48140","PR-JUB","RAYTHEON","Hawker Beechcraft Corp","King Air 200GT","BE20","BY-9","","L2T","","","","","Jubran Engenharia Sa","","","","","","","","","false","false","false","","" -"a04035","N115QS","BOMBARDIER","Bombardier Inc","BD-700-1A11","GL5T","9734","","L2J","","EXECJET","EJA","","Netjets Sales Inc","","","2028-11-30","","2015-01-01","","","ROLLS DEUT BR700-710A220","false","false","false","","" -"a22ee7","N24NW","LEARJET","Gates","Learjet 35","LJ35","35-037","","L2J","","","","","Marquis Air Llc","","","","","","","","","false","false","false","","" -"a75336","N571MC","CESSNA","Cessna","182T","C82T","18281038","","L1P","","","","","Thompson Gary R","","","2029-01-31","","2001-01-01","","","LYCOMING IO-540 SER","false","false","false","","" -"ac75d6","N9014Q","PANHA","Bell","206B","B06","695","","H1T","","","","","Scotts Helicopter Services Inc","","","2028-07-31","","1972-01-01","","","ALLISON 250-C20","false","false","false","","" -"4401ce","OE-9468","STEMME","Stemme","S10 VT","S10S","11-103","","L1P","","","","","Private","","","","","","","","","false","false","false","","" -"a525ba","N43018","TAYLOR-YOUNG","Taylorcraft","BCS12-D","TAYB","6677","","L1P","","","","","Jpf Aircraft Llc","","","2029-10-31","","1946-01-01","","","CONT MOTOR A&C65 SERIES","false","false","false","","" -"ac57d6","N8949U","","Beech","35-C33","","CD-955","","","","","","","Aero1217 Aircraft Holdings Llc","","","2029-08-31","","1965-01-01","","","CONT MOTOR I0-470 SERIES","false","false","false","","" -"a61ff0","N494LB","","Lindstrand Balloons","240A","BALL","5377","","","","","","","Above It All Balloon Co Inc","","","2027-11-30","","2007-01-01","","","NONE NONE","false","false","false","","" -"a4e217","N4133S","RAYTHEON","Beech","F33A","BE33","CE-591","","L1P","","","","","Mark Elliott Paul","","","2028-09-30","","1975-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" -"ab5593","N82966","RAYTHEON","Beech","F33A","BE33","CE-1757","","L1P","","","","","Big Bend Community College","","","2029-05-31","","1993-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" -"3ef178","D-4321","","Schempp-hirth","Discus CS","GLID","149CS","","","","","","","Private","","","","","","","","","false","false","false","","" -"a3ccd1","N344GS","CONVAIR","Convair","C-131F","CVLP","311","","L2P","","","","","Conquest Air Inc","","","2028-08-31","","","","","","false","false","false","","" -"ad62de","N96144","TAYLOR-YOUNG","Taylorcraft","BC12-D","TAYB","8444","","L1P","","","","","Kestly Daniel R","","","2028-05-31","","1946-01-01","","","CONT MOTOR C85 SERIES","false","false","false","","" -"a8b35b","N66RD","TIGER","Gulfstream American Corp","AA-5B","AA5","AA5B1013","","L1P","","","","","Tiger Air 2 Llc","","","2027-04-30","","1978-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" -"406e14","G-STUZ","LAMBERT","Blanchard Sa","MISSION M108","M108","LAA 370-15326","","L1P","","","","","Private","","2015-03-30","","","2015-01-01","","","1 x ROTAX 912iS  ( DUC HELICES SWIRL )
","false","false","false","","" -"43e9ed","M-TYRA","BOMBARDIER","Bombardier","Bombardier Global 5000","GL5T","9560","","L2J","","","","","Ata Concept Gmbh","","","","","","","","","false","false","false","","" -"a55b69","N444VW","REIMS","Textron Aviation Inc","172S","C172","172S11666","","L1P","","","","","N444vw Llc","","","2029-11-30","","2016-01-01","","","LYCOMING IO-360-L2A","false","false","false","","" -"008364","ZS-BGT","RAYTHEON","Hawker Beechcraft Corp","King Air 200GT","BE20","BY-109","","L2T","","","","","Gt Assmang Ltd","","","","","","","","","false","false","false","","" -"a5a041","N4614L","REIMS","Cessna","172G","C172","17254609","","L1P","","","","","Dowell Roy","","","2030-03-31","","","","","CONT MOTOR 0-300 SER","false","false","false","","" -"c04bd3","C-GCSO","DIAMOND","Cessna Aircraft Company","152 (Cessna)","DA42","15282762","","L2P","","","","","Aero Academy Inc.","","1980-05-22","2017-06-13","","","","","","false","false","false","","" -"a01ad3","N10583","STEARMAN","Boeing","E75","ST75","75-7029","","L1P","","","","","Minor James F","","","2029-12-31","","1946-01-01","","","LYCOMING R680-4P-B4","false","false","false","","" -"009562","ZS-IBX","RAYTHEON","","","BE33","","","L1P","","","","","","","","","","","","","","false","false","false","","" -"aa23fd","N7521L","","Cameron Balloons Us","N-90","BALL","5848","","","","","","","Broker William L","","","2028-11-30","","1993-01-01","","","NONE NONE","false","false","false","","" -"a6bb8e","N53297","CIRRUS","Cirrus Design Corp","SR22","SR22","0898","","L1P","","","","","Sky West Aviation Inc Trustee","","","2029-05-31","","2004-01-01","","","CONT MOTOR IO-550 SERIES","false","false","false","","" -"8a05f7","PK-ARB","PIPER","","","P28A","","","L1P","","","","","","","","","","","","","","false","false","false","","" -"3e8912","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" -"7c753d","VH-XFZ","DE HAVILLAND CANADA","De Havilland Inc.","DHC-8-311","DH8C","365","","L2T","Skippers Aviation","","","","Skippers Aviation","","2008-07-01","","","1993-01-01","","","","false","false","false","","Small (15500 to 75000 lbs)" -"c06978","C-GNYL","PIPER","Piper Aircraft Corporation","PA-28-151 (Piper)","P28A","28-7515415","","L1P","","","","","William J Purdy","","2018-11-13","","","","","","","false","false","false","","" -"a7cb72","N601EZ","","Mcfarland Larry C","ZENITH 601 HDS","","6-4117","","","","","","","Casto Donald E","","","2029-11-30","","2004-01-01","","","AMA/EXPR UNKNOWN ENG","false","false","false","","" -"780cfe","B-1711","BOEING","Boeing","737NG 87L/W","B738","39159","","L2J","","SHENZHEN AIR","CSZ","","Shenzhen Airlines","","","","","","","","","false","false","false","","" -"d05d20","","","","","","","","","","","","","","","","","","","","","","false","false","false","","" -"a4945f","N39423","BOEING","Boeing","737-924ER","B739","32829","","L2J","","UNITED","UAL","","United Airlines Inc","","","2027-07-31","","2008-01-01","","","CFM INTL CFM56-7B26","false","false","false","","" -"c0bc2e","C-ITGV","","Aeropro S.r.o.","A220 (AEROPRO)","","44015","","","","","","","Gaston Demers","","2018-10-10","","","","","","","false","false","false","","" -"a36a10","N319UP","BOEING","Boeing","767-34AF","B763","27758","","L2J","United Parcel Service","UPS","UPS","5X","United Parcel Service Co","","","2028-05-31","","1997-01-01","","","GE CF6-80 SERIES","false","false","false","","" -"a34c10","N311RS","LOCKHEED","Lockheed","1329-25 JETSTAR II","L29B","5222","","L4J","","","","","Ken Sale Resources Inc","","","2028-01-31","","1977-01-01","","","ALLIEDSIGN TFE731 SERIES","false","false","false","","" -"ad553a","N95831","REIMS","Cessna","152","C152","15285972","","L1P","","","","","Christiansen Aviation Llc","","","2029-08-31","","1985-01-01","","","LYCOMING 0-235 SERIES","false","false","false","","" -"a9eabb","N738WD","","Agairobot Inc","AG200","","AAR20132001","","","","","","","Agairobot Inc","","","2030-01-31","","","","","","false","false","false","","" -"ad373a","N9501Z","","Burnside Gary M","SABRE","","074","","","","","","","Burnside Gary M","","","2029-04-30","","","","","","false","false","false","","" -"a1557e","N185Z","ST. JUST","Cessna","A185E","C185","1851363","","L1P","","","","","Wab Air Llc","","","2029-08-31","","1968-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" -"ae049e","99-1432","LOCKHEED MARTIN","Lockheed","C-130J Hercules","C30J","5518","","L4T","United States Air Force","AIR CHIEF","AIO","","United States Air Force","","","","","","","","","false","false","false","","Reserved" -"a19343","N200NV","BOEING","Boeing","737-800","B738","33341","","L2J","","AMERICAN","AAL","","American Airlines Inc","","","2029-10-31","","2016-01-01","","","CFM INTL CFM56-7B24E","false","false","false","","" -"a59841","N46LE","RAYTHEON","Beech","A36","BE36","E726","","L1P","","","","","Kepley Aviation Llc","","","2030-01-31","","","","","CONT MOTOR IO 520 SERIES","false","false","false","","" -"a1377e","N178GC","VIKING (2)","Dehavilland","DHC-6-300","DHC6","697","","L2T","","","","","Cortez Fisher Llc","","","2028-05-31","","1980-01-01","","","P & W PT6A-27","false","false","false","","" -"3e62a5","D-KCOB","","","","GLID","","","","","","","","","","","","","","","","","false","false","false","","" -"ac8fae","N9083J","PIPER","","","P28A","","","L1P","","","","","","","","","","","","","","false","false","false","","" -"a392e8","N32959","SEGUIN","Piper","PA-34-200T","PA34","34-7570069","","L2P","","","","","Hill Ryan D","","","2029-02-28","","","","","CONT MOTOR TSIO-360 SER","false","false","false","","" -"a70125","N550TS","GULFSTREAM AEROSPACE","Gulfstream Aerospace","GV-SP (G550)","GLF5","5147","","L2J","","","","","Tvpx Aircraft Solutions Inc Trustee","","","2027-05-31","","2007-01-01","","","ROLLS DEUT BR700-710C411","false","false","false","","" -"adddf6","N993BW","RAYTHEON","","","B350","","","L2T","","","","","","","","","","","","","","false","false","false","","" -"a374e8","N32137","WACO OHIO","Waco","UPF-7","WACF","5769","","L1P","","","","","Opdahl Robert L","","","2028-07-31","","1941-01-01","","","CONT MOTOR W670 SERIES","false","false","false","","" -"a070f0","N1276U","REIMS","Cessna","172M","C172","17266971","","L1P","","","","","Stelham Co","","","2028-04-30","","1976-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" -"a72aa1","N561A","RAYTHEON","Hawker Beechcraft Corp","B300C","B350","FM-36","","L2T","","","","","Us Department Of Homeland Security","","","2027-07-31","","2010-01-01","","","P&W CANADA PT6A-60A","false","false","false","","" -"780014","B-8095","","Gulfstream Aerospace","G550","G550","5059","","","","","","","Deer Jet Beijing","","","","","","","","","false","false","false","","" -"ab191b","N814KB","WESTLAND","Sikorsky","HH-60L","H60","06-27112","","H2T","","","","","Department Of Homeland Security","","","2028-04-30","","","","","","false","false","false","","" -"abadd9","N8513J","REIMS","Cessna","150G","C150","15066413","","L1P","","","","","Hurd Billy R","","","2028-05-31","","1967-01-01","","","CONT MOTOR 0-200 SERIES","false","false","false","","" -"a1b7e8","N21HR","IAI","Israel Aircraft Industries","1124A","WW24","335","","L2J","","","","","Aviation Dreams Inc","","","2028-02-29","","1981-01-01","","","GARRETT TFE731 SERIES","false","false","false","","" -"39356c","F-GNLM","LOT","Aerospatiale","Squirrel AS.350 B1","AS50","2021","","H1T","","","","","Hdc Compagnie","","","","","","","","","false","false","false","","" -"e06550","LV-FUP","ROBINSON","Robinson","R44 Raven II","R44","13488","","H1P","","","","","Private","","","","","","","","","false","false","false","","" -"a50106","N421TG","CESSNA","Cessna","421C","C421","421C0839","","L2P","","","","","Tri-k Management Llc","","","2029-10-31","","","","","","false","false","false","","" -"3e2503","D-IFFF","REIMS","Reims-cessna","F406 Caravan II","F406","406-0061","","L2T","","","","","Air Taxi Europe","","","","","","","","","false","false","false","","" -"7c112e","VH-DOG","WREN","Cessna Aircraft Company","182P","C182","18261241","","L1P","","","","","Camel Squadron Pty Ltd","","","","","1972-01-01","","","1x Teledyne-continental Motors O-470","false","false","false","","" -"a2fffb","N2925M","PIPER","Piper","PA-12","PA12","12-1428","","L1P","","","","","Bedgar Dean","","","2029-02-28","","1946-01-01","","","LYCOMING 0-235 SERIES","false","false","false","","" -"a35546","N3137C","CESSNA","Cessna","180","C180","30936","","L1P","","","","","Klausler Thomas W","","","2029-07-31","","1954-01-01","","","CONT MOTOR O-470 SERIES","false","false","false","","" -"780ca7","B-6460","AIRBUS","Airbus","A319 132SL","A319","6144","","L2J","","CHINA EASTERN","CES","","China Eastern Airlines","","","","","","","","","false","false","false","","" -"a75589","N57173","STEARMAN","Boeing","A75N1(PT17)","ST75","75-1457","","L1P","","","","","Harris Jeremy B","","","2029-09-30","","1941-01-01","","","CONT MOTOR W670 SERIES","false","false","false","","" -"86d1f3","JA810X","BOEING","Boeing","737NG 86N/W","B738","41271","","L2J","","NEWSKY","SNJ","","Solaseed Air","","","","","","","","","false","false","false","","" -"3f300b","D-OECH","","Thunder & Colt","90A Hot Air Balloon","BALL","1724","","","","","","","Private","","","","","","","","","false","false","false","","" -"ab10ae","N8119H","PIPER","Piper","PA-28-161","P28A","28-8016127","","L1P","","","","","Piper Warrior Llc","","","2027-05-31","","1979-01-01","","","LYCOMING 0-320 SERIES","false","false","false","","" -"3c4b36","D-ABYV","BOEING","","","B748","","","L4J","","","","","","","","","","","","","","false","false","false","","" -"a4604e","N381PH","EUROCOPTER","Eurocopter Deutschland Gmbh","EC 135 P2+","EC35","0611","","H2T","","","","","Phi Health Llc","","","2029-10-31","","2007-01-01","","","P&W CANADA PW206B2","false","false","false","","" -"402f6a","G-OXVI","SUPERMARINE","Vickers-armstrongs Ltd","SPITFIRE LF XVIE Spitfire","SPIT","CBAF 4262","","L1P","","","","","Spitfire Ltd","","2005-06-15","","","1945-01-01","","","1 x PACKARD MOTOR CAR CO MERLIN 266  ( DOWTY ROTOL R12/4F5/4 )
","false","false","false","","" -"a4e925","N41501","WAGAERO","Piper","J3C-65","J3","8150","","L1P","","","","","Perry David M","","","2028-07-31","","1941-01-01","","","CONT MOTOR A&C75 SERIES","false","false","false","","" -"43c539","ZE380","WESTLAND","Westland","Lynx AH.9A","LYNX","324","","H2T","Army Air Corps","ARMYAIR","AAC","","Army Air Corps","","","","","","","","","false","false","false","","" -"a214f3","N233PJ","CESSNA","","","C441","","","L2T","","","","","","","","","","","","","","false","false","false","","" -"a15d79","N1873L","COLEMILL","Beech","V35B","BE35","D-9892","","L1P","","","","","Janzen Mark","","","2030-04-30","","1976-01-01","","","CONT MOTOR IO 520 SERIES","false","false","false","","" -"ae0c99","82-24405","WESTLAND","","","H60","","","H2T","","","","","","","","","","","","","","false","false","false","","" -"a5c094","N47US","BEECH","Beech","B-60","BE60","P-543","","L2P","","","","","Turner Aero Llc","","","2029-08-31","","1980-01-01","","","LYCOMING TI0-541 SER","false","false","false","","" -"151dff","RA-73215","AIRBUS","","A319-115 ","A319","","","L2J","Rossiya","RUSSIA","SDM","FV","","","","","","","","","","false","false","false","","" -"a5a294","N462RV","VAN'S","Mosher Rick","VANS RV-6A","RV6","24829","","L1P","","","","","Bier David","","","2030-01-31","","1998-01-01","","","LYCOMING O&VO-360 SER","false","false","false","","" -"a2db9e","N2831C","CESSNA","Cessna","170B","C170","26374","","L1P","","","","","Mohar Fred B Jr","","","2028-02-29","","1954-01-01","","","CONT MOTOR C145 SERIES","false","false","false","","" -"ab5d16","N831LL","WREN","Cessna","182Q","C182","18266533","","L1P","","","","","State Of Illinois","","","2028-12-31","","","","","CONT MOTOR O-470 SERIES","false","false","false","","" -"a2c313","N27712","PIPER","Piper","PA-31","PA31","31-7812102","","L2P","","","","","Juliet Lima Marketing Inc","","","2029-10-31","","","","","","false","false","false","","" -"8014ad","VT-IMC","AIRBUS","","","A21N","","","L2J","","","","","","","","","","","","","","false","false","false","","" -"851270","JA31CA","RUAG","Dornier","Do 228 212","D228","8242","","L2T","","","","","New Central Airservice","","","","","","","","","false","false","false","","" -"402539","G-MNEG","","Mainair Sports Ltd","GEMINI FLASH","ULAC","360-885-3-W92","","","","","","","Private","","2004-08-10","","","1985-01-01","","","1 x ROTAX 447  ( MAINAIR SPORTS laminated wooden )
","false","false","false","","" -"440444","OE-GAS","IAI","Gulfstream Aerospace","Gulfstream Aerospace G150","G150","242","","L2J","","","","","International Jet Management Gmbh","","","","","","","","","false","false","false","","" -"a2f311","N2899V","COLEMILL","Beech","35","BE35","D-307","","L1P","","","","","Mtv Aero Group","","","2028-07-31","","","","","CONT MOTOR E185 SERIES","false","false","false","","" -"a727d5","N560KK","LOCKHEED","Canadair","T-33","T33","133560","","L1J","","","","","Comanche Fighters Llc","","","2029-12-31","","","","","","false","false","false","","" diff --git a/firmware/tools/make_icao24_db/make_icao24_db.py b/firmware/tools/make_icao24_db/make_icao24_db.py index 736471323..ef7756171 100755 --- a/firmware/tools/make_icao24_db/make_icao24_db.py +++ b/firmware/tools/make_icao24_db/make_icao24_db.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 # Copyright (C) 2021 ArjanOnwezen +# Copyright (C) 2025 Tommaso Ventafridda # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,43 +21,275 @@ # ------------------------------------------------------------------------------------- # Create icao24.db, used for ADS-B receiver application, using -# https://opensky-network.org/datasets/metadata/aircraftDatabase.csv +# https://opensky-network.org/datasets/metadata/aircraftDatabase.csv # as a source. # ------------------------------------------------------------------------------------- import csv -import unicodedata -icao24_codes=bytearray() -data=bytearray() -row_count=0 +import os +import shutil +import urllib.request +from dataclasses import dataclass +from typing import Dict, Set, Tuple -database=open("icao24.db", "wb") -with open('aircraftDatabase.csv', 'rt') as csv_file: - sorted_lines=sorted(csv_file.readlines()[1:]) - for row in csv.reader(sorted_lines, quotechar='"', delimiter=',', quoting=csv.QUOTE_ALL, skipinitialspace=True): - # only store in case enough info is available - if len(row) == 27 and len(row[0]) == 6 and len(row[1]) > 0: - icao24_code=row[0][:6].upper() - registration=row[1][:8].encode('ascii', 'ignore') - manufacturer=row[3][:32].encode('ascii', 'ignore') - model=row[4][:32].encode('ascii', 'ignore') - # in case icao aircraft type isn't, use ac type like BALL for balloon - if len(row[8]) == 3: - actype=row[8][:3].encode('ascii', 'ignore') - else: - actype=row[5][:4].encode('ascii', 'ignore') - owner=row[13][:32].encode('ascii', 'ignore') - operator=row[9][:32].encode('ascii', 'ignore') - #padding - icao24_codes.extend(bytearray(icao24_code+'\0', encoding='ascii')) - registration_padding=bytearray('\0' * (9 - len(registration)), encoding='ascii') - manufacturer_padding=bytearray('\0' * (33 - len(manufacturer)), encoding='ascii') - model_padding=bytearray('\0' * (33 - len(model)), encoding='ascii') - actype_padding=bytearray('\0' * (5 - len(actype)), encoding='ascii') - owner_padding=bytearray('\0' * (33 - len(owner)), encoding='ascii') - operator_padding=bytearray('\0' * (33 - len(operator)), encoding='ascii') - data.extend(bytearray(registration+registration_padding+manufacturer+manufacturer_padding+model+model_padding+actype+actype_padding+owner+owner_padding+operator+operator_padding)) - row_count+=1 -database.write(icao24_codes+data) -print("Total of", row_count, "ICAO codes stored in database") +@dataclass +class AircraftRecord: + """Represents an aircraft record with all relevant fields""" + icao24: str + registration: str + manufacturer: str + model: str + actype: str + owner: str + operator: str + + def __hash__(self): + return hash(self.icao24) + + def __eq__(self, other): + if not isinstance(other, AircraftRecord): + return False + return self.icao24 == other.icao24 + + def data_equals(self, other): + """Check if all data fields are equal (excluding ICAO24 which is the key)""" + if not isinstance(other, AircraftRecord): + return False + return ( + self.registration == other.registration + and self.manufacturer == other.manufacturer + and self.model == other.model + and self.actype == other.actype + and self.owner == other.owner + and self.operator == other.operator + ) + + +def backup_previous_csv() -> bool: + """Backup the existing CSV file if it exists. Returns True if backup was made.""" + if os.path.exists("aircraftDatabase.csv"): + shutil.copy2("aircraftDatabase.csv", "aircraftDatabase_previous.csv") + print("Backed up previous CSV file") + return True + return False + + +def download_aircraft_database() -> None: + """Download the aircraft database file from OpenSky Network""" + url = "https://opensky-network.org/datasets/metadata/aircraftDatabase.csv" + print(f"Downloading aircraft database from {url}...") + try: + urllib.request.urlretrieve(url, "aircraftDatabase.csv") + print("Download completed successfully.") + except Exception as e: + print(f"Error downloading aircraft database file: {e}") + raise + + +def parse_csv_file(filename: str) -> Dict[str, AircraftRecord]: + """Parse CSV file and return a dictionary of records""" + records = {} + + if not os.path.exists(filename): + return records + + try: + with open(filename, "rt", encoding="utf-8") as csv_file: + sorted_lines = sorted(csv_file.readlines()[1:]) + for row in csv.reader( + sorted_lines, + quotechar='"', + delimiter=",", + quoting=csv.QUOTE_ALL, + skipinitialspace=True, + ): + # only store in case enough info is available + if len(row) == 27 and len(row[0]) == 6 and len(row[1]) > 0: + icao24_code = row[0][:6].upper() + registration = row[1][:8] + manufacturer = row[3][:32] + model = row[4][:32] + # in case icao aircraft type isn't, use ac type like BALL for balloon + if len(row[8]) == 3: + actype = row[8][:3] + else: + actype = row[5][:4] + owner = row[13][:32] + operator = row[9][:32] + + records[icao24_code] = AircraftRecord( + icao24=icao24_code, + registration=registration, + manufacturer=manufacturer, + model=model, + actype=actype, + owner=owner, + operator=operator, + ) + except Exception as e: + print(f"Warning: Could not parse CSV file {filename}: {e}") + return {} + + return records + + +def compare_records( + old_records: Dict[str, AircraftRecord], new_records: Dict[str, AircraftRecord] +) -> Tuple[Set[str], Set[str], Set[str]]: + """Compare old and new records, return sets of new, deleted, and changed ICAO codes""" + old_keys = set(old_records.keys()) + new_keys = set(new_records.keys()) + + new_icao_codes = new_keys - old_keys + deleted_icao_codes = old_keys - new_keys + + # Check for changes in existing records + changed_icao_codes = set() + for icao in old_keys & new_keys: + if not old_records[icao].data_equals(new_records[icao]): + changed_icao_codes.add(icao) + + return new_icao_codes, deleted_icao_codes, changed_icao_codes + + +def write_database(records: Dict[str, AircraftRecord]) -> int: + """Write records to database file using original format""" + # bytearrays to store icao24 codes and data + icao24_codes = bytearray() + data = bytearray() + row_count = 0 + + # Sort by ICAO code for consistency + sorted_records = sorted(records.values(), key=lambda r: r.icao24) + + for record in sorted_records: + # Encode data fields + registration = record.registration.encode("ascii", "ignore") + manufacturer = record.manufacturer.encode("ascii", "ignore") + model = record.model.encode("ascii", "ignore") + actype = record.actype.encode("ascii", "ignore") + owner = record.owner.encode("ascii", "ignore") + operator = record.operator.encode("ascii", "ignore") + + # Add ICAO code with null terminator (original format) + icao24_codes.extend(bytearray(record.icao24 + "\0", encoding="ascii")) + + # Add padded data fields (original format) + registration_padding = bytearray( + "\0" * (9 - len(registration)), encoding="ascii" + ) + manufacturer_padding = bytearray( + "\0" * (33 - len(manufacturer)), encoding="ascii" + ) + model_padding = bytearray("\0" * (33 - len(model)), encoding="ascii") + actype_padding = bytearray("\0" * (5 - len(actype)), encoding="ascii") + owner_padding = bytearray("\0" * (33 - len(owner)), encoding="ascii") + operator_padding = bytearray("\0" * (33 - len(operator)), encoding="ascii") + + data.extend( + bytearray( + registration + + registration_padding + + manufacturer + + manufacturer_padding + + model + + model_padding + + actype + + actype_padding + + owner + + owner_padding + + operator + + operator_padding + ) + ) + row_count += 1 + + with open("icao24.db", "wb") as database: + database.write(icao24_codes + data) + + return row_count + + +def create_database() -> None: + """Create the ICAO24 database from the downloaded file""" + # Backup existing CSV before downloading new one + has_previous = backup_previous_csv() + + # Download new CSV + download_aircraft_database() + + # Parse both CSV files for comparison + old_records = {} + if has_previous: + print("Parsing previous CSV file...") + old_records = parse_csv_file("aircraftDatabase_previous.csv") + print(f"Found {len(old_records)} records in previous CSV") + + print("Parsing new CSV file...") + new_records = parse_csv_file("aircraftDatabase.csv") + print(f"Found {len(new_records)} records in new CSV") + + # Compare records if we have a previous version + if old_records: + new_icao_codes, deleted_icao_codes, changed_icao_codes = compare_records( + old_records, new_records + ) + + # Print change statistics + print("\n" + "=" * 50) + print("CSV CHANGE SUMMARY") + print("=" * 50) + print(f"New records: {len(new_icao_codes):>8}") + print(f"Deleted records: {len(deleted_icao_codes):>8}") + print(f"Changed records: {len(changed_icao_codes):>8}") + print(f"Total records: {len(new_records):>8}") + print("=" * 50) + + # Show examples of changes (limited to avoid spam) + if new_icao_codes and len(new_icao_codes) <= 10: + print(f"\nNew ICAO24 codes: {', '.join(sorted(new_icao_codes))}") + elif new_icao_codes: + sample_new = sorted(list(new_icao_codes))[:5] + print( + f"\nSample new ICAO24 codes: {', '.join(sample_new)} (and {len(new_icao_codes)-5} more)" + ) + + if deleted_icao_codes and len(deleted_icao_codes) <= 10: + print(f"Deleted ICAO24 codes: {', '.join(sorted(deleted_icao_codes))}") + elif deleted_icao_codes: + sample_deleted = sorted(list(deleted_icao_codes))[:5] + print( + f"Sample deleted ICAO24 codes: {', '.join(sample_deleted)} (and {len(deleted_icao_codes)-5} more)" + ) + + if changed_icao_codes and len(changed_icao_codes) <= 10: + print(f"Changed ICAO24 codes: {', '.join(sorted(changed_icao_codes))}") + elif changed_icao_codes: + sample_changed = sorted(list(changed_icao_codes))[:5] + print( + f"Sample changed ICAO24 codes: {', '.join(sample_changed)} (and {len(changed_icao_codes)-5} more)" + ) + else: + print("\nNo previous CSV found - this appears to be the first run") + + # Create database from new records + print("\nCreating ICAO24 database...") + row_count = write_database(new_records) + print("Total of", row_count, "ICAO codes stored in database") + + +def cleanup_previous_csv() -> None: + """Remove the previous CSV file if it exists""" + if os.path.exists("aircraftDatabase_previous.csv"): + os.remove("aircraftDatabase_previous.csv") + + +if __name__ == "__main__": + try: + create_database() + cleanup_previous_csv() + except Exception as e: + print(f"Error creating ICAO24 database: {e}") + else: + print("ICAO24 database created successfully.") diff --git a/firmware/tools/make_macaddress_db/make_macaddress_db.py b/firmware/tools/make_macaddress_db/make_macaddress_db.py new file mode 100644 index 000000000..81338c207 --- /dev/null +++ b/firmware/tools/make_macaddress_db/make_macaddress_db.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python3 +# Copyright (C) 2025 Tommaso Ventafridda +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# +# ------------------------------------------------------------------------------------- +# Create macaddress.db, used for BLE receiver application, using +# https://standards-oui.ieee.org/oui/oui.txt as a source. +# ------------------------------------------------------------------------------------- + +import urllib.request +import unicodedata +import re +from typing import List, Tuple + + +def download_oui_file() -> str: + """Download the OUI file from IEEE""" + url = "https://standards-oui.ieee.org/oui/oui.txt" + print(f"Downloading OUI database from {url}...") + try: + with urllib.request.urlopen(url) as response: + content = response.read().decode("utf-8") + print("Download completed successfully.") + return content + except Exception as e: + print(f"Error downloading OUI file: {e}") + raise + + +def parse_oui_data(content: str) -> List[Tuple[str, str]]: + """Parse the OUI file content and extract MAC prefixes and vendor names""" + entries = [] + lines = content.split("\n") + + for _, line in enumerate(lines): + # Look for lines with (hex) pattern + if "(hex)" in line: + # Extract MAC prefix and vendor name + match = re.match( + r"^([0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2})\s+\(hex\)\s+(.+)$", + line.strip(), + ) + if match: + # Remove dashes: "28-6F-B9" -> "286FB9" + mac_prefix = match.group(1).replace( + "-", "" + ) + vendor_name = match.group(2).strip() + + # Normalize vendor name and limit to 63 characters + vendor_name = ( + unicodedata.normalize("NFKD", vendor_name[:63]) + .encode("ascii", "ignore") + .decode("ascii") + ) + + if mac_prefix and vendor_name: + entries.append((mac_prefix, vendor_name)) + + print(f"Parsed {len(entries)} MAC address entries.") + return entries + + +def create_database( + entries: List[Tuple[str, str]], output_filename: str = "macaddress.db" +): + """Create the binary database file.""" + # Sort entries by MAC prefix for binary search + entries.sort(key=lambda x: x[0]) + + mac_prefixes = bytearray() + vendor_data = bytearray() + row_count = 0 + + for mac_prefix, vendor_name in entries: + # MAC prefix: 6 hex chars + null terminator = 7 bytes + mac_prefixes += bytearray(mac_prefix + "\0", encoding="ascii") + + # Vendor name: pad to 64 bytes + vendor_bytes = vendor_name.encode("ascii", "ignore") + vendor_padding = bytearray("\0" * (64 - len(vendor_bytes)), encoding="ascii") + vendor_data += vendor_bytes + vendor_padding + + row_count += 1 + + # Write database: index section followed by data section + with open(output_filename, "wb") as database: + database.write(mac_prefixes + vendor_data) + + print(f"Created database '{output_filename}' with {row_count} MAC address entries.") + print(f"Index section: {len(mac_prefixes)} bytes") + print(f"Data section: {len(vendor_data)} bytes") + print(f"Total database size: {len(mac_prefixes) + len(vendor_data)} bytes") + + +def main(): + """Main function to create the MAC address database.""" + try: + oui_content = download_oui_file() + entries = parse_oui_data(oui_content) + + if not entries: + print("No valid entries found in OUI file!") + return + + create_database(entries) + + print("MAC address database creation completed successfully!") + + except Exception as e: + print(f"Error creating MAC address database: {e}") + return 1 + + +if __name__ == "__main__": + exit(main()) diff --git a/firmware/tools/make_spi_image.py b/firmware/tools/make_spi_image.py index 11180b309..bcbb1450f 100755 --- a/firmware/tools/make_spi_image.py +++ b/firmware/tools/make_spi_image.py @@ -30,6 +30,9 @@ from external_app_info import external_apps_address_start from external_app_info import external_apps_address_end import subprocess +import re +from pathlib import Path + usage_message = """ PortaPack SPI flash image generator @@ -50,6 +53,80 @@ def write_image(data, path): f.write(data) f.close() +########external app linker script address check######## + +def parse_memory_regions(ld_file_path): + regions = [] + + with open(ld_file_path, 'r') as f: + content = f.read() + + memory_section = re.search(r'MEMORY\s*\{(.*?)\}', content, re.DOTALL) + if not memory_section: + print("ERROR: Could not find MEMORY section in the linker script.") + return [] + + memory_content = memory_section.group(1) + + pattern = r'ram_external_app_(\w+)\s*\(rwx\)\s*:\s*org\s*=\s*(0x[A-Fa-f0-9]+),\s*len\s*=\s*(\d+)k' + matches = re.finditer(pattern, memory_content) + + for match in matches: + app_name = match.group(1) + address = int(match.group(2), 16) # string with hex -> int + length = int(match.group(3)) * 1024 # kb -> bytes + + regions.append({ + 'app_name': app_name, + 'address': address, + 'length': length + }) + + return sorted(regions, key=lambda x: x['address']) + +def validate_memory_regions(regions): + if not regions: + return False + + expected_step = 0x10000 # 64k as step (not sure why) + expected_base = 0xADB10000 # the start (not sure why this one) + expected_size = 32 * 1024 # 32k + issues_found = False + + print("\n") + print(f"checking {len(regions)} external apps address memory regions") + + if regions[0]['address'] != expected_base: + print(f"WARNING: external app first region should start at {hex(expected_base)}, but starts at {hex(regions[0]['address'])}") + issues_found = True + + for i, region in enumerate(regions): + expected_address = expected_base + (i * expected_step) + + # address count + if region['address'] != expected_address: + print(f"WARNING: external app region '{region['app_name']}' has incorrect address") + print(f"want: {hex(expected_address)}, Found: {hex(region['address'])}") + issues_found = True + + # size + if region['length'] != expected_size: + print(f"WARNING: external app region '{region['app_name']}' has incorrect size") + print(f"want: {expected_size//1024}KB, Found: {region['length']//1024}KB") + issues_found = True + + # overlap + if i < len(regions) - 1: + next_region = regions[i + 1] + if region['address'] + region['length'] > next_region['address']: + print(f"WARNING: external app region '{region['app_name']}' overlapped with '{next_region['app_name']}'") + issues_found = True + + return not issues_found + +#^^^^^^^^external app linker script address check^^^^^^^^ + +########gcc version check from elf file######## def get_gcc_version_from_elf(elf_file): succeed = False @@ -87,6 +164,7 @@ def get_gcc_version_from_elf_files_in_giving_path_or_filename_s_path(path): gcc_versions.append("gcc version of " + extract_elf_file_name + " is " + version_info) return gcc_versions +#^^^^^^^^gcc version check from elf file^^^^^^^^ if len(sys.argv) != 4: print(usage_message) @@ -107,6 +185,28 @@ for itbb in baseband_gcc_versions: print(itbb) print("\n") + +########external app linker script address check worker######## + +ld_file_path = Path("..") / ".." / "firmware" / "application" / "external" / "external.ld" + +try: + regions = parse_memory_regions(ld_file_path) + + if not regions: + print("some issue causing that we can't see external app's linker script's address list, pass") + + if validate_memory_regions(regions): + print("external app addr seems correct, pass") + else: + print("\nWARNING: It seems you are having incorrect external app addresses.") + +except Exception as e: + print(f"err: {e}") + +#^^^^^^^^external app linker script address check worker^^^^^^^^ + + spi_size = 1048576 images = ( @@ -125,6 +225,8 @@ images = ( spi_image = bytearray() spi_image_default_byte = bytearray((255,)) + +#########check if the fw size ok and check external addr leak######### for image in images: if len(image['data']) > image['size']: raise RuntimeError( @@ -161,3 +263,25 @@ write_image(spi_image, output_path) percent_remaining = round(1000 * pad_size / spi_size) / 10; print("Space remaining in flash ROM:", pad_size, "bytes (", percent_remaining, "%)") + + +#^^^^^^^^check if the fw size ok and check external addr leak^^^^^^^^ + +# copy the fast flash script +build_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'build') +flash_py_path = os.path.join(build_dir, 'flash.py') + +if not os.path.exists(flash_py_path): + + current_dir = os.path.dirname(__file__) + source_file = os.path.join(current_dir, 'fast_flash_pp_and_copy_apps.py') + + if not os.path.exists(build_dir): + os.makedirs(build_dir) + + # cp + import shutil + print(f"\ncopy {source_file} to {flash_py_path}\n") + shutil.copy2(source_file, flash_py_path) + + diff --git a/firmware/tools/widget_preview.py b/firmware/tools/widget_preview.py new file mode 100644 index 000000000..5474c5d12 --- /dev/null +++ b/firmware/tools/widget_preview.py @@ -0,0 +1,275 @@ +# +# copyleft Elliot Alderson from F society +# copyleft Darlene Alderson from F society +# +# This file is part of PortaPack. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# +import re +import tkinter as tk +from typing import Dict, List, Tuple +import argparse +from dataclasses import dataclass + +""" +TODO: Multile class in one file seperation +TODO: Add more widget type + +widget compatible guide: + +1. add the preview color in the "widgets = {" table +(note that this color is only for easier to distinguish) + +2. add the widget type and also regex in the "parsers" table +(note that your regex should apply all the possible constructor overload (re-impl)) + +""" + +# pp hard coded vars +screen_width = 240 +SCREEN_W = 240 +screen_height = 320 +CHARACTER_WIDTH = 8 +LINE_HEIGHT = 16 +topbar_offset = 16 +# widgets actually drew after the top bar, +# for example if Y = 0 then Y on screen actually is 16 + +# scale factor +scale = 2 + +widgets = { + "Button": "lightgray", + "NewButton": "lightyellow", + "Text": "lightblue", + "Rectangle": "lightgreen", + "Image": "pink", + "ImageButton": "lightpink", + "NumberField": "peachpuff", + "ProgressBar": "lightcoral", + "Console": "wheat", + "Checkbox": "plum", + "Label": "lavender", + "TextField": "paleturquoise", + "OptionsField": "palegreen", + "VuMeter": "sandybrown", + "BigFrequency": "khaki" +} + +@dataclass +class Widget: + name: str + widget_type: str + x: int + y: int + width: int + height: int + text: str = "" + +class WidgetParser: + def __init__(self): + + self.parsers: Dict[str, re.Pattern] = { + 'Button': re.compile( # TODO: fix those that using language helper + r'Button\s+(\w+)\s*\{\s*\{([^}]+)\},\s*"([^"]+)"\s*\};', + re.MULTILINE + ), + 'NewButton': re.compile( + r'NewButton\s+(\w+)\s*\{\s*(?:\{([^}]+)\}|{}),\s*(?:"([^"]*)"|\{\}),\s*(?:[^,}]+(?:,\s*[^}]+)*|\{\})\};', + re.MULTILINE + ), + 'Text': re.compile( + r'Text\s+(\w+)\s*\{\s*\{([^}]+)\}(?:\s*,\s*"([^"]*)")?\s*\};', + re.MULTILINE + ), + 'ProgressBar': re.compile( + r'ProgressBar\s+(\w+)\s*\{\s*\{([^}]+)\}\s*\};', + re.MULTILINE + ), + 'Console': re.compile( + r'Console\s+(\w+)\s*\{\s*\{([^}]+)\}\s*\};', + re.MULTILINE + ), + 'Label': re.compile( + r'Label\s+(\w+)\s*\{\s*\{([^}]+)\},\s*"([^"]+)"\s*\};', + re.MULTILINE + ), + 'VuMeter': re.compile( + r'VuMeter\s+(\w+)\s*\{\s*\{([^}]+)\},\s*\d+,\s*(?:true|false)\s*\};', + re.MULTILINE + ), + 'BigFrequency': re.compile( + r'BigFrequency\s+(\w+)\s*\{\s*\{([^}]+)\},\s*\d+\s*\};', + re.MULTILINE + ) + } + + def parse_coordinates(self, coord_str: str) -> Tuple[int, int, int, int]: + """Parse coordinate string like '2 * 8, 8 * 16, 8 * 8, 3 * 16'""" + if not coord_str or coord_str.isspace(): + return (0, 0, 0, 0) # for empty constructor fallback + + # split and evaluate each coordinate expression + coords = [eval(x.strip()) for x in coord_str.split(',')] + + # ensure we have exactly 4 coordinates, pad with zeros if needed + while len(coords) < 4: + coords.append(0) + + # only take the first 4 coordinates if there are more + return tuple(coords[:4]) + + def parse_file(self, filepath: str) -> List[Widget]: + with open(filepath, 'r') as f: + content = f.read() + + widgets = [] + for widget_type, pattern in self.parsers.items(): + matches = pattern.finditer(content) + for match in matches: + name = match.group(1) # Widget name is always in group 1 + coords = self.parse_coordinates(match.group(2) if match.group(2) else "") + + # Only try to get text if the pattern has 3 or more groups + text = "" + try: + if match.lastindex >= 3: + text = match.group(3) if match.group(3) else "" + except IndexError: + pass + + widgets.append(Widget( + name=name, + widget_type=widget_type, + x=coords[0], + y=coords[1], + width=coords[2], + height=coords[3], + text=text + )) + + return widgets + +class WidgetPreview(tk.Tk): + def __init__(self, widgets: List[Widget]): + super().__init__() + self.title("Widget Preview") + + self.canvas = tk.Canvas(self, width=screen_width * scale, height=screen_height * scale, bg='white') + self.canvas.pack(padx=10, pady=10) + + self.all_text_elements = [] + self.draw_widgets(widgets) + + def draw_widgets(self, widgets: List[Widget]): + draw_top_bar(self) + for widget in widgets: + self.draw_widget(widget) + + def draw_widget(self, widget: Widget): + print(f"Drawing widget: {widget.name} ({widget.widget_type})") + + x1 = widget.x * scale + y1 = (widget.y + topbar_offset) * scale + x2 = x1 + (widget.width * scale) + y2 = y1 + (widget.height * scale) + + print(f"Coordinates: ({x1}, {y1}), ({x2}, {y2})") + + if widget.widget_type == "VuMeter": + segment_height = widget.height / 8 * scale + for i in range(8): + self.canvas.create_rectangle( + x1, y1 + (i * segment_height), + x2, y1 + ((i+1) * segment_height), + fill=widgets[widget.widget_type], + outline="gray" + ) + elif widget.widget_type == "BigFrequency": + # Draw 7-segment style display + self.canvas.create_rectangle( + x1, y1, x2, y2, + fill=widgets[widget.widget_type], + outline="gray" + ) + self.canvas.create_text( + (x1 + x2) / 2, + (y1 + y2) / 2, + text="433.92" # placeholder text + ) + + else: + # defualt rendering + rect_id = self.canvas.create_rectangle( + x1, y1, x2, y2, + fill=widgets[widget.widget_type] + ) + + type_text_id = self.canvas.create_text( + (x1 + x2) // 2, + (y1 + y2) // 2, + text=widget.widget_type + ) + + detail_text_id = self.canvas.create_text( + (x1 + x2) // 2, + (y1 + y2) // 2, + text=f"{widget.widget_type}|{widget.name}|{widget.text}", + state='hidden' + ) + + widget_texts = { + 'type': type_text_id, + 'detail': detail_text_id + } + self.all_text_elements.append(widget_texts) + + # hover handlers + def on_enter(event): + for texts in self.all_text_elements: + self.canvas.itemconfig(texts['type'], state='hidden') + self.canvas.itemconfig(texts['detail'], state='hidden') + self.canvas.itemconfig(detail_text_id, state='normal') + self.canvas.tag_raise(detail_text_id) + + def on_leave(event): + for texts in self.all_text_elements: + self.canvas.itemconfig(texts['type'], state='normal') + self.canvas.tag_raise(texts['type']) + self.canvas.itemconfig(texts['detail'], state='hidden') + + for item_id in [rect_id, type_text_id, detail_text_id]: + self.canvas.tag_bind(item_id, '', on_enter) + self.canvas.tag_bind(item_id, '', on_leave) + +def draw_top_bar(self): + self.canvas.create_rectangle(0, 0, screen_width * scale, topbar_offset * scale, fill='lightblue') + self.canvas.create_text(screen_width * scale // 2, topbar_offset * scale // 2, text='I\'m Top Bar, hover mouse on items to check details', fill='black') + +def main(): + parser = argparse.ArgumentParser(description='Preview UI widgets from hpp files') + parser.add_argument('file', help='Path to the hpp file') + args = parser.parse_args() + + widget_parser = WidgetParser() + widgets = widget_parser.parse_file(args.file) + + app = WidgetPreview(widgets) + app.mainloop() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/hackrf b/hackrf index 65bf67f9b..651d0a7f2 160000 --- a/hackrf +++ b/hackrf @@ -1 +1 @@ -Subproject commit 65bf67f9b55ec8e501d64de9ffcbd0528e41c5f3 +Subproject commit 651d0a7f232e12016b3b12fb6a9b3fea08eb52fd diff --git a/hardware/portapack_h4m/3d_printed/README.md b/hardware/portapack_h4m/3d_printed/README.md new file mode 100644 index 000000000..d213c41e1 --- /dev/null +++ b/hardware/portapack_h4m/3d_printed/README.md @@ -0,0 +1,6 @@ +Upgraded standard case
https://www.printables.com/model/1337429-upgraded-hackrf-portapack-h4h4m-case + + +Upgraded 18650 version case
https://www.printables.com/model/1337451-18650-power-hackrf-portapack-h4m-case + +Official case, made for injection molding. Can be 3D printed, but has very tight tolerances.
https://www.printables.com/model/1019145-official-hackrf-portapack-h4h4m-case/comments diff --git a/hardware/portapack_h4m/LCD_TF_Schematic.pdf b/hardware/portapack_h4m/LCD_TF_Schematic.pdf index 424ddebea..0e37a1571 100644 Binary files a/hardware/portapack_h4m/LCD_TF_Schematic.pdf and b/hardware/portapack_h4m/LCD_TF_Schematic.pdf differ diff --git a/hardware/portapack_h4m/h4-gerbers/Drill_PTH_Through.DRL b/hardware/portapack_h4m/h4-gerbers/Drill_PTH_Through.DRL new file mode 100644 index 000000000..5dfebb473 --- /dev/null +++ b/hardware/portapack_h4m/h4-gerbers/Drill_PTH_Through.DRL @@ -0,0 +1,561 @@ +M48 +METRIC,LZ,000.000 +;FILE_FORMAT=3:3 +;TYPE=PLATED +;Layer: PTH_Through +;EasyEDA v6.5.46, 2025-01-01 16:01:39 +;1acd7fc2553046b79c71bda98b4923fc,10 +;Gerber Generator version 0.2 +;Holesize 1 = 0.300 mm +T01C0.300 +;Holesize 2 = 0.400 mm +T02C0.400 +;Holesize 3 = 0.500 mm +T03C0.500 +;Holesize 4 = 0.700 mm +T04C0.700 +;Holesize 5 = 0.712 mm +T05C0.712 +;Holesize 6 = 0.800 mm +T06C0.800 +;Holesize 7 = 1.000 mm +T07C1.000 +;Holesize 8 = 1.450 mm +T08C1.450 +;Holesize 9 = 1.501 mm +T09C1.501 +;Holesize 10 = 1.600 mm +T10C1.600 +;Holesize 11 = 3.200 mm +T11C3.200 +;Holesize 12 = 3.300 mm +T12C3.300 +;Holesize 13 = 4.000 mm +T13C4.000 +% +G05 +G90 +T01 +X033262Y064570 +T02 +X033746Y068890 +X033746Y067630 +X032496Y068890 +X032496Y067640 +X000503Y006140 +X002078Y005493 +X-001046Y005505 +X-001757Y003880 +X002700Y003931 +X-001046Y002407 +X000503Y001746 +X002065Y002394 +X112492Y006204 +X114067Y005556 +X110942Y005569 +X110231Y003943 +X114689Y003994 +X110942Y002470 +X112492Y001810 +X114054Y002457 +X112454Y073311 +X114028Y072663 +X110904Y072676 +X110193Y071050 +X114651Y071101 +X110904Y069577 +X112454Y068917 +X114016Y069564 +X000363Y073082 +X001938Y072434 +X-001186Y072447 +X-001897Y070822 +X002561Y070872 +X-001186Y069348 +X000363Y068688 +X001926Y069336 +X043182Y073180 +X057290Y063879 +X055639Y063879 +X054115Y063879 +X023541Y056040 +X-000716Y008989 +X040694Y054339 +X039184Y054339 +X037684Y054339 +X036194Y054339 +X034684Y054339 +X033184Y054339 +X031694Y054339 +X030184Y054339 +X028684Y054339 +X040694Y057659 +X039184Y057659 +X037684Y057659 +X036194Y057659 +X034684Y057659 +X033184Y057659 +X031694Y057659 +X030184Y057659 +X028684Y057659 +X027194Y057659 +X025684Y057659 +X024184Y057659 +X-002604Y045352 +X003264Y054799 +X000826Y052072 +X001374Y051759 +X001394Y052349 +X001394Y052349 +X003674Y050949 +X004474Y050949 +X004474Y051819 +X003674Y051819 +X000794Y053369 +X000804Y054169 +X115384Y012549 +X115384Y014149 +X115384Y015569 +X091384Y022329 +X092884Y022329 +X094384Y022329 +X095884Y022329 +X097384Y022329 +X082084Y026189 +X082084Y027159 +X086521Y016440 +X076134Y058229 +X069384Y058229 +X068854Y056279 +X059895Y043988 +X081972Y056970 +X070944Y056949 +X060837Y043271 +X078771Y056139 +X071254Y056139 +X065404Y066959 +X022844Y069129 +X022854Y070029 +X024785Y069289 +X041284Y063829 +X041284Y064749 +X017594Y069039 +X016784Y069039 +X021954Y060729 +X022604Y061599 +X033484Y062559 +X032884Y063169 +X022684Y048469 +X022684Y049489 +X022684Y050469 +X019781Y050798 +X020551Y051588 +X019071Y049998 +X053284Y073469 +X051784Y073469 +X054784Y073469 +X044284Y073469 +X056284Y073469 +X050284Y073469 +X048784Y073469 +X057784Y073469 +X021882Y074350 +X023382Y074350 +X064450Y066340 +X047962Y071820 +X028462Y067260 +X029172Y066460 +X033902Y071829 +X039922Y069890 +X039929Y061954 +X047970Y065068 +X023182Y068229 +X009236Y057012 +X022652Y071790 +X009622Y065100 +X035742Y072490 +X009572Y059860 +X043912Y060994 +X045552Y067320 +X046412Y066020 +X047212Y041900 +X047212Y068570 +X044692Y069849 +X040972Y069849 +X040992Y067830 +X025171Y026068 +X031191Y031448 +X030271Y030328 +X024261Y025278 +X033391Y025758 +X033401Y024428 +X031911Y025798 +X033391Y027298 +X032081Y032348 +X049684Y011368 +X048184Y011358 +X046684Y011348 +X045184Y011358 +X043684Y011348 +X115384Y016969 +X115384Y018169 +X115364Y019329 +X115384Y020659 +X115214Y008229 +X115204Y006729 +X109384Y001239 +X107884Y001249 +X106384Y001259 +X104884Y001249 +X103384Y001249 +X101884Y001239 +X100384Y001229 +X098884Y001239 +X097384Y001239 +X095884Y001229 +X094384Y001229 +X092884Y001229 +X091384Y001229 +X089884Y001229 +X088384Y001229 +X086884Y001219 +X000785Y007999 +X002284Y006879 +X003484Y005729 +X-002596Y008829 +X-002616Y010329 +X-002616Y011829 +X-002616Y013329 +X-002616Y014829 +X-002616Y016329 +X-000816Y065529 +X-002316Y065529 +X076084Y073484 +X073272Y073460 +X071284Y073475 +X068284Y073484 +X074584Y020369 +X074584Y021658 +X074584Y022719 +X081484Y044478 +X074365Y029879 +X072535Y029828 +X070635Y029808 +X077555Y039659 +X069335Y039858 +X074145Y039309 +X074145Y040279 +X074345Y033929 +X074335Y035788 +X072555Y035769 +X072545Y033948 +X070655Y033938 +X070685Y035769 +X098884Y022329 +X100384Y022329 +X101884Y022329 +X103384Y022329 +X104884Y022329 +X066784Y020168 +X066784Y021048 +X066784Y021959 +X066784Y022808 +X072121Y024198 +X072121Y025078 +X083535Y045249 +X079544Y049619 +X115384Y022329 +X113884Y022329 +X112384Y022329 +X110884Y022329 +X109384Y022329 +X107884Y022329 +X106384Y022329 +X001584Y065529 +X003284Y065529 +X004984Y065529 +X006384Y067929 +X006384Y066729 +X006384Y065529 +X-002316Y067029 +X-000816Y067029 +X001385Y067429 +X003184Y068429 +X004184Y070029 +X004385Y071629 +X-002616Y032829 +X-002616Y031329 +X-002616Y029829 +X-002616Y028329 +X-002616Y026829 +X-002616Y025329 +X-002616Y023829 +X-002616Y022329 +X-002616Y020829 +X-002616Y019329 +X-002616Y017829 +X-002516Y007529 +X-002516Y006229 +X004684Y004629 +X005584Y003629 +X006484Y002729 +X007385Y001829 +X002884Y000829 +X004385Y000829 +X005884Y000829 +X007385Y000829 +X008884Y000829 +X010385Y000829 +X011884Y000829 +X013385Y000829 +X014884Y000829 +X016384Y000829 +X017884Y000829 +X019384Y000829 +X020884Y000829 +X022384Y000829 +X023884Y000829 +X025384Y000829 +X026884Y000829 +X028384Y000829 +X029884Y000829 +X031384Y000829 +X032884Y000829 +X034384Y000829 +X035884Y000829 +X037384Y000829 +X038884Y000829 +X040384Y000829 +X041884Y000829 +X043384Y000829 +X044884Y000829 +X046384Y000829 +X047884Y000829 +X049384Y000829 +X050884Y000829 +X052384Y000829 +X053884Y000829 +X055384Y000829 +X056884Y000829 +X058384Y000829 +X059884Y000829 +X061384Y000829 +X062884Y000829 +X064384Y000829 +X065884Y000829 +X067384Y000829 +X068891Y000829 +X070391Y000829 +X071891Y000829 +X073391Y000829 +X074891Y000829 +X076431Y000828 +X078002Y000840 +X079384Y001229 +X080884Y001229 +X082384Y001229 +X083884Y001229 +X085384Y001229 +X004382Y074350 +X005882Y074350 +X007382Y074350 +X008882Y074350 +X014382Y074350 +X015882Y074350 +X017382Y074350 +X020382Y074350 +X018882Y074350 +X024882Y074350 +X026462Y074330 +X027922Y074320 +X029162Y074340 +X030882Y074350 +X032382Y074350 +X033882Y074350 +X035382Y074350 +X036882Y074350 +X038382Y074350 +X039882Y074350 +X041382Y074350 +X045784Y073469 +X047284Y073469 +X059284Y073469 +X060784Y073475 +X062284Y073475 +X063784Y073475 +X065284Y073475 +X066784Y073475 +X078602Y073510 +X081184Y073475 +X082684Y073475 +X084484Y073475 +X085984Y073475 +X087484Y073475 +X088984Y073475 +X090484Y073475 +X091984Y073475 +X093484Y073475 +X094984Y073475 +X096484Y073475 +X097984Y073475 +X099484Y073475 +X100984Y073475 +X102484Y073475 +X103984Y073475 +X105484Y073475 +X106984Y073475 +X108484Y073475 +X027601Y019268 +X023813Y020081 +X028890Y022249 +X026321Y021528 +X017452Y004818 +X085852Y017350 +X077648Y008828 +X034983Y005683 +X076673Y015173 +X033983Y015173 +X068663Y007623 +X068663Y004453 +X063595Y015808 +X036533Y015813 +X063015Y016538 +X031443Y015303 +X062135Y007909 +X032333Y005783 +X061270Y008433 +X014703Y005623 +X060676Y014433 +X014723Y014433 +X059741Y013778 +X012013Y014393 +X-001718Y058110 +X061644Y042569 +X057445Y030168 +X047615Y039378 +X058814Y044899 +X057445Y027618 +X047615Y040929 +X069195Y046318 +X077135Y046328 +X076515Y047028 +X068495Y047039 +X075865Y047689 +X067745Y047689 +X075155Y048389 +X067165Y048389 +X004574Y045538 +X078065Y045868 +X047924Y031737 +X047879Y021582 +X047893Y024121 +X047895Y029199 +X047897Y026660 +X060794Y051359 +X058555Y024128 +X068304Y052019 +X059624Y052679 +X058264Y053329 +X098233Y060306 +X098221Y061405 +X098225Y062489 +X092008Y060306 +X058359Y021582 +X091955Y061388 +X091955Y062489 +X063594Y055499 +X060064Y054079 +X072164Y054799 +X083563Y029081 +X083532Y018290 +X073148Y024448 +X048131Y018289 +X091127Y059240 +X078791Y019948 +X021611Y040768 +X040324Y031329 +X040344Y029829 +X040344Y028329 +X040384Y026729 +X040384Y025109 +X-002616Y034329 +X-002616Y035829 +X-002616Y037829 +X-002616Y039329 +X020884Y059739 +X019984Y058749 +X019024Y057729 +X025085Y062139 +X024894Y060729 +X023884Y059619 +X022634Y058629 +X021484Y057629 +X090962Y015440 +X090962Y018290 +X096042Y010710 +X093452Y015640 +X-002514Y051122 +X-002594Y046042 +X-002704Y050362 +X004296Y056722 +X-001114Y048042 +T03 +X014774Y046069 +X069914Y059240 +X086375Y059240 +X004011Y018968 +X014804Y064082 +X021274Y018289 +X101122Y005440 +X090962Y006600 +X099862Y006600 +X089632Y005459 +T04 +X082571Y008808 +T05 +X013029Y015788G85X013034Y015788 +X015569Y015788G85X015574Y015788 +T06 +X052422Y070860G85X052382Y070860 +X054962Y070860G85X054922Y070860 +X049882Y070860G85X049842Y070860 +X052441Y003918G85X052401Y003918 +X054981Y003918G85X054941Y003918 +X049901Y003918G85X049861Y003918 +X009484Y045729 +T07 +X069822Y069930G85X069822Y069930 +X069822Y067390G85X069822Y067390 +X077442Y069930G85X077442Y069930 +X079982Y067390G85X079982Y067390 +X077442Y067390G85X077442Y067390 +X074902Y067390G85X074902Y067390 +X079982Y069930G85X079982Y069930 +X074902Y069930G85X074902Y069930 +X072362Y067390G85X072362Y067390 +X072362Y069930G85X072362Y069930 +T08 +X011293Y043946G85X011289Y043949 +X021263Y053732G85X021259Y053736 +X024204Y044129G85X024201Y044133 +X014050Y021431G85X014047Y021435 +X016546Y036471G85X016543Y036475 +X024021Y031218G85X024017Y031221 +X032767Y029853G85X032764Y029856 +T09 +X-001239Y059722G85X-001234Y059722 +X005873Y059722G85X005878Y059722 +T10 +X014473Y040765 +X020837Y034402 +T11 +X007048Y048190 +T12 +X000539Y003918G85X000544Y003918 +X112527Y003981G85X112532Y003981 +X112489Y071088G85X112494Y071088 +X000399Y070860G85X000404Y070860 +T13 +X028261Y048190 +X028261Y026977 +M30 diff --git a/hardware/portapack_h4m/h4-gerbers/Drill_PTH_Through_Via.DRL b/hardware/portapack_h4m/h4-gerbers/Drill_PTH_Through_Via.DRL new file mode 100644 index 000000000..e0ef8e4b7 --- /dev/null +++ b/hardware/portapack_h4m/h4-gerbers/Drill_PTH_Through_Via.DRL @@ -0,0 +1,515 @@ +M48 +METRIC,LZ,000.000 +;FILE_FORMAT=3:3 +;TYPE=PLATED +;Layer: PTH_Through_Via +;EasyEDA v6.5.46, 2025-01-01 16:01:39 +;1acd7fc2553046b79c71bda98b4923fc,10 +;Gerber Generator version 0.2 +;Holesize 1 = 0.300 mm +T01C0.300 +;Holesize 2 = 0.400 mm +T02C0.400 +;Holesize 3 = 0.500 mm +T03C0.500 +;Holesize 4 = 0.700 mm +T04C0.700 +;Holesize 5 = 0.800 mm +T05C0.800 +;Holesize 6 = 1.600 mm +T06C1.600 +;Holesize 7 = 3.200 mm +T07C3.200 +;Holesize 8 = 4.000 mm +T08C4.000 +% +G05 +G90 +T01 +X033262Y064570 +T02 +X033746Y068890 +X033746Y067630 +X032496Y068890 +X032496Y067640 +X000503Y006140 +X002078Y005493 +X-001046Y005505 +X-001757Y003880 +X002700Y003931 +X-001046Y002407 +X000503Y001746 +X002065Y002394 +X112492Y006204 +X114067Y005556 +X110942Y005569 +X110231Y003943 +X114689Y003994 +X110942Y002470 +X112492Y001810 +X114054Y002457 +X112454Y073311 +X114028Y072663 +X110904Y072676 +X110193Y071050 +X114651Y071101 +X110904Y069577 +X112454Y068917 +X114016Y069564 +X000363Y073082 +X001938Y072434 +X-001186Y072447 +X-001897Y070822 +X002561Y070872 +X-001186Y069348 +X000363Y068688 +X001926Y069336 +X043182Y073180 +X057290Y063879 +X055639Y063879 +X054115Y063879 +X023541Y056040 +X-000716Y008989 +X040694Y054339 +X039184Y054339 +X037684Y054339 +X036194Y054339 +X034684Y054339 +X033184Y054339 +X031694Y054339 +X030184Y054339 +X028684Y054339 +X040694Y057659 +X039184Y057659 +X037684Y057659 +X036194Y057659 +X034684Y057659 +X033184Y057659 +X031694Y057659 +X030184Y057659 +X028684Y057659 +X027194Y057659 +X025684Y057659 +X024184Y057659 +X-002604Y045352 +X003264Y054799 +X000826Y052072 +X001374Y051759 +X001394Y052349 +X001394Y052349 +X003674Y050949 +X004474Y050949 +X004474Y051819 +X003674Y051819 +X000794Y053369 +X000804Y054169 +X115384Y012549 +X115384Y014149 +X115384Y015569 +X091384Y022329 +X092884Y022329 +X094384Y022329 +X095884Y022329 +X097384Y022329 +X082084Y026189 +X082084Y027159 +X086521Y016440 +X076134Y058229 +X069384Y058229 +X068854Y056279 +X059895Y043988 +X081972Y056970 +X070944Y056949 +X060837Y043271 +X078771Y056139 +X071254Y056139 +X065404Y066959 +X022844Y069129 +X022854Y070029 +X024785Y069289 +X041284Y063829 +X041284Y064749 +X017594Y069039 +X016784Y069039 +X021954Y060729 +X022604Y061599 +X033484Y062559 +X032884Y063169 +X022684Y048469 +X022684Y049489 +X022684Y050469 +X019781Y050798 +X020551Y051588 +X019071Y049998 +X053284Y073469 +X051784Y073469 +X054784Y073469 +X044284Y073469 +X056284Y073469 +X050284Y073469 +X048784Y073469 +X057784Y073469 +X021882Y074350 +X023382Y074350 +X064450Y066340 +X047962Y071820 +X028462Y067260 +X029172Y066460 +X033902Y071829 +X039922Y069890 +X039929Y061954 +X047970Y065068 +X023182Y068229 +X009236Y057012 +X022652Y071790 +X009622Y065100 +X035742Y072490 +X009572Y059860 +X043912Y060994 +X045552Y067320 +X046412Y066020 +X047212Y041900 +X047212Y068570 +X044692Y069849 +X040972Y069849 +X040992Y067830 +X025171Y026068 +X031191Y031448 +X030271Y030328 +X024261Y025278 +X033391Y025758 +X033401Y024428 +X031911Y025798 +X033391Y027298 +X032081Y032348 +X049684Y011368 +X048184Y011358 +X046684Y011348 +X045184Y011358 +X043684Y011348 +X115384Y016969 +X115384Y018169 +X115364Y019329 +X115384Y020659 +X115214Y008229 +X115204Y006729 +X109384Y001239 +X107884Y001249 +X106384Y001259 +X104884Y001249 +X103384Y001249 +X101884Y001239 +X100384Y001229 +X098884Y001239 +X097384Y001239 +X095884Y001229 +X094384Y001229 +X092884Y001229 +X091384Y001229 +X089884Y001229 +X088384Y001229 +X086884Y001219 +X000785Y007999 +X002284Y006879 +X003484Y005729 +X-002596Y008829 +X-002616Y010329 +X-002616Y011829 +X-002616Y013329 +X-002616Y014829 +X-002616Y016329 +X-000816Y065529 +X-002316Y065529 +X076084Y073484 +X073272Y073460 +X071284Y073475 +X068284Y073484 +X074584Y020369 +X074584Y021658 +X074584Y022719 +X081484Y044478 +X074365Y029879 +X072535Y029828 +X070635Y029808 +X077555Y039659 +X069335Y039858 +X074145Y039309 +X074145Y040279 +X074345Y033929 +X074335Y035788 +X072555Y035769 +X072545Y033948 +X070655Y033938 +X070685Y035769 +X098884Y022329 +X100384Y022329 +X101884Y022329 +X103384Y022329 +X104884Y022329 +X066784Y020168 +X066784Y021048 +X066784Y021959 +X066784Y022808 +X072121Y024198 +X072121Y025078 +X083535Y045249 +X079544Y049619 +X115384Y022329 +X113884Y022329 +X112384Y022329 +X110884Y022329 +X109384Y022329 +X107884Y022329 +X106384Y022329 +X001584Y065529 +X003284Y065529 +X004984Y065529 +X006384Y067929 +X006384Y066729 +X006384Y065529 +X-002316Y067029 +X-000816Y067029 +X001385Y067429 +X003184Y068429 +X004184Y070029 +X004385Y071629 +X-002616Y032829 +X-002616Y031329 +X-002616Y029829 +X-002616Y028329 +X-002616Y026829 +X-002616Y025329 +X-002616Y023829 +X-002616Y022329 +X-002616Y020829 +X-002616Y019329 +X-002616Y017829 +X-002516Y007529 +X-002516Y006229 +X004684Y004629 +X005584Y003629 +X006484Y002729 +X007385Y001829 +X002884Y000829 +X004385Y000829 +X005884Y000829 +X007385Y000829 +X008884Y000829 +X010385Y000829 +X011884Y000829 +X013385Y000829 +X014884Y000829 +X016384Y000829 +X017884Y000829 +X019384Y000829 +X020884Y000829 +X022384Y000829 +X023884Y000829 +X025384Y000829 +X026884Y000829 +X028384Y000829 +X029884Y000829 +X031384Y000829 +X032884Y000829 +X034384Y000829 +X035884Y000829 +X037384Y000829 +X038884Y000829 +X040384Y000829 +X041884Y000829 +X043384Y000829 +X044884Y000829 +X046384Y000829 +X047884Y000829 +X049384Y000829 +X050884Y000829 +X052384Y000829 +X053884Y000829 +X055384Y000829 +X056884Y000829 +X058384Y000829 +X059884Y000829 +X061384Y000829 +X062884Y000829 +X064384Y000829 +X065884Y000829 +X067384Y000829 +X068891Y000829 +X070391Y000829 +X071891Y000829 +X073391Y000829 +X074891Y000829 +X076431Y000828 +X078002Y000840 +X079384Y001229 +X080884Y001229 +X082384Y001229 +X083884Y001229 +X085384Y001229 +X004382Y074350 +X005882Y074350 +X007382Y074350 +X008882Y074350 +X014382Y074350 +X015882Y074350 +X017382Y074350 +X020382Y074350 +X018882Y074350 +X024882Y074350 +X026462Y074330 +X027922Y074320 +X029162Y074340 +X030882Y074350 +X032382Y074350 +X033882Y074350 +X035382Y074350 +X036882Y074350 +X038382Y074350 +X039882Y074350 +X041382Y074350 +X045784Y073469 +X047284Y073469 +X059284Y073469 +X060784Y073475 +X062284Y073475 +X063784Y073475 +X065284Y073475 +X066784Y073475 +X078602Y073510 +X081184Y073475 +X082684Y073475 +X084484Y073475 +X085984Y073475 +X087484Y073475 +X088984Y073475 +X090484Y073475 +X091984Y073475 +X093484Y073475 +X094984Y073475 +X096484Y073475 +X097984Y073475 +X099484Y073475 +X100984Y073475 +X102484Y073475 +X103984Y073475 +X105484Y073475 +X106984Y073475 +X108484Y073475 +X027601Y019268 +X023813Y020081 +X028890Y022249 +X026321Y021528 +X017452Y004818 +X085852Y017350 +X077648Y008828 +X034983Y005683 +X076673Y015173 +X033983Y015173 +X068663Y007623 +X068663Y004453 +X063595Y015808 +X036533Y015813 +X063015Y016538 +X031443Y015303 +X062135Y007909 +X032333Y005783 +X061270Y008433 +X014703Y005623 +X060676Y014433 +X014723Y014433 +X059741Y013778 +X012013Y014393 +X-001718Y058110 +X061644Y042569 +X057445Y030168 +X047615Y039378 +X058814Y044899 +X057445Y027618 +X047615Y040929 +X069195Y046318 +X077135Y046328 +X076515Y047028 +X068495Y047039 +X075865Y047689 +X067745Y047689 +X075155Y048389 +X067165Y048389 +X004574Y045538 +X078065Y045868 +X047924Y031737 +X047879Y021582 +X047893Y024121 +X047895Y029199 +X047897Y026660 +X060794Y051359 +X058555Y024128 +X068304Y052019 +X059624Y052679 +X058264Y053329 +X098233Y060306 +X098221Y061405 +X098225Y062489 +X092008Y060306 +X058359Y021582 +X091955Y061388 +X091955Y062489 +X063594Y055499 +X060064Y054079 +X072164Y054799 +X083563Y029081 +X083532Y018290 +X073148Y024448 +X048131Y018289 +X091127Y059240 +X078791Y019948 +X021611Y040768 +X040324Y031329 +X040344Y029829 +X040344Y028329 +X040384Y026729 +X040384Y025109 +X-002616Y034329 +X-002616Y035829 +X-002616Y037829 +X-002616Y039329 +X020884Y059739 +X019984Y058749 +X019024Y057729 +X025085Y062139 +X024894Y060729 +X023884Y059619 +X022634Y058629 +X021484Y057629 +X090962Y015440 +X090962Y018290 +X096042Y010710 +X093452Y015640 +X-002514Y051122 +X-002594Y046042 +X-002704Y050362 +X004296Y056722 +X-001114Y048042 +T03 +X014774Y046069 +X069914Y059240 +X086375Y059240 +X004011Y018968 +X014804Y064082 +X021274Y018289 +X101122Y005440 +X090962Y006600 +X099862Y006600 +X089632Y005459 +T04 +X082571Y008808 +T05 +X009484Y045729 +T06 +X014473Y040765 +X020837Y034402 +T07 +X007048Y048190 +T08 +X028261Y048190 +X028261Y026977 +M30 diff --git a/hardware/portapack_h4m/h4-gerbers/Gerber_BoardOutlineLayer.GKO b/hardware/portapack_h4m/h4-gerbers/Gerber_BoardOutlineLayer.GKO new file mode 100644 index 000000000..9172a9349 --- /dev/null +++ b/hardware/portapack_h4m/h4-gerbers/Gerber_BoardOutlineLayer.GKO @@ -0,0 +1,114 @@ +G04 Layer: BoardOutlineLayer* +G04 EasyEDA v6.5.46, 2025-01-01 16:01:39* +G04 1acd7fc2553046b79c71bda98b4923fc,10* +G04 Gerber Generator version 0.2* +G04 Scale: 100 percent, Rotated: No, Reflected: No * +G04 Dimensions in millimeters * +G04 leading zeros omitted , absolute positions ,4 integer and 5 decimal * +%FSLAX45Y45*% +%MOMM*% + +%ADD10C,0.2540*% +D10* +X9285762Y5161592D02* +G01* +X11467622Y5161592D01* +G75* +G01* +X11490437Y6366413D02* +G03* +X11490435Y6365811I-114999J-10D01* +G75* +G01* +X3958438Y6366413D02* +G03* +X3958436Y6365811I-114999J-10D01* +G75* +G01* +X11489939Y1123414D02* +G03* +X11489937Y1122812I-114999J-10D01* +G75* +G01* +X11122802Y6341742D02* +G03* +X11122801Y6341376I-70000J11D01* +G75* +G01* +X11120262Y5539102D02* +G03* +X11120261Y5538736I-70000J11D01* +G75* +G01* +X3958438Y1124415D02* +G03* +X3958436Y1123813I-114999J-10D01* +G75* +G01* +X9285762Y5161591D02* +G03* +X9119393Y5006651I-4000J-162495D01* +G75* +G01* +X11467621Y5161591D02* +G03* +X11617482Y5315261I-7768J157484D01* +G75* +G01* +X9119393Y2454272D02* +G03* +X9259094Y2326002I137678J9736D01* +G75* +G01* +X11627643Y2179953D02* +G03* +X11486672Y2326004I-142230J3776D01* +G75* +G01* +X11294904Y2D02* +G03* +X11627644Y328931I-18455J351430D01* +G75* +G01* +X-346707Y320040D02* +G03* +X2Y-1I337962J18303D01* +G75* +G01* +X-11431Y7518226D02* +G03* +X-346708Y7186754I-19125J-315954D01* +G75* +G01* +X11617482Y7196922D02* +G03* +X11310144Y7518229I-289029J31179D01* +X-11432Y7518227D02* +G01* +X11310142Y7518227D01* +X11617482Y5315259D02* +G01* +X11617482Y7196922D01* +X9119392Y2454272D02* +G01* +X9119392Y5006649D01* +X9259092Y2326002D02* +G01* +X11486672Y2326002D01* +X11627642Y328929D02* +G01* +X11627642Y2179952D01* +X0Y0D02* +G01* +X11294902Y0D01* +X-346707Y320037D02* +G01* +X-346707Y7186752D01* +G75* +G01* +X11294902Y3D02* +G03* +X11627642Y328933I-18454J351430D01* + +%LPD*% +M02* diff --git a/hardware/portapack_h4m/h4-gerbers/Gerber_BottomLayer.GBL b/hardware/portapack_h4m/h4-gerbers/Gerber_BottomLayer.GBL new file mode 100644 index 000000000..3e5b08d39 --- /dev/null +++ b/hardware/portapack_h4m/h4-gerbers/Gerber_BottomLayer.GBL @@ -0,0 +1,11598 @@ +G04 Layer: BottomLayer* +G04 EasyEDA v6.5.46, 2025-01-01 16:01:39* +G04 1acd7fc2553046b79c71bda98b4923fc,10* +G04 Gerber Generator version 0.2* +G04 Scale: 100 percent, Rotated: No, Reflected: No * +G04 Dimensions in millimeters * +G04 leading zeros omitted , absolute positions ,4 integer and 5 decimal * +%FSLAX45Y45*% +%MOMM*% + +%AMMACRO1*21,1,$1,$2,0,0,$3*% +%ADD10C,0.2540*% +%ADD11C,0.2000*% +%ADD12C,0.5000*% +%ADD13C,0.3000*% +%ADD14C,1.0000*% +%ADD15MACRO1,5X2.3X135.0000*% +%ADD16MACRO1,5X2.3X-10.0001*% +%ADD17C,0.0137*% +%ADD18C,1.5750*% +%ADD19C,1.5748*% +%ADD20R,1.5748X1.5748*% +%ADD21C,1.5000*% +%ADD22C,5.3000*% +%ADD23C,1.7000*% +%ADD24C,1.6000*% +%ADD25C,2.3000*% +%ADD26C,0.6000*% +%ADD27C,0.6500*% +%ADD28C,0.8000*% +%ADD29C,0.7000*% +%ADD30C,0.9000*% +%ADD31C,4.0000*% +%ADD32C,3.2000*% + +%LPD*% +G36* +X1555140Y6861403D02* +G01* +X1550974Y6863080D01* +X1547926Y6866229D01* +X1546555Y6870496D01* +X1547063Y6874916D01* +X1549450Y6878726D01* +X1878177Y7207402D01* +X1881428Y7209536D01* +X1885340Y7210399D01* +X2202688Y7210399D01* +X2206345Y7209637D01* +X2209495Y7207707D01* +X2211730Y7204760D01* +X2212797Y7201255D01* +X2212492Y7197598D01* +X2210104Y7188606D01* +X2209292Y7178903D01* +X2210104Y7169302D01* +X2212644Y7159802D01* +X2216759Y7151014D01* +X2222347Y7143038D01* +X2229256Y7136180D01* +X2237232Y7130542D01* +X2246020Y7126427D01* +X2255469Y7123938D01* +X2262835Y7123328D01* +X2266238Y7122414D01* +X2269134Y7120381D01* +X2347569Y7041946D01* +X2349754Y7038644D01* +X2350516Y7034733D01* +X2350516Y6885127D01* +X2349855Y6881520D01* +X2347925Y6878320D01* +X2344978Y6876034D01* +X2341422Y6875018D01* +X2337765Y6875322D01* +X2327808Y6877964D01* +X2318156Y6878777D01* +X2308453Y6877964D01* +X2299004Y6875424D01* +X2290216Y6871360D01* +X2278735Y6863334D01* +X2274824Y6862572D01* +X1567637Y6862572D01* +G37* + +%LPD*% +G36* +X4456531Y1879803D02* +G01* +X4452467Y1880565D01* +X4449114Y1882952D01* +X4446981Y1886508D01* +X4446371Y1890623D01* +X4447489Y1894535D01* +X4450080Y1897786D01* +X4452670Y1899869D01* +X4668062Y2115312D01* +X4673193Y2121560D01* +X4676749Y2128164D01* +X4678934Y2135428D01* +X4679746Y2143506D01* +X4679746Y4131868D01* +X4680559Y4135882D01* +X4682845Y4139184D01* +X4686249Y4141419D01* +X4690262Y4142028D01* +X4694224Y4141114D01* +X4702048Y4137507D01* +X4707178Y4136085D01* +X4711090Y4134053D01* +X4713782Y4130548D01* +X4714697Y4126229D01* +X4713732Y4121912D01* +X4709007Y4111955D01* +X4706467Y4102506D01* +X4705654Y4092803D01* +X4706467Y4083202D01* +X4709007Y4073702D01* +X4713122Y4064914D01* +X4718710Y4056938D01* +X4721809Y4053484D01* +X4724044Y4050029D01* +X4725212Y4047337D01* +X4725619Y4044594D01* +X4725619Y3986123D01* +X4724806Y3982212D01* +X4722266Y3977741D01* +X4718862Y3973931D01* +X4713122Y3965752D01* +X4709007Y3956913D01* +X4706467Y3947515D01* +X4705654Y3937812D01* +X4706467Y3928110D01* +X4709007Y3918712D01* +X4713122Y3909923D01* +X4718710Y3901948D01* +X4725619Y3895090D01* +X4733594Y3889451D01* +X4742383Y3885387D01* +X4751832Y3882847D01* +X4761534Y3881983D01* +X4771186Y3882847D01* +X4780635Y3885387D01* +X4789424Y3889451D01* +X4797399Y3895090D01* +X4804308Y3901948D01* +X4809896Y3909923D01* +X4814011Y3918712D01* +X4816551Y3928110D01* +X4817364Y3937812D01* +X4816551Y3947515D01* +X4814011Y3956913D01* +X4809896Y3965752D01* +X4804308Y3973779D01* +X4801209Y3977233D01* +X4798974Y3980738D01* +X4797806Y3983278D01* +X4797399Y3986123D01* +X4797399Y4044543D01* +X4798161Y4048353D01* +X4800752Y4053027D01* +X4804156Y4056786D01* +X4809896Y4064914D01* +X4814011Y4073702D01* +X4816551Y4083202D01* +X4817364Y4092803D01* +X4816551Y4102506D01* +X4814011Y4112006D01* +X4809896Y4120794D01* +X4804308Y4128719D01* +X4797399Y4135628D01* +X4789424Y4141266D01* +X4780635Y4145330D01* +X4775454Y4146753D01* +X4771542Y4148785D01* +X4768900Y4152239D01* +X4767935Y4156557D01* +X4768900Y4160926D01* +X4773676Y4170832D01* +X4776165Y4180230D01* +X4777028Y4189933D01* +X4776165Y4199636D01* +X4773625Y4209034D01* +X4769510Y4217924D01* +X4763922Y4225899D01* +X4762703Y4227068D01* +X4760518Y4230370D01* +X4759756Y4234230D01* +X4759756Y6446875D01* +X4760569Y6450838D01* +X4762855Y6454190D01* +X4766259Y6456324D01* +X4770272Y6457035D01* +X4774184Y6456121D01* +X4777892Y6454343D01* +X4787341Y6451854D01* +X4797044Y6450939D01* +X4806696Y6451854D01* +X4816144Y6454343D01* +X4817516Y6454952D01* +X4821783Y6455918D01* +X6384137Y6455918D01* +X6387998Y6455206D01* +X6391300Y6452920D01* +X6929678Y5914542D01* +X6931304Y5912459D01* +X6932320Y5909868D01* +X6933793Y5904230D01* +X6940092Y5889955D01* +X6939940Y5885738D01* +X6938111Y5881979D01* +X6934962Y5879338D01* +X6930999Y5878068D01* +X6928713Y5877915D01* +X6919315Y5875426D01* +X6910476Y5871260D01* +X6902500Y5865723D01* +X6895642Y5858814D01* +X6890054Y5850788D01* +X6885940Y5842050D01* +X6883400Y5832551D01* +X6882536Y5822696D01* +X6881317Y5818174D01* +X6880352Y5815990D01* +X6878878Y5814110D01* +X5856376Y4791659D01* +X5851347Y4785410D01* +X5847943Y4778806D01* +X5845962Y4771390D01* +X5845505Y4765548D01* +X5845505Y4538167D01* +X5844743Y4534357D01* +X5842203Y4529785D01* +X5838748Y4525975D01* +X5833059Y4517847D01* +X5828944Y4509058D01* +X5826404Y4499559D01* +X5825540Y4489856D01* +X5826404Y4480255D01* +X5828944Y4470755D01* +X5833059Y4461967D01* +X5838647Y4454042D01* +X5841695Y4450588D01* +X5843930Y4447032D01* +X5845098Y4444390D01* +X5845505Y4441647D01* +X5845505Y3567836D01* +X5844743Y3563975D01* +X5842508Y3560673D01* +X5663742Y3381857D01* +X5660440Y3379724D01* +X5656580Y3378911D01* +X5652668Y3379724D01* +X5649417Y3381857D01* +X5647182Y3385210D01* +X5646420Y3389071D01* +X5646420Y4647946D01* +X5647182Y4651857D01* +X5649417Y4655159D01* +X6070650Y5076342D01* +X6073952Y5078526D01* +X6078524Y5079949D01* +X6089091Y5080863D01* +X6098540Y5083403D01* +X6107328Y5087569D01* +X6115304Y5093106D01* +X6122212Y5099964D01* +X6127800Y5107990D01* +X6131915Y5116830D01* +X6134455Y5126177D01* +X6135268Y5135930D01* +X6134455Y5145633D01* +X6131915Y5154980D01* +X6127800Y5163820D01* +X6122212Y5171795D01* +X6115304Y5178653D01* +X6107328Y5184292D01* +X6098540Y5188356D01* +X6089091Y5190947D01* +X6079439Y5191760D01* +X6077254Y5191607D01* +X6073140Y5192064D01* +X6069584Y5194096D01* +X6067145Y5197449D01* +X6066180Y5201412D01* +X6066891Y5205425D01* +X6069177Y5208879D01* +X6350660Y5490413D01* +X6353962Y5492546D01* +X6358483Y5493969D01* +X6369100Y5494883D01* +X6378498Y5497423D01* +X6387338Y5501487D01* +X6395313Y5507126D01* +X6402171Y5514035D01* +X6407759Y5521960D01* +X6411874Y5530748D01* +X6414414Y5540248D01* +X6415278Y5549849D01* +X6414414Y5559552D01* +X6411874Y5569051D01* +X6407759Y5577840D01* +X6402171Y5585815D01* +X6395313Y5592673D01* +X6387338Y5598312D01* +X6378498Y5602427D01* +X6369100Y5604916D01* +X6359398Y5605780D01* +X6349695Y5604916D01* +X6340297Y5602427D01* +X6331458Y5598312D01* +X6323482Y5592673D01* +X6316624Y5585815D01* +X6311036Y5577840D01* +X6306921Y5569051D01* +X6304381Y5559552D01* +X6303467Y5549036D01* +X6302044Y5544413D01* +X6299860Y5541162D01* +X6033871Y5275173D01* +X6030315Y5272836D01* +X6026150Y5272227D01* +X6022086Y5273243D01* +X6018784Y5275986D01* +X6016853Y5279694D01* +X6014923Y5287010D01* +X6010808Y5295798D01* +X6005220Y5303824D01* +X5998311Y5310733D01* +X5990336Y5316270D01* +X5986627Y5318048D01* +X5983478Y5320284D01* +X5981395Y5323586D01* +X5980734Y5327446D01* +X5981547Y5331256D01* +X5983732Y5334406D01* +X5997651Y5348376D01* +X6000902Y5350510D01* +X6005525Y5351932D01* +X6016091Y5352846D01* +X6025540Y5355386D01* +X6034328Y5359552D01* +X6042304Y5365089D01* +X6049213Y5371998D01* +X6054801Y5380024D01* +X6058916Y5388813D01* +X6061456Y5398262D01* +X6062268Y5407914D01* +X6061456Y5417616D01* +X6058916Y5427065D01* +X6054801Y5435854D01* +X6049213Y5443778D01* +X6042304Y5450687D01* +X6034328Y5456326D01* +X6025540Y5460390D01* +X6016091Y5462930D01* +X6006439Y5463743D01* +X5996736Y5462930D01* +X5987288Y5460390D01* +X5978499Y5456326D01* +X5970524Y5450687D01* +X5963615Y5443778D01* +X5958027Y5435854D01* +X5953912Y5427065D01* +X5951372Y5417616D01* +X5950508Y5407456D01* +X5949238Y5402935D01* +X5946851Y5399176D01* +X5895746Y5348020D01* +X5892546Y5345887D01* +X5888736Y5345023D01* +X5884875Y5345785D01* +X5881624Y5347817D01* +X5879338Y5350916D01* +X5874766Y5360822D01* +X5869178Y5368848D01* +X5862320Y5375706D01* +X5854344Y5381244D01* +X5845505Y5385409D01* +X5836107Y5387949D01* +X5826404Y5388813D01* +X5816701Y5387949D01* +X5807303Y5385409D01* +X5798464Y5381244D01* +X5790488Y5375706D01* +X5783630Y5368848D01* +X5778042Y5360822D01* +X5773928Y5351983D01* +X5771388Y5342585D01* +X5770473Y5332018D01* +X5769102Y5327446D01* +X5766866Y5324144D01* +X5351475Y4908804D01* +X5346446Y4902504D01* +X5343042Y4895900D01* +X5341061Y4888484D01* +X5340604Y4882591D01* +X5340604Y3352952D01* +X5339842Y3349040D01* +X5337606Y3345738D01* +X5204510Y3212592D01* +X5201208Y3210407D01* +X5197297Y3209594D01* +X4840681Y3209594D01* +X4836871Y3210407D01* +X4832248Y3212947D01* +X4828489Y3216402D01* +X4820310Y3222142D01* +X4811522Y3226206D01* +X4802073Y3228797D01* +X4792421Y3229559D01* +X4782718Y3228797D01* +X4773269Y3226206D01* +X4764481Y3222142D01* +X4756505Y3216503D01* +X4749596Y3209594D01* +X4744008Y3201619D01* +X4739894Y3192830D01* +X4737354Y3183432D01* +X4736541Y3173730D01* +X4737354Y3164027D01* +X4739894Y3154629D01* +X4744008Y3145840D01* +X4749596Y3137814D01* +X4756505Y3130905D01* +X4764481Y3125368D01* +X4773269Y3121202D01* +X4782718Y3118662D01* +X4792421Y3117900D01* +X4802073Y3118662D01* +X4811522Y3121202D01* +X4820310Y3125368D01* +X4828286Y3130905D01* +X4831842Y3134106D01* +X4835245Y3136239D01* +X4837836Y3137458D01* +X4840681Y3137814D01* +X5215839Y3137814D01* +X5223865Y3138627D01* +X5230977Y3141014D01* +X5237581Y3144824D01* +X5242052Y3148584D01* +X5383276Y3289858D01* +X5386578Y3291992D01* +X5390438Y3292805D01* +X5394350Y3291992D01* +X5397601Y3289858D01* +X5399836Y3286556D01* +X5400598Y3282645D01* +X5400598Y3082950D01* +X5399836Y3079038D01* +X5397601Y3075736D01* +X5280609Y2958744D01* +X5277307Y2956509D01* +X5273446Y2955798D01* +X4837836Y2955798D01* +X4833975Y2956509D01* +X4829352Y2959049D01* +X4825593Y2962503D01* +X4817414Y2968193D01* +X4808626Y2972358D01* +X4799177Y2974898D01* +X4789525Y2975762D01* +X4779822Y2974898D01* +X4770374Y2972358D01* +X4761585Y2968193D01* +X4753610Y2962656D01* +X4746701Y2955798D01* +X4741113Y2947771D01* +X4736998Y2938932D01* +X4734458Y2929534D01* +X4733645Y2919831D01* +X4734458Y2910128D01* +X4736998Y2900730D01* +X4741113Y2891942D01* +X4746701Y2883966D01* +X4753610Y2877108D01* +X4761585Y2871470D01* +X4770374Y2867406D01* +X4779822Y2864815D01* +X4789525Y2864002D01* +X4799177Y2864815D01* +X4808626Y2867406D01* +X4817414Y2871470D01* +X4825390Y2877108D01* +X4828895Y2880207D01* +X4832350Y2882341D01* +X4834940Y2883560D01* +X4837785Y2883966D01* +X5291988Y2883966D01* +X5299964Y2884779D01* +X5307076Y2887065D01* +X5313730Y2890926D01* +X5318201Y2894787D01* +X5443270Y3019856D01* +X5446572Y3021990D01* +X5450433Y3022803D01* +X5454345Y3021990D01* +X5457647Y3019856D01* +X5459831Y3016504D01* +X5460593Y3012592D01* +X5460593Y2816910D01* +X5459831Y2812999D01* +X5457647Y2809748D01* +X5352745Y2704846D01* +X5349443Y2702610D01* +X5345582Y2701899D01* +X4837938Y2701899D01* +X4834077Y2702610D01* +X4829505Y2705252D01* +X4825746Y2708706D01* +X4817567Y2714345D01* +X4808778Y2718511D01* +X4799330Y2721000D01* +X4789678Y2721864D01* +X4779975Y2721000D01* +X4770526Y2718511D01* +X4761738Y2714345D01* +X4753762Y2708757D01* +X4746853Y2701899D01* +X4741265Y2693924D01* +X4737150Y2685135D01* +X4734610Y2675636D01* +X4733798Y2665933D01* +X4734610Y2656332D01* +X4737150Y2646832D01* +X4741265Y2638044D01* +X4746853Y2630119D01* +X4753762Y2623210D01* +X4761738Y2617571D01* +X4770526Y2613507D01* +X4779975Y2610967D01* +X4789678Y2610104D01* +X4799330Y2610967D01* +X4808778Y2613507D01* +X4817567Y2617571D01* +X4825542Y2623210D01* +X4829098Y2626360D01* +X4832502Y2628544D01* +X4835093Y2629662D01* +X4837938Y2630119D01* +X5364124Y2630119D01* +X5372100Y2630932D01* +X5379212Y2633218D01* +X5385816Y2637028D01* +X5390337Y2640888D01* +X5499252Y2749804D01* +X5502554Y2751988D01* +X5506466Y2752750D01* +X5510326Y2751988D01* +X5513628Y2749804D01* +X5515813Y2746502D01* +X5516626Y2742590D01* +X5516626Y2683916D01* +X5515813Y2680004D01* +X5513628Y2676702D01* +X5287873Y2450947D01* +X5284571Y2448814D01* +X5280710Y2448001D01* +X4837582Y2448001D01* +X4833721Y2448814D01* +X4829098Y2451354D01* +X4825339Y2454757D01* +X4817160Y2460498D01* +X4808372Y2464562D01* +X4798923Y2467102D01* +X4789271Y2467965D01* +X4779568Y2467102D01* +X4770120Y2464562D01* +X4761331Y2460498D01* +X4753356Y2454859D01* +X4746447Y2448001D01* +X4740859Y2440076D01* +X4736744Y2431237D01* +X4734204Y2421788D01* +X4733391Y2412136D01* +X4734204Y2402433D01* +X4736744Y2393035D01* +X4740859Y2384145D01* +X4746447Y2376170D01* +X4753356Y2369312D01* +X4761331Y2363774D01* +X4770120Y2359609D01* +X4779568Y2357069D01* +X4789271Y2356205D01* +X4798923Y2357069D01* +X4808372Y2359609D01* +X4817160Y2363774D01* +X4825136Y2369312D01* +X4828641Y2372410D01* +X4832096Y2374646D01* +X4834686Y2375763D01* +X4837531Y2376170D01* +X5299252Y2376170D01* +X5307228Y2377084D01* +X5314340Y2379370D01* +X5320944Y2383129D01* +X5325465Y2386990D01* +X5557266Y2618841D01* +X5560568Y2620975D01* +X5564428Y2621788D01* +X5568340Y2620975D01* +X5571642Y2618841D01* +X5573826Y2615488D01* +X5574588Y2611577D01* +X5574588Y2450896D01* +X5573826Y2447036D01* +X5571642Y2443734D01* +X5325008Y2197150D01* +X5321706Y2194915D01* +X5317794Y2194102D01* +X4836210Y2194102D01* +X4832350Y2194915D01* +X4827727Y2197455D01* +X4823968Y2200859D01* +X4815840Y2206650D01* +X4807000Y2210714D01* +X4797602Y2213305D01* +X4787900Y2214067D01* +X4778197Y2213305D01* +X4768799Y2210714D01* +X4759960Y2206650D01* +X4751984Y2201062D01* +X4745126Y2194102D01* +X4739538Y2186127D01* +X4735423Y2177338D01* +X4732883Y2167940D01* +X4732020Y2158238D01* +X4732883Y2148535D01* +X4735423Y2139137D01* +X4739538Y2130348D01* +X4745126Y2122322D01* +X4751984Y2115413D01* +X4759960Y2109876D01* +X4768799Y2105710D01* +X4778197Y2103170D01* +X4787900Y2102408D01* +X4797602Y2103170D01* +X4807000Y2105710D01* +X4815840Y2109876D01* +X4823815Y2115413D01* +X4827320Y2118614D01* +X4830775Y2120747D01* +X4833366Y2121966D01* +X4836160Y2122322D01* +X5336387Y2122322D01* +X5344363Y2123135D01* +X5351475Y2125522D01* +X5358079Y2129332D01* +X5362549Y2133092D01* +X5635548Y2406040D01* +X5640578Y2412288D01* +X5643981Y2419045D01* +X5645962Y2426411D01* +X5646420Y2432253D01* +X5646420Y2894584D01* +X5647182Y2898495D01* +X5649417Y2901797D01* +X5652668Y2904032D01* +X5656580Y2904744D01* +X5660440Y2904032D01* +X5663742Y2901797D01* +X5705602Y2859938D01* +X5707837Y2856687D01* +X5708599Y2852775D01* +X5708599Y2810103D01* +X5707837Y2806293D01* +X5705297Y2801670D01* +X5701842Y2797962D01* +X5696153Y2789783D01* +X5692038Y2780995D01* +X5689498Y2771495D01* +X5688634Y2761843D01* +X5689498Y2752191D01* +X5692038Y2742692D01* +X5696153Y2733903D01* +X5701741Y2725928D01* +X5708599Y2719019D01* +X5716574Y2713482D01* +X5725414Y2709316D01* +X5734812Y2706827D01* +X5744514Y2705963D01* +X5754217Y2706827D01* +X5763615Y2709316D01* +X5772454Y2713482D01* +X5780430Y2719019D01* +X5787288Y2725928D01* +X5792876Y2733903D01* +X5796991Y2742692D01* +X5799632Y2752445D01* +X5801512Y2756154D01* +X5804712Y2758795D01* +X5808675Y2760014D01* +X5812790Y2759456D01* +X5816346Y2757271D01* +X5818733Y2753918D01* +X5819597Y2749854D01* +X5819597Y2461107D01* +X5818835Y2457297D01* +X5816295Y2452725D01* +X5812840Y2448915D01* +X5807151Y2440736D01* +X5803036Y2431948D01* +X5800496Y2422550D01* +X5799632Y2412796D01* +X5800496Y2403144D01* +X5803036Y2393696D01* +X5807151Y2384907D01* +X5812739Y2376982D01* +X5819597Y2370074D01* +X5827572Y2364435D01* +X5836412Y2360371D01* +X5845810Y2357780D01* +X5855512Y2357018D01* +X5864250Y2357729D01* +X5868314Y2357221D01* +X5871870Y2355189D01* +X5874359Y2351887D01* +X5875274Y2347874D01* +X5874562Y2343912D01* +X5872327Y2340457D01* +X5810859Y2278989D01* +X5805830Y2272741D01* +X5802426Y2266086D01* +X5800445Y2258720D01* +X5799988Y2252878D01* +X5799988Y2206548D01* +X5799226Y2202738D01* +X5796686Y2198065D01* +X5793232Y2194356D01* +X5787542Y2186127D01* +X5783427Y2177338D01* +X5780887Y2167940D01* +X5780024Y2158238D01* +X5780887Y2148535D01* +X5783427Y2139137D01* +X5787542Y2130348D01* +X5793130Y2122322D01* +X5799988Y2115413D01* +X5807964Y2109876D01* +X5816803Y2105710D01* +X5826201Y2103170D01* +X5835904Y2102408D01* +X5845606Y2103170D01* +X5855004Y2105710D01* +X5863844Y2109876D01* +X5871819Y2115413D01* +X5878677Y2122322D01* +X5884265Y2130348D01* +X5888380Y2139137D01* +X5890920Y2148535D01* +X5891784Y2158238D01* +X5890920Y2167940D01* +X5888380Y2177338D01* +X5884265Y2186127D01* +X5878677Y2194102D01* +X5875477Y2197760D01* +X5873343Y2201164D01* +X5872226Y2203704D01* +X5871819Y2206548D01* +X5871819Y2234133D01* +X5872581Y2237994D01* +X5874766Y2241296D01* +X5954522Y2321052D01* +X5959602Y2327300D01* +X5963005Y2334006D01* +X5964936Y2341372D01* +X5965444Y2347264D01* +X5965444Y3252774D01* +X5966206Y3256686D01* +X5968390Y3259937D01* +X6334404Y3626002D01* +X6339484Y3632250D01* +X6342888Y3638854D01* +X6344869Y3646220D01* +X6345326Y3652113D01* +X6345326Y4553813D01* +X6346088Y4557674D01* +X6348272Y4561027D01* +X6644233Y4856988D01* +X6647637Y4859172D01* +X6651701Y4859934D01* +X6655714Y4858969D01* +X6659016Y4856530D01* +X6661048Y4852974D01* +X6661505Y4848860D01* +X6660642Y4838852D01* +X6661505Y4829200D01* +X6664045Y4819751D01* +X6668160Y4810963D01* +X6673748Y4802936D01* +X6680606Y4796028D01* +X6688581Y4790490D01* +X6697421Y4786325D01* +X6706819Y4783785D01* +X6709714Y4783582D01* +X6713524Y4782464D01* +X6716623Y4779975D01* +X6718553Y4776470D01* +X6718960Y4772558D01* +X6718655Y4768799D01* +X6719468Y4759198D01* +X6722008Y4749698D01* +X6726123Y4740910D01* +X6731711Y4732985D01* +X6738620Y4726076D01* +X6746595Y4720437D01* +X6755384Y4716373D01* +X6764832Y4713833D01* +X6774535Y4712970D01* +X6782612Y4713732D01* +X6786524Y4713274D01* +X6790029Y4711395D01* +X6792468Y4708245D01* +X6793585Y4704486D01* +X6794500Y4694174D01* +X6797040Y4684725D01* +X6801154Y4675886D01* +X6806742Y4667961D01* +X6813600Y4661103D01* +X6821576Y4655464D01* +X6830415Y4651400D01* +X6839813Y4648860D01* +X6849516Y4647996D01* +X6853123Y4648301D01* +X6857492Y4647692D01* +X6861200Y4645406D01* +X6863537Y4641646D01* +X6864146Y4637278D01* +X6863638Y4631842D01* +X6864502Y4622139D01* +X6867042Y4612741D01* +X6871157Y4603953D01* +X6876745Y4595926D01* +X6883603Y4589018D01* +X6891578Y4583480D01* +X6900418Y4579315D01* +X6909816Y4576775D01* +X6919518Y4576013D01* +X6929221Y4576775D01* +X6938619Y4579315D01* +X6947458Y4583480D01* +X6955434Y4589018D01* +X6958380Y4591812D01* +X6962038Y4594555D01* +X6966051Y4596282D01* +X6970217Y4596892D01* +X7665212Y4596892D01* +X7669123Y4596180D01* +X7673644Y4593640D01* +X7677403Y4590186D01* +X7685582Y4584496D01* +X7694422Y4580382D01* +X7703820Y4577791D01* +X7713522Y4576978D01* +X7723225Y4577791D01* +X7732623Y4580382D01* +X7737652Y4582668D01* +X7741970Y4583582D01* +X7746238Y4582668D01* +X7749743Y4580026D01* +X7751775Y4576114D01* +X7754010Y4567732D01* +X7758125Y4558944D01* +X7763713Y4550918D01* +X7770622Y4544009D01* +X7778597Y4538472D01* +X7787386Y4534306D01* +X7796834Y4531766D01* +X7806537Y4530953D01* +X7816189Y4531766D01* +X7825638Y4534306D01* +X7834426Y4538472D01* +X7842402Y4544009D01* +X7849311Y4550918D01* +X7854899Y4558944D01* +X7859014Y4567732D01* +X7861553Y4577130D01* +X7862366Y4586833D01* +X7861553Y4596536D01* +X7859014Y4605985D01* +X7854899Y4614773D01* +X7849311Y4622698D01* +X7846212Y4626152D01* +X7843977Y4629708D01* +X7842808Y4632350D01* +X7842402Y4635144D01* +X7842402Y4683302D01* +X7841589Y4691329D01* +X7839252Y4698390D01* +X7835442Y4705045D01* +X7831632Y4709515D01* +X7813294Y4727905D01* +X7807045Y4732934D01* +X7800340Y4736338D01* +X7792974Y4738319D01* +X7787131Y4738776D01* +X7699806Y4738776D01* +X7695946Y4739487D01* +X7691374Y4742078D01* +X7687614Y4745532D01* +X7679436Y4751171D01* +X7670647Y4755337D01* +X7661198Y4757877D01* +X7651648Y4758740D01* +X7648295Y4759655D01* +X7645400Y4761687D01* +X7643368Y4764582D01* +X7642453Y4767986D01* +X7641539Y4778502D01* +X7638999Y4788001D01* +X7634884Y4796790D01* +X7629296Y4804765D01* +X7622438Y4811623D01* +X7614462Y4817262D01* +X7605623Y4821377D01* +X7596225Y4823866D01* +X7586522Y4824730D01* +X7582052Y4824323D01* +X7577734Y4824882D01* +X7574025Y4827219D01* +X7571638Y4830978D01* +X7571079Y4835347D01* +X7571384Y4838852D01* +X7570520Y4848555D01* +X7567980Y4858004D01* +X7563866Y4866792D01* +X7558278Y4874717D01* +X7551420Y4881626D01* +X7543444Y4887264D01* +X7534605Y4891328D01* +X7525207Y4893868D01* +X7515504Y4894681D01* +X7505801Y4893868D01* +X7496403Y4891328D01* +X7487564Y4887264D01* +X7479588Y4881626D01* +X7475981Y4878476D01* +X7472629Y4876292D01* +X7470038Y4875123D01* +X7467244Y4874717D01* +X6764781Y4874717D01* +X6760921Y4875530D01* +X6756349Y4878070D01* +X6752590Y4881524D01* +X6744462Y4887264D01* +X6735622Y4891328D01* +X6726224Y4893868D01* +X6716522Y4894681D01* +X6706514Y4893818D01* +X6702399Y4894275D01* +X6698843Y4896408D01* +X6696405Y4899660D01* +X6695440Y4903622D01* +X6696151Y4907737D01* +X6698437Y4911191D01* +X7207656Y5420360D01* +X7210958Y5422595D01* +X7215530Y5423966D01* +X7226147Y5424830D01* +X7235545Y5427421D01* +X7244334Y5431485D01* +X7252309Y5437124D01* +X7259218Y5444032D01* +X7264806Y5451957D01* +X7268921Y5460796D01* +X7271461Y5470194D01* +X7272274Y5479846D01* +X7271461Y5489600D01* +X7268921Y5498998D01* +X7264806Y5507786D01* +X7259218Y5515813D01* +X7252309Y5522722D01* +X7244334Y5528259D01* +X7235545Y5532424D01* +X7226096Y5534964D01* +X7216444Y5535726D01* +X7206742Y5534964D01* +X7197293Y5532424D01* +X7188504Y5528259D01* +X7180529Y5522722D01* +X7173620Y5515813D01* +X7168032Y5507786D01* +X7163917Y5498998D01* +X7161377Y5489600D01* +X7160564Y5479796D01* +X7159396Y5475325D01* +X7158380Y5473039D01* +X7156856Y5471109D01* +X6900367Y5214670D01* +X6896862Y5212334D01* +X6892696Y5211673D01* +X6888581Y5212791D01* +X6885330Y5215483D01* +X6883400Y5219192D01* +X6882892Y5220970D01* +X6878777Y5229809D01* +X6873189Y5237835D01* +X6866331Y5244693D01* +X6858355Y5250230D01* +X6849516Y5254345D01* +X6840626Y5256733D01* +X6836867Y5258663D01* +X6834174Y5261965D01* +X6833108Y5266029D01* +X6833768Y5270246D01* +X6836054Y5273751D01* +X7116673Y5554421D01* +X7119924Y5556554D01* +X7124547Y5557977D01* +X7135114Y5558891D01* +X7144512Y5561380D01* +X7153351Y5565495D01* +X7161326Y5571134D01* +X7168184Y5577992D01* +X7173772Y5585968D01* +X7177887Y5594756D01* +X7180427Y5604256D01* +X7181291Y5613857D01* +X7180427Y5623560D01* +X7177887Y5633059D01* +X7173569Y5642152D01* +X7171893Y5646115D01* +X7171994Y5650382D01* +X7173874Y5654243D01* +X7177125Y5657037D01* +X7181240Y5658104D01* +X7185456Y5657545D01* +X7189063Y5655157D01* +X7901076Y4943195D01* +X7903057Y4940350D01* +X7906054Y4934000D01* +X7911642Y4925974D01* +X7918500Y4919116D01* +X7926476Y4913579D01* +X7932826Y4910582D01* +X7935722Y4908600D01* +X8282178Y4562043D01* +X8288121Y4554880D01* +X8289239Y4553204D01* +X8293150Y4545888D01* +X8293912Y4544009D01* +X8296351Y4536135D01* +X8296757Y4534103D01* +X8298484Y4515154D01* +X8301278Y4505198D01* +X8302244Y4500880D01* +X8302244Y2922778D01* +X8301228Y2917799D01* +X8300415Y2908046D01* +X8301228Y2898394D01* +X8302244Y2893415D01* +X8302244Y1889963D01* +X8301481Y1886051D01* +X8299246Y1882749D01* +X8295944Y1880514D01* +X8292084Y1879803D01* +X7375855Y1879803D01* +X7371943Y1880514D01* +X7368641Y1882749D01* +X7366457Y1886051D01* +X7365695Y1889963D01* +X7365695Y2420061D01* +X7366609Y2424328D01* +X7367270Y2425649D01* +X7369809Y2435148D01* +X7370622Y2444800D01* +X7369809Y2454452D01* +X7367270Y2463952D01* +X7363155Y2472740D01* +X7357567Y2480665D01* +X7350658Y2487574D01* +X7342682Y2493213D01* +X7333894Y2497277D01* +X7324445Y2499817D01* +X7314793Y2500680D01* +X7305090Y2499817D01* +X7295642Y2497277D01* +X7286853Y2493213D01* +X7278878Y2487574D01* +X7271969Y2480665D01* +X7266381Y2472740D01* +X7262266Y2463952D01* +X7259726Y2454452D01* +X7258913Y2444800D01* +X7259726Y2435148D01* +X7262266Y2425649D01* +X7262926Y2424328D01* +X7263841Y2420061D01* +X7263841Y1889963D01* +X7263079Y1886051D01* +X7260894Y1882749D01* +X7257592Y1880514D01* +X7253681Y1879803D01* +X4837887Y1879803D01* +X4833620Y1880717D01* +X4832248Y1881327D01* +X4822799Y1883867D01* +X4813147Y1884730D01* +X4803444Y1883867D01* +X4793996Y1881327D01* +X4792624Y1880717D01* +X4788357Y1879803D01* +G37* + +%LPD*% +G36* +X4675581Y231749D02* +G01* +X4671568Y232562D01* +X4668164Y234848D01* +X4666030Y238353D01* +X4665421Y242468D01* +X4666488Y246430D01* +X4669028Y249580D01* +X4672634Y251612D01* +X4675886Y252628D01* +X4682947Y256336D01* +X4689551Y261721D01* +X4775708Y347929D01* +X4779010Y350062D01* +X4782870Y350926D01* +X4831842Y350875D01* +X4846980Y349808D01* +X4861864Y346710D01* +X4876190Y341731D01* +X4889754Y334975D01* +X4902352Y326491D01* +X4923637Y307797D01* +X4935169Y300126D01* +X4947564Y293928D01* +X4960721Y289509D01* +X4974285Y286816D01* +X4988102Y285953D01* +X5001920Y286816D01* +X5015484Y289509D01* +X5028641Y293928D01* +X5041036Y300126D01* +X5052568Y307797D01* +X5062982Y316890D01* +X5072126Y327355D01* +X5079796Y338836D01* +X5085943Y351282D01* +X5090363Y364388D01* +X5093106Y377952D01* +X5093970Y391820D01* +X5093106Y405638D01* +X5090363Y419201D01* +X5085943Y432358D01* +X5079796Y444754D01* +X5072126Y456285D01* +X5062982Y466699D01* +X5052568Y475843D01* +X5049570Y478942D01* +X5048097Y482904D01* +X5048453Y487222D01* +X5050536Y490982D01* +X5053990Y493522D01* +X5058206Y494436D01* +X5077409Y494436D01* +X5081320Y493623D01* +X5084622Y491490D01* +X5094122Y481888D01* +X5105146Y469188D01* +X5114340Y455218D01* +X5121706Y440232D01* +X5126990Y424281D01* +X5130190Y407822D01* +X5132120Y377647D01* +X5134864Y363677D01* +X5139334Y350164D01* +X5145481Y337362D01* +X5153253Y325475D01* +X5162448Y314655D01* +X5172964Y305054D01* +X5184597Y296926D01* +X5197195Y290372D01* +X5210556Y285496D01* +X5224424Y282295D01* +X5238546Y280974D01* +X5252770Y281432D01* +X5266791Y283667D01* +X5280406Y287680D01* +X5293410Y293471D01* +X5305552Y300837D01* +X5316677Y309676D01* +X5326532Y319887D01* +X5335016Y331317D01* +X5342026Y343662D01* +X5347360Y356819D01* +X5350967Y370586D01* +X5352745Y384657D01* +X5352745Y398881D01* +X5350967Y413004D01* +X5347360Y426720D01* +X5342026Y439877D01* +X5335016Y452272D01* +X5326532Y463702D01* +X5316677Y473913D01* +X5305552Y482752D01* +X5293410Y490118D01* +X5280406Y495858D01* +X5266791Y499922D01* +X5252770Y502208D01* +X5243830Y502462D01* +X5224729Y503885D01* +X5209590Y506882D01* +X5193741Y512165D01* +X5178653Y519531D01* +X5164683Y528777D01* +X5151526Y540207D01* +X5127853Y563930D01* +X5125262Y567080D01* +X5124196Y571093D01* +X5124754Y575157D01* +X5126939Y578662D01* +X5130292Y581050D01* +X5134356Y581914D01* +X5243982Y581914D01* +X5247843Y581101D01* +X5251145Y578916D01* +X5356199Y473862D01* +X5366613Y461873D01* +X5374995Y449173D01* +X5381599Y435559D01* +X5386425Y421182D01* +X5389270Y406247D01* +X5391099Y377952D01* +X5393842Y364388D01* +X5398262Y351282D01* +X5404408Y338836D01* +X5412079Y327355D01* +X5421223Y316890D01* +X5431637Y307797D01* +X5443169Y300126D01* +X5455564Y293928D01* +X5468721Y289509D01* +X5482285Y286816D01* +X5496102Y285953D01* +X5509920Y286816D01* +X5523484Y289509D01* +X5536641Y293928D01* +X5549036Y300126D01* +X5560568Y307797D01* +X5570982Y316890D01* +X5580126Y327355D01* +X5587796Y338836D01* +X5593943Y351282D01* +X5598363Y364388D01* +X5601106Y377952D01* +X5601970Y391820D01* +X5601106Y405638D01* +X5598363Y419201D01* +X5593943Y432358D01* +X5587796Y444754D01* +X5580126Y456285D01* +X5570982Y466699D01* +X5560568Y475843D01* +X5549036Y483463D01* +X5536641Y489661D01* +X5523484Y494080D01* +X5509920Y496824D01* +X5481624Y498601D01* +X5466740Y501497D01* +X5452313Y506272D01* +X5438698Y512876D01* +X5426049Y521309D01* +X5414060Y531672D01* +X5294376Y651357D01* +X5287822Y656742D01* +X5280761Y660552D01* +X5273090Y662838D01* +X5264607Y663651D01* +X4495647Y663651D01* +X4487164Y662838D01* +X4483506Y661720D01* +X4479086Y661466D01* +X4474921Y663041D01* +X4471873Y666242D01* +X4470450Y670458D01* +X4471009Y674878D01* +X4473397Y678688D01* +X4479188Y684479D01* +X4482439Y686612D01* +X4486351Y687425D01* +X6642252Y687425D01* +X6650228Y688238D01* +X6657340Y690524D01* +X6663944Y694385D01* +X6668465Y698246D01* +X6814159Y843940D01* +X6817461Y846175D01* +X6821373Y846886D01* +X7716469Y846886D01* +X7720330Y846175D01* +X7724902Y843635D01* +X7728661Y840130D01* +X7736840Y834491D01* +X7745679Y830326D01* +X7755077Y827786D01* +X7764780Y826922D01* +X7774482Y827786D01* +X7783880Y830326D01* +X7792720Y834491D01* +X7800695Y840028D01* +X7807553Y846886D01* +X7813141Y854913D01* +X7817256Y863752D01* +X7819796Y873150D01* +X7820659Y882853D01* +X7819796Y892556D01* +X7817256Y901953D01* +X7813141Y910742D01* +X7807553Y918718D01* +X7800695Y925576D01* +X7792720Y931214D01* +X7783880Y935278D01* +X7774482Y937818D01* +X7764780Y938682D01* +X7755077Y937818D01* +X7745679Y935278D01* +X7736840Y931214D01* +X7728864Y925576D01* +X7725409Y922477D01* +X7721904Y920343D01* +X7719314Y919124D01* +X7716469Y918718D01* +X6802780Y918718D01* +X6794804Y917905D01* +X6787692Y915619D01* +X6781088Y911758D01* +X6776618Y907897D01* +X6630873Y762254D01* +X6627571Y759968D01* +X6623710Y759256D01* +X6275882Y759256D01* +X6272225Y759866D01* +X6269075Y761796D01* +X6266840Y764743D01* +X6265773Y768299D01* +X6266078Y772007D01* +X6268516Y781202D01* +X6269380Y790803D01* +X6268516Y800506D01* +X6265976Y810006D01* +X6261862Y818794D01* +X6256274Y826719D01* +X6249416Y833628D01* +X6241440Y839266D01* +X6232601Y843330D01* +X6223203Y845870D01* +X6213500Y846734D01* +X6203797Y845870D01* +X6194806Y843432D01* +X6190437Y843280D01* +X6186373Y844956D01* +X6183376Y848207D01* +X6179464Y862431D01* +X6175349Y871219D01* +X6169761Y879195D01* +X6162903Y886155D01* +X6154928Y891692D01* +X6146088Y895807D01* +X6136690Y898398D01* +X6126988Y899160D01* +X6117285Y898398D01* +X6107887Y895807D01* +X6099048Y891692D01* +X6091072Y886155D01* +X6087160Y882243D01* +X6083858Y879957D01* +X6079947Y879195D01* +X4380788Y879195D01* +X4372813Y878433D01* +X4365701Y876046D01* +X4359097Y872236D01* +X4354576Y868426D01* +X4221378Y735228D01* +X4218076Y732993D01* +X4214164Y732282D01* +X3410813Y732282D01* +X3402837Y731418D01* +X3395675Y729030D01* +X3389071Y725220D01* +X3384600Y721410D01* +X3345383Y682193D01* +X3342081Y680008D01* +X3338169Y679196D01* +X3136798Y679196D01* +X3128822Y678383D01* +X3121710Y676097D01* +X3115056Y672287D01* +X3110585Y668477D01* +X3043377Y601167D01* +X3040075Y599033D01* +X3036163Y598220D01* +X1518564Y598220D01* +X1514703Y599033D01* +X1510131Y601522D01* +X1506372Y604977D01* +X1498193Y610717D01* +X1489405Y614781D01* +X1479956Y617321D01* +X1470304Y618185D01* +X1460601Y617321D01* +X1451152Y614781D01* +X1442364Y610717D01* +X1434388Y605078D01* +X1427480Y598220D01* +X1421892Y590296D01* +X1417777Y581456D01* +X1415237Y572058D01* +X1414424Y562356D01* +X1415237Y552653D01* +X1417777Y543255D01* +X1421892Y534365D01* +X1427480Y526389D01* +X1434388Y519531D01* +X1442364Y513994D01* +X1451152Y509828D01* +X1460601Y507288D01* +X1470304Y506425D01* +X1479956Y507288D01* +X1489405Y509828D01* +X1498193Y513994D01* +X1506169Y519531D01* +X1509725Y522732D01* +X1513128Y524865D01* +X1515719Y525983D01* +X1518564Y526389D01* +X1688947Y526389D01* +X1693265Y525424D01* +X1696720Y522833D01* +X1698752Y518922D01* +X1698955Y514502D01* +X1692656Y500938D01* +X1690116Y491490D01* +X1689303Y481787D01* +X1690116Y472084D01* +X1692656Y462686D01* +X1696770Y453898D01* +X1702358Y445871D01* +X1709978Y438302D01* +X1712163Y435000D01* +X1712975Y431088D01* +X1712214Y427177D01* +X1709978Y423875D01* +X1706676Y421741D01* +X1702816Y420928D01* +X1242466Y420928D01* +X1238605Y421741D01* +X1235303Y423875D01* +X853846Y805332D01* +X851662Y808634D01* +X850900Y812546D01* +X850900Y1253642D01* +X851306Y1256588D01* +X852322Y1259992D01* +X852779Y1264259D01* +X853694Y1267612D01* +X855675Y1270406D01* +X1206804Y1621485D01* +X1210106Y1623771D01* +X1213967Y1624482D01* +X1257452Y1624482D01* +X1257452Y1667967D01* +X1258214Y1671828D01* +X1260449Y1675180D01* +X1856486Y2271217D01* +X1861616Y2277465D01* +X1865172Y2284120D01* +X1867357Y2291334D01* +X1868170Y2299411D01* +X1868170Y5555132D01* +X1868932Y5559044D01* +X1871116Y5562346D01* +X2416098Y6107328D01* +X2421178Y6113526D01* +X2424785Y6120180D01* +X2426970Y6127445D01* +X2427732Y6135420D01* +X2427732Y7054494D01* +X2426970Y7062470D01* +X2424785Y7069734D01* +X2421178Y7076338D01* +X2416098Y7082586D01* +X2323744Y7174941D01* +X2321712Y7177836D01* +X2320798Y7181240D01* +X2320188Y7188606D01* +X2317800Y7197598D01* +X2317496Y7201255D01* +X2318562Y7204760D01* +X2320798Y7207707D01* +X2323947Y7209637D01* +X2327605Y7210399D01* +X3326637Y7210399D01* +X3330295Y7209637D01* +X3333445Y7207707D01* +X3335680Y7204760D01* +X3336747Y7201255D01* +X3336442Y7197598D01* +X3335121Y7192568D01* +X3334258Y7182916D01* +X3335121Y7173214D01* +X3336848Y7166609D01* +X3337153Y7163003D01* +X3336086Y7159447D01* +X3333851Y7156500D01* +X3330701Y7154570D01* +X3327044Y7153859D01* +X2990646Y7153859D01* +X2982671Y7152995D01* +X2975559Y7150760D01* +X2968955Y7146899D01* +X2964484Y7143038D01* +X2821127Y6999731D01* +X2816098Y6993534D01* +X2812694Y6986778D01* +X2810713Y6979412D01* +X2810256Y6973570D01* +X2810256Y6774281D01* +X2809494Y6770370D01* +X2806903Y6765848D01* +X2803499Y6762038D01* +X2797759Y6753859D01* +X2793644Y6745071D01* +X2791104Y6735673D01* +X2790291Y6725920D01* +X2791104Y6716268D01* +X2793644Y6706870D01* +X2797759Y6698081D01* +X2803347Y6690106D01* +X2810256Y6683197D01* +X2818231Y6677558D01* +X2827020Y6673494D01* +X2836468Y6670903D01* +X2846171Y6670141D01* +X2852013Y6670649D01* +X2855874Y6670243D01* +X2859278Y6668363D01* +X2861767Y6665417D01* +X2862986Y6661759D01* +X2862732Y6657898D01* +X2862122Y6655612D01* +X2861259Y6645909D01* +X2862122Y6636308D01* +X2864662Y6626809D01* +X2868777Y6618020D01* +X2874365Y6610096D01* +X2881223Y6603187D01* +X2889199Y6597548D01* +X2898038Y6593484D01* +X2907436Y6590944D01* +X2917139Y6590080D01* +X2926842Y6590944D01* +X2936240Y6593484D01* +X2945079Y6597548D01* +X2953054Y6603187D01* +X2959912Y6610096D01* +X2965500Y6618020D01* +X2969615Y6626809D01* +X2972155Y6636308D01* +X2973019Y6645909D01* +X2972155Y6655612D01* +X2969615Y6665112D01* +X2965500Y6673900D01* +X2959912Y6681876D01* +X2956814Y6685381D01* +X2954629Y6688785D01* +X2953461Y6691375D01* +X2953054Y6694220D01* +X2953054Y6947865D01* +X2953816Y6951725D01* +X2956001Y6955028D01* +X3020060Y7019036D01* +X3023311Y7021322D01* +X3027222Y7022033D01* +X3930192Y7022033D01* +X3933850Y7021423D01* +X3937050Y7019442D01* +X3939286Y7016496D01* +X3940301Y7012940D01* +X3939997Y7009231D01* +X3937101Y6998614D01* +X3936288Y6988962D01* +X3937101Y6979310D01* +X3939641Y6969810D01* +X3943756Y6961124D01* +X3950309Y6951878D01* +X3951732Y6949084D01* +X3952240Y6945985D01* +X3952240Y6480505D01* +X3951478Y6476746D01* +X3949395Y6473444D01* +X3946245Y6471259D01* +X3942486Y6470345D01* +X3938676Y6470904D01* +X3935374Y6472885D01* +X3927703Y6479235D01* +X3915613Y6487363D01* +X3912260Y6489293D01* +X3899204Y6495745D01* +X3895648Y6497218D01* +X3881882Y6501892D01* +X3878122Y6502857D01* +X3863898Y6505752D01* +X3860037Y6506260D01* +X3845509Y6507226D01* +X3841648Y6507226D01* +X3827170Y6506260D01* +X3823309Y6505803D01* +X3809034Y6503009D01* +X3805275Y6501993D01* +X3791508Y6497320D01* +X3787952Y6495846D01* +X3774897Y6489496D01* +X3771544Y6487515D01* +X3759403Y6479438D01* +X3756355Y6477152D01* +X3745382Y6467500D01* +X3742639Y6464757D01* +X3733037Y6453886D01* +X3730650Y6450838D01* +X3722573Y6438747D01* +X3720642Y6435394D01* +X3714191Y6422390D01* +X3712667Y6418783D01* +X3707993Y6405016D01* +X3706977Y6401257D01* +X3704082Y6387033D01* +X3703574Y6383172D01* +X3702608Y6368745D01* +X3702558Y6364833D01* +X3703472Y6350304D01* +X3703980Y6346444D01* +X3706774Y6332169D01* +X3707790Y6328410D01* +X3712413Y6314643D01* +X3713886Y6311087D01* +X3720287Y6298031D01* +X3722217Y6294628D01* +X3730244Y6282537D01* +X3732580Y6279438D01* +X3742131Y6268516D01* +X3744874Y6265773D01* +X3755796Y6256121D01* +X3758844Y6253734D01* +X3770884Y6245656D01* +X3774287Y6243726D01* +X3787292Y6237274D01* +X3790848Y6235750D01* +X3804615Y6231026D01* +X3808323Y6230010D01* +X3822598Y6227114D01* +X3826459Y6226606D01* +X3840937Y6225590D01* +X3844798Y6225590D01* +X3859326Y6226505D01* +X3863187Y6226962D01* +X3877411Y6229705D01* +X3881170Y6230670D01* +X3894988Y6235344D01* +X3898544Y6236817D01* +X3911600Y6243218D01* +X3915003Y6245148D01* +X3927094Y6253073D01* +X3935425Y6259982D01* +X3938727Y6261912D01* +X3942537Y6262471D01* +X3946296Y6261557D01* +X3949446Y6259372D01* +X3951478Y6256070D01* +X3952240Y6252362D01* +X3952240Y6237528D01* +X3951782Y6234480D01* +X3950411Y6231686D01* +X3944518Y6223304D01* +X3940403Y6214516D01* +X3937863Y6205118D01* +X3937050Y6195415D01* +X3937863Y6185712D01* +X3940403Y6176314D01* +X3944518Y6167526D01* +X3950106Y6159550D01* +X3957015Y6152591D01* +X3964990Y6147054D01* +X3973779Y6142888D01* +X3983228Y6140348D01* +X3992930Y6139586D01* +X4002582Y6140348D01* +X4012031Y6142888D01* +X4020820Y6147054D01* +X4028795Y6152591D01* +X4035704Y6159550D01* +X4041292Y6167526D01* +X4045407Y6176314D01* +X4047947Y6185712D01* +X4048760Y6195415D01* +X4047947Y6205118D01* +X4045407Y6214516D01* +X4041292Y6223304D01* +X4035907Y6231077D01* +X4034536Y6233871D01* +X4034028Y6236919D01* +X4034028Y6746697D01* +X4034942Y6750812D01* +X4037431Y6754266D01* +X4041140Y6756349D01* +X4045407Y6756755D01* +X4049420Y6755384D01* +X4052519Y6752488D01* +X4056379Y6747052D01* +X4063237Y6740144D01* +X4071213Y6734606D01* +X4080052Y6730441D01* +X4089450Y6727901D01* +X4099153Y6727088D01* +X4108856Y6727901D01* +X4118254Y6730441D01* +X4127093Y6734606D01* +X4135069Y6740144D01* +X4141927Y6747052D01* +X4147515Y6755079D01* +X4151629Y6763867D01* +X4154170Y6773265D01* +X4155033Y6782968D01* +X4154170Y6792671D01* +X4151629Y6802120D01* +X4147515Y6810908D01* +X4141825Y6819087D01* +X4138422Y6822694D01* +X4136440Y6825945D01* +X4135729Y6829602D01* +X4135729Y6940651D01* +X4136542Y6944563D01* +X4138726Y6947814D01* +X4139946Y6949084D01* +X4145534Y6957009D01* +X4149648Y6965797D01* +X4152188Y6975297D01* +X4153001Y6984898D01* +X4152188Y6994601D01* +X4149648Y7004100D01* +X4147972Y7007606D01* +X4147058Y7011568D01* +X4147718Y7015581D01* +X4149902Y7018985D01* +X4153255Y7021271D01* +X4157218Y7022033D01* +X4409084Y7022033D01* +X4413046Y7021271D01* +X4416399Y7018985D01* +X4418584Y7015581D01* +X4419244Y7011568D01* +X4418279Y7007606D01* +X4416653Y7004100D01* +X4414113Y6994601D01* +X4413250Y6984898D01* +X4414113Y6975297D01* +X4416653Y6965797D01* +X4420768Y6957009D01* +X4426407Y6948982D01* +X4428693Y6946595D01* +X4430776Y6943293D01* +X4431538Y6939483D01* +X4431538Y6157925D01* +X4430725Y6153912D01* +X4428439Y6150610D01* +X4425035Y6148476D01* +X4421022Y6147765D01* +X4417060Y6148679D01* +X4410252Y6151930D01* +X4400854Y6154420D01* +X4391152Y6155283D01* +X4381449Y6154420D01* +X4372051Y6151930D01* +X4363212Y6147765D01* +X4355236Y6142177D01* +X4348378Y6135319D01* +X4342790Y6127343D01* +X4338675Y6118555D01* +X4336135Y6109055D01* +X4335272Y6099352D01* +X4336135Y6089751D01* +X4338675Y6080252D01* +X4342790Y6071463D01* +X4348378Y6063538D01* +X4349546Y6062268D01* +X4351782Y6059017D01* +X4352544Y6055106D01* +X4352544Y2493162D01* +X4351782Y2489301D01* +X4349546Y2485999D01* +X4130090Y2266543D01* +X4126788Y2264308D01* +X4122928Y2263597D01* +X2933293Y2263597D01* +X2929432Y2264308D01* +X2926130Y2266543D01* +X2924911Y2267712D01* +X2916936Y2273350D01* +X2908096Y2277465D01* +X2898698Y2279954D01* +X2888996Y2280818D01* +X2879293Y2279954D01* +X2869895Y2277465D01* +X2861056Y2273350D01* +X2853080Y2267712D01* +X2846222Y2260854D01* +X2840634Y2252878D01* +X2836519Y2244090D01* +X2833979Y2234590D01* +X2833116Y2224887D01* +X2833979Y2215286D01* +X2837434Y2201875D01* +X2836722Y2197912D01* +X2834538Y2194509D01* +X2831185Y2192274D01* +X2827274Y2191461D01* +X2676398Y2191461D01* +X2672486Y2192172D01* +X2669235Y2194407D01* +X2668016Y2195576D01* +X2660040Y2201214D01* +X2651201Y2205278D01* +X2641803Y2207818D01* +X2632100Y2208682D01* +X2622397Y2207818D01* +X2612999Y2205278D01* +X2604160Y2201214D01* +X2596184Y2195576D01* +X2589326Y2188718D01* +X2583738Y2180742D01* +X2579624Y2171954D01* +X2577084Y2162556D01* +X2576220Y2152853D01* +X2577084Y2143150D01* +X2579624Y2133752D01* +X2583738Y2124913D01* +X2589326Y2116886D01* +X2596184Y2110028D01* +X2604160Y2104491D01* +X2612999Y2100326D01* +X2622397Y2097786D01* +X2632100Y2096922D01* +X2641803Y2097786D01* +X2651201Y2100326D01* +X2660040Y2104491D01* +X2668016Y2110028D01* +X2669235Y2111298D01* +X2672537Y2113432D01* +X2676448Y2114245D01* +X4191508Y2114245D01* +X4199534Y2115007D01* +X4206798Y2117242D01* +X4213453Y2120747D01* +X4219651Y2125929D01* +X4497070Y2403348D01* +X4498543Y2405024D01* +X4501743Y2407615D01* +X4505706Y2408783D01* +X4509770Y2408174D01* +X4513326Y2405989D01* +X4515713Y2402636D01* +X4516526Y2398623D01* +X4516526Y2205177D01* +X4515764Y2201265D01* +X4513580Y2197963D01* +X4365955Y2050338D01* +X4362653Y2048205D01* +X4358792Y2047392D01* +X2424836Y2047392D01* +X2420975Y2048205D01* +X2409190Y2056485D01* +X2400350Y2060600D01* +X2390952Y2063089D01* +X2381250Y2063953D01* +X2371547Y2063089D01* +X2362149Y2060600D01* +X2353310Y2056485D01* +X2345334Y2050846D01* +X2338476Y2043988D01* +X2332888Y2036013D01* +X2328773Y2027224D01* +X2326233Y2017725D01* +X2325370Y2008022D01* +X2326233Y1998421D01* +X2328773Y1988921D01* +X2332888Y1980133D01* +X2338476Y1972157D01* +X2345334Y1965299D01* +X2353310Y1959660D01* +X2362149Y1955546D01* +X2371547Y1953056D01* +X2381250Y1952193D01* +X2390952Y1953056D01* +X2400350Y1955546D01* +X2409190Y1959660D01* +X2417216Y1965350D01* +X2419248Y1967280D01* +X2422499Y1969414D01* +X2426360Y1970227D01* +X2703017Y1970227D01* +X2706979Y1969363D01* +X2710332Y1967026D01* +X2712516Y1963674D01* +X2713177Y1959610D01* +X2712212Y1955698D01* +X2707589Y1945893D01* +X2705100Y1936496D01* +X2704236Y1926793D01* +X2705100Y1917141D01* +X2707640Y1907692D01* +X2711754Y1898904D01* +X2713939Y1895703D01* +X2715615Y1891639D01* +X2715463Y1887270D01* +X2713431Y1883359D01* +X2709926Y1880717D01* +X2705608Y1879803D01* +X2163368Y1879803D01* +X2160879Y1880057D01* +X2158492Y1880971D01* +X2151837Y1884629D01* +X2142337Y1887829D01* +X2132380Y1889556D01* +X2122373Y1889556D01* +X2112416Y1887829D01* +X2102916Y1884629D01* +X2094077Y1879854D01* +X2086152Y1873605D01* +X2079345Y1866239D01* +X2073859Y1857857D01* +X2069795Y1848612D01* +X2067356Y1838858D01* +X2066493Y1828850D01* +X2067356Y1818792D01* +X2069795Y1809038D01* +X2071573Y1805127D01* +X2072386Y1801215D01* +X2071674Y1797304D01* +X2069490Y1793900D01* +X2066239Y1791665D01* +X2062327Y1790903D01* +X2058365Y1791614D01* +X2055063Y1793849D01* +X1994001Y1854911D01* +X1991817Y1858213D01* +X1991004Y1862124D01* +X1991004Y3358489D01* +X1991766Y3362350D01* +X1993849Y3365601D01* +X1996998Y3367735D01* +X2000757Y3368700D01* +X2004568Y3368141D01* +X2007920Y3366160D01* +X2019198Y3356101D01* +X2030679Y3348482D01* +X2043125Y3342335D01* +X2056231Y3337915D01* +X2069795Y3335121D01* +X2083663Y3334308D01* +X2097481Y3335121D01* +X2111044Y3337915D01* +X2124151Y3342335D01* +X2136597Y3348482D01* +X2148078Y3356101D01* +X2158492Y3365296D01* +X2167636Y3375660D01* +X2175357Y3387242D01* +X2181453Y3399586D01* +X2185924Y3412744D01* +X2188616Y3426307D01* +X2189530Y3440125D01* +X2188616Y3453993D01* +X2185924Y3467506D01* +X2181453Y3480663D01* +X2175357Y3493109D01* +X2167636Y3504590D01* +X2158492Y3515055D01* +X2148078Y3524148D01* +X2136597Y3531819D01* +X2124151Y3538016D01* +X2111044Y3542436D01* +X2097481Y3545128D01* +X2083663Y3545992D01* +X2069795Y3545128D01* +X2056231Y3542436D01* +X2043125Y3538016D01* +X2030679Y3531819D01* +X2019198Y3524148D01* +X2007920Y3514191D01* +X2004568Y3512210D01* +X2000757Y3511651D01* +X1996998Y3512515D01* +X1993849Y3514750D01* +X1991766Y3518001D01* +X1991004Y3521760D01* +X1991004Y4855514D01* +X1991817Y4859426D01* +X1994001Y4862728D01* +X2389936Y5258612D01* +X2393086Y5262067D01* +X2395778Y5265572D01* +X2398166Y5269331D01* +X2400249Y5273243D01* +X2401925Y5277408D01* +X2403297Y5281574D01* +X2404211Y5285943D01* +X2404821Y5290312D01* +X2405024Y5295036D01* +X2405024Y5579110D01* +X2405989Y5583428D01* +X2406599Y5584850D01* +X2409139Y5594248D01* +X2410002Y5603900D01* +X2409139Y5613654D01* +X2406599Y5623052D01* +X2402484Y5631840D01* +X2396896Y5639866D01* +X2390038Y5646775D01* +X2382062Y5652312D01* +X2373223Y5656478D01* +X2363825Y5659018D01* +X2354122Y5659780D01* +X2344420Y5659018D01* +X2335022Y5656478D01* +X2326182Y5652312D01* +X2318207Y5646775D01* +X2311349Y5639866D01* +X2305761Y5631840D01* +X2301646Y5623052D01* +X2299106Y5613654D01* +X2298242Y5603900D01* +X2299106Y5594248D01* +X2301646Y5584850D01* +X2302256Y5583478D01* +X2303221Y5579160D01* +X2303221Y5320080D01* +X2302408Y5316169D01* +X2300224Y5312867D01* +X1904288Y4916982D01* +X1901139Y4913528D01* +X1898396Y4909972D01* +X1896008Y4906264D01* +X1893976Y4902301D01* +X1892300Y4898186D01* +X1890928Y4893970D01* +X1889963Y4889652D01* +X1889404Y4885232D01* +X1889201Y4880559D01* +X1889201Y1836978D01* +X1889404Y1832356D01* +X1889963Y1827987D01* +X1890928Y1823618D01* +X1892300Y1819351D01* +X1893976Y1815287D01* +X1896008Y1811375D01* +X1898396Y1807565D01* +X1901139Y1804111D01* +X1904288Y1800656D01* +X2006955Y1697989D01* +X2010410Y1694789D01* +X2013915Y1692148D01* +X2017674Y1689760D01* +X2021586Y1687626D01* +X2025700Y1685950D01* +X2029917Y1684578D01* +X2034286Y1683664D01* +X2038654Y1683054D01* +X2043328Y1682902D01* +X3346500Y1682902D01* +X3350412Y1682089D01* +X3353714Y1679956D01* +X3355898Y1676654D01* +X3356660Y1672742D01* +X3355898Y1668830D01* +X3353714Y1665528D01* +X3257346Y1569212D01* +X3254095Y1566976D01* +X3250184Y1566265D01* +X3192576Y1566265D01* +X3188665Y1566976D01* +X3184144Y1569567D01* +X3180384Y1573022D01* +X3172206Y1578660D01* +X3163366Y1582826D01* +X3153968Y1585315D01* +X3144266Y1586230D01* +X3134563Y1585315D01* +X3125165Y1582826D01* +X3116326Y1578660D01* +X3108350Y1573072D01* +X3101492Y1566265D01* +X3095904Y1558290D01* +X3091789Y1549450D01* +X3089249Y1540002D01* +X3088386Y1530299D01* +X3089249Y1520647D01* +X3091789Y1511198D01* +X3095904Y1502359D01* +X3100882Y1495247D01* +X3102559Y1491132D01* +X3102406Y1486763D01* +X3100374Y1482852D01* +X3096869Y1480210D01* +X3092602Y1479245D01* +X1629003Y1479245D01* +X1624990Y1480007D01* +X1621637Y1482344D01* +X1619504Y1485798D01* +X1618843Y1489862D01* +X1619808Y1493824D01* +X1622298Y1497025D01* +X1631137Y1504797D01* +X1640179Y1515059D01* +X1647799Y1526438D01* +X1653844Y1538782D01* +X1658213Y1551686D01* +X1660906Y1565148D01* +X1661820Y1578813D01* +X1660906Y1592478D01* +X1658213Y1605838D01* +X1653844Y1618843D01* +X1647799Y1631137D01* +X1640179Y1642465D01* +X1631137Y1652727D01* +X1620875Y1661820D01* +X1609496Y1669389D01* +X1597202Y1675485D01* +X1584248Y1679803D01* +X1570837Y1682496D01* +X1557172Y1683461D01* +X1543507Y1682496D01* +X1530096Y1679803D01* +X1517142Y1675485D01* +X1504848Y1669389D01* +X1493469Y1661820D01* +X1483207Y1652727D01* +X1474165Y1642465D01* +X1466545Y1631137D01* +X1460500Y1618843D01* +X1456131Y1605838D01* +X1453438Y1592478D01* +X1452524Y1578813D01* +X1453438Y1565148D01* +X1456131Y1551686D01* +X1460500Y1538782D01* +X1466545Y1526438D01* +X1474571Y1514500D01* +X1476146Y1510588D01* +X1475994Y1506474D01* +X1474165Y1502714D01* +X1471015Y1499920D01* +X1467002Y1498752D01* +X1462582Y1498346D01* +X1453134Y1495856D01* +X1444345Y1491691D01* +X1436370Y1486154D01* +X1429461Y1479245D01* +X1423873Y1471218D01* +X1419758Y1462430D01* +X1417218Y1452981D01* +X1416405Y1443278D01* +X1417675Y1428343D01* +X1415999Y1424228D01* +X1412748Y1421231D01* +X1408582Y1419910D01* +X1404213Y1420571D01* +X1400505Y1422857D01* +X1359052Y1464310D01* +X1351737Y1470152D01* +X1349095Y1473301D01* +X1347927Y1477213D01* +X1348384Y1481226D01* +X1350365Y1484731D01* +X1353566Y1487220D01* +X1355496Y1488135D01* +X1366875Y1495806D01* +X1377137Y1504797D01* +X1386179Y1515059D01* +X1393799Y1526438D01* +X1397050Y1533042D01* +X1348892Y1533042D01* +X1348892Y1484985D01* +X1348028Y1480870D01* +X1345641Y1477467D01* +X1342085Y1475384D01* +X1337919Y1474876D01* +X1332890Y1475282D01* +X1267612Y1475282D01* +X1263700Y1475994D01* +X1260449Y1478229D01* +X1258214Y1481480D01* +X1257452Y1485392D01* +X1257452Y1533042D01* +X1209294Y1533042D01* +X1212545Y1526438D01* +X1220165Y1515059D01* +X1224686Y1509928D01* +X1226769Y1506169D01* +X1227124Y1501851D01* +X1225702Y1497888D01* +X1222705Y1494790D01* +X1218742Y1493164D01* +X1214424Y1493418D01* +X1210970Y1494383D01* +X1201267Y1495145D01* +X1191564Y1494383D01* +X1182166Y1491843D01* +X1173327Y1487678D01* +X1165352Y1482140D01* +X1158494Y1475232D01* +X1152906Y1467205D01* +X1148791Y1458417D01* +X1146251Y1449019D01* +X1145387Y1439265D01* +X1146251Y1429613D01* +X1148791Y1420215D01* +X1152906Y1411427D01* +X1158494Y1403451D01* +X1165352Y1396492D01* +X1173327Y1390904D01* +X1182166Y1386840D01* +X1191564Y1384249D01* +X1201267Y1383487D01* +X1210970Y1384249D01* +X1220368Y1386840D01* +X1229207Y1390904D01* +X1237183Y1396492D01* +X1240739Y1399692D01* +X1244142Y1401826D01* +X1246733Y1403045D01* +X1249578Y1403451D01* +X1314196Y1403451D01* +X1318056Y1402638D01* +X1321358Y1400403D01* +X1371498Y1350314D01* +X1377746Y1345285D01* +X1384401Y1341882D01* +X1391767Y1339900D01* +X1397660Y1339443D01* +X5929579Y1339443D01* +X5933440Y1338630D01* +X5936742Y1336395D01* +X5938215Y1335024D01* +X5946190Y1329385D01* +X5954979Y1325321D01* +X5964428Y1322730D01* +X5974130Y1321968D01* +X5983782Y1322730D01* +X5993231Y1325321D01* +X6002020Y1329385D01* +X6009995Y1335024D01* +X6016904Y1341932D01* +X6022492Y1349857D01* +X6026607Y1358646D01* +X6029147Y1368094D01* +X6029960Y1377746D01* +X6029553Y1382826D01* +X6030061Y1386992D01* +X6032246Y1390700D01* +X6035700Y1393037D01* +X6039815Y1393850D01* +X6043930Y1392936D01* +X6048451Y1390853D01* +X6057900Y1388313D01* +X6067602Y1387500D01* +X6077254Y1388313D01* +X6086703Y1390853D01* +X6095492Y1394917D01* +X6103467Y1400556D01* +X6110376Y1407464D01* +X6115964Y1415389D01* +X6120079Y1424178D01* +X6122619Y1433626D01* +X6123432Y1443278D01* +X6122619Y1452981D01* +X6120079Y1462430D01* +X6117945Y1467002D01* +X6117031Y1470914D01* +X6117691Y1474927D01* +X6119876Y1478330D01* +X6123228Y1480616D01* +X6127191Y1481378D01* +X7618984Y1481378D01* +X7622794Y1480667D01* +X7627416Y1478076D01* +X7631175Y1474622D01* +X7639354Y1468983D01* +X7648143Y1464818D01* +X7657592Y1462278D01* +X7667294Y1461414D01* +X7676946Y1462278D01* +X7686395Y1464818D01* +X7695184Y1468983D01* +X7703159Y1474520D01* +X7710068Y1481378D01* +X7715656Y1489405D01* +X7719771Y1498244D01* +X7722311Y1507642D01* +X7723124Y1517345D01* +X7722311Y1527048D01* +X7719771Y1536446D01* +X7715656Y1545234D01* +X7710068Y1553210D01* +X7703159Y1560068D01* +X7695184Y1565706D01* +X7686395Y1569770D01* +X7676946Y1572310D01* +X7667294Y1573174D01* +X7657592Y1572310D01* +X7648143Y1569770D01* +X7639354Y1565706D01* +X7631379Y1560068D01* +X7627874Y1556969D01* +X7624419Y1554835D01* +X7621828Y1553616D01* +X7618984Y1553210D01* +X6422948Y1553210D01* +X6419342Y1553921D01* +X6416141Y1555851D01* +X6413906Y1558798D01* +X6412839Y1562354D01* +X6413144Y1566062D01* +X6414516Y1571142D01* +X6415379Y1580845D01* +X6414516Y1590548D01* +X6411976Y1599946D01* +X6407861Y1608734D01* +X6402273Y1616710D01* +X6395415Y1623618D01* +X6387439Y1629257D01* +X6378600Y1633321D01* +X6369202Y1635912D01* +X6366052Y1636115D01* +X6362242Y1637233D01* +X6359144Y1639722D01* +X6357213Y1643176D01* +X6356807Y1647189D01* +X6357366Y1653793D01* +X6356553Y1663496D01* +X6354013Y1672945D01* +X6352387Y1676450D01* +X6351422Y1680413D01* +X6352133Y1684375D01* +X6354267Y1687830D01* +X6357620Y1690065D01* +X6361582Y1690878D01* +X7989011Y1690878D01* +X7992922Y1690065D01* +X7996174Y1687880D01* +X9028379Y655777D01* +X9030208Y653186D01* +X9031224Y650138D01* +X9032189Y644194D01* +X9035542Y634187D01* +X9040469Y624738D01* +X9046819Y616254D01* +X9050070Y613206D01* +X9052356Y609854D01* +X9053169Y605993D01* +X9052458Y602030D01* +X9050274Y598678D01* +X9046921Y596493D01* +X9043009Y595680D01* +X9009634Y595680D01* +X9006230Y596239D01* +X9003233Y598017D01* +X9000591Y600151D01* +X8991396Y605434D01* +X8981490Y609244D01* +X8971076Y611327D01* +X8960510Y611784D01* +X8949994Y610463D01* +X8939784Y607517D01* +X8930233Y602996D01* +X8922258Y597509D01* +X8919514Y596188D01* +X8916466Y595680D01* +X8292541Y595680D01* +X8288680Y596493D01* +X8285378Y598627D01* +X8283143Y601980D01* +X8282381Y605891D01* +X8283143Y609752D01* +X8285378Y613003D01* +X8296097Y624027D01* +X8298789Y627583D01* +X8301177Y631342D01* +X8303259Y635254D01* +X8304936Y639368D01* +X8306257Y643585D01* +X8307222Y647954D01* +X8307831Y652322D01* +X8308035Y657047D01* +X8308035Y827836D01* +X8308644Y831342D01* +X8310473Y834491D01* +X8314436Y839114D01* +X8320278Y848664D01* +X8324494Y858926D01* +X8327136Y869696D01* +X8327999Y880821D01* +X8327136Y891844D01* +X8324494Y902665D01* +X8320278Y912926D01* +X8314436Y922477D01* +X8307222Y930910D01* +X8298789Y938123D01* +X8289290Y943965D01* +X8279028Y948232D01* +X8268208Y950772D01* +X8257133Y951687D01* +X8246008Y950772D01* +X8235188Y948232D01* +X8224926Y943965D01* +X8215426Y938123D01* +X8206994Y930910D01* +X8199780Y922477D01* +X8193938Y912926D01* +X8189722Y902665D01* +X8187080Y891844D01* +X8186216Y880821D01* +X8187080Y869696D01* +X8189722Y858926D01* +X8193938Y848664D01* +X8199780Y839114D01* +X8203793Y834491D01* +X8205571Y831342D01* +X8206181Y827836D01* +X8206181Y682091D01* +X8205419Y678230D01* +X8203234Y674878D01* +X7763002Y234696D01* +X7759700Y232460D01* +X7755839Y231749D01* +G37* + +%LPC*% +G36* +X6866280Y389483D02* +G01* +X6875983Y390245D01* +X6885381Y392836D01* +X6894220Y396900D01* +X6902196Y402488D01* +X6909053Y409448D01* +X6914642Y417372D01* +X6918756Y426161D01* +X6921296Y435609D01* +X6922160Y445262D01* +X6921296Y455015D01* +X6918756Y464413D01* +X6914642Y473201D01* +X6909053Y481228D01* +X6905955Y484733D01* +X6903770Y488188D01* +X6902602Y490778D01* +X6902196Y493572D01* +X6902196Y713994D01* +X6902958Y717854D01* +X6905498Y722426D01* +X6908952Y726236D01* +X6914642Y734415D01* +X6918756Y743204D01* +X6921296Y752602D01* +X6922160Y762304D01* +X6921296Y772007D01* +X6918756Y781405D01* +X6914642Y790244D01* +X6909053Y798271D01* +X6902196Y805129D01* +X6894220Y810666D01* +X6885381Y814832D01* +X6875983Y817372D01* +X6866280Y818235D01* +X6856577Y817372D01* +X6847179Y814832D01* +X6838340Y810666D01* +X6830364Y805129D01* +X6823506Y798271D01* +X6817918Y790244D01* +X6813803Y781405D01* +X6811264Y772007D01* +X6810400Y762304D01* +X6811264Y752602D01* +X6813803Y743204D01* +X6817918Y734415D01* +X6823506Y726440D01* +X6826554Y723036D01* +X6828790Y719429D01* +X6829958Y716838D01* +X6830364Y713994D01* +X6830364Y493572D01* +X6829602Y489712D01* +X6827062Y485241D01* +X6823608Y481380D01* +X6817918Y473201D01* +X6813803Y464413D01* +X6811264Y455015D01* +X6810400Y445262D01* +X6811264Y435609D01* +X6813803Y426161D01* +X6817918Y417372D01* +X6823506Y409448D01* +X6830364Y402488D01* +X6838340Y396900D01* +X6847179Y392836D01* +X6856577Y390245D01* +G37* +G36* +X3840937Y983538D02* +G01* +X3844798Y983538D01* +X3859326Y984503D01* +X3863187Y984961D01* +X3877411Y987755D01* +X3881170Y988720D01* +X3894988Y993292D01* +X3898544Y994765D01* +X3911600Y1001166D01* +X3915003Y1003096D01* +X3927094Y1011174D01* +X3930192Y1013460D01* +X3941165Y1023010D01* +X3943908Y1025702D01* +X3953560Y1036624D01* +X3955948Y1039672D01* +X3964076Y1051763D01* +X3966006Y1055065D01* +X3972509Y1068070D01* +X3974033Y1071626D01* +X3978757Y1085443D01* +X3979773Y1089152D01* +X3982669Y1103376D01* +X3983228Y1107287D01* +X3984244Y1122375D01* +X3984244Y1126337D01* +X3983278Y1140815D01* +X3982770Y1144727D01* +X3979976Y1158951D01* +X3978960Y1162761D01* +X3974287Y1176477D01* +X3972814Y1180033D01* +X3966362Y1193088D01* +X3964432Y1196492D01* +X3956354Y1208582D01* +X3954018Y1211630D01* +X3944416Y1222552D01* +X3941673Y1225296D01* +X3930751Y1234897D01* +X3927703Y1237234D01* +X3915613Y1245362D01* +X3912260Y1247292D01* +X3899204Y1253693D01* +X3895648Y1255166D01* +X3881882Y1259941D01* +X3878122Y1260906D01* +X3863898Y1263802D01* +X3860037Y1264310D01* +X3845509Y1265275D01* +X3841648Y1265275D01* +X3827170Y1264310D01* +X3823309Y1263853D01* +X3809034Y1260957D01* +X3805275Y1259992D01* +X3791508Y1255318D01* +X3787952Y1253845D01* +X3774897Y1247444D01* +X3771544Y1245514D01* +X3759403Y1237488D01* +X3756355Y1235100D01* +X3745382Y1225499D01* +X3742639Y1222806D01* +X3733037Y1211935D01* +X3730650Y1208786D01* +X3722573Y1196797D01* +X3720642Y1193444D01* +X3714191Y1180388D01* +X3712667Y1176832D01* +X3707993Y1163015D01* +X3706977Y1159306D01* +X3704082Y1145082D01* +X3703574Y1141222D01* +X3702608Y1126693D01* +X3702558Y1122781D01* +X3703472Y1108303D01* +X3703980Y1104493D01* +X3706774Y1090168D01* +X3707790Y1086459D01* +X3712413Y1072642D01* +X3713886Y1069086D01* +X3720287Y1056030D01* +X3722217Y1052626D01* +X3730244Y1040587D01* +X3732580Y1037437D01* +X3742131Y1026515D01* +X3744874Y1023721D01* +X3755796Y1014171D01* +X3758844Y1011783D01* +X3770884Y1003655D01* +X3774287Y1001674D01* +X3787292Y995222D01* +X3790848Y993749D01* +X3804615Y988974D01* +X3808323Y987958D01* +X3822598Y985062D01* +X3826459Y984554D01* +G37* +G36* +X1348892Y1624482D02* +G01* +X1397050Y1624482D01* +X1393799Y1631137D01* +X1386179Y1642465D01* +X1377137Y1652727D01* +X1366875Y1661820D01* +X1355496Y1669389D01* +X1348892Y1672691D01* +G37* +G36* +X3282543Y2844698D02* +G01* +X3298545Y2846324D01* +X3314293Y2849778D01* +X3329533Y2854909D01* +X3344062Y2861767D01* +X3357676Y2870352D01* +X3370275Y2880309D01* +X3381654Y2891688D01* +X3391662Y2904286D01* +X3400196Y2917901D01* +X3407054Y2932480D01* +X3412236Y2947670D01* +X3415690Y2963418D01* +X3417265Y2979420D01* +X3417062Y2995523D01* +X3414979Y3011474D01* +X3411118Y3027121D01* +X3405530Y3042107D01* +X3398215Y3056534D01* +X3389325Y3069894D01* +X3378962Y3082188D01* +X3367278Y3093212D01* +X3354374Y3102914D01* +X3340506Y3110992D01* +X3325774Y3117494D01* +X3310382Y3122218D01* +X3294583Y3125165D01* +X3278530Y3126384D01* +X3262477Y3125622D01* +X3246577Y3123133D01* +X3231083Y3118815D01* +X3216148Y3112770D01* +X3202076Y3105048D01* +X3188919Y3095752D01* +X3176879Y3085084D01* +X3166211Y3073095D01* +X3156915Y3059938D01* +X3149193Y3045815D01* +X3143148Y3030880D01* +X3138830Y3015437D01* +X3136341Y2999486D01* +X3135630Y2983433D01* +X3136798Y2967380D01* +X3139744Y2951581D01* +X3144520Y2936240D01* +X3150971Y2921457D01* +X3159099Y2907588D01* +X3168751Y2894736D01* +X3179775Y2883052D01* +X3192068Y2872638D01* +X3205480Y2863748D01* +X3219856Y2856433D01* +X3234893Y2850896D01* +X3250539Y2846984D01* +X3266490Y2844952D01* +G37* +G36* +X2407869Y2981198D02* +G01* +X2423871Y2982823D01* +X2439619Y2986227D01* +X2445359Y2988157D01* +X2401874Y3031642D01* +X2358288Y2988106D01* +X2360218Y2987294D01* +X2375865Y2983433D01* +X2391816Y2981401D01* +G37* +G36* +X2535631Y3078480D02* +G01* +X2537561Y3084220D01* +X2541016Y3099917D01* +X2542590Y3115868D01* +X2542387Y3131972D01* +X2540304Y3147923D01* +X2536444Y3163519D01* +X2535732Y3165500D01* +X2492146Y3121964D01* +G37* +G36* +X2268067Y3078480D02* +G01* +X2311552Y3121964D01* +X2267966Y3165500D01* +X2264156Y3151886D01* +X2261666Y3136036D01* +X2260955Y3119932D01* +X2262124Y3103930D01* +X2265070Y3088030D01* +G37* +G36* +X2401874Y3212287D02* +G01* +X2445359Y3255772D01* +X2435707Y3258718D01* +X2419908Y3261715D01* +X2403856Y3262782D01* +X2387803Y3262172D01* +X2371902Y3259632D01* +X2358288Y3255822D01* +G37* +G36* +X2426258Y4272330D02* +G01* +X2442260Y4273956D01* +X2457958Y4277360D01* +X2473198Y4282592D01* +X2487726Y4289450D01* +X2501392Y4297934D01* +X2513990Y4307992D01* +X2525369Y4319320D01* +X2535377Y4331919D01* +X2543860Y4345635D01* +X2550769Y4360164D01* +X2555951Y4375404D01* +X2559354Y4391050D01* +X2560980Y4407103D01* +X2560726Y4423206D01* +X2558694Y4439107D01* +X2554833Y4454702D01* +X2549194Y4469790D01* +X2541879Y4484166D01* +X2532989Y4497527D01* +X2522626Y4509820D01* +X2510942Y4520946D01* +X2498090Y4530598D01* +X2484170Y4538624D01* +X2469438Y4545126D01* +X2454097Y4549851D01* +X2438247Y4552848D01* +X2422245Y4554016D01* +X2406142Y4553305D01* +X2390241Y4550765D01* +X2374747Y4546447D01* +X2359863Y4540453D01* +X2345740Y4532680D01* +X2332583Y4523435D01* +X2320594Y4512716D01* +X2309876Y4500778D01* +X2300630Y4487621D01* +X2292908Y4473498D01* +X2286863Y4458563D01* +X2282545Y4443120D01* +X2280005Y4427169D01* +X2279345Y4411065D01* +X2280462Y4395063D01* +X2283460Y4379264D01* +X2288184Y4363872D01* +X2294686Y4349140D01* +X2302764Y4335272D01* +X2312416Y4322368D01* +X2323490Y4310735D01* +X2335784Y4300321D01* +X2349195Y4291431D01* +X2363520Y4284116D01* +X2378608Y4278528D01* +X2394204Y4274667D01* +X2410155Y4272635D01* +G37* +G36* +X2826105Y4593132D02* +G01* +X2846933Y4594098D01* +X2867609Y4596892D01* +X2887929Y4601667D01* +X2907690Y4608372D01* +X2926791Y4616754D01* +X2945028Y4626965D01* +X2962249Y4638700D01* +X2978302Y4652010D01* +X2993034Y4666843D01* +X3006394Y4682845D01* +X3018180Y4700117D01* +X3028340Y4718304D01* +X3036773Y4737354D01* +X3043377Y4757216D01* +X3048152Y4777435D01* +X3051048Y4798110D01* +X3052013Y4818938D01* +X3051048Y4839868D01* +X3048152Y4860493D01* +X3043377Y4880813D01* +X3036773Y4900574D01* +X3028340Y4919675D01* +X3018180Y4937912D01* +X3006394Y4955133D01* +X2993034Y4971186D01* +X2978302Y4985969D01* +X2962249Y4999228D01* +X2945028Y5011013D01* +X2926791Y5021173D01* +X2907690Y5029606D01* +X2887929Y5036312D01* +X2867609Y5041087D01* +X2846933Y5043932D01* +X2826105Y5044897D01* +X2805277Y5043932D01* +X2784602Y5041087D01* +X2764282Y5036312D01* +X2744520Y5029606D01* +X2725420Y5021173D01* +X2707182Y5011013D01* +X2689961Y4999228D01* +X2673908Y4985969D01* +X2659176Y4971186D01* +X2645816Y4955133D01* +X2634030Y4937912D01* +X2623870Y4919675D01* +X2615438Y4900574D01* +X2608834Y4880813D01* +X2604058Y4860493D01* +X2601163Y4839868D01* +X2600198Y4818938D01* +X2601163Y4798110D01* +X2604058Y4777435D01* +X2608834Y4757216D01* +X2615438Y4737354D01* +X2623870Y4718304D01* +X2634030Y4700117D01* +X2645816Y4682845D01* +X2659176Y4666843D01* +X2673908Y4652010D01* +X2689961Y4638700D01* +X2707182Y4626965D01* +X2725420Y4616754D01* +X2744520Y4608372D01* +X2764282Y4601667D01* +X2784602Y4596892D01* +X2805277Y4594098D01* +G37* +G36* +X2132126Y5232654D02* +G01* +X2148128Y5234178D01* +X2163826Y5237632D01* +X2179066Y5242864D01* +X2193594Y5249722D01* +X2207260Y5258206D01* +X2219858Y5268264D01* +X2231237Y5279593D01* +X2241245Y5292242D01* +X2249728Y5305856D01* +X2256637Y5320385D01* +X2261819Y5335625D01* +X2265222Y5351373D01* +X2266848Y5367375D01* +X2266594Y5383428D01* +X2264562Y5399328D01* +X2260701Y5414975D01* +X2255062Y5430012D01* +X2247747Y5444388D01* +X2238857Y5457850D01* +X2228494Y5470093D01* +X2216810Y5481167D01* +X2203958Y5490768D01* +X2190038Y5498896D01* +X2175306Y5505348D01* +X2159965Y5510123D01* +X2144115Y5513070D01* +X2128113Y5514238D01* +X2112010Y5513527D01* +X2096109Y5511088D01* +X2080615Y5506720D01* +X2065731Y5500725D01* +X2051608Y5493004D01* +X2038451Y5483707D01* +X2026462Y5472988D01* +X2015743Y5460949D01* +X2006498Y5447792D01* +X1998776Y5433771D01* +X1992731Y5418785D01* +X1988413Y5403291D01* +X1985873Y5387441D01* +X1985213Y5371388D01* +X1986330Y5355285D01* +X1989328Y5339537D01* +X1994052Y5324094D01* +X2000554Y5309362D01* +X2008632Y5295544D01* +X2018284Y5282590D01* +X2029358Y5270906D01* +X2041652Y5260543D01* +X2055063Y5251704D01* +X2069388Y5244388D01* +X2084476Y5238800D01* +X2100072Y5234940D01* +X2116023Y5232806D01* +G37* +G36* +X3374644Y6707124D02* +G01* +X3384296Y6707886D01* +X3393744Y6710425D01* +X3402533Y6714591D01* +X3410508Y6720128D01* +X3417417Y6727037D01* +X3423005Y6735064D01* +X3427120Y6743852D01* +X3429660Y6753250D01* +X3430473Y6762953D01* +X3429660Y6772656D01* +X3427120Y6782053D01* +X3423005Y6790893D01* +X3417417Y6798818D01* +X3410508Y6805726D01* +X3402533Y6811365D01* +X3393744Y6815429D01* +X3391154Y6816191D01* +X3387242Y6818223D01* +X3384550Y6821627D01* +X3383635Y6825996D01* +X3384550Y6830263D01* +X3387242Y6833768D01* +X3391154Y6835800D01* +X3393744Y6836460D01* +X3402533Y6840626D01* +X3410508Y6846163D01* +X3417417Y6853021D01* +X3423005Y6861048D01* +X3427120Y6869887D01* +X3429660Y6879285D01* +X3430473Y6888988D01* +X3429660Y6898690D01* +X3427120Y6908088D01* +X3423005Y6916877D01* +X3417417Y6924852D01* +X3410508Y6931710D01* +X3402533Y6937349D01* +X3393744Y6941413D01* +X3384296Y6943953D01* +X3374644Y6944817D01* +X3364941Y6943953D01* +X3355492Y6941413D01* +X3346704Y6937349D01* +X3338728Y6931710D01* +X3331819Y6924852D01* +X3326231Y6916877D01* +X3321913Y6907326D01* +X3319881Y6903415D01* +X3316427Y6900773D01* +X3312109Y6899808D01* +X3307791Y6900773D01* +X3304336Y6903415D01* +X3297986Y6916877D01* +X3292398Y6924852D01* +X3285490Y6931710D01* +X3277514Y6937349D01* +X3268726Y6941413D01* +X3259277Y6943953D01* +X3249625Y6944817D01* +X3239922Y6943953D01* +X3230473Y6941413D01* +X3221685Y6937349D01* +X3213709Y6931710D01* +X3206800Y6924852D01* +X3201212Y6916877D01* +X3197098Y6908088D01* +X3194558Y6898690D01* +X3193745Y6888988D01* +X3194558Y6879285D01* +X3197098Y6869887D01* +X3201212Y6861048D01* +X3206800Y6853021D01* +X3213709Y6846163D01* +X3221685Y6840626D01* +X3231286Y6836105D01* +X3234385Y6833870D01* +X3236468Y6830618D01* +X3237179Y6826046D01* +X3236468Y6822287D01* +X3234385Y6819087D01* +X3231286Y6816801D01* +X3221685Y6812381D01* +X3213709Y6806793D01* +X3206800Y6799834D01* +X3201212Y6791858D01* +X3197098Y6783070D01* +X3194558Y6773672D01* +X3193745Y6763969D01* +X3194558Y6754266D01* +X3197098Y6744868D01* +X3201212Y6736080D01* +X3206800Y6728053D01* +X3213709Y6721144D01* +X3221685Y6715607D01* +X3230473Y6711442D01* +X3239922Y6708902D01* +X3249625Y6708140D01* +X3259277Y6708902D01* +X3268726Y6711442D01* +X3277514Y6715607D01* +X3285490Y6721144D01* +X3292398Y6728053D01* +X3297986Y6736080D01* +X3302457Y6745630D01* +X3304895Y6748881D01* +X3308400Y6750964D01* +X3312414Y6751472D01* +X3316274Y6750405D01* +X3320338Y6746900D01* +X3321761Y6744614D01* +X3326231Y6735064D01* +X3331819Y6727037D01* +X3338728Y6720128D01* +X3346704Y6714591D01* +X3355492Y6710425D01* +X3364941Y6707886D01* +G37* + +%LPD*% +G36* +X50Y25857D02* +G01* +X-25196Y26212D01* +X-49174Y28498D01* +X-72948Y32461D01* +X-96316Y38354D01* +X-119176Y46024D01* +X-141376Y55372D01* +X-162763Y66395D01* +X-183286Y79044D01* +X-202742Y93268D01* +X-221030Y109016D01* +X-238048Y125983D01* +X-253746Y144322D01* +X-267970Y163779D01* +X-280670Y184251D01* +X-291693Y205638D01* +X-301091Y227888D01* +X-308762Y250748D01* +X-314604Y274116D01* +X-318668Y297789D01* +X-320802Y321665D01* +X-320802Y4984038D01* +X-319887Y4988356D01* +X-317195Y4991862D01* +X-313283Y4993843D01* +X-308914Y4993995D01* +X-304850Y4992319D01* +X-298399Y4987899D01* +X-289560Y4983734D01* +X-280162Y4981194D01* +X-270459Y4980330D01* +X-260756Y4981194D01* +X-251358Y4983734D01* +X-242519Y4987899D01* +X-234543Y4993436D01* +X-233324Y4994656D01* +X-230022Y4996840D01* +X-226161Y4997653D01* +X-221792Y4997653D01* +X-213766Y4998364D01* +X-206552Y5000650D01* +X-199847Y5004155D01* +X-193649Y5009286D01* +X1168Y5204053D01* +X4419Y5206288D01* +X8331Y5207050D01* +X12242Y5206288D01* +X15494Y5204053D01* +X17729Y5200802D01* +X18491Y5196890D01* +X18491Y5066487D01* +X19354Y5058410D01* +X21640Y5051348D01* +X25450Y5044694D01* +X29311Y5040223D01* +X83616Y4985918D01* +X86258Y4983683D01* +X445820Y4624120D01* +X448106Y4620615D01* +X448767Y4616399D01* +X447700Y4612335D01* +X445058Y4609033D01* +X441248Y4607102D01* +X438302Y4606340D01* +X429463Y4602175D01* +X421487Y4596638D01* +X418033Y4593590D01* +X414528Y4591304D01* +X411937Y4590186D01* +X409092Y4589780D01* +X391312Y4589780D01* +X387451Y4590491D01* +X384149Y4592777D01* +X132537Y4844338D01* +X127558Y4848250D01* +X122326Y4850790D01* +X116687Y4852111D01* +X110896Y4852111D01* +X105257Y4850790D01* +X100076Y4848250D01* +X95097Y4844338D01* +X-66751Y4682540D01* +X-70713Y4677562D01* +X-73202Y4672330D01* +X-74523Y4666640D01* +X-74523Y4660849D01* +X-73202Y4655261D01* +X-70713Y4649978D01* +X-66751Y4645050D01* +X286004Y4292346D01* +X290982Y4288383D01* +X296214Y4285843D01* +X301853Y4284573D01* +X307644Y4284573D01* +X313283Y4285843D01* +X318465Y4288383D01* +X323443Y4292346D01* +X485292Y4454093D01* +X489254Y4459071D01* +X491743Y4464304D01* +X493064Y4469993D01* +X493064Y4475734D01* +X491743Y4481423D01* +X489254Y4486656D01* +X484936Y4492040D01* +X483057Y4495647D01* +X482854Y4499813D01* +X484225Y4503674D01* +X487070Y4506671D01* +X493318Y4511090D01* +X500176Y4517948D01* +X505764Y4525873D01* +X509879Y4534712D01* +X510692Y4537659D01* +X512622Y4541469D01* +X515924Y4544110D01* +X519988Y4545228D01* +X524154Y4544517D01* +X527710Y4542282D01* +X552653Y4517440D01* +X559460Y4511700D01* +X561492Y4510278D01* +X571296Y4504588D01* +X579526Y4501235D01* +X581863Y4500473D01* +X590499Y4498340D01* +X601726Y4497019D01* +X951128Y4497019D01* +X962710Y4498390D01* +X970940Y4500473D01* +X973937Y4501438D01* +X981456Y4504588D01* +X984554Y4506214D01* +X991260Y4510227D01* +X994359Y4512513D01* +X1000099Y4517390D01* +X1003046Y4520184D01* +X1007770Y4525670D01* +X1010462Y4529226D01* +X1014171Y4535068D01* +X1016406Y4539183D01* +X1019048Y4545279D01* +X1020775Y4549952D01* +X1022400Y4556099D01* +X1023416Y4561332D01* +X1024077Y4567275D01* +X1024331Y4572863D01* +X1024077Y4578604D01* +X1023416Y4584496D01* +X1022400Y4589780D01* +X1020775Y4595825D01* +X1019048Y4600600D01* +X1016406Y4606594D01* +X1014171Y4610811D01* +X1010462Y4616653D01* +X1007770Y4620158D01* +X1003046Y4625594D01* +X1000099Y4628438D01* +X994359Y4633315D01* +X991260Y4635601D01* +X984554Y4639665D01* +X973937Y4644440D01* +X970940Y4645406D01* +X962710Y4647488D01* +X959866Y4647946D01* +X951128Y4648809D01* +X817676Y4648860D01* +X813511Y4649724D01* +X810056Y4652264D01* +X807974Y4655921D01* +X807567Y4660188D01* +X808939Y4664202D01* +X811834Y4667351D01* +X818540Y4671974D01* +X832866Y4684217D01* +X845819Y4697882D01* +X857351Y4712817D01* +X867308Y4728768D01* +X875588Y4745685D01* +X882142Y4763312D01* +X886866Y4781600D01* +X889711Y4800193D01* +X890676Y4818938D01* +X889711Y4837836D01* +X886866Y4856429D01* +X882142Y4874615D01* +X875588Y4892294D01* +X867308Y4909210D01* +X857351Y4925212D01* +X845819Y4940096D01* +X832866Y4953762D01* +X818540Y4965954D01* +X803097Y4976723D01* +X786638Y4985918D01* +X769315Y4993335D01* +X751382Y4998974D01* +X732942Y5002733D01* +X714197Y5004612D01* +X695350Y5004612D01* +X676605Y5002733D01* +X658164Y4998974D01* +X640232Y4993335D01* +X622909Y4985918D01* +X606450Y4976723D01* +X591007Y4965954D01* +X576681Y4953762D01* +X563727Y4940096D01* +X552196Y4925212D01* +X542239Y4909210D01* +X533958Y4892294D01* +X527405Y4874615D01* +X522681Y4856429D01* +X519836Y4837836D01* +X518871Y4818938D01* +X519836Y4800193D01* +X521512Y4789119D01* +X521309Y4784852D01* +X519379Y4781143D01* +X516077Y4778451D01* +X512013Y4777435D01* +X507847Y4778044D01* +X504291Y4780330D01* +X216306Y5068417D01* +X214071Y5071668D01* +X213309Y5075529D01* +X213309Y5311800D01* +X214071Y5315712D01* +X216306Y5319064D01* +X317652Y5420360D01* +X320954Y5422595D01* +X325526Y5423966D01* +X336092Y5424932D01* +X345490Y5427472D01* +X354330Y5431536D01* +X362305Y5437174D01* +X369163Y5444032D01* +X374751Y5451957D01* +X378866Y5460796D01* +X381406Y5470194D01* +X382270Y5479897D01* +X381406Y5489600D01* +X378866Y5498998D01* +X374751Y5507837D01* +X373735Y5509310D01* +X372059Y5513425D01* +X372262Y5517794D01* +X374294Y5521706D01* +X377748Y5524347D01* +X382066Y5525312D01* +X1162913Y5525312D01* +X1166825Y5524550D01* +X1170127Y5522315D01* +X1288491Y5403951D01* +X1290726Y5400649D01* +X1291488Y5396788D01* +X1291488Y4273042D01* +X1290726Y4269130D01* +X1288491Y4265930D01* +X914552Y3891889D01* +X909116Y3885336D01* +X905357Y3878224D01* +X903020Y3870553D01* +X902208Y3862120D01* +X902208Y1620824D01* +X901446Y1616913D01* +X899210Y1613611D01* +X687679Y1402080D01* +X682294Y1395476D01* +X678535Y1388465D01* +X676198Y1380744D01* +X675386Y1372311D01* +X675386Y731875D01* +X676198Y723341D01* +X676910Y721055D01* +X677214Y716635D01* +X675640Y712419D01* +X672388Y709422D01* +X668172Y707999D01* +X663752Y708507D01* +X659993Y710946D01* +X656996Y713892D01* +X654812Y717245D01* +X653999Y721106D01* +X653999Y1694586D01* +X653796Y1699209D01* +X653237Y1703628D01* +X652272Y1707946D01* +X650951Y1712214D01* +X649224Y1716278D01* +X647192Y1720240D01* +X644804Y1723999D01* +X642112Y1727504D01* +X638962Y1730908D01* +X462483Y1907387D01* +X460857Y1909622D01* +X459841Y1912112D01* +X458673Y1916531D01* +X454659Y1925777D01* +X449173Y1934159D01* +X442366Y1941575D01* +X434390Y1947773D01* +X425551Y1952548D01* +X416051Y1955850D01* +X406146Y1957476D01* +X396087Y1957476D01* +X386181Y1955850D01* +X376682Y1952548D01* +X367842Y1947773D01* +X359867Y1941575D01* +X353060Y1934159D01* +X347573Y1925777D01* +X343560Y1916531D01* +X341071Y1906778D01* +X340258Y1896821D01* +X341071Y1886762D01* +X343560Y1877009D01* +X347573Y1867814D01* +X353060Y1859381D01* +X359867Y1852015D01* +X367842Y1845818D01* +X376682Y1841093D01* +X386892Y1837486D01* +X390804Y1835099D01* +X549249Y1676654D01* +X551434Y1673352D01* +X552196Y1669491D01* +X552196Y696010D01* +X552399Y691388D01* +X553008Y686968D01* +X553923Y682650D01* +X555294Y678383D01* +X556971Y674319D01* +X559054Y670356D01* +X561441Y666597D01* +X564134Y663092D01* +X567283Y659688D01* +X1081938Y144932D01* +X1085392Y141833D01* +X1088898Y139090D01* +X1092657Y136702D01* +X1096619Y134620D01* +X1100683Y132994D01* +X1104950Y131622D01* +X1109268Y130657D01* +X1113688Y130098D01* +X1118311Y129844D01* +X7780883Y129844D01* +X7785557Y130098D01* +X7789925Y130657D01* +X7794294Y131622D01* +X7798511Y132994D01* +X7802625Y134620D01* +X7806537Y136702D01* +X7810296Y139090D01* +X7813802Y141833D01* +X7817256Y144932D01* +X8163204Y490880D01* +X8166506Y493115D01* +X8170418Y493928D01* +X8919819Y493928D01* +X8922867Y493471D01* +X8925610Y492099D01* +X8930233Y488848D01* +X8939784Y484327D01* +X8949994Y481380D01* +X8960510Y480110D01* +X8971076Y480517D01* +X8981490Y482701D01* +X8991346Y486409D01* +X9001658Y492506D01* +X9004147Y493572D01* +X9006840Y493928D01* +X10065969Y493928D01* +X10068966Y493471D01* +X10071709Y492099D01* +X10079228Y486867D01* +X10088778Y482346D01* +X10098989Y479450D01* +X10109504Y478129D01* +X10120071Y478535D01* +X10130485Y480720D01* +X10140391Y484428D01* +X10149586Y489712D01* +X10157764Y496468D01* +X10164826Y504342D01* +X10170464Y513334D01* +X10174630Y523087D01* +X10177170Y533349D01* +X10178034Y543915D01* +X10177170Y554583D01* +X10174630Y564845D01* +X10170464Y574598D01* +X10164826Y583539D01* +X10157764Y591464D01* +X10149586Y598170D01* +X10140391Y603504D01* +X10130485Y607263D01* +X10120071Y609346D01* +X10109504Y609803D01* +X10098989Y608482D01* +X10088778Y605536D01* +X10079228Y601065D01* +X10074097Y597509D01* +X10071354Y596188D01* +X10068356Y595680D01* +X10039502Y595680D01* +X10035692Y596392D01* +X10032441Y598576D01* +X10030256Y601675D01* +X10029342Y605434D01* +X10029952Y609295D01* +X10031882Y612597D01* +X10038791Y620420D01* +X10044480Y629361D01* +X10048646Y639114D01* +X10051135Y649427D01* +X10051999Y659993D01* +X10051135Y670509D01* +X10048646Y680821D01* +X10044480Y690575D01* +X10038791Y699566D01* +X10031780Y707491D01* +X10023551Y714197D01* +X10014356Y719480D01* +X10004450Y723239D01* +X9994087Y725322D01* +X9983470Y725779D01* +X9972954Y724560D01* +X9962794Y721563D01* +X9953193Y716991D01* +X9946894Y712622D01* +X9944150Y711352D01* +X9941102Y710895D01* +X9141256Y710895D01* +X9137853Y711454D01* +X9133586Y714197D01* +X9124391Y719480D01* +X9114485Y723239D01* +X9105392Y725119D01* +X9102598Y726084D01* +X9100210Y727913D01* +X8083092Y1745030D01* +X8081467Y1747113D01* +X8080451Y1749552D01* +X8077911Y1759204D01* +X8075930Y1763522D01* +X8074964Y1767433D01* +X8075625Y1771396D01* +X8077809Y1774850D01* +X8081162Y1777136D01* +X8085124Y1777898D01* +X8328609Y1777898D01* +X8343442Y1773885D01* +X8353145Y1773072D01* +X8362848Y1773885D01* +X8372246Y1776425D01* +X8381085Y1780590D01* +X8389061Y1786128D01* +X8395919Y1793036D01* +X8401507Y1801063D01* +X8405622Y1809851D01* +X8408162Y1819300D01* +X8409025Y1828952D01* +X8408162Y1838655D01* +X8405622Y1848104D01* +X8405012Y1849475D01* +X8404047Y1853692D01* +X8404047Y2876651D01* +X8405012Y2880868D01* +X8408771Y2888996D01* +X8411311Y2898394D01* +X8412124Y2908046D01* +X8411311Y2917799D01* +X8408771Y2927197D01* +X8405012Y2935325D01* +X8404047Y2939542D01* +X8404047Y4499356D01* +X8405012Y4503572D01* +X8405977Y4505756D01* +X8408517Y4515154D01* +X8409381Y4524857D01* +X8408517Y4534560D01* +X8405977Y4543958D01* +X8404250Y4548327D01* +X8404047Y4550664D01* +X8404199Y4567224D01* +X8402624Y4575860D01* +X8399627Y4584192D01* +X8395157Y4591913D01* +X8389213Y4599076D01* +X8007908Y4980330D01* +X8005876Y4983226D01* +X8002778Y4989880D01* +X7997190Y4997805D01* +X7990331Y5004663D01* +X7982356Y5010302D01* +X7975752Y5013350D01* +X7972856Y5015382D01* +X7052411Y5935878D01* +X7050735Y5938012D01* +X7048906Y5943752D01* +X7044893Y5952947D01* +X7041235Y5958535D01* +X7039711Y5962446D01* +X7039914Y5966714D01* +X7041845Y5970524D01* +X7045096Y5973165D01* +X7049211Y5974232D01* +X7053376Y5973622D01* +X7056932Y5971235D01* +X8546236Y4481931D01* +X8548420Y4478629D01* +X8549182Y4474768D01* +X8549182Y1783181D01* +X8547811Y1777796D01* +X8545931Y1774850D01* +X8542477Y1771040D01* +X8536787Y1762912D01* +X8532672Y1754124D01* +X8530132Y1744624D01* +X8529269Y1734921D01* +X8530132Y1725320D01* +X8532672Y1715820D01* +X8536787Y1707032D01* +X8542375Y1699107D01* +X8549233Y1692198D01* +X8557209Y1686560D01* +X8574074Y1678838D01* +X8581339Y1677263D01* +X8590229Y1677365D01* +X8594191Y1676654D01* +X8597544Y1674368D01* +X8599779Y1670964D01* +X8600490Y1667002D01* +X8599627Y1663039D01* +X8597087Y1653692D01* +X8596223Y1643938D01* +X8597087Y1634236D01* +X8599627Y1624888D01* +X8603742Y1616049D01* +X8609330Y1608074D01* +X8616188Y1601165D01* +X8624163Y1595577D01* +X8633002Y1591513D01* +X8642400Y1588922D01* +X8652103Y1588109D01* +X8661806Y1588922D01* +X8671204Y1591513D01* +X8680043Y1595577D01* +X8688019Y1601165D01* +X8694877Y1608074D01* +X8700465Y1616049D01* +X8704580Y1624888D01* +X8707120Y1634236D01* +X8707983Y1643938D01* +X8707120Y1653692D01* +X8704580Y1663039D01* +X8700465Y1671878D01* +X8694877Y1679905D01* +X8691778Y1683410D01* +X8689594Y1686864D01* +X8688425Y1689404D01* +X8688019Y1692249D01* +X8688019Y4585665D01* +X8687155Y4593691D01* +X8684869Y4600752D01* +X8681059Y4607407D01* +X8677198Y4611878D01* +X6599174Y6689902D01* +X6597142Y6692798D01* +X6596227Y6696202D01* +X6595414Y6705650D01* +X6592874Y6715048D01* +X6588759Y6723888D01* +X6583172Y6731812D01* +X6576314Y6738670D01* +X6568338Y6744309D01* +X6559499Y6748373D01* +X6550101Y6750913D01* +X6540703Y6751777D01* +X6537299Y6752691D01* +X6534404Y6754723D01* +X6335928Y6953148D01* +X6329680Y6958279D01* +X6322974Y6961682D01* +X6315608Y6963664D01* +X6309715Y6964121D01* +X6046114Y6964121D01* +X6038596Y6964781D01* +X5527497Y6964781D01* +X5523534Y6965645D01* +X5520182Y6967880D01* +X5517997Y6971385D01* +X5517337Y6975398D01* +X5518302Y6979310D01* +X5520740Y6982510D01* +X5524246Y6984644D01* +X5534660Y6988149D01* +X5547106Y6994245D01* +X5558586Y7001916D01* +X5569000Y7011111D01* +X5578144Y7021474D01* +X5585866Y7033056D01* +X5591962Y7045401D01* +X5596432Y7058558D01* +X5599125Y7072172D01* +X5600039Y7085939D01* +X5599125Y7099757D01* +X5596432Y7113320D01* +X5591962Y7126478D01* +X5585866Y7138924D01* +X5578144Y7150404D01* +X5569000Y7160818D01* +X5558586Y7169962D01* +X5547106Y7177684D01* +X5534660Y7183780D01* +X5521553Y7188250D01* +X5507990Y7190943D01* +X5494172Y7191857D01* +X5480304Y7190943D01* +X5466740Y7188250D01* +X5453634Y7183780D01* +X5441188Y7177684D01* +X5429707Y7169962D01* +X5419293Y7160818D01* +X5410149Y7150404D01* +X5402427Y7138924D01* +X5396331Y7126478D01* +X5391861Y7113320D01* +X5389168Y7099757D01* +X5388254Y7085939D01* +X5389168Y7072172D01* +X5391861Y7058558D01* +X5396331Y7045401D01* +X5402427Y7033056D01* +X5410149Y7021474D01* +X5419293Y7011111D01* +X5429707Y7001916D01* +X5441188Y6994245D01* +X5453634Y6988149D01* +X5464048Y6984644D01* +X5467553Y6982510D01* +X5469991Y6979310D01* +X5470956Y6975398D01* +X5470296Y6971385D01* +X5468112Y6967880D01* +X5464759Y6965645D01* +X5460796Y6964781D01* +X5287924Y6964781D01* +X5284063Y6965594D01* +X5280761Y6967728D01* +X5278577Y6971030D01* +X5277764Y6974840D01* +X5278424Y6978751D01* +X5280558Y6982002D01* +X5283809Y6984288D01* +X5291429Y6987692D01* +X5303570Y6995058D01* +X5314696Y7003846D01* +X5324602Y7014108D01* +X5333085Y7025436D01* +X5340045Y7037882D01* +X5345379Y7051040D01* +X5348986Y7064806D01* +X5350814Y7078878D01* +X5350814Y7093102D01* +X5348986Y7107174D01* +X5345379Y7120940D01* +X5340045Y7134098D01* +X5333085Y7146493D01* +X5324602Y7157821D01* +X5314696Y7168032D01* +X5303570Y7176871D01* +X5291429Y7184237D01* +X5278424Y7189978D01* +X5264810Y7194042D01* +X5250789Y7196328D01* +X5236616Y7196785D01* +X5222443Y7195413D01* +X5208574Y7192314D01* +X5195265Y7187387D01* +X5182666Y7180783D01* +X5171033Y7172706D01* +X5160467Y7163104D01* +X5151272Y7152335D01* +X5143550Y7140397D01* +X5137353Y7127544D01* +X5132882Y7114133D01* +X5130190Y7100112D01* +X5129276Y7085939D01* +X5130190Y7071766D01* +X5132882Y7057847D01* +X5137353Y7044385D01* +X5143550Y7031583D01* +X5151272Y7019594D01* +X5160467Y7008774D01* +X5171033Y6999274D01* +X5182666Y6991146D01* +X5195417Y6984492D01* +X5198821Y6982358D01* +X5201158Y6979107D01* +X5202072Y6975195D01* +X5201361Y6971233D01* +X5199176Y6967829D01* +X5195824Y6965645D01* +X5191912Y6964781D01* +X5019497Y6964781D01* +X5015534Y6965645D01* +X5012182Y6967880D01* +X5009997Y6971385D01* +X5009337Y6975398D01* +X5010302Y6979310D01* +X5012740Y6982510D01* +X5016246Y6984644D01* +X5026660Y6988149D01* +X5039106Y6994245D01* +X5050586Y7001916D01* +X5061000Y7011111D01* +X5070144Y7021474D01* +X5077866Y7033056D01* +X5083962Y7045401D01* +X5088432Y7058558D01* +X5091125Y7072172D01* +X5092039Y7085939D01* +X5091125Y7099757D01* +X5088432Y7113320D01* +X5083962Y7126478D01* +X5077866Y7138924D01* +X5070144Y7150404D01* +X5061000Y7160818D01* +X5050586Y7169962D01* +X5039106Y7177684D01* +X5026660Y7183780D01* +X5013553Y7188250D01* +X4999990Y7190943D01* +X4986172Y7191857D01* +X4972304Y7190943D01* +X4958740Y7188250D01* +X4945634Y7183780D01* +X4933188Y7177684D01* +X4921707Y7169962D01* +X4911293Y7160818D01* +X4902149Y7150404D01* +X4894427Y7138924D01* +X4888331Y7126478D01* +X4883861Y7113320D01* +X4881168Y7099757D01* +X4880254Y7085939D01* +X4881168Y7072172D01* +X4883861Y7058558D01* +X4888331Y7045401D01* +X4894427Y7033056D01* +X4902149Y7021474D01* +X4911293Y7011111D01* +X4921707Y7001916D01* +X4933188Y6994245D01* +X4945634Y6988149D01* +X4956048Y6984644D01* +X4959553Y6982510D01* +X4961991Y6979310D01* +X4962956Y6975398D01* +X4962296Y6971385D01* +X4960112Y6967880D01* +X4956759Y6965645D01* +X4952796Y6964781D01* +X4870297Y6964781D01* +X4866386Y6965594D01* +X4863084Y6967778D01* +X4703927Y7126935D01* +X4701743Y7130288D01* +X4700981Y7134148D01* +X4701743Y7138060D01* +X4703927Y7141362D01* +X4707229Y7143546D01* +X4711141Y7144308D01* +X4750765Y7144308D01* +X4754575Y7143546D01* +X4757826Y7141464D01* +X4760163Y7139178D01* +X4768189Y7133590D01* +X4777028Y7129424D01* +X4786426Y7126935D01* +X4796129Y7126071D01* +X4805832Y7126935D01* +X4815230Y7129424D01* +X4824069Y7133590D01* +X4832045Y7139127D01* +X4838903Y7146036D01* +X4844491Y7154062D01* +X4848606Y7162850D01* +X4851146Y7172299D01* +X4852009Y7181951D01* +X4851146Y7191603D01* +X4848606Y7201103D01* +X4844491Y7209891D01* +X4838903Y7217816D01* +X4832045Y7224725D01* +X4824069Y7230364D01* +X4815230Y7234428D01* +X4805832Y7236968D01* +X4796129Y7237831D01* +X4786426Y7236968D01* +X4777028Y7234428D01* +X4768189Y7230364D01* +X4756658Y7222236D01* +X4752746Y7221524D01* +X3637635Y7221524D01* +X3633978Y7222185D01* +X3630828Y7224115D01* +X3628593Y7227062D01* +X3627526Y7230567D01* +X3627831Y7234326D01* +X3629151Y7239253D01* +X3630015Y7248956D01* +X3629151Y7258659D01* +X3627018Y7266584D01* +X3626764Y7270242D01* +X3627780Y7273848D01* +X3630066Y7276744D01* +X3633215Y7278725D01* +X3636873Y7279335D01* +X4273854Y7279335D01* +X4277766Y7278624D01* +X4281068Y7276388D01* +X4282287Y7275220D01* +X4290263Y7269581D01* +X4299051Y7265517D01* +X4308500Y7262926D01* +X4318203Y7262114D01* +X4327855Y7262926D01* +X4337304Y7265517D01* +X4346092Y7269581D01* +X4354068Y7275220D01* +X4360976Y7282078D01* +X4366564Y7290053D01* +X4370679Y7298893D01* +X4373219Y7308240D01* +X4374032Y7317943D01* +X4373219Y7327696D01* +X4370679Y7337044D01* +X4366564Y7345883D01* +X4360976Y7353909D01* +X4354068Y7360767D01* +X4346092Y7366304D01* +X4337304Y7370470D01* +X4327855Y7373010D01* +X4318203Y7373874D01* +X4308500Y7373010D01* +X4299051Y7370470D01* +X4290263Y7366304D01* +X4282287Y7360767D01* +X4281068Y7359497D01* +X4277766Y7357364D01* +X4273854Y7356551D01* +X1770634Y7356551D01* +X1762607Y7355738D01* +X1755393Y7353553D01* +X1748739Y7350048D01* +X1742490Y7344867D01* +X966165Y6568592D01* +X963269Y6566560D01* +X959866Y6565646D01* +X952449Y6565036D01* +X943051Y6562445D01* +X934212Y6558330D01* +X926236Y6552793D01* +X919378Y6545834D01* +X913790Y6537858D01* +X909675Y6529070D01* +X907135Y6519672D01* +X906271Y6509969D01* +X907135Y6500266D01* +X909675Y6490868D01* +X913790Y6482080D01* +X919378Y6474053D01* +X926236Y6467144D01* +X934212Y6461607D01* +X943051Y6457442D01* +X952449Y6454902D01* +X962152Y6454140D01* +X971854Y6454902D01* +X981252Y6457442D01* +X990092Y6461607D01* +X998067Y6467144D01* +X1004925Y6474053D01* +X1010513Y6482080D01* +X1014628Y6490868D01* +X1017168Y6500266D01* +X1017828Y6507632D01* +X1018743Y6511086D01* +X1020775Y6513931D01* +X1783181Y7276388D01* +X1786432Y7278624D01* +X1790344Y7279335D01* +X1816404Y7279335D01* +X1820265Y7278624D01* +X1823567Y7276388D01* +X1825802Y7273036D01* +X1826564Y7269175D01* +X1825802Y7265263D01* +X1823567Y7262012D01* +X930198Y6368643D01* +X925068Y6362395D01* +X921512Y6355689D01* +X919327Y6348476D01* +X918514Y6340500D01* +X918514Y6030315D01* +X917752Y6026404D01* +X915568Y6023051D01* +X914349Y6021882D01* +X908761Y6013856D01* +X904646Y6005068D01* +X902106Y5995619D01* +X901293Y5985916D01* +X902106Y5976264D01* +X904646Y5966815D01* +X908761Y5958027D01* +X914349Y5950102D01* +X921258Y5943193D01* +X929233Y5937554D01* +X938021Y5933490D01* +X947470Y5930950D01* +X957173Y5930138D01* +X966825Y5930950D01* +X976274Y5933490D01* +X985062Y5937554D01* +X993038Y5943193D01* +X999185Y5949289D01* +X1002487Y5951524D01* +X1006348Y5952236D01* +X1010259Y5951524D01* +X1013561Y5949289D01* +X1015746Y5945987D01* +X1016508Y5942076D01* +X1016508Y5853023D01* +X1015746Y5849112D01* +X1013561Y5845810D01* +X927557Y5759805D01* +X924661Y5757773D01* +X921258Y5756859D01* +X913841Y5756300D01* +X904443Y5753760D01* +X895603Y5749594D01* +X887628Y5744057D01* +X880770Y5737148D01* +X875182Y5729122D01* +X871067Y5720334D01* +X868527Y5710885D01* +X867664Y5701182D01* +X868527Y5691530D01* +X871067Y5682081D01* +X875182Y5673293D01* +X880770Y5665368D01* +X887628Y5658459D01* +X895603Y5652820D01* +X904443Y5648756D01* +X913841Y5646216D01* +X923544Y5645404D01* +X933246Y5646216D01* +X942644Y5648756D01* +X951484Y5652820D01* +X959459Y5658459D01* +X966317Y5665368D01* +X971905Y5673293D01* +X976020Y5682081D01* +X978560Y5691530D01* +X979220Y5698947D01* +X980135Y5702350D01* +X982167Y5705195D01* +X1082090Y5805170D01* +X1087221Y5811418D01* +X1090777Y5818022D01* +X1092962Y5825286D01* +X1093724Y5833364D01* +X1093724Y6291732D01* +X1094536Y6295644D01* +X1096721Y6298946D01* +X1580134Y6782409D01* +X1583436Y6784543D01* +X1587347Y6785356D01* +X2272690Y6785356D01* +X2276500Y6784594D01* +X2279751Y6782511D01* +X2282139Y6780174D01* +X2290216Y6774586D01* +X2299004Y6770420D01* +X2308453Y6767931D01* +X2318156Y6767068D01* +X2327808Y6767931D01* +X2337765Y6770624D01* +X2341422Y6770827D01* +X2344978Y6769862D01* +X2347925Y6767525D01* +X2349855Y6764426D01* +X2350516Y6760768D01* +X2350516Y6155182D01* +X2349754Y6151321D01* +X2347569Y6148019D01* +X1802587Y5602986D01* +X1797456Y5596737D01* +X1793900Y5590133D01* +X1791716Y5582869D01* +X1790954Y5574893D01* +X1790954Y3729685D01* +X1790039Y3725468D01* +X1787448Y3722014D01* +X1783689Y3719931D01* +X1779422Y3719576D01* +X1775358Y3721049D01* +X1772310Y3724097D01* +X1767230Y3731717D01* +X1756867Y3744010D01* +X1745183Y3755085D01* +X1732280Y3764787D01* +X1718411Y3772814D01* +X1703679Y3779367D01* +X1688287Y3784041D01* +X1672488Y3787038D01* +X1656435Y3788206D01* +X1640382Y3787495D01* +X1624482Y3784955D01* +X1608988Y3780637D01* +X1594053Y3774592D01* +X1579981Y3766870D01* +X1566824Y3757625D01* +X1554784Y3746906D01* +X1544116Y3734968D01* +X1534820Y3721811D01* +X1527098Y3707688D01* +X1521053Y3692753D01* +X1516735Y3677310D01* +X1514246Y3661359D01* +X1513535Y3645255D01* +X1514703Y3629253D01* +X1517650Y3613404D01* +X1522425Y3598113D01* +X1528876Y3583330D01* +X1537004Y3569462D01* +X1546656Y3556609D01* +X1557680Y3544925D01* +X1569974Y3534562D01* +X1583385Y3525621D01* +X1597761Y3518306D01* +X1612798Y3512718D01* +X1628444Y3508857D01* +X1644396Y3506825D01* +X1660448Y3506520D01* +X1676450Y3508197D01* +X1692198Y3511600D01* +X1707438Y3516731D01* +X1721967Y3523640D01* +X1735582Y3532174D01* +X1748180Y3542131D01* +X1759559Y3553510D01* +X1769567Y3566109D01* +X1772157Y3570274D01* +X1775155Y3573373D01* +X1779219Y3574897D01* +X1783588Y3574694D01* +X1787398Y3572560D01* +X1789988Y3569106D01* +X1790954Y3564890D01* +X1790954Y2319070D01* +X1790141Y2315159D01* +X1787956Y2311857D01* +X1548942Y2072843D01* +X1545590Y2070658D01* +X1541627Y2069896D01* +X1537665Y2070760D01* +X1534363Y2073097D01* +X1532229Y2076551D01* +X1531620Y2080514D01* +X1532585Y2084425D01* +X1535379Y2090318D01* +X1540560Y2105507D01* +X1543964Y2121255D01* +X1545590Y2137257D01* +X1545336Y2153361D01* +X1543304Y2169312D01* +X1539443Y2184958D01* +X1533804Y2199944D01* +X1526489Y2214372D01* +X1517599Y2227732D01* +X1507236Y2240026D01* +X1495552Y2251100D01* +X1482699Y2260752D01* +X1468780Y2268829D01* +X1454048Y2275332D01* +X1438706Y2280056D01* +X1422857Y2283002D01* +X1406855Y2284222D01* +X1390751Y2283460D01* +X1374851Y2280970D01* +X1359357Y2276652D01* +X1344472Y2270607D01* +X1330350Y2262886D01* +X1317193Y2253589D01* +X1305204Y2242921D01* +X1294485Y2230932D01* +X1285240Y2217775D01* +X1277518Y2203704D01* +X1271473Y2188718D01* +X1267155Y2173274D01* +X1264615Y2157323D01* +X1263954Y2141270D01* +X1265072Y2125218D01* +X1268069Y2109419D01* +X1272794Y2094026D01* +X1279296Y2079294D01* +X1287373Y2065477D01* +X1297025Y2052574D01* +X1308100Y2040889D01* +X1320393Y2030475D01* +X1333804Y2021586D01* +X1348130Y2014270D01* +X1363218Y2008733D01* +X1378813Y2004872D01* +X1394764Y2002789D01* +X1410868Y2002536D01* +X1426870Y2004110D01* +X1442567Y2007565D01* +X1457807Y2012746D01* +X1463700Y2015591D01* +X1467612Y2016556D01* +X1471625Y2015845D01* +X1475028Y2013712D01* +X1477365Y2010460D01* +X1478229Y2006498D01* +X1477467Y2002536D01* +X1475232Y1999183D01* +X795070Y1319072D01* +X792683Y1317244D01* +X789584Y1315618D01* +X783386Y1310487D01* +X778306Y1304340D01* +X776274Y1300530D01* +X773379Y1297178D01* +X769315Y1295349D01* +X764844Y1295552D01* +X760882Y1297533D01* +X758139Y1301038D01* +X757174Y1305407D01* +X757174Y1351686D01* +X757936Y1355547D01* +X760171Y1358798D01* +X971702Y1570329D01* +X977087Y1576933D01* +X980846Y1583994D01* +X983183Y1591665D01* +X983996Y1600098D01* +X983996Y3841496D01* +X984808Y3845407D01* +X986993Y3848658D01* +X1360982Y4222597D01* +X1366367Y4229252D01* +X1370126Y4236262D01* +X1372463Y4243984D01* +X1373327Y4252366D01* +X1373327Y5417413D01* +X1372463Y5425897D01* +X1370126Y5433517D01* +X1366367Y5440629D01* +X1360982Y5447182D01* +X1213358Y5594756D01* +X1206804Y5600192D01* +X1199692Y5603951D01* +X1191514Y5606440D01* +X1189024Y5606999D01* +X1181100Y5607812D01* +X1173988Y5607151D01* +X-80975Y5607151D01* +X-84886Y5607862D01* +X-88138Y5610148D01* +X-127965Y5649925D01* +X-130200Y5653227D01* +X-130962Y5657138D01* +X-130962Y5769102D01* +X-130505Y5772200D01* +X-129133Y5774944D01* +X-123494Y5783072D01* +X-119380Y5791860D01* +X-116839Y5801258D01* +X-115976Y5810961D01* +X-116839Y5820664D01* +X-119380Y5830062D01* +X-123494Y5838850D01* +X-129082Y5846826D01* +X-136296Y5854090D01* +X-138531Y5857443D01* +X-139293Y5861405D01* +X-138430Y5865368D01* +X-136144Y5868670D01* +X-132689Y5870803D01* +X-128727Y5871464D01* +X-124053Y5871260D01* +X-110286Y5872124D01* +X-97332Y5874715D01* +X-84836Y5878931D01* +X-72999Y5884773D01* +X-62026Y5892088D01* +X-52120Y5900877D01* +X-43383Y5910732D01* +X-36068Y5921756D01* +X-30226Y5933592D01* +X-26009Y5946038D01* +X-23418Y5958992D01* +X-22555Y5972200D01* +X-23418Y5985357D01* +X-26009Y5998260D01* +X-30226Y6010757D01* +X-36068Y6022594D01* +X-43383Y6033617D01* +X-52120Y6043523D01* +X-62026Y6052261D01* +X-72999Y6059576D01* +X-84836Y6065418D01* +X-97485Y6069685D01* +X-110439Y6072276D01* +X-123647Y6073038D01* +X-126898Y6072987D01* +X-137210Y6072225D01* +X-150164Y6069584D01* +X-162509Y6065418D01* +X-174396Y6059576D01* +X-185369Y6052261D01* +X-195275Y6043523D01* +X-204012Y6033617D01* +X-211328Y6022594D01* +X-217170Y6010757D01* +X-221386Y5998260D01* +X-223977Y5985357D01* +X-224840Y5972200D01* +X-223977Y5958992D01* +X-221386Y5946038D01* +X-217170Y5933592D01* +X-211328Y5921756D01* +X-204012Y5910732D01* +X-195275Y5900877D01* +X-185369Y5892088D01* +X-174345Y5884773D01* +X-171450Y5881827D01* +X-169976Y5877915D01* +X-170129Y5873800D01* +X-171958Y5870092D01* +X-175107Y5867349D01* +X-179120Y5866180D01* +X-181559Y5866028D01* +X-190957Y5863437D01* +X-199796Y5859373D01* +X-207771Y5853785D01* +X-214629Y5846826D01* +X-220217Y5838850D01* +X-224332Y5830062D01* +X-226872Y5820664D01* +X-227736Y5810961D01* +X-226872Y5801258D01* +X-224332Y5791860D01* +X-220217Y5783072D01* +X-214579Y5774944D01* +X-213258Y5772251D01* +X-212750Y5769102D01* +X-212750Y5636463D01* +X-211937Y5627979D01* +X-209600Y5620359D01* +X-205841Y5613247D01* +X-200456Y5606694D01* +X-131419Y5537606D01* +X-124815Y5532221D01* +X-117754Y5528513D01* +X-110083Y5526176D01* +X-101650Y5525312D01* +X270713Y5525312D01* +X275031Y5524347D01* +X278485Y5521706D01* +X280517Y5517794D01* +X280720Y5513425D01* +X279044Y5509310D01* +X278028Y5507837D01* +X273913Y5498998D01* +X271373Y5489600D01* +X270459Y5479034D01* +X269087Y5474512D01* +X266852Y5471160D01* +X152298Y5356656D01* +X149250Y5352948D01* +X146100Y5350459D01* +X142189Y5349392D01* +X138176Y5349900D01* +X134670Y5351932D01* +X132283Y5355234D01* +X127762Y5364886D01* +X123901Y5370423D01* +X122275Y5374182D01* +X122275Y5378246D01* +X123901Y5382056D01* +X128778Y5388965D01* +X132892Y5397754D01* +X135432Y5407202D01* +X136245Y5416854D01* +X135432Y5426557D01* +X132892Y5436006D01* +X128778Y5444794D01* +X123189Y5452821D01* +X116281Y5459730D01* +X108305Y5465267D01* +X99517Y5469432D01* +X90068Y5471972D01* +X80416Y5472785D01* +X70713Y5471972D01* +X61264Y5469432D01* +X52476Y5465267D01* +X44500Y5459730D01* +X37033Y5452313D01* +X34645Y5450535D01* +X31800Y5449011D01* +X25552Y5443829D01* +X-247446Y5170830D01* +X-250342Y5168798D01* +X-253746Y5167884D01* +X-261162Y5167223D01* +X-270560Y5164734D01* +X-279400Y5160568D01* +X-287375Y5154980D01* +X-294233Y5148173D01* +X-299821Y5140198D01* +X-301447Y5136743D01* +X-303733Y5133543D01* +X-307086Y5131511D01* +X-310896Y5130901D01* +X-314706Y5131663D01* +X-317957Y5133949D01* +X-320090Y5137200D01* +X-320802Y5140960D01* +X-320802Y7186675D01* +X-321005Y7211720D01* +X-319328Y7234885D01* +X-315823Y7257846D01* +X-310438Y7280452D01* +X-303326Y7302601D01* +X-294436Y7324090D01* +X-283819Y7344765D01* +X-271627Y7364526D01* +X-257911Y7383322D01* +X-242722Y7400899D01* +X-226161Y7417155D01* +X-208330Y7432192D01* +X-189382Y7445603D01* +X-169468Y7457541D01* +X-148590Y7467853D01* +X-127000Y7476388D01* +X-104800Y7483195D01* +X-82092Y7488275D01* +X-59080Y7491425D01* +X-35864Y7492796D01* +X-11328Y7492288D01* +X11310010Y7492288D01* +X11334140Y7492796D01* +X11356035Y7491374D01* +X11377726Y7488275D01* +X11399113Y7483297D01* +X11419992Y7476540D01* +X11440261Y7468057D01* +X11459768Y7457998D01* +X11478361Y7446365D01* +X11495887Y7433208D01* +X11512296Y7418578D01* +X11527434Y7402728D01* +X11541252Y7385659D01* +X11553545Y7367422D01* +X11564315Y7348321D01* +X11573459Y7328357D01* +X11580926Y7307732D01* +X11586667Y7286599D01* +X11590629Y7265009D01* +X11592763Y7243165D01* +X11593118Y7221220D01* +X11591544Y7196785D01* +X11591544Y5316677D01* +X11590324Y5301335D01* +X11587683Y5287467D01* +X11583568Y5274056D01* +X11578082Y5261051D01* +X11571224Y5248757D01* +X11563045Y5237276D01* +X11553748Y5226761D01* +X11543334Y5217210D01* +X11532006Y5208879D01* +X11519814Y5201869D01* +X11506962Y5196078D01* +X11493550Y5191760D01* +X11479784Y5188864D01* +X11465763Y5187543D01* +X9285884Y5187543D01* +X9263938Y5186680D01* +X9246514Y5184190D01* +X9226296Y5179212D01* +X9206788Y5171948D01* +X9203791Y5170627D01* +X9188145Y5162651D01* +X9170670Y5151272D01* +X9168028Y5149291D01* +X9152128Y5135880D01* +X9139986Y5123230D01* +X9137853Y5120741D01* +X9127134Y5106771D01* +X9125305Y5104079D01* +X9116212Y5089042D01* +X9114637Y5086146D01* +X9107271Y5070195D01* +X9106052Y5067147D01* +X9100464Y5050485D01* +X9099600Y5047386D01* +X9095384Y5026964D01* +X9093606Y5009438D01* +X9093454Y5006441D01* +X9093454Y2454605D01* +X9093708Y2450795D01* +X9095740Y2435250D01* +X9096349Y2431796D01* +X9100159Y2416657D01* +X9101175Y2413355D01* +X9106712Y2398725D01* +X9108135Y2395626D01* +X9115348Y2381656D01* +X9117126Y2378710D01* +X9125864Y2365806D01* +X9127947Y2363012D01* +X9138158Y2351227D01* +X9140596Y2348738D01* +X9152077Y2338120D01* +X9167418Y2326792D01* +X9170365Y2324912D01* +X9187129Y2315768D01* +X9201556Y2309774D01* +X9219844Y2304389D01* +X9238640Y2301138D01* +X9259316Y2300071D01* +X11485524Y2300071D01* +X11500154Y2299055D01* +X11513108Y2296668D01* +X11525707Y2292807D01* +X11537797Y2287574D01* +X11549227Y2280920D01* +X11559844Y2273046D01* +X11569446Y2264105D01* +X11578031Y2254046D01* +X11585397Y2243124D01* +X11591493Y2231440D01* +X11596166Y2219045D01* +X11599468Y2206294D01* +X11601297Y2193290D01* +X11601704Y2179421D01* +X11601704Y330758D01* +X11599316Y306628D01* +X11595201Y283260D01* +X11589410Y260299D01* +X11581942Y237794D01* +X11572900Y215950D01* +X11562283Y194716D01* +X11550142Y174345D01* +X11536527Y154990D01* +X11521592Y136550D01* +X11505336Y119380D01* +X11487861Y103327D01* +X11469268Y88646D01* +X11449659Y75336D01* +X11429136Y63449D01* +X11407851Y53086D01* +X11385804Y44348D01* +X11363198Y37236D01* +X11340134Y31699D01* +X11316766Y27990D01* +X11293246Y25857D01* +G37* + +%LPC*% +G36* +X52781Y116332D02* +G01* +X62585Y117551D01* +X72034Y120446D01* +X80873Y124917D01* +X88849Y130759D01* +X95707Y137972D01* +X101244Y146202D01* +X105308Y155143D01* +X107848Y164795D01* +X108661Y174650D01* +X107848Y184454D01* +X105308Y194106D01* +X101244Y203047D01* +X95707Y211277D01* +X88849Y218490D01* +X80873Y224332D01* +X72034Y228803D01* +X62585Y231698D01* +X52781Y232917D01* +X42875Y232562D01* +X33223Y230428D01* +X24028Y226771D01* +X15595Y221538D01* +X8128Y215036D01* +X1930Y207314D01* +X-2895Y198628D01* +X-6197Y189331D01* +X-7873Y179527D01* +X-7873Y169722D01* +X-6197Y159918D01* +X-2895Y150622D01* +X1930Y141935D01* +X8128Y134213D01* +X15595Y127711D01* +X24028Y122478D01* +X33223Y118821D01* +X42875Y116687D01* +G37* +G36* +X11251641Y122682D02* +G01* +X11261445Y123901D01* +X11270894Y126796D01* +X11279733Y131267D01* +X11287709Y137109D01* +X11294567Y144322D01* +X11300104Y152552D01* +X11304168Y161493D01* +X11306708Y171145D01* +X11307521Y181000D01* +X11306708Y190804D01* +X11304168Y200456D01* +X11300104Y209397D01* +X11294567Y217627D01* +X11287709Y224840D01* +X11279733Y230682D01* +X11270894Y235153D01* +X11261445Y238048D01* +X11251641Y239267D01* +X11241735Y238912D01* +X11232083Y236778D01* +X11222888Y233121D01* +X11214455Y227888D01* +X11206988Y221386D01* +X11200790Y213664D01* +X11195964Y204978D01* +X11192662Y195681D01* +X11190986Y185877D01* +X11190986Y176072D01* +X11192662Y166268D01* +X11195964Y156972D01* +X11200790Y148285D01* +X11206988Y140563D01* +X11214455Y134061D01* +X11222888Y128828D01* +X11232083Y125171D01* +X11241735Y123037D01* +G37* +G36* +X192938Y136347D02* +G01* +X196088Y137922D01* +X216357Y150317D01* +X235458Y164388D01* +X253390Y179933D01* +X270002Y196900D01* +X285191Y215138D01* +X298805Y234543D01* +X309626Y252933D01* +X270764Y252933D01* +X266954Y253695D01* +X263753Y255727D01* +X261518Y258876D01* +X257454Y267868D01* +X251917Y276098D01* +X245059Y283210D01* +X237083Y289052D01* +X228244Y293522D01* +X218795Y296418D01* +X208991Y297738D01* +X199085Y297281D01* +X189433Y295249D01* +X180238Y291490D01* +X171805Y286359D01* +X164338Y279755D01* +X158140Y272034D01* +X153314Y263448D01* +X150012Y254152D01* +X148336Y244348D01* +X148336Y234442D01* +X150012Y224637D01* +X153314Y215341D01* +X158140Y206756D01* +X164338Y199034D01* +X171805Y192430D01* +X180238Y187299D01* +X186588Y184759D01* +X189941Y182524D01* +X192176Y179171D01* +X192938Y175260D01* +G37* +G36* +X-84734Y136448D02* +G01* +X-84734Y179324D01* +X-84074Y182930D01* +X-82143Y186080D01* +X-79146Y188366D01* +X-74066Y190957D01* +X-66090Y196799D01* +X-59232Y203962D01* +X-53695Y212242D01* +X-49631Y221183D01* +X-47091Y230784D01* +X-46278Y240639D01* +X-47091Y250494D01* +X-49631Y260096D01* +X-53695Y269087D01* +X-59232Y277317D01* +X-66090Y284530D01* +X-74066Y290372D01* +X-82905Y294792D01* +X-92354Y297738D01* +X-102158Y299008D01* +X-112064Y298602D01* +X-121716Y296468D01* +X-130911Y292811D01* +X-139344Y287578D01* +X-146812Y281076D01* +X-153009Y273304D01* +X-157835Y264668D01* +X-159613Y259689D01* +X-161747Y256184D01* +X-165150Y253746D01* +X-169164Y252933D01* +X-201269Y252933D01* +X-196850Y244602D01* +X-183997Y224637D01* +X-169570Y205841D01* +X-153670Y188214D01* +X-136398Y171907D01* +X-117856Y157124D01* +X-98145Y143916D01* +G37* +G36* +X11391798Y142697D02* +G01* +X11394948Y144272D01* +X11415217Y156667D01* +X11434318Y170738D01* +X11452250Y186283D01* +X11468862Y203250D01* +X11484051Y221488D01* +X11497665Y240893D01* +X11508486Y259283D01* +X11469624Y259283D01* +X11465814Y260045D01* +X11462613Y262077D01* +X11460378Y265226D01* +X11456314Y274218D01* +X11450777Y282448D01* +X11443919Y289560D01* +X11435943Y295402D01* +X11427104Y299872D01* +X11417655Y302768D01* +X11407851Y304088D01* +X11397945Y303631D01* +X11388293Y301599D01* +X11379098Y297840D01* +X11370665Y292709D01* +X11363198Y286105D01* +X11357000Y278384D01* +X11352174Y269798D01* +X11348872Y260502D01* +X11347196Y250698D01* +X11347196Y240792D01* +X11348872Y230987D01* +X11352174Y221691D01* +X11357000Y213106D01* +X11363198Y205384D01* +X11370665Y198780D01* +X11379098Y193649D01* +X11385448Y191109D01* +X11388801Y188874D01* +X11391036Y185521D01* +X11391798Y181610D01* +G37* +G36* +X11114125Y142798D02* +G01* +X11114125Y185674D01* +X11114786Y189280D01* +X11116716Y192430D01* +X11119713Y194716D01* +X11124793Y197307D01* +X11132769Y203149D01* +X11139627Y210312D01* +X11145164Y218592D01* +X11149228Y227533D01* +X11151768Y237134D01* +X11152581Y246989D01* +X11151768Y256844D01* +X11149228Y266446D01* +X11145164Y275437D01* +X11139627Y283667D01* +X11132769Y290880D01* +X11124793Y296722D01* +X11115954Y301142D01* +X11106505Y304088D01* +X11096701Y305358D01* +X11086795Y304952D01* +X11077143Y302818D01* +X11067948Y299161D01* +X11059515Y293928D01* +X11052048Y287426D01* +X11045850Y279654D01* +X11041024Y271018D01* +X11039246Y266039D01* +X11037112Y262534D01* +X11033709Y260096D01* +X11029696Y259283D01* +X10997590Y259283D01* +X11002010Y250952D01* +X11014862Y230987D01* +X11029289Y212191D01* +X11045190Y194564D01* +X11062462Y178257D01* +X11081004Y163474D01* +X11100714Y150266D01* +G37* +G36* +X-173278Y329641D02* +G01* +X-163474Y330911D01* +X-154025Y333857D01* +X-145186Y338277D01* +X-137210Y344119D01* +X-130352Y351332D01* +X-124815Y359562D01* +X-120751Y368554D01* +X-118211Y378155D01* +X-117398Y388010D01* +X-118211Y397865D01* +X-120751Y407466D01* +X-124815Y416407D01* +X-130352Y424688D01* +X-137210Y431850D01* +X-145186Y437642D01* +X-154025Y442163D01* +X-163474Y445058D01* +X-173278Y446278D01* +X-183184Y445871D01* +X-192836Y443788D01* +X-202031Y440080D01* +X-210464Y434949D01* +X-217932Y428345D01* +X-224129Y420674D01* +X-228955Y412038D01* +X-232257Y402742D01* +X-233934Y392938D01* +X-233934Y383082D01* +X-232257Y373278D01* +X-228955Y363982D01* +X-224129Y355346D01* +X-217932Y347573D01* +X-210464Y341071D01* +X-202031Y335838D01* +X-192836Y332130D01* +X-183184Y330047D01* +G37* +G36* +X272491Y334772D02* +G01* +X282295Y335991D01* +X291744Y338886D01* +X300583Y343357D01* +X308559Y349199D01* +X315417Y356362D01* +X320954Y364642D01* +X325018Y373583D01* +X327558Y383184D01* +X328371Y393039D01* +X327558Y402894D01* +X325018Y412496D01* +X320954Y421487D01* +X315417Y429717D01* +X308559Y436930D01* +X300583Y442772D01* +X291744Y447192D01* +X282295Y450138D01* +X272491Y451408D01* +X262585Y451002D01* +X252933Y448868D01* +X243738Y445211D01* +X235305Y439978D01* +X227838Y433476D01* +X221640Y425704D01* +X216814Y417068D01* +X213512Y407771D01* +X211836Y397967D01* +X211836Y388112D01* +X213512Y378307D01* +X216814Y369011D01* +X221640Y360375D01* +X227838Y352653D01* +X235305Y346100D01* +X243738Y340918D01* +X252933Y337261D01* +X262585Y335178D01* +G37* +G36* +X11025581Y335991D02* +G01* +X11035385Y337261D01* +X11044834Y340207D01* +X11053673Y344627D01* +X11061649Y350469D01* +X11068507Y357682D01* +X11074044Y365912D01* +X11078108Y374904D01* +X11080648Y384505D01* +X11081461Y394360D01* +X11080648Y404215D01* +X11078108Y413816D01* +X11074044Y422757D01* +X11068507Y431038D01* +X11061649Y438200D01* +X11053673Y443992D01* +X11044834Y448513D01* +X11035385Y451408D01* +X11025581Y452628D01* +X11015675Y452221D01* +X11006023Y450138D01* +X10996828Y446430D01* +X10988395Y441299D01* +X10980928Y434695D01* +X10974730Y427024D01* +X10969904Y418388D01* +X10966602Y409092D01* +X10964926Y399288D01* +X10964926Y389432D01* +X10966602Y379628D01* +X10969904Y370332D01* +X10974730Y361696D01* +X10980928Y353923D01* +X10988395Y347421D01* +X10996828Y342188D01* +X11006023Y338480D01* +X11015675Y336397D01* +G37* +G36* +X11471351Y341122D02* +G01* +X11481155Y342341D01* +X11490604Y345236D01* +X11499443Y349707D01* +X11507419Y355549D01* +X11514277Y362712D01* +X11519814Y370992D01* +X11523878Y379933D01* +X11526418Y389534D01* +X11527231Y399389D01* +X11526418Y409244D01* +X11523878Y418846D01* +X11519814Y427837D01* +X11514277Y436067D01* +X11507419Y443280D01* +X11499443Y449122D01* +X11490604Y453542D01* +X11481155Y456488D01* +X11471351Y457758D01* +X11461445Y457352D01* +X11451793Y455218D01* +X11442598Y451561D01* +X11434165Y446328D01* +X11426698Y439826D01* +X11420500Y432054D01* +X11415674Y423418D01* +X11412372Y414121D01* +X11410696Y404317D01* +X11410696Y394462D01* +X11412372Y384657D01* +X11415674Y375361D01* +X11420500Y366725D01* +X11426698Y359003D01* +X11434165Y352450D01* +X11442598Y347268D01* +X11451793Y343611D01* +X11461445Y341528D01* +G37* +G36* +X210261Y490982D02* +G01* +X220065Y492201D01* +X229514Y495096D01* +X238353Y499567D01* +X246329Y505409D01* +X253187Y512622D01* +X258724Y520852D01* +X260502Y524713D01* +X262686Y527812D01* +X265938Y529894D01* +X269748Y530656D01* +X309626Y530656D01* +X298805Y549097D01* +X285191Y568452D01* +X270002Y586740D01* +X253390Y603656D01* +X235458Y619201D01* +X216357Y633272D01* +X196088Y645668D01* +X192938Y647293D01* +X192938Y612851D01* +X192176Y608939D01* +X189941Y605586D01* +X186588Y603453D01* +X181508Y601421D01* +X173075Y596188D01* +X165608Y589686D01* +X159410Y581964D01* +X154584Y573278D01* +X151282Y563981D01* +X149606Y554177D01* +X149606Y544372D01* +X151282Y534568D01* +X154584Y525272D01* +X159410Y516585D01* +X165608Y508863D01* +X173075Y502361D01* +X181508Y497128D01* +X190703Y493471D01* +X200355Y491337D01* +G37* +G36* +X-102158Y492201D02* +G01* +X-92354Y493522D01* +X-82905Y496417D01* +X-74066Y500888D01* +X-66090Y506730D01* +X-59232Y513842D01* +X-53695Y522071D01* +X-49631Y531114D01* +X-47091Y540664D01* +X-46278Y550570D01* +X-47091Y560425D01* +X-49631Y569976D01* +X-53695Y579018D01* +X-59232Y587248D01* +X-66090Y594360D01* +X-74066Y600202D01* +X-79146Y602843D01* +X-82143Y605078D01* +X-84074Y608279D01* +X-84734Y611886D01* +X-84734Y647141D01* +X-98145Y639622D01* +X-117856Y626465D01* +X-136398Y611682D01* +X-153670Y595376D01* +X-169570Y577748D01* +X-183997Y558952D01* +X-196850Y538988D01* +X-201269Y530656D01* +X-166116Y530656D01* +X-162610Y530047D01* +X-159512Y528218D01* +X-157226Y525424D01* +X-153009Y517906D01* +X-146812Y510184D01* +X-139344Y503580D01* +X-130911Y498449D01* +X-121716Y494690D01* +X-112064Y492607D01* +G37* +G36* +X11409121Y497332D02* +G01* +X11418925Y498551D01* +X11428374Y501446D01* +X11437213Y505917D01* +X11445189Y511759D01* +X11452047Y518972D01* +X11457584Y527202D01* +X11459362Y531063D01* +X11461546Y534162D01* +X11464798Y536244D01* +X11468608Y537006D01* +X11508486Y537006D01* +X11497665Y555447D01* +X11484051Y574802D01* +X11468862Y593090D01* +X11452250Y610006D01* +X11434318Y625551D01* +X11415217Y639622D01* +X11394948Y652018D01* +X11391798Y653643D01* +X11391798Y619201D01* +X11391036Y615289D01* +X11388801Y611936D01* +X11385448Y609803D01* +X11380368Y607771D01* +X11371935Y602538D01* +X11364468Y596036D01* +X11358270Y588314D01* +X11353444Y579628D01* +X11350142Y570331D01* +X11348466Y560527D01* +X11348466Y550722D01* +X11350142Y540918D01* +X11353444Y531622D01* +X11358270Y522935D01* +X11364468Y515213D01* +X11371935Y508711D01* +X11380368Y503478D01* +X11389563Y499821D01* +X11399215Y497687D01* +G37* +G36* +X11096701Y498551D02* +G01* +X11106505Y499872D01* +X11115954Y502767D01* +X11124793Y507238D01* +X11132769Y513080D01* +X11139627Y520192D01* +X11145164Y528421D01* +X11149228Y537464D01* +X11151768Y547014D01* +X11152581Y556920D01* +X11151768Y566775D01* +X11149228Y576326D01* +X11145164Y585368D01* +X11139627Y593598D01* +X11132769Y600710D01* +X11124793Y606552D01* +X11119713Y609193D01* +X11116716Y611428D01* +X11114786Y614629D01* +X11114125Y618236D01* +X11114125Y653491D01* +X11100714Y645972D01* +X11081004Y632815D01* +X11062462Y618032D01* +X11045190Y601726D01* +X11029289Y584098D01* +X11014862Y565302D01* +X11002010Y545338D01* +X10997590Y537006D01* +X11032744Y537006D01* +X11036249Y536397D01* +X11039348Y534568D01* +X11041634Y531774D01* +X11045850Y524256D01* +X11052048Y516534D01* +X11059515Y509930D01* +X11067948Y504799D01* +X11077143Y501040D01* +X11086795Y498957D01* +G37* +G36* +X52781Y555701D02* +G01* +X62585Y557022D01* +X72034Y559917D01* +X80873Y564388D01* +X88849Y570230D01* +X95707Y577342D01* +X101244Y585571D01* +X105308Y594614D01* +X107848Y604164D01* +X108661Y614070D01* +X107848Y623925D01* +X105308Y633476D01* +X101244Y642518D01* +X95707Y650748D01* +X88849Y657860D01* +X80873Y663702D01* +X72034Y668172D01* +X62585Y671068D01* +X52781Y672388D01* +X42875Y671931D01* +X33223Y669899D01* +X24028Y666140D01* +X15595Y661009D01* +X8128Y654405D01* +X1930Y646684D01* +X-2895Y638098D01* +X-6197Y628802D01* +X-7873Y618998D01* +X-7873Y609092D01* +X-6197Y599287D01* +X-2895Y589991D01* +X1930Y581406D01* +X8128Y573684D01* +X15595Y567080D01* +X24028Y561949D01* +X33223Y558190D01* +X42875Y556107D01* +G37* +G36* +X11251641Y562051D02* +G01* +X11261445Y563372D01* +X11270894Y566267D01* +X11279733Y570738D01* +X11287709Y576580D01* +X11294567Y583692D01* +X11300104Y591921D01* +X11304168Y600964D01* +X11306708Y610514D01* +X11307521Y620420D01* +X11306708Y630275D01* +X11304168Y639826D01* +X11300104Y648868D01* +X11294567Y657098D01* +X11287709Y664210D01* +X11279733Y670052D01* +X11270894Y674522D01* +X11261445Y677418D01* +X11251641Y678738D01* +X11241735Y678281D01* +X11232083Y676249D01* +X11222888Y672490D01* +X11214455Y667359D01* +X11206988Y660755D01* +X11200790Y653034D01* +X11195964Y644448D01* +X11192662Y635152D01* +X11190986Y625348D01* +X11190986Y615442D01* +X11192662Y605637D01* +X11195964Y596341D01* +X11200790Y587756D01* +X11206988Y580034D01* +X11214455Y573430D01* +X11222888Y568299D01* +X11232083Y564540D01* +X11241735Y562457D01* +G37* +G36* +X11372138Y982573D02* +G01* +X11376609Y982573D01* +X11390833Y983487D01* +X11394694Y983996D01* +X11408918Y986688D01* +X11412677Y987755D01* +X11426494Y992327D01* +X11430050Y993800D01* +X11443106Y1000150D01* +X11446510Y1002080D01* +X11458600Y1010107D01* +X11461699Y1012444D01* +X11472672Y1022045D01* +X11475415Y1024737D01* +X11485067Y1035659D01* +X11487454Y1038707D01* +X11495582Y1050747D01* +X11497513Y1054049D01* +X11504015Y1067054D01* +X11505539Y1070660D01* +X11510264Y1084376D01* +X11511280Y1088136D01* +X11514175Y1102360D01* +X11514734Y1106271D01* +X11515750Y1121359D01* +X11515750Y1125321D01* +X11514785Y1139850D01* +X11514277Y1143711D01* +X11511483Y1157935D01* +X11510467Y1161745D01* +X11505793Y1175512D01* +X11504320Y1179017D01* +X11497868Y1192072D01* +X11495938Y1195476D01* +X11487861Y1207566D01* +X11485524Y1210665D01* +X11475923Y1221536D01* +X11473180Y1224330D01* +X11462258Y1233932D01* +X11459210Y1236218D01* +X11447119Y1244346D01* +X11443766Y1246327D01* +X11430711Y1252677D01* +X11427155Y1254201D01* +X11413388Y1258925D01* +X11409629Y1259941D01* +X11395405Y1262786D01* +X11391544Y1263294D01* +X11377015Y1264259D01* +X11373154Y1264259D01* +X11358626Y1263345D01* +X11354816Y1262837D01* +X11340541Y1259992D01* +X11336782Y1259027D01* +X11323015Y1254302D01* +X11319408Y1252829D01* +X11306403Y1246428D01* +X11303000Y1244498D01* +X11290909Y1236472D01* +X11287861Y1234084D01* +X11276888Y1224534D01* +X11274145Y1221841D01* +X11264544Y1210868D01* +X11262156Y1207770D01* +X11254079Y1195730D01* +X11252149Y1192428D01* +X11245646Y1179372D01* +X11244173Y1175816D01* +X11239500Y1161999D01* +X11238484Y1158341D01* +X11235588Y1144066D01* +X11235080Y1140206D01* +X11234115Y1125677D01* +X11234064Y1121816D01* +X11234978Y1107287D01* +X11235486Y1103426D01* +X11238280Y1089202D01* +X11239296Y1085494D01* +X11243919Y1071676D01* +X11245392Y1068070D01* +X11251793Y1055014D01* +X11253724Y1051712D01* +X11261750Y1039571D01* +X11264087Y1036421D01* +X11273637Y1025550D01* +X11276380Y1022756D01* +X11287302Y1013155D01* +X11290350Y1010818D01* +X11302390Y1002639D01* +X11305743Y1000658D01* +X11318798Y994257D01* +X11322354Y992733D01* +X11336121Y988009D01* +X11339830Y986993D01* +X11354104Y984097D01* +X11357914Y983538D01* +G37* +G36* +X9604146Y1015136D02* +G01* +X9613849Y1015898D01* +X9623247Y1018438D01* +X9632086Y1022603D01* +X9640062Y1028141D01* +X9646920Y1035100D01* +X9652508Y1043076D01* +X9656622Y1051864D01* +X9659162Y1061262D01* +X9660026Y1070965D01* +X9659162Y1080668D01* +X9656622Y1090066D01* +X9652508Y1098854D01* +X9646869Y1106982D01* +X9645497Y1109726D01* +X9645040Y1112824D01* +X9645040Y1304442D01* +X9644227Y1312926D01* +X9641890Y1320546D01* +X9638131Y1327708D01* +X9632696Y1334262D01* +X9403435Y1563471D01* +X9401403Y1566367D01* +X9400489Y1569770D01* +X9400184Y1573631D01* +X9397644Y1583029D01* +X9393529Y1591868D01* +X9387941Y1599895D01* +X9381032Y1606753D01* +X9373057Y1612290D01* +X9364268Y1616456D01* +X9354820Y1618996D01* +X9345168Y1619859D01* +X9335465Y1618996D01* +X9326016Y1616456D01* +X9317228Y1612290D01* +X9309252Y1606753D01* +X9302343Y1599895D01* +X9296755Y1591868D01* +X9292640Y1583029D01* +X9290100Y1573631D01* +X9289288Y1563928D01* +X9290100Y1554226D01* +X9292640Y1544828D01* +X9296755Y1535988D01* +X9302343Y1528064D01* +X9309252Y1521206D01* +X9317228Y1515567D01* +X9326016Y1511503D01* +X9335465Y1508963D01* +X9339275Y1508607D01* +X9342678Y1507642D01* +X9345574Y1505661D01* +X9560255Y1290980D01* +X9562439Y1287729D01* +X9563252Y1283817D01* +X9563252Y1112774D01* +X9562744Y1109675D01* +X9561372Y1106982D01* +X9555784Y1098854D01* +X9551670Y1090066D01* +X9549130Y1080668D01* +X9548266Y1070965D01* +X9549130Y1061262D01* +X9551670Y1051864D01* +X9555784Y1043076D01* +X9561372Y1035100D01* +X9568230Y1028141D01* +X9576206Y1022603D01* +X9585045Y1018438D01* +X9594443Y1015898D01* +G37* +G36* +X9096146Y1488084D02* +G01* +X9105849Y1488948D01* +X9115247Y1491488D01* +X9124086Y1495552D01* +X9132062Y1501190D01* +X9138920Y1508099D01* +X9144508Y1516024D01* +X9148622Y1524812D01* +X9151162Y1534312D01* +X9152026Y1543913D01* +X9151162Y1553616D01* +X9148622Y1563065D01* +X9148013Y1564436D01* +X9147048Y1568754D01* +X9147048Y1804162D01* +X9148013Y1808480D01* +X9148622Y1809851D01* +X9151162Y1819300D01* +X9152026Y1828952D01* +X9151162Y1838655D01* +X9148622Y1848104D01* +X9144508Y1856892D01* +X9138920Y1864817D01* +X9132062Y1871725D01* +X9124086Y1877364D01* +X9115247Y1881428D01* +X9105849Y1883968D01* +X9096146Y1884781D01* +X9086443Y1883968D01* +X9077045Y1881428D01* +X9068206Y1877364D01* +X9060230Y1871725D01* +X9053372Y1864817D01* +X9047784Y1856892D01* +X9043670Y1848104D01* +X9041130Y1838655D01* +X9040266Y1828952D01* +X9041130Y1819300D01* +X9043670Y1809851D01* +X9044279Y1808530D01* +X9045244Y1804162D01* +X9045244Y1568704D01* +X9044279Y1564386D01* +X9043670Y1563065D01* +X9041130Y1553616D01* +X9040266Y1543913D01* +X9041130Y1534312D01* +X9043670Y1524812D01* +X9047784Y1516024D01* +X9053372Y1508099D01* +X9060230Y1501190D01* +X9068206Y1495552D01* +X9077045Y1491488D01* +X9086443Y1488948D01* +G37* +G36* +X259791Y3259836D02* +G01* +X265531Y3260750D01* +X270865Y3262985D01* +X275640Y3266287D01* +X279501Y3270554D01* +X282346Y3275584D01* +X284124Y3281730D01* +X292912Y3331565D01* +X150571Y3356610D01* +X137160Y3280765D01* +X253441Y3260242D01* +G37* +G36* +X-121564Y3326333D02* +G01* +X-108153Y3402279D01* +X-250494Y3427323D01* +X-259283Y3377539D01* +X-259689Y3371189D01* +X-258775Y3365449D01* +X-256590Y3360115D01* +X-253288Y3355441D01* +X-248970Y3351529D01* +X-243941Y3348685D01* +X-237845Y3346856D01* +G37* +G36* +X315061Y3457295D02* +G01* +X323850Y3507079D01* +X324256Y3513429D01* +X323342Y3519170D01* +X321157Y3524504D01* +X317855Y3529279D01* +X313537Y3533190D01* +X308508Y3536035D01* +X302412Y3537762D01* +X186131Y3558286D01* +X172720Y3482441D01* +G37* +G36* +X-86004Y3528009D02* +G01* +X-72593Y3603955D01* +X-188874Y3624376D01* +X-195224Y3624783D01* +X-200964Y3623868D01* +X-206298Y3621735D01* +X-211074Y3618331D01* +X-214934Y3614064D01* +X-217779Y3609035D01* +X-219557Y3602888D01* +X-228346Y3553155D01* +G37* +G36* +X1447241Y3970629D02* +G01* +X1461058Y3971544D01* +X1474622Y3974287D01* +X1487779Y3978757D01* +X1500174Y3984802D01* +X1511706Y3992524D01* +X1522120Y4001719D01* +X1531264Y4012082D01* +X1538935Y4023614D01* +X1545082Y4036009D01* +X1549501Y4049115D01* +X1552244Y4062729D01* +X1553108Y4076496D01* +X1552244Y4090365D01* +X1549501Y4103928D01* +X1545082Y4117035D01* +X1538935Y4129532D01* +X1531264Y4140962D01* +X1522120Y4151376D01* +X1511706Y4160520D01* +X1500174Y4168292D01* +X1487779Y4174337D01* +X1474622Y4178858D01* +X1461058Y4181500D01* +X1447241Y4182465D01* +X1433423Y4181500D01* +X1419860Y4178858D01* +X1406702Y4174337D01* +X1394307Y4168292D01* +X1382776Y4160520D01* +X1372362Y4151376D01* +X1363218Y4140962D01* +X1355547Y4129532D01* +X1349400Y4117035D01* +X1344980Y4103928D01* +X1342237Y4090365D01* +X1341374Y4076496D01* +X1342237Y4062729D01* +X1344980Y4049115D01* +X1349400Y4036009D01* +X1355547Y4023614D01* +X1363218Y4012082D01* +X1372362Y4001719D01* +X1382776Y3992524D01* +X1394307Y3984802D01* +X1406702Y3978757D01* +X1419860Y3974287D01* +X1433423Y3971544D01* +G37* +G36* +X1135075Y4253941D02* +G01* +X1151077Y4255617D01* +X1166825Y4259021D01* +X1182065Y4264152D01* +X1196594Y4271060D01* +X1210208Y4279595D01* +X1222806Y4289552D01* +X1234186Y4300982D01* +X1244193Y4313529D01* +X1252728Y4327194D01* +X1259586Y4341723D01* +X1264767Y4356963D01* +X1268222Y4372660D01* +X1269796Y4388662D01* +X1269593Y4404766D01* +X1267510Y4420768D01* +X1263650Y4436364D01* +X1258062Y4451451D01* +X1250746Y4465777D01* +X1241856Y4479137D01* +X1231493Y4491482D01* +X1219809Y4502505D01* +X1206906Y4512157D01* +X1193038Y4520285D01* +X1178306Y4526788D01* +X1162913Y4531512D01* +X1147114Y4534509D01* +X1131062Y4535627D01* +X1115009Y4534966D01* +X1099108Y4532376D01* +X1083614Y4528108D01* +X1068679Y4522012D01* +X1054608Y4514291D01* +X1041450Y4505045D01* +X1029411Y4494326D01* +X1018743Y4482388D01* +X1009446Y4469180D01* +X1001725Y4455058D01* +X995680Y4440224D01* +X991362Y4424730D01* +X988872Y4408779D01* +X988161Y4392676D01* +X989330Y4376724D01* +X992276Y4360824D01* +X997051Y4345533D01* +X1003503Y4330801D01* +X1011631Y4316831D01* +X1021283Y4304030D01* +X1032306Y4292346D01* +X1044600Y4281982D01* +X1058011Y4273042D01* +X1072388Y4265726D01* +X1087424Y4260138D01* +X1103071Y4256227D01* +X1119022Y4254246D01* +G37* +G36* +X1474724Y4541062D02* +G01* +X1485341Y4541520D01* +X1495704Y4543602D01* +X1505610Y4547362D01* +X1514805Y4552746D01* +X1523034Y4559452D01* +X1530045Y4567377D01* +X1535734Y4576267D01* +X1539900Y4586020D01* +X1542389Y4596333D01* +X1543253Y4606950D01* +X1542389Y4617516D01* +X1539900Y4627829D01* +X1535734Y4637582D01* +X1532890Y4642053D01* +X1531721Y4644593D01* +X1531315Y4647488D01* +X1531315Y6362954D01* +X1531721Y6365798D01* +X1532890Y6368338D01* +X1538732Y6377635D01* +X1542897Y6387388D01* +X1545386Y6397650D01* +X1546250Y6408216D01* +X1545386Y6418783D01* +X1542897Y6429044D01* +X1538732Y6438798D01* +X1533042Y6447840D01* +X1526032Y6455765D01* +X1517802Y6462471D01* +X1508607Y6467703D01* +X1498701Y6471462D01* +X1488338Y6473647D01* +X1477721Y6474002D01* +X1467205Y6472783D01* +X1457045Y6469837D01* +X1447444Y6465265D01* +X1438706Y6459220D01* +X1431086Y6451854D01* +X1424736Y6443472D01* +X1419809Y6434074D01* +X1416405Y6424015D01* +X1414729Y6413550D01* +X1414729Y6402933D01* +X1416405Y6392418D01* +X1419809Y6382410D01* +X1424736Y6373012D01* +X1427429Y6369354D01* +X1428953Y6366459D01* +X1429512Y6363258D01* +X1429512Y4655870D01* +X1428953Y4652670D01* +X1427429Y4649774D01* +X1421739Y4642104D01* +X1416812Y4632756D01* +X1413408Y4622647D01* +X1411732Y4612233D01* +X1411732Y4601616D01* +X1413408Y4591202D01* +X1416812Y4581093D01* +X1421739Y4571746D01* +X1428089Y4563262D01* +X1435709Y4555947D01* +X1444447Y4549851D01* +X1454048Y4545380D01* +X1464208Y4542383D01* +G37* +G36* +X11044377Y5443474D02* +G01* +X11055299Y5443474D01* +X11060176Y5443778D01* +X11070996Y5445607D01* +X11075720Y5446725D01* +X11086084Y5450230D01* +X11090554Y5452160D01* +X11100206Y5457342D01* +X11104321Y5459984D01* +X11112957Y5466638D01* +X11116614Y5469991D01* +X11124031Y5477967D01* +X11127079Y5481828D01* +X11133074Y5490972D01* +X11135410Y5495290D01* +X11139881Y5505246D01* +X11141506Y5509818D01* +X11144199Y5520385D01* +X11145062Y5525312D01* +X11146028Y5536539D01* +X11146028Y5541518D01* +X11145113Y5552440D01* +X11144300Y5557316D01* +X11141659Y5567832D01* +X11140033Y5572506D01* +X11135664Y5582462D01* +X11133328Y5586780D01* +X11127384Y5595975D01* +X11124387Y5599836D01* +X11116970Y5607862D01* +X11113363Y5611215D01* +X11104778Y5617921D01* +X11100663Y5620562D01* +X11091062Y5625846D01* +X11086592Y5627827D01* +X11076228Y5631332D01* +X11071504Y5632551D01* +X11060734Y5634329D01* +X11055858Y5634736D01* +X11044936Y5634736D01* +X11040008Y5634380D01* +X11029238Y5632653D01* +X11024514Y5631383D01* +X11014151Y5627878D01* +X11009680Y5625896D01* +X11000079Y5620715D01* +X10995964Y5618073D01* +X10987328Y5611368D01* +X10983722Y5608116D01* +X10976305Y5600039D01* +X10973257Y5596178D01* +X10967262Y5587085D01* +X10964926Y5582767D01* +X10960506Y5572709D01* +X10958931Y5568137D01* +X10956188Y5557520D01* +X10955375Y5552694D01* +X10954461Y5541873D01* +X10954461Y5536946D01* +X10955324Y5526074D01* +X10956086Y5521248D01* +X10958779Y5510580D01* +X10960354Y5506008D01* +X10964672Y5495950D01* +X10967008Y5491581D01* +X10972952Y5482437D01* +X10975949Y5478576D01* +X10983315Y5470550D01* +X10986922Y5467146D01* +X10995507Y5460441D01* +X10999622Y5457799D01* +X11009172Y5452516D01* +X11013694Y5450535D01* +X11024006Y5446979D01* +X11028730Y5445709D01* +X11039500Y5443880D01* +G37* +G36* +X7877098Y5558028D02* +G01* +X7886801Y5558891D01* +X7896199Y5561380D01* +X7905038Y5565495D01* +X7913014Y5571134D01* +X7919872Y5577992D01* +X7925460Y5585968D01* +X7929575Y5594756D01* +X7932115Y5604256D01* +X7932978Y5613857D01* +X7932115Y5623560D01* +X7929575Y5633059D01* +X7925460Y5641848D01* +X7919821Y5649874D01* +X7917586Y5652262D01* +X7915503Y5655513D01* +X7914741Y5659272D01* +X7914741Y6650786D01* +X7915503Y6654596D01* +X7917586Y6657848D01* +X7920736Y6660032D01* +X7924444Y6660946D01* +X7928305Y6660388D01* +X7931607Y6658457D01* +X7934452Y6655968D01* +X7945831Y6648297D01* +X7952435Y6645097D01* +X7952435Y6693204D01* +X7924901Y6693204D01* +X7921040Y6694017D01* +X7917738Y6696202D01* +X7915503Y6699503D01* +X7914741Y6703415D01* +X7914741Y6774535D01* +X7915503Y6778447D01* +X7917738Y6781647D01* +X7921040Y6783933D01* +X7924901Y6784644D01* +X7952435Y6784644D01* +X7952435Y6832853D01* +X7945831Y6829552D01* +X7934452Y6821982D01* +X7931607Y6819493D01* +X7928305Y6817563D01* +X7924444Y6816953D01* +X7920736Y6817817D01* +X7917586Y6820103D01* +X7915503Y6823303D01* +X7914741Y6827062D01* +X7914741Y6860438D01* +X7913979Y6868515D01* +X7911947Y6875221D01* +X7911541Y6878929D01* +X7912506Y6882587D01* +X7914741Y6885635D01* +X7917942Y6887565D01* +X7921650Y6888276D01* +X7998307Y6888276D01* +X8013242Y6887362D01* +X8028787Y6884314D01* +X8043773Y6879336D01* +X8057946Y6872427D01* +X8071154Y6863689D01* +X8083600Y6852920D01* +X8155533Y6780987D01* +X8157768Y6777685D01* +X8158530Y6773773D01* +X8158530Y5741263D01* +X8157768Y5737352D01* +X8155533Y5734100D01* +X8154365Y5732830D01* +X8148777Y5724906D01* +X8144662Y5716117D01* +X8142122Y5706618D01* +X8141258Y5696915D01* +X8142122Y5687314D01* +X8144662Y5677814D01* +X8148777Y5669026D01* +X8154365Y5661050D01* +X8161223Y5654192D01* +X8169198Y5648553D01* +X8178038Y5644438D01* +X8187436Y5641949D01* +X8197138Y5641086D01* +X8206841Y5641949D01* +X8216239Y5644438D01* +X8225078Y5648553D01* +X8233054Y5654192D01* +X8239912Y5661050D01* +X8245500Y5669026D01* +X8249615Y5677814D01* +X8252155Y5687314D01* +X8253018Y5696915D01* +X8252155Y5706618D01* +X8249615Y5716117D01* +X8245500Y5724906D01* +X8239912Y5732830D01* +X8238744Y5734100D01* +X8236508Y5737352D01* +X8235746Y5741263D01* +X8235746Y6793433D01* +X8234934Y6801510D01* +X8232749Y6808724D01* +X8229193Y6815378D01* +X8224062Y6821627D01* +X8138159Y6907530D01* +X8128203Y6918858D01* +X8119313Y6932015D01* +X8112252Y6946138D01* +X8107121Y6961022D01* +X8103920Y6976516D01* +X8102803Y6992975D01* +X8102803Y7071156D01* +X8102041Y7077456D01* +X8100161Y7082942D01* +X8097062Y7087819D01* +X8092998Y7091883D01* +X8088071Y7094981D01* +X8082635Y7096912D01* +X8076285Y7097623D01* +X7919974Y7097623D01* +X7913624Y7096912D01* +X7908188Y7094981D01* +X7903260Y7091883D01* +X7899196Y7087819D01* +X7896098Y7082942D01* +X7894218Y7077456D01* +X7893507Y7071156D01* +X7893507Y6923836D01* +X7892643Y6919874D01* +X7890357Y6916521D01* +X7886903Y6914388D01* +X7882890Y6913778D01* +X7878927Y6914743D01* +X7875676Y6917181D01* +X7873390Y6919925D01* +X7864652Y6933082D01* +X7857744Y6947306D01* +X7852765Y6962343D01* +X7849768Y6977888D01* +X7847888Y7006640D01* +X7845196Y7020001D01* +X7840776Y7033006D01* +X7834731Y7045299D01* +X7827162Y7056628D01* +X7818120Y7066889D01* +X7807807Y7075982D01* +X7796428Y7083552D01* +X7784185Y7089648D01* +X7771231Y7094067D01* +X7757769Y7096658D01* +X7744155Y7097623D01* +X7730490Y7096658D01* +X7717028Y7094067D01* +X7704074Y7089648D01* +X7691831Y7083552D01* +X7680452Y7075982D01* +X7670139Y7066889D01* +X7661097Y7056628D01* +X7653528Y7045299D01* +X7647482Y7033006D01* +X7643063Y7020001D01* +X7640370Y7006640D01* +X7639507Y6992975D01* +X7640370Y6979310D01* +X7643063Y6965848D01* +X7647482Y6952945D01* +X7653528Y6940651D01* +X7661097Y6929221D01* +X7670139Y6918959D01* +X7680452Y6909968D01* +X7691831Y6902297D01* +X7704074Y6896303D01* +X7717028Y6891883D01* +X7730490Y6889191D01* +X7759242Y6887362D01* +X7774787Y6884314D01* +X7789773Y6879336D01* +X7803997Y6872427D01* +X7817154Y6863689D01* +X7829600Y6852920D01* +X7834579Y6847992D01* +X7836763Y6844639D01* +X7837525Y6840728D01* +X7837525Y6817766D01* +X7836712Y6813803D01* +X7834375Y6810400D01* +X7830972Y6808317D01* +X7826908Y6807606D01* +X7822996Y6808571D01* +X7819745Y6811060D01* +X7818120Y6812889D01* +X7807807Y6821982D01* +X7796428Y6829552D01* +X7784185Y6835648D01* +X7771231Y6840016D01* +X7757769Y6842658D01* +X7744155Y6843623D01* +X7730490Y6842658D01* +X7717028Y6840016D01* +X7704074Y6835648D01* +X7691831Y6829552D01* +X7680452Y6821982D01* +X7669834Y6812534D01* +X7666583Y6810044D01* +X7662621Y6809079D01* +X7658608Y6809790D01* +X7655153Y6811873D01* +X7652816Y6815277D01* +X7652003Y6819239D01* +X7652003Y6869175D01* +X7651242Y6877253D01* +X7649057Y6884466D01* +X7645450Y6891070D01* +X7640370Y6897370D01* +X7629702Y6908038D01* +X7619390Y6919925D01* +X7610652Y6933133D01* +X7603744Y6947306D01* +X7598765Y6962343D01* +X7595768Y6977888D01* +X7593838Y7006640D01* +X7591196Y7020001D01* +X7586776Y7033006D01* +X7580731Y7045299D01* +X7573111Y7056628D01* +X7564120Y7066889D01* +X7553807Y7075982D01* +X7542428Y7083552D01* +X7530185Y7089648D01* +X7517231Y7094016D01* +X7503769Y7096658D01* +X7490155Y7097623D01* +X7476490Y7096658D01* +X7463028Y7094016D01* +X7450074Y7089648D01* +X7437831Y7083552D01* +X7426452Y7075982D01* +X7416139Y7066889D01* +X7407148Y7056628D01* +X7399528Y7045299D01* +X7393482Y7033006D01* +X7389063Y7020001D01* +X7386421Y7006640D01* +X7385507Y6992975D01* +X7386421Y6979310D01* +X7389063Y6965848D01* +X7393482Y6952945D01* +X7399528Y6940651D01* +X7407148Y6929221D01* +X7416139Y6918959D01* +X7426452Y6909968D01* +X7437831Y6902297D01* +X7450074Y6896303D01* +X7463028Y6891934D01* +X7476490Y6889191D01* +X7505242Y6887362D01* +X7520787Y6884314D01* +X7535773Y6879336D01* +X7549946Y6872427D01* +X7563154Y6863689D01* +X7571333Y6856679D01* +X7573873Y6853275D01* +X7574788Y6849008D01* +X7574788Y6825996D01* +X7574076Y6822186D01* +X7571994Y6818985D01* +X7568844Y6816750D01* +X7565085Y6815785D01* +X7561275Y6816394D01* +X7557922Y6818325D01* +X7553807Y6821982D01* +X7542428Y6829552D01* +X7530185Y6835648D01* +X7517231Y6840016D01* +X7503769Y6842658D01* +X7490155Y6843623D01* +X7476490Y6842658D01* +X7463028Y6840016D01* +X7450074Y6835648D01* +X7437831Y6829552D01* +X7426452Y6821982D01* +X7416139Y6812889D01* +X7407148Y6802628D01* +X7399528Y6791299D01* +X7393482Y6779006D01* +X7389063Y6766001D01* +X7386421Y6752640D01* +X7385507Y6738975D01* +X7386421Y6725310D01* +X7389063Y6711848D01* +X7393482Y6698945D01* +X7399528Y6686651D01* +X7407148Y6675221D01* +X7416139Y6664959D01* +X7426452Y6655968D01* +X7437831Y6648297D01* +X7450074Y6642303D01* +X7463028Y6637934D01* +X7476490Y6635191D01* +X7490155Y6634276D01* +X7503769Y6635191D01* +X7517231Y6637934D01* +X7530185Y6642303D01* +X7542428Y6648297D01* +X7553807Y6655968D01* +X7557922Y6659524D01* +X7561275Y6661454D01* +X7565085Y6662064D01* +X7568844Y6661200D01* +X7571994Y6658965D01* +X7574076Y6655663D01* +X7574788Y6651955D01* +X7574788Y5867196D01* +X7574025Y5863285D01* +X7571841Y5859983D01* +X7570622Y5858814D01* +X7565034Y5850788D01* +X7560919Y5842050D01* +X7558379Y5832551D01* +X7557566Y5822848D01* +X7558379Y5813247D01* +X7560919Y5803747D01* +X7565034Y5794959D01* +X7570622Y5787034D01* +X7577531Y5780125D01* +X7585506Y5774486D01* +X7594295Y5770422D01* +X7603744Y5767882D01* +X7613446Y5767019D01* +X7623098Y5767882D01* +X7632547Y5770422D01* +X7641336Y5774486D01* +X7649311Y5780125D01* +X7656220Y5787034D01* +X7661808Y5794959D01* +X7665923Y5803747D01* +X7668463Y5813247D01* +X7669275Y5822848D01* +X7668463Y5832551D01* +X7665923Y5842050D01* +X7661808Y5850788D01* +X7656220Y5858814D01* +X7655001Y5860034D01* +X7652766Y5863285D01* +X7652003Y5867196D01* +X7652003Y6658609D01* +X7652816Y6662674D01* +X7655153Y6665975D01* +X7658608Y6668160D01* +X7662621Y6668770D01* +X7666583Y6667804D01* +X7670139Y6664959D01* +X7680452Y6655968D01* +X7691831Y6648297D01* +X7704074Y6642303D01* +X7717028Y6637934D01* +X7730490Y6635191D01* +X7744155Y6634276D01* +X7757769Y6635191D01* +X7771231Y6637934D01* +X7784185Y6642303D01* +X7796428Y6648297D01* +X7807807Y6655968D01* +X7818120Y6664959D01* +X7819745Y6666788D01* +X7822996Y6669278D01* +X7826908Y6670243D01* +X7830972Y6669633D01* +X7834375Y6667449D01* +X7836712Y6664147D01* +X7837525Y6660083D01* +X7837525Y5658002D01* +X7837220Y5655360D01* +X7834833Y5650585D01* +X7828737Y5641848D01* +X7824622Y5633059D01* +X7822082Y5623560D01* +X7821218Y5613857D01* +X7822082Y5604256D01* +X7824622Y5594756D01* +X7828737Y5585968D01* +X7834325Y5577992D01* +X7841183Y5571134D01* +X7849158Y5565495D01* +X7857998Y5561380D01* +X7867396Y5558891D01* +G37* +G36* +X8632444Y5863285D02* +G01* +X8642502Y5863285D01* +X8652408Y5864910D01* +X8661908Y5868212D01* +X8668613Y5871870D01* +X8670950Y5872734D01* +X8673439Y5873038D01* +X9087866Y5873038D01* +X9092133Y5872073D01* +X9093504Y5871514D01* +X9102953Y5868974D01* +X9112656Y5868111D01* +X9122308Y5868974D01* +X9131757Y5871514D01* +X9140545Y5875578D01* +X9148521Y5881217D01* +X9155430Y5888075D01* +X9161018Y5896000D01* +X9165132Y5904839D01* +X9167672Y5914237D01* +X9168485Y5923940D01* +X9167672Y5933643D01* +X9165132Y5943041D01* +X9161018Y5951880D01* +X9155430Y5959906D01* +X9148521Y5966764D01* +X9140545Y5972302D01* +X9131757Y5976467D01* +X9122308Y5979007D01* +X9112656Y5979871D01* +X9102953Y5979007D01* +X9093504Y5976467D01* +X9092133Y5975807D01* +X9087866Y5974842D01* +X8673439Y5974842D01* +X8670950Y5975146D01* +X8668613Y5976112D01* +X8661908Y5979668D01* +X8652408Y5982970D01* +X8642502Y5984595D01* +X8632444Y5984595D01* +X8622538Y5982970D01* +X8613038Y5979668D01* +X8604199Y5974943D01* +X8596223Y5968796D01* +X8589416Y5961380D01* +X8583930Y5952947D01* +X8579916Y5943752D01* +X8577427Y5933998D01* +X8576614Y5923940D01* +X8577427Y5913983D01* +X8579916Y5904230D01* +X8583930Y5895035D01* +X8589416Y5886602D01* +X8596223Y5879185D01* +X8604199Y5873038D01* +X8613038Y5868212D01* +X8622538Y5864910D01* +G37* +G36* +X587044Y5871260D02* +G01* +X600913Y5872124D01* +X613867Y5874715D01* +X626364Y5878931D01* +X638200Y5884773D01* +X649173Y5892088D01* +X659079Y5900877D01* +X667816Y5910732D01* +X675132Y5921756D01* +X680974Y5933592D01* +X685190Y5946038D01* +X687781Y5958992D01* +X688644Y5972200D01* +X687781Y5985357D01* +X685190Y5998260D01* +X680974Y6010757D01* +X675132Y6022594D01* +X667816Y6033617D01* +X659079Y6043523D01* +X649173Y6052261D01* +X638200Y6059576D01* +X626364Y6065418D01* +X613714Y6069685D01* +X600760Y6072276D01* +X587552Y6073038D01* +X584301Y6072987D01* +X573989Y6072225D01* +X561035Y6069584D01* +X548690Y6065418D01* +X536803Y6059576D01* +X525830Y6052261D01* +X515924Y6043523D01* +X507187Y6033617D01* +X499872Y6022594D01* +X494030Y6010757D01* +X489813Y5998260D01* +X487222Y5985357D01* +X486359Y5972200D01* +X487222Y5958992D01* +X489813Y5946038D01* +X494030Y5933592D01* +X499872Y5921756D01* +X507187Y5910732D01* +X515924Y5900877D01* +X525830Y5892088D01* +X536803Y5884773D01* +X548640Y5878931D01* +X561136Y5874715D01* +X574141Y5872124D01* +G37* +G36* +X9200794Y5974689D02* +G01* +X9210446Y5975604D01* +X9219895Y5978093D01* +X9228683Y5982258D01* +X9236659Y5987846D01* +X9240215Y5990945D01* +X9243618Y5993130D01* +X9246209Y5994247D01* +X9249054Y5994654D01* +X9774986Y5994654D01* +X9778847Y5993892D01* +X9783419Y5991352D01* +X9787178Y5987897D01* +X9795306Y5982258D01* +X9804146Y5978093D01* +X9813544Y5975604D01* +X9823246Y5974689D01* +X9832949Y5975604D01* +X9842347Y5978093D01* +X9851186Y5982258D01* +X9859162Y5987846D01* +X9866020Y5994654D01* +X9871608Y6002629D01* +X9875723Y6011468D01* +X9878263Y6020917D01* +X9879126Y6030620D01* +X9878263Y6040272D01* +X9875723Y6049721D01* +X9871608Y6058560D01* +X9866020Y6066485D01* +X9859162Y6073343D01* +X9853168Y6077610D01* +X9850475Y6080353D01* +X9849002Y6084011D01* +X9849002Y6087872D01* +X9850475Y6091428D01* +X9853168Y6094272D01* +X9857994Y6097676D01* +X9864902Y6104585D01* +X9870490Y6112510D01* +X9874605Y6121298D01* +X9877145Y6130798D01* +X9877958Y6140399D01* +X9877145Y6150102D01* +X9874605Y6159601D01* +X9870490Y6168390D01* +X9864902Y6176365D01* +X9857994Y6183223D01* +X9853828Y6186170D01* +X9851136Y6189014D01* +X9849662Y6192570D01* +X9849662Y6196431D01* +X9851136Y6200038D01* +X9853828Y6202832D01* +X9858400Y6206083D01* +X9865309Y6212992D01* +X9870897Y6220917D01* +X9875012Y6229705D01* +X9877552Y6239205D01* +X9878364Y6248806D01* +X9877552Y6258509D01* +X9875012Y6268008D01* +X9870897Y6276797D01* +X9865309Y6284772D01* +X9858400Y6291630D01* +X9850424Y6297218D01* +X9841636Y6301384D01* +X9832187Y6303873D01* +X9822535Y6304737D01* +X9812832Y6303873D01* +X9803384Y6301384D01* +X9794595Y6297218D01* +X9786620Y6291630D01* +X9783013Y6288430D01* +X9779609Y6286296D01* +X9777018Y6285179D01* +X9774224Y6284772D01* +X9243771Y6284772D01* +X9239910Y6285484D01* +X9235338Y6288125D01* +X9231579Y6291580D01* +X9223451Y6297218D01* +X9214612Y6301384D01* +X9205214Y6303873D01* +X9195511Y6304737D01* +X9185808Y6303873D01* +X9176410Y6301384D01* +X9167571Y6297218D01* +X9159595Y6291630D01* +X9152737Y6284772D01* +X9147149Y6276797D01* +X9143034Y6268008D01* +X9140494Y6258509D01* +X9139631Y6248806D01* +X9140494Y6239205D01* +X9143034Y6229705D01* +X9147149Y6220917D01* +X9152737Y6212992D01* +X9159595Y6206083D01* +X9165132Y6202222D01* +X9167825Y6199378D01* +X9169298Y6195822D01* +X9169298Y6191961D01* +X9167825Y6188303D01* +X9165132Y6185560D01* +X9159595Y6181648D01* +X9152737Y6174790D01* +X9147149Y6166764D01* +X9143034Y6157925D01* +X9140494Y6148527D01* +X9139631Y6138824D01* +X9140494Y6129121D01* +X9143034Y6119723D01* +X9147149Y6110935D01* +X9152737Y6102959D01* +X9159595Y6096101D01* +X9166504Y6091224D01* +X9169196Y6088430D01* +X9170670Y6084824D01* +X9170670Y6080963D01* +X9169196Y6077305D01* +X9166504Y6074562D01* +X9164878Y6073343D01* +X9157970Y6066485D01* +X9152382Y6058560D01* +X9148267Y6049721D01* +X9145727Y6040272D01* +X9144914Y6030620D01* +X9145727Y6020917D01* +X9148267Y6011468D01* +X9152382Y6002629D01* +X9157970Y5994654D01* +X9164878Y5987846D01* +X9172854Y5982258D01* +X9181642Y5978093D01* +X9191091Y5975604D01* +G37* +G36* +X11372951Y6225590D02* +G01* +X11376812Y6225590D01* +X11391341Y6226505D01* +X11395151Y6226962D01* +X11409426Y6229705D01* +X11413185Y6230670D01* +X11426952Y6235344D01* +X11430558Y6236817D01* +X11443614Y6243218D01* +X11447018Y6245148D01* +X11459108Y6253073D01* +X11462207Y6255512D01* +X11473180Y6264960D01* +X11475923Y6267704D01* +X11485575Y6278575D01* +X11487962Y6281724D01* +X11496090Y6293713D01* +X11498021Y6297066D01* +X11504523Y6310122D01* +X11505996Y6313627D01* +X11510772Y6327394D01* +X11511788Y6331204D01* +X11514683Y6345377D01* +X11515191Y6349288D01* +X11516258Y6364427D01* +X11516258Y6368338D01* +X11515293Y6382867D01* +X11514785Y6386728D01* +X11511940Y6401003D01* +X11510975Y6404660D01* +X11506301Y6418478D01* +X11504777Y6422085D01* +X11498376Y6435140D01* +X11496446Y6438493D01* +X11488369Y6450533D01* +X11485981Y6453632D01* +X11476431Y6464554D01* +X11473688Y6467348D01* +X11462766Y6476847D01* +X11459667Y6479235D01* +X11447627Y6487363D01* +X11444224Y6489293D01* +X11431219Y6495745D01* +X11427612Y6497218D01* +X11413896Y6501892D01* +X11410137Y6502857D01* +X11395862Y6505752D01* +X11392052Y6506260D01* +X11377523Y6507226D01* +X11373662Y6507226D01* +X11359134Y6506260D01* +X11355273Y6505803D01* +X11341049Y6503009D01* +X11337290Y6501993D01* +X11323523Y6497320D01* +X11319916Y6495846D01* +X11306860Y6489496D01* +X11303508Y6487515D01* +X11291417Y6479438D01* +X11288318Y6477152D01* +X11277396Y6467500D01* +X11274653Y6464757D01* +X11265052Y6453886D01* +X11262664Y6450838D01* +X11254587Y6438747D01* +X11252606Y6435394D01* +X11246154Y6422390D01* +X11244681Y6418783D01* +X11239957Y6405016D01* +X11238941Y6401257D01* +X11236096Y6387033D01* +X11235588Y6383172D01* +X11234572Y6368745D01* +X11234572Y6364833D01* +X11235486Y6350304D01* +X11235994Y6346444D01* +X11238788Y6332169D01* +X11239804Y6328410D01* +X11244427Y6314643D01* +X11245900Y6311087D01* +X11252301Y6298031D01* +X11254232Y6294628D01* +X11262258Y6282537D01* +X11264595Y6279438D01* +X11274145Y6268516D01* +X11276888Y6265773D01* +X11287760Y6256121D01* +X11290858Y6253734D01* +X11302898Y6245656D01* +X11306251Y6243726D01* +X11319256Y6237274D01* +X11322862Y6235750D01* +X11336578Y6231026D01* +X11340338Y6230010D01* +X11354612Y6227114D01* +X11358422Y6226606D01* +G37* +G36* +X11046917Y6246114D02* +G01* +X11057839Y6246114D01* +X11062716Y6246418D01* +X11073536Y6248196D01* +X11078260Y6249365D01* +X11088624Y6252921D01* +X11093094Y6254851D01* +X11102746Y6259982D01* +X11106861Y6262674D01* +X11115497Y6269278D01* +X11119154Y6272580D01* +X11126571Y6280607D01* +X11129619Y6284468D01* +X11135614Y6293612D01* +X11137950Y6297930D01* +X11142421Y6307836D01* +X11144046Y6312509D01* +X11146739Y6323025D01* +X11147602Y6327952D01* +X11148568Y6339179D01* +X11148568Y6344208D01* +X11147653Y6355080D01* +X11146840Y6359956D01* +X11144199Y6370472D01* +X11142573Y6375146D01* +X11138204Y6385102D01* +X11135868Y6389420D01* +X11129924Y6398615D01* +X11126927Y6402476D01* +X11119510Y6410502D01* +X11115903Y6413804D01* +X11107318Y6420561D01* +X11103203Y6423202D01* +X11093602Y6428435D01* +X11089132Y6430416D01* +X11078768Y6433972D01* +X11074044Y6435191D01* +X11063274Y6437020D01* +X11058398Y6437376D01* +X11047476Y6437376D01* +X11042548Y6437071D01* +X11031778Y6435242D01* +X11027054Y6434074D01* +X11016691Y6430518D01* +X11012220Y6428536D01* +X11002619Y6423406D01* +X10998504Y6420662D01* +X10989868Y6414058D01* +X10986262Y6410756D01* +X10978845Y6402679D01* +X10975797Y6398818D01* +X10969802Y6389725D01* +X10967466Y6385407D01* +X10963046Y6375349D01* +X10961471Y6370777D01* +X10958728Y6360160D01* +X10957915Y6355334D01* +X10957001Y6344462D01* +X10957001Y6339535D01* +X10957864Y6328714D01* +X10958626Y6323888D01* +X10961319Y6313220D01* +X10962894Y6308648D01* +X10967212Y6298590D01* +X10969548Y6294221D01* +X10975492Y6285128D01* +X10978489Y6281267D01* +X10985855Y6273139D01* +X10989462Y6269786D01* +X10998047Y6263132D01* +X11002162Y6260388D01* +X11011712Y6255156D01* +X11016234Y6253175D01* +X11026546Y6249619D01* +X11031270Y6248349D01* +X11042040Y6246571D01* +G37* +G36* +X7236155Y6634276D02* +G01* +X7249769Y6635191D01* +X7263231Y6637934D01* +X7276185Y6642303D01* +X7288428Y6648297D01* +X7299807Y6655968D01* +X7310120Y6664959D01* +X7319111Y6675221D01* +X7326731Y6686651D01* +X7332776Y6698945D01* +X7337196Y6711848D01* +X7339838Y6725310D01* +X7340752Y6738975D01* +X7339838Y6752640D01* +X7337196Y6766001D01* +X7332776Y6779006D01* +X7326731Y6791299D01* +X7319111Y6802628D01* +X7310120Y6812889D01* +X7299807Y6821982D01* +X7288428Y6829552D01* +X7276185Y6835648D01* +X7263231Y6840016D01* +X7249769Y6842658D01* +X7236155Y6843623D01* +X7222490Y6842658D01* +X7209028Y6840016D01* +X7196074Y6835648D01* +X7183831Y6829552D01* +X7172452Y6821982D01* +X7162139Y6812889D01* +X7153148Y6802628D01* +X7145528Y6791299D01* +X7139482Y6779006D01* +X7135063Y6766001D01* +X7132421Y6752640D01* +X7131507Y6738975D01* +X7132421Y6725310D01* +X7135063Y6711848D01* +X7139482Y6698945D01* +X7145528Y6686651D01* +X7153148Y6675221D01* +X7162139Y6664959D01* +X7172452Y6655968D01* +X7183831Y6648297D01* +X7196074Y6642303D01* +X7209028Y6637934D01* +X7222490Y6635191D01* +G37* +G36* +X8043875Y6645097D02* +G01* +X8050428Y6648297D01* +X8061807Y6655968D01* +X8072120Y6664959D01* +X8081111Y6675221D01* +X8088731Y6686651D01* +X8091982Y6693204D01* +X8043875Y6693204D01* +G37* +G36* +X6936384Y6645097D02* +G01* +X6936384Y6693204D01* +X6888276Y6693204D01* +X6891528Y6686651D01* +X6899097Y6675221D01* +X6908139Y6664959D01* +X6918452Y6655968D01* +X6929831Y6648297D01* +G37* +G36* +X7027875Y6645097D02* +G01* +X7034428Y6648297D01* +X7045807Y6655968D01* +X7056120Y6664959D01* +X7065162Y6675221D01* +X7072731Y6686651D01* +X7075982Y6693204D01* +X7027875Y6693204D01* +G37* +G36* +X8043875Y6784644D02* +G01* +X8091982Y6784644D01* +X8088731Y6791299D01* +X8081111Y6802628D01* +X8072120Y6812889D01* +X8061807Y6821982D01* +X8050428Y6829552D01* +X8043875Y6832853D01* +G37* +G36* +X7027875Y6784644D02* +G01* +X7075982Y6784644D01* +X7072731Y6791299D01* +X7065162Y6802628D01* +X7056120Y6812889D01* +X7045807Y6821982D01* +X7034428Y6829552D01* +X7027875Y6832853D01* +G37* +G36* +X6888276Y6784644D02* +G01* +X6936384Y6784644D01* +X6936384Y6832853D01* +X6929831Y6829552D01* +X6918452Y6821982D01* +X6908139Y6812889D01* +X6899097Y6802628D01* +X6891528Y6791299D01* +G37* +G36* +X38811Y6810451D02* +G01* +X48615Y6811772D01* +X58064Y6814667D01* +X66903Y6819138D01* +X74879Y6824980D01* +X81737Y6832092D01* +X87274Y6840321D01* +X91338Y6849364D01* +X93878Y6858914D01* +X94691Y6868820D01* +X93878Y6878675D01* +X91338Y6888225D01* +X87274Y6897268D01* +X81737Y6905498D01* +X74879Y6912609D01* +X66903Y6918452D01* +X58064Y6922922D01* +X48615Y6925818D01* +X38811Y6927138D01* +X28905Y6926681D01* +X19253Y6924649D01* +X10058Y6920890D01* +X1625Y6915759D01* +X-5842Y6909155D01* +X-12039Y6901434D01* +X-16865Y6892848D01* +X-20167Y6883552D01* +X-21844Y6873748D01* +X-21844Y6863842D01* +X-20167Y6854037D01* +X-16865Y6844741D01* +X-12039Y6836156D01* +X-5842Y6828434D01* +X1625Y6821830D01* +X10058Y6816699D01* +X19253Y6812940D01* +X28905Y6810908D01* +G37* +G36* +X178968Y6830466D02* +G01* +X182118Y6832041D01* +X202387Y6844538D01* +X221488Y6858558D01* +X239420Y6874052D01* +X256032Y6891020D01* +X271221Y6909257D01* +X284835Y6928662D01* +X295656Y6947153D01* +X256794Y6947153D01* +X252984Y6947814D01* +X249783Y6949948D01* +X247548Y6953046D01* +X243484Y6961987D01* +X237947Y6970217D01* +X231089Y6977430D01* +X223113Y6983272D01* +X214274Y6987743D01* +X204825Y6990638D01* +X195021Y6991908D01* +X185115Y6991502D01* +X175463Y6989368D01* +X166268Y6985711D01* +X157835Y6980478D01* +X150368Y6973976D01* +X144170Y6966203D01* +X139344Y6957568D01* +X136042Y6948271D01* +X134366Y6938467D01* +X134366Y6928612D01* +X136042Y6918858D01* +X139344Y6909562D01* +X144170Y6900875D01* +X150368Y6893153D01* +X157835Y6886600D01* +X166268Y6881418D01* +X172618Y6878878D01* +X175971Y6876745D01* +X178206Y6873392D01* +X178968Y6869480D01* +G37* +G36* +X-98704Y6830568D02* +G01* +X-98704Y6873443D01* +X-98044Y6877151D01* +X-96113Y6880250D01* +X-93116Y6882587D01* +X-88036Y6885127D01* +X-80060Y6891020D01* +X-73202Y6898182D01* +X-67665Y6906412D01* +X-63601Y6915403D01* +X-61061Y6925005D01* +X-60248Y6934860D01* +X-61061Y6944715D01* +X-63601Y6954316D01* +X-67665Y6963308D01* +X-73202Y6971538D01* +X-80060Y6978700D01* +X-88036Y6984492D01* +X-96875Y6989013D01* +X-106324Y6991908D01* +X-116128Y6993128D01* +X-126034Y6992721D01* +X-135686Y6990638D01* +X-144881Y6986930D01* +X-153314Y6981799D01* +X-160782Y6975195D01* +X-166979Y6967524D01* +X-171805Y6958888D01* +X-173583Y6953910D01* +X-175717Y6950303D01* +X-179120Y6947966D01* +X-183134Y6947153D01* +X-215239Y6947153D01* +X-210820Y6938822D01* +X-197967Y6918858D01* +X-183540Y6899960D01* +X-167640Y6882333D01* +X-150368Y6866077D01* +X-131826Y6851345D01* +X-112115Y6838137D01* +G37* +G36* +X11247831Y6833362D02* +G01* +X11257635Y6834631D01* +X11267084Y6837476D01* +X11275923Y6841998D01* +X11283899Y6847840D01* +X11290757Y6854952D01* +X11296294Y6863181D01* +X11300358Y6872224D01* +X11302898Y6881774D01* +X11303711Y6891629D01* +X11302898Y6901535D01* +X11300358Y6911086D01* +X11296294Y6920128D01* +X11290757Y6928307D01* +X11283899Y6935470D01* +X11275923Y6941312D01* +X11267084Y6945782D01* +X11257635Y6948678D01* +X11247831Y6949998D01* +X11237925Y6949592D01* +X11228273Y6947509D01* +X11219078Y6943750D01* +X11210645Y6938568D01* +X11203178Y6932015D01* +X11196980Y6924294D01* +X11192154Y6915708D01* +X11188852Y6906412D01* +X11187176Y6896557D01* +X11187176Y6886702D01* +X11188852Y6876897D01* +X11192154Y6867601D01* +X11196980Y6858965D01* +X11203178Y6851294D01* +X11210645Y6844690D01* +X11219078Y6839559D01* +X11228273Y6835800D01* +X11237925Y6833768D01* +G37* +G36* +X11387988Y6853377D02* +G01* +X11391138Y6854901D01* +X11411407Y6867398D01* +X11430508Y6881368D01* +X11448440Y6896912D01* +X11465052Y6913930D01* +X11480241Y6932117D01* +X11493855Y6951573D01* +X11504676Y6970014D01* +X11465814Y6970014D01* +X11462004Y6970674D01* +X11458803Y6972757D01* +X11456568Y6975957D01* +X11452504Y6984847D01* +X11446967Y6993077D01* +X11440109Y7000290D01* +X11432133Y7006132D01* +X11423294Y7010603D01* +X11413845Y7013498D01* +X11404041Y7014718D01* +X11394135Y7014362D01* +X11384483Y7012228D01* +X11375288Y7008571D01* +X11366855Y7003338D01* +X11359388Y6996836D01* +X11353190Y6989114D01* +X11348364Y6980428D01* +X11345062Y6971131D01* +X11343386Y6961327D01* +X11343386Y6951522D01* +X11345062Y6941718D01* +X11348364Y6932422D01* +X11353190Y6923735D01* +X11359388Y6916013D01* +X11366855Y6909511D01* +X11375288Y6904278D01* +X11381638Y6901738D01* +X11384991Y6899605D01* +X11387226Y6896252D01* +X11387988Y6892340D01* +G37* +G36* +X11110315Y6853428D02* +G01* +X11110315Y6896353D01* +X11110976Y6899960D01* +X11112906Y6903161D01* +X11115903Y6905447D01* +X11120983Y6908038D01* +X11128959Y6913880D01* +X11135817Y6920992D01* +X11141354Y6929221D01* +X11145418Y6938264D01* +X11147958Y6947814D01* +X11148771Y6957720D01* +X11147958Y6967575D01* +X11145418Y6977125D01* +X11141354Y6986168D01* +X11135817Y6994398D01* +X11128959Y7001509D01* +X11120983Y7007352D01* +X11112144Y7011822D01* +X11102695Y7014718D01* +X11092891Y7016038D01* +X11082985Y7015581D01* +X11073333Y7013549D01* +X11064138Y7009790D01* +X11055705Y7004659D01* +X11048238Y6998055D01* +X11042040Y6990334D01* +X11037214Y6981748D01* +X11035436Y6976770D01* +X11033302Y6973163D01* +X11029899Y6970775D01* +X11025886Y6970014D01* +X10993780Y6970014D01* +X10998200Y6961682D01* +X11011052Y6941718D01* +X11025479Y6922820D01* +X11041380Y6905193D01* +X11058652Y6888988D01* +X11077194Y6874205D01* +X11096904Y6860997D01* +G37* +G36* +X7236155Y6888276D02* +G01* +X7249769Y6889191D01* +X7263231Y6891934D01* +X7276185Y6896303D01* +X7288428Y6902297D01* +X7299807Y6909968D01* +X7310120Y6918959D01* +X7319111Y6929221D01* +X7326731Y6940651D01* +X7332776Y6952945D01* +X7337196Y6965848D01* +X7339838Y6979310D01* +X7340752Y6992975D01* +X7339838Y7006640D01* +X7337196Y7020001D01* +X7332776Y7033006D01* +X7326731Y7045299D01* +X7319111Y7056628D01* +X7310120Y7066889D01* +X7299807Y7075982D01* +X7288428Y7083552D01* +X7276185Y7089648D01* +X7263231Y7094016D01* +X7249769Y7096658D01* +X7236155Y7097623D01* +X7222490Y7096658D01* +X7209028Y7094016D01* +X7196074Y7089648D01* +X7183831Y7083552D01* +X7172452Y7075982D01* +X7162139Y7066889D01* +X7153148Y7056628D01* +X7145528Y7045299D01* +X7139482Y7033006D01* +X7135063Y7020001D01* +X7132421Y7006640D01* +X7131507Y6992975D01* +X7132421Y6979310D01* +X7135063Y6965848D01* +X7139482Y6952945D01* +X7145528Y6940651D01* +X7153148Y6929221D01* +X7162139Y6918959D01* +X7172452Y6909968D01* +X7183831Y6902297D01* +X7196074Y6896303D01* +X7209028Y6891934D01* +X7222490Y6889191D01* +G37* +G36* +X6982155Y6888276D02* +G01* +X6995769Y6889191D01* +X7009231Y6891883D01* +X7022185Y6896303D01* +X7034428Y6902297D01* +X7045807Y6909968D01* +X7056120Y6918959D01* +X7065162Y6929221D01* +X7072731Y6940651D01* +X7078776Y6952945D01* +X7083196Y6965848D01* +X7085888Y6979310D01* +X7086752Y6992975D01* +X7085888Y7006640D01* +X7083196Y7020001D01* +X7078776Y7033006D01* +X7072731Y7045299D01* +X7065162Y7056628D01* +X7056120Y7066889D01* +X7045807Y7075982D01* +X7034428Y7083552D01* +X7022185Y7089648D01* +X7009231Y7094067D01* +X6995769Y7096658D01* +X6982155Y7097623D01* +X6968490Y7096658D01* +X6955028Y7094067D01* +X6942074Y7089648D01* +X6929831Y7083552D01* +X6918452Y7075982D01* +X6908139Y7066889D01* +X6899097Y7056628D01* +X6891528Y7045299D01* +X6885482Y7033006D01* +X6881063Y7020001D01* +X6878370Y7006640D01* +X6877507Y6992975D01* +X6878370Y6979310D01* +X6881063Y6965848D01* +X6885482Y6952945D01* +X6891528Y6940651D01* +X6899097Y6929221D01* +X6908139Y6918959D01* +X6918452Y6909968D01* +X6929831Y6902297D01* +X6942074Y6896303D01* +X6955028Y6891883D01* +X6968490Y6889191D01* +G37* +G36* +X-187248Y7023862D02* +G01* +X-177444Y7025131D01* +X-167995Y7027976D01* +X-159156Y7032498D01* +X-151180Y7038340D01* +X-144322Y7045452D01* +X-138785Y7053681D01* +X-134721Y7062724D01* +X-132181Y7072274D01* +X-131368Y7082129D01* +X-132181Y7092035D01* +X-134721Y7101586D01* +X-138785Y7110628D01* +X-144322Y7118807D01* +X-151180Y7125970D01* +X-159156Y7131812D01* +X-167995Y7136282D01* +X-177444Y7139178D01* +X-187248Y7140498D01* +X-197154Y7140092D01* +X-206806Y7138009D01* +X-216001Y7134250D01* +X-224434Y7129068D01* +X-231902Y7122515D01* +X-238099Y7114794D01* +X-242925Y7106208D01* +X-246227Y7096912D01* +X-247904Y7087057D01* +X-247904Y7077202D01* +X-246227Y7067397D01* +X-242925Y7058101D01* +X-238099Y7049465D01* +X-231902Y7041794D01* +X-224434Y7035190D01* +X-216001Y7030059D01* +X-206806Y7026300D01* +X-197154Y7024268D01* +G37* +G36* +X258521Y7028891D02* +G01* +X268325Y7030212D01* +X277774Y7033107D01* +X286613Y7037527D01* +X294589Y7043420D01* +X301447Y7050582D01* +X306984Y7058812D01* +X311048Y7067803D01* +X313588Y7077405D01* +X314401Y7087260D01* +X313588Y7097115D01* +X311048Y7106716D01* +X306984Y7115708D01* +X301447Y7123938D01* +X294589Y7131100D01* +X286613Y7136892D01* +X277774Y7141413D01* +X268325Y7144308D01* +X258521Y7145528D01* +X248615Y7145121D01* +X238963Y7143038D01* +X229768Y7139330D01* +X221335Y7134199D01* +X213867Y7127595D01* +X207670Y7119924D01* +X202844Y7111288D01* +X199542Y7101992D01* +X197866Y7092188D01* +X197866Y7082332D01* +X199542Y7072528D01* +X202844Y7063231D01* +X207670Y7054596D01* +X213867Y7046823D01* +X221335Y7040321D01* +X229768Y7035088D01* +X238963Y7031380D01* +X248615Y7029297D01* +G37* +G36* +X11021771Y7046722D02* +G01* +X11031575Y7047941D01* +X11041024Y7050836D01* +X11049863Y7055307D01* +X11057839Y7061149D01* +X11064697Y7068312D01* +X11070234Y7076592D01* +X11074298Y7085533D01* +X11076838Y7095185D01* +X11077651Y7104989D01* +X11076838Y7114844D01* +X11074298Y7124496D01* +X11070234Y7133437D01* +X11064697Y7141667D01* +X11057839Y7148880D01* +X11049863Y7154722D01* +X11041024Y7159193D01* +X11031575Y7162088D01* +X11021771Y7163358D01* +X11011865Y7162952D01* +X11002213Y7160818D01* +X10993018Y7157161D01* +X10984585Y7151928D01* +X10977118Y7145426D01* +X10970920Y7137653D01* +X10966094Y7129018D01* +X10962792Y7119721D01* +X10961116Y7109917D01* +X10961116Y7100062D01* +X10962792Y7090308D01* +X10966094Y7081012D01* +X10970920Y7072325D01* +X10977118Y7064603D01* +X10984585Y7058050D01* +X10993018Y7052868D01* +X11002213Y7049211D01* +X11011865Y7047128D01* +G37* +G36* +X11467541Y7051751D02* +G01* +X11477345Y7053072D01* +X11486794Y7055967D01* +X11495633Y7060438D01* +X11503609Y7066280D01* +X11510467Y7073392D01* +X11516004Y7081621D01* +X11520068Y7090664D01* +X11522608Y7100214D01* +X11523421Y7110120D01* +X11522608Y7119975D01* +X11520068Y7129525D01* +X11516004Y7138568D01* +X11510467Y7146798D01* +X11503609Y7153909D01* +X11495633Y7159752D01* +X11486794Y7164222D01* +X11477345Y7167118D01* +X11467541Y7168438D01* +X11457635Y7167981D01* +X11447983Y7165949D01* +X11438788Y7162190D01* +X11430355Y7157059D01* +X11422888Y7150455D01* +X11416690Y7142734D01* +X11411864Y7134148D01* +X11408562Y7124852D01* +X11406886Y7115048D01* +X11406886Y7105142D01* +X11408562Y7095337D01* +X11411864Y7086041D01* +X11416690Y7077456D01* +X11422888Y7069734D01* +X11430355Y7063130D01* +X11438788Y7057999D01* +X11447983Y7054240D01* +X11457635Y7052208D01* +G37* +G36* +X196291Y7185101D02* +G01* +X206095Y7186422D01* +X215544Y7189317D01* +X224383Y7193788D01* +X232359Y7199630D01* +X239217Y7206742D01* +X244754Y7214971D01* +X246532Y7218832D01* +X248716Y7222032D01* +X251967Y7224115D01* +X255778Y7224775D01* +X295656Y7224775D01* +X284835Y7243216D01* +X271221Y7262672D01* +X256032Y7280859D01* +X239420Y7297877D01* +X221488Y7313422D01* +X202387Y7327392D01* +X182118Y7339888D01* +X178968Y7341412D01* +X178968Y7307072D01* +X178206Y7303160D01* +X175971Y7299807D01* +X172618Y7297572D01* +X167538Y7295540D01* +X159105Y7290409D01* +X151638Y7283805D01* +X145440Y7276084D01* +X140614Y7267498D01* +X137312Y7258202D01* +X135636Y7248398D01* +X135636Y7238492D01* +X137312Y7228687D01* +X140614Y7219391D01* +X145440Y7210806D01* +X151638Y7203084D01* +X159105Y7196480D01* +X167538Y7191349D01* +X176733Y7187590D01* +X186385Y7185558D01* +G37* +G36* +X-116128Y7186422D02* +G01* +X-106324Y7187641D01* +X-96875Y7190536D01* +X-88036Y7195007D01* +X-80060Y7200849D01* +X-73202Y7208012D01* +X-67665Y7216292D01* +X-63601Y7225233D01* +X-61061Y7234885D01* +X-60248Y7244689D01* +X-61061Y7254544D01* +X-63601Y7264196D01* +X-67665Y7273137D01* +X-73202Y7281367D01* +X-80060Y7288580D01* +X-88036Y7294422D01* +X-93116Y7296962D01* +X-96113Y7299299D01* +X-98044Y7302398D01* +X-98704Y7306106D01* +X-98704Y7341362D01* +X-112115Y7333843D01* +X-131826Y7320635D01* +X-150368Y7305802D01* +X-167640Y7289596D01* +X-183540Y7271969D01* +X-197967Y7253071D01* +X-210820Y7233107D01* +X-215239Y7224775D01* +X-180086Y7224775D01* +X-176580Y7224166D01* +X-173482Y7222337D01* +X-171196Y7219645D01* +X-166979Y7212025D01* +X-160782Y7204303D01* +X-153314Y7197750D01* +X-144881Y7192568D01* +X-135686Y7188911D01* +X-126034Y7186828D01* +G37* +G36* +X11405311Y7208012D02* +G01* +X11415115Y7209281D01* +X11424564Y7212126D01* +X11433403Y7216648D01* +X11441379Y7222490D01* +X11448237Y7229602D01* +X11453774Y7237831D01* +X11455552Y7241743D01* +X11457736Y7244842D01* +X11460988Y7246975D01* +X11464798Y7247636D01* +X11504676Y7247636D01* +X11493855Y7266127D01* +X11480241Y7285532D01* +X11465052Y7303770D01* +X11448440Y7320737D01* +X11430508Y7336281D01* +X11411407Y7350252D01* +X11391138Y7362748D01* +X11387988Y7364323D01* +X11387988Y7329931D01* +X11387226Y7326020D01* +X11384991Y7322667D01* +X11381638Y7320432D01* +X11376558Y7318400D01* +X11368125Y7313218D01* +X11360658Y7306665D01* +X11354460Y7298944D01* +X11349634Y7290358D01* +X11346332Y7281062D01* +X11344656Y7271207D01* +X11344656Y7261352D01* +X11346332Y7251547D01* +X11349634Y7242251D01* +X11354460Y7233615D01* +X11360658Y7225944D01* +X11368125Y7219340D01* +X11376558Y7214209D01* +X11385753Y7210450D01* +X11395405Y7208418D01* +G37* +G36* +X11092891Y7209281D02* +G01* +X11102695Y7210501D01* +X11112144Y7213396D01* +X11120983Y7217867D01* +X11128959Y7223709D01* +X11135817Y7230922D01* +X11141354Y7239152D01* +X11145418Y7248093D01* +X11147958Y7257745D01* +X11148771Y7267600D01* +X11147958Y7277404D01* +X11145418Y7287056D01* +X11141354Y7295997D01* +X11135817Y7304227D01* +X11128959Y7311440D01* +X11120983Y7317282D01* +X11115903Y7319873D01* +X11112906Y7322159D01* +X11110976Y7325258D01* +X11110315Y7328966D01* +X11110315Y7364222D01* +X11096904Y7356652D01* +X11077194Y7343444D01* +X11058652Y7328662D01* +X11041380Y7312456D01* +X11025479Y7294829D01* +X11011052Y7275931D01* +X10998200Y7255967D01* +X10993780Y7247636D01* +X11028934Y7247636D01* +X11032439Y7247077D01* +X11035538Y7245197D01* +X11037824Y7242505D01* +X11042040Y7234885D01* +X11048238Y7227163D01* +X11055705Y7220661D01* +X11064138Y7215428D01* +X11073333Y7211771D01* +X11082985Y7209637D01* +G37* +G36* +X38811Y7249922D02* +G01* +X48615Y7251141D01* +X58064Y7254036D01* +X66903Y7258507D01* +X74879Y7264349D01* +X81737Y7271512D01* +X87274Y7279792D01* +X91338Y7288733D01* +X93878Y7298385D01* +X94691Y7308189D01* +X93878Y7318044D01* +X91338Y7327696D01* +X87274Y7336637D01* +X81737Y7344867D01* +X74879Y7352080D01* +X66903Y7357922D01* +X58064Y7362393D01* +X48615Y7365288D01* +X38811Y7366558D01* +X28905Y7366152D01* +X19253Y7364018D01* +X10058Y7360361D01* +X1625Y7355128D01* +X-5842Y7348626D01* +X-12039Y7340853D01* +X-16865Y7332218D01* +X-20167Y7322921D01* +X-21844Y7313117D01* +X-21844Y7303262D01* +X-20167Y7293508D01* +X-16865Y7284212D01* +X-12039Y7275525D01* +X-5842Y7267803D01* +X1625Y7261250D01* +X10058Y7256068D01* +X19253Y7252411D01* +X28905Y7250328D01* +G37* +G36* +X11247831Y7272781D02* +G01* +X11257635Y7274001D01* +X11267084Y7276896D01* +X11275923Y7281367D01* +X11283899Y7287209D01* +X11290757Y7294422D01* +X11296294Y7302652D01* +X11300358Y7311593D01* +X11302898Y7321245D01* +X11303711Y7331100D01* +X11302898Y7340904D01* +X11300358Y7350556D01* +X11296294Y7359497D01* +X11290757Y7367727D01* +X11283899Y7374940D01* +X11275923Y7380782D01* +X11267084Y7385253D01* +X11257635Y7388148D01* +X11247831Y7389368D01* +X11237925Y7389012D01* +X11228273Y7386878D01* +X11219078Y7383221D01* +X11210645Y7377988D01* +X11203178Y7371486D01* +X11196980Y7363764D01* +X11192154Y7355078D01* +X11188852Y7345781D01* +X11187176Y7335977D01* +X11187176Y7326172D01* +X11188852Y7316368D01* +X11192154Y7307072D01* +X11196980Y7298385D01* +X11203178Y7290663D01* +X11210645Y7284161D01* +X11219078Y7278928D01* +X11228273Y7275271D01* +X11237925Y7273137D01* +G37* + +%LPD*% +D10* +X962162Y6509961D02* +G01* +X1770164Y7317960D01* +X4318200Y7317960D01* +D11* +X8652134Y1643961D02* +G01* +X8652134Y1857791D01* +X8652134Y4586206D01* +X6433931Y6804408D01* +X6310162Y6928177D01* +X6039162Y6928177D01* +D12* +X2354132Y5603961D02* +G01* +X2354132Y5294790D01* +X1940133Y4880790D01* +X1940133Y1836790D01* +X2043132Y1733791D01* +X3633132Y1733791D01* +X3641133Y1741792D01* +X8030133Y1741792D01* +X8030133Y1725990D01* +X9096161Y659960D01* +X9986162Y659960D01* +X401132Y1896790D02* +G01* +X603133Y1694792D01* +X603133Y695792D01* +X1118133Y180792D01* +X6743133Y180792D01* +X7419131Y180792D01* +X7557132Y180792D01* +X7781132Y180792D01* +X8257133Y656790D01* +X8257133Y880790D01* +X8145132Y544791D02* +G01* +X8719131Y544791D01* +X10113332Y544791D01* +X8353163Y1828962D02* +G01* +X8353163Y2904957D01* +X8353163Y4561961D01* +X8326163Y4588962D01* +X8353534Y4561591D01* +D10* +X7490162Y6992960D02* +G01* +X7613431Y6869694D01* +X7613431Y6866229D01* +X7613431Y5822909D01* +X7613431Y5933960D01* +D13* +X3993161Y6195636D02* +G01* +X3993161Y6243960D01* +X3993161Y6991962D01* +D10* +X4362013Y2443779D02* +G01* +X4391162Y2472931D01* +X4391162Y6099413D01* +D12* +X1480421Y4609914D02* +G01* +X1480421Y6408219D01* +D13* +X-171836Y5810961D02* +G01* +X-171836Y5635960D01* +X-102105Y5566229D01* +X1184104Y5566229D01* +X1205374Y5544962D01* +X1332420Y5417913D01* +X1332420Y4251914D01* +X943132Y3862626D01* +X943132Y1599631D01* +X716292Y1372791D01* +X716292Y731326D01* +X1157292Y290327D01* +X4660292Y290327D01* +X4761758Y391789D01* +X4988133Y391789D01* +D14* +X137421Y5175912D02* +G01* +X137421Y5039913D01* +X583420Y4593915D01* +X604420Y4572914D01* +X948420Y4572914D01* +D11* +X109420Y5010914D02* +G01* +X54422Y5065913D01* +X54422Y5197914D01* +X125420Y5268915D01* +X169420Y5268915D01* +X177421Y5260914D01* +X177421Y5330913D01* +X326420Y5479912D01* +X175420Y5149913D02* +G01* +X175420Y5175912D01* +X177421Y5177914D01* +X177421Y5260914D01* +X283489Y4553846D02* +G01* +X457420Y4553846D01* +D12* +X2127407Y1828845D02* +G01* +X8353534Y1828845D01* +X4797049Y6506847D02* +G01* +X6409430Y6506847D01* +X6991845Y5924430D01* +X7921277Y4994998D01* +X7954401Y4961877D01* +X8353534Y4562744D01* +D11* +X2917162Y6645960D02* +G01* +X2917162Y6966960D01* +X3008162Y7057961D01* +X4628161Y7057961D01* +X4830554Y6855569D01* +X6223431Y6855569D01* +X8585133Y4493867D01* +X8585133Y1748327D01* +X8585133Y1712960D01* +D12* +X8637485Y5923963D02* +G01* +X9112648Y5923963D01* +D11* +X5989502Y4398815D02* +G01* +X5989502Y4731979D01* +X6885431Y5627908D01* +X5744532Y2761846D02* +G01* +X5744532Y2871845D01* +X5665533Y2950847D01* +X5665533Y3332845D01* +X5881430Y3548743D01* +X5881430Y4765908D01* +X6938431Y5822909D01* +X4787920Y2158232D02* +G01* +X5336920Y2158232D01* +X5610532Y2431846D01* +X5610532Y4667011D01* +X6079431Y5135907D01* +X4789271Y2412105D02* +G01* +X5299793Y2412105D01* +X5552533Y2664846D01* +X5552533Y4743010D01* +X6359431Y5549907D01* +X4789665Y2665978D02* +G01* +X5364665Y2665978D01* +X5496532Y2797845D01* +X5496532Y4802009D01* +X5962431Y5267909D01* +X4789525Y2919851D02* +G01* +X5292539Y2919851D01* +X5436532Y3063847D01* +X5436532Y4838009D01* +X6006431Y5407908D01* +X4792413Y3173724D02* +G01* +X5216413Y3173724D01* +X5376532Y3333846D01* +X5376532Y4883010D01* +X5826429Y5332907D01* +X5744532Y3016846D02* +G01* +X5744532Y3274847D01* +X6164430Y3694744D01* +X6164430Y4652909D01* +X7125431Y5613907D01* +X6083663Y4327077D02* +G01* +X6083663Y4684140D01* +X7094430Y5694908D01* +X5855533Y2412847D02* +G01* +X5855533Y3298847D01* +X6241430Y3684744D01* +X6241430Y4612909D01* +X6830430Y5201907D01* +X5835921Y2158232D02* +G01* +X5835921Y2253234D01* +X5929533Y2346845D01* +X5929533Y3271847D01* +X6309431Y3651745D01* +X6309431Y4572909D01* +X7216429Y5479907D01* +X2846163Y6725960D02* +G01* +X2846163Y6973961D01* +X2990161Y7117961D01* +X4662162Y7117961D01* +X4851217Y6928909D01* +X6039162Y6928909D01* +D10* +X3390155Y7182901D02* +G01* +X4795222Y7182901D01* +X2889026Y2224946D02* +G01* +X4143148Y2224946D01* +X4391162Y2472961D01* +X923566Y5701230D02* +G01* +X1055161Y5832828D01* +X1055161Y5916960D01* +X1055161Y6311960D01* +X1567162Y6823961D01* +X2317163Y6823961D01* +X812291Y1281607D02* +G01* +X1829561Y2298875D01* +X1829561Y5575360D01* +X2389162Y6134961D01* +X2389162Y7054961D01* +X2265161Y7178962D01* +X957163Y5985962D02* +G01* +X957163Y6340960D01* +X1865162Y7248961D01* +X3574163Y7248961D01* +X-171836Y5635960D02* +G01* +X-171836Y5810961D01* +X2632133Y2152840D02* +G01* +X4192041Y2152840D01* +X4470163Y2430960D01* +X4470163Y6983961D01* +X2381991Y2008792D02* +G01* +X4378993Y2008792D01* +X4555162Y2184961D01* +X4555162Y6731960D01* +X2760134Y1926841D02* +G01* +X4425043Y1926841D01* +X4641161Y2142962D01* +X4641161Y6601960D01* +X4721164Y4189961D02* +G01* +X4721164Y6856961D01* +D13* +X812291Y1267960D02* +G01* +X812291Y1281607D01* +D10* +X812291Y1267960D02* +G01* +X812291Y792327D01* +X1222293Y382325D01* +X4588294Y382325D01* +X4741293Y535325D01* +X4097162Y6784962D02* +G01* +X4097162Y6984961D01* +D13* +X1745183Y481792D02* +G01* +X4354182Y481792D01* +X4495182Y622790D01* +X5265132Y622790D01* +X5496133Y391789D01* +D11* +X3398293Y1517327D02* +G01* +X7667292Y1517327D01* +X6866293Y445325D02* +G01* +X6866293Y762327D01* +X3144293Y1530327D02* +G01* +X3269292Y1530327D01* +X3391293Y1652325D01* +X6300012Y1652325D01* +X3498293Y568327D02* +G01* +X4312292Y568327D01* +X4467293Y723325D01* +X6642793Y723325D01* +X6802292Y882827D01* +X7764792Y882827D01* +X3233293Y578327D02* +G01* +X3375294Y578327D01* +X3437293Y640326D01* +X4275292Y640326D01* +X4420293Y785327D01* +X6208013Y785327D01* +X6213533Y790846D01* +X1470294Y562325D02* +G01* +X3055292Y562325D01* +X3136292Y643326D01* +X3357293Y643326D01* +X3410292Y696325D01* +X4233293Y696325D01* +X4380293Y843325D01* +X6127013Y843325D01* +X1472293Y1443327D02* +G01* +X5482292Y1443327D01* +X1201293Y1439326D02* +G01* +X1333294Y1439326D01* +X1397292Y1375326D01* +X5388292Y1375326D01* +X5971666Y1375326D01* +D13* +X4741293Y535325D02* +G01* +X5098597Y535325D01* +X5242133Y391789D01* +D11* +X2760134Y1926841D02* +G01* +X3337526Y1926841D01* +X3653292Y1581327D02* +G01* +X6359052Y1581327D01* +X4761532Y3937845D02* +G01* +X4761532Y4092846D01* +X6918533Y4632845D02* +G01* +X7713532Y4632845D01* +X6849531Y4703846D02* +G01* +X7650533Y4703846D01* +X6774533Y4768847D02* +G01* +X7586532Y4768847D01* +X6716532Y4838847D02* +G01* +X7515532Y4838847D01* +X7651534Y4702845D02* +G01* +X7787533Y4702845D01* +X7806532Y4683846D01* +X7806532Y4586846D01* +X9200786Y6030592D02* +G01* +X9823279Y6030592D01* +X9197134Y6140447D02* +G01* +X9822134Y6140447D01* +X9195534Y6248847D02* +G01* +X9822533Y6248847D01* +D12* +X7314793Y1836107D02* +G01* +X7314793Y2344846D01* +X7314793Y2444790D01* +D11* +X5447131Y1443327D02* +G01* +X6067597Y1443327D01* +D12* +X9096161Y1543961D02* +G01* +X9096161Y1828962D01* +D13* +X9604161Y1070960D02* +G01* +X9604161Y1304960D01* +X9345162Y1563961D01* +D10* +X7998162Y6992960D02* +G01* +X8197161Y6793961D01* +X8197161Y5696960D01* +X8197161Y6647962D01* +X7876164Y5612960D02* +G01* +X7876164Y6383014D01* +X7876164Y6860961D01* +X7744162Y6992960D01* +X-251434Y5112230D02* +G01* +X53251Y5416913D01* +X80421Y5416913D01* +X-270433Y5036230D02* +G01* +X-221261Y5036230D01* +X79420Y5336913D01* +X1181105Y5569229D02* +G01* +X1205374Y5544962D01* +D15* +G01* +X209293Y4568317D03* +D16* +G01* +X32306Y3442335D03* +D10* +G75* +G01* +X-251435Y5129530D02* +G03* +X-221902Y5141763I0J41766D01* +G75* +G01* +X-221902Y5141763D02* +G03* +X-234135Y5112230I29533J-29533D01* +D13* +G75* +G01* +X9360163Y1563962D02* +G03* +X9370769Y1538355I36213J0D01* +G75* +G01* +X9370769Y1538355D02* +G03* +X9345163Y1548962I-25607J-25606D01* +G75* +G01* +X9593555Y1081567D02* +G03* +X9604162Y1107174I-25606J25607D01* +G75* +G01* +X9604162Y1107174D02* +G03* +X9614768Y1081567I36213J0D01* +D11* +G75* +G01* +X7216430Y5459908D02* +G03* +X7182288Y5445766I0J-48284D01* +G75* +G01* +X7182287Y5445766D02* +G03* +X7196430Y5479908I-34142J34142D01* +G75* +G01* +X6006432Y5387909D02* +G03* +X5972290Y5373767I0J-48284D01* +G75* +G01* +X5972290Y5373767D02* +G03* +X5986432Y5407909I-34142J34142D01* +G75* +G01* +X6359431Y5529908D02* +G03* +X6325289Y5515765I0J-48284D01* +G75* +G01* +X6325289Y5515766D02* +G03* +X6339431Y5549908I-34142J34142D01* +G75* +G01* +X9209676Y6262989D02* +G03* +X9243818Y6248847I34142J34142D01* +G75* +G01* +X9243818Y6248847D02* +G03* +X9209676Y6234705I0J-48284D01* +G75* +G01* +X9209676Y6152989D02* +G03* +X9239955Y6140447I30279J30279D01* +G75* +G01* +X9247682Y6140447D02* +G03* +X9209676Y6124705I0J-53747D01* +G75* +G01* +X5821780Y2172375D02* +G03* +X5835922Y2206517I-34142J34142D01* +G75* +G01* +X5835922Y2206517D02* +G03* +X5850064Y2172375I48284J0D01* +G75* +G01* +X9214929Y6044735D02* +G03* +X9249071Y6030592I34142J34142D01* +G75* +G01* +X9249071Y6030592D02* +G03* +X9214929Y6016450I0J-48284D01* +G75* +G01* +X9808391Y6234705D02* +G03* +X9774249Y6248847I-34142J-34142D01* +G75* +G01* +X9774249Y6248847D02* +G03* +X9808391Y6262989I0J48284D01* +G75* +G01* +X9807992Y6126305D02* +G03* +X9773850Y6140447I-34142J-34142D01* +G75* +G01* +X9773850Y6140447D02* +G03* +X9807992Y6154590I0J48285D01* +G75* +G01* +X9809138Y6016450D02* +G03* +X9774996Y6030592I-34143J-34142D01* +G75* +G01* +X9774996Y6030592D02* +G03* +X9809138Y6044735I-1J48285D01* +G75* +G01* +X5826430Y5312908D02* +G03* +X5792288Y5298766I0J-48284D01* +G75* +G01* +X5792288Y5298766D02* +G03* +X5806430Y5332908I-34142J34142D01* +G75* +G01* +X5962432Y5247909D02* +G03* +X5928290Y5233767I0J-48284D01* +G75* +G01* +X5928289Y5233767D02* +G03* +X5942432Y5267909I-34142J34142D01* +G75* +G01* +X6830431Y5181907D02* +G03* +X6796289Y5167765I0J-48284D01* +G75* +G01* +X6796289Y5167765D02* +G03* +X6810431Y5201908I-34142J34143D01* +G75* +G01* +X5841391Y2426990D02* +G03* +X5855533Y2461132I-34142J34142D01* +G75* +G01* +X5855533Y2461132D02* +G03* +X5869675Y2426990I48284J0D01* +G75* +G01* +X6079432Y5115908D02* +G03* +X6045289Y5101766I-1J-48284D01* +G75* +G01* +X6045289Y5101766D02* +G03* +X6059432Y5135908I-34142J34142D01* +G75* +G01* +X4803808Y2680121D02* +G03* +X4837949Y2665979I34142J34142D01* +G75* +G01* +X4837949Y2665979D02* +G03* +X4803808Y2651837I1J-48284D01* +G75* +G01* +X4803668Y2933994D02* +G03* +X4837810Y2919852I34142J34142D01* +G75* +G01* +X4837810Y2919852D02* +G03* +X4803668Y2905710I0J-48284D01* +G75* +G01* +X4803414Y2426248D02* +G03* +X4837556Y2412106I34142J34142D01* +G75* +G01* +X4837556Y2412106D02* +G03* +X4803414Y2397964I0J-48284D01* +G75* +G01* +X4802063Y2172375D02* +G03* +X4836204Y2158233I34142J34142D01* +G75* +G01* +X4836204Y2158233D02* +G03* +X4802063Y2144091I1J-48284D01* +G75* +G01* +X4806556Y3187867D02* +G03* +X4840698Y3173725I34142J34142D01* +G75* +G01* +X4840698Y3173725D02* +G03* +X4806556Y3159583I0J-48284D01* +G75* +G01* +X7792390Y4600989D02* +G03* +X7806533Y4635130I-34142J34142D01* +G75* +G01* +X7806533Y4635130D02* +G03* +X7820675Y4600989I48284J1D01* +G75* +G01* +X443279Y4539704D02* +G03* +X409137Y4553847I-34142J-34142D01* +G75* +G01* +X409137Y4553847D02* +G03* +X443279Y4567989I0J48284D01* +G75* +G01* +X6730674Y4852990D02* +G03* +X6764816Y4838847I34143J34141D01* +G75* +G01* +X6764816Y4838847D02* +G03* +X6730674Y4824705I1J-48284D01* +G75* +G01* +X7501390Y4824705D02* +G03* +X7467248Y4838847I-34142J-34142D01* +G75* +G01* +X7467248Y4838847D02* +G03* +X7501390Y4852990I0J48284D01* +G75* +G01* +X6788675Y4782990D02* +G03* +X6822817Y4768847I34142J34142D01* +G75* +G01* +X6822817Y4768847D02* +G03* +X6788675Y4754705I0J-48284D01* +G75* +G01* +X7572391Y4754705D02* +G03* +X7538249Y4768847I-34142J-34142D01* +G75* +G01* +X7538249Y4768847D02* +G03* +X7572391Y4782990I0J48285D01* +G75* +G01* +X6863674Y4717989D02* +G03* +X6897816Y4703846I34142J34141D01* +G75* +G01* +X6897816Y4703846D02* +G03* +X6863674Y4689704I0J-48284D01* +G75* +G01* +X7665676Y4716988D02* +G03* +X7699818Y4702846I34142J34142D01* +G75* +G01* +X7699818Y4702846D02* +G03* +X7665676Y4688703I0J-48285D01* +G75* +G01* +X7699391Y4618703D02* +G03* +X7665249Y4632846I-34142J-34141D01* +G75* +G01* +X7665249Y4632846D02* +G03* +X7699391Y4646988I0J48284D01* +G75* +G01* +X6933676Y4645989D02* +G03* +X6965408Y4632846I31732J31733D01* +G75* +G01* +X6970228Y4632846D02* +G03* +X6933676Y4617705I0J-51693D01* +G75* +G01* +X4775674Y4078705D02* +G03* +X4761532Y4044563I34142J-34143D01* +G75* +G01* +X4761532Y4044563D02* +G03* +X4747390Y4078705I-48284J-1D01* +G75* +G01* +X5730390Y2775988D02* +G03* +X5744533Y2810130I-34142J34143D01* +G75* +G01* +X5744533Y2810130D02* +G03* +X5758675Y2775988I48284J1D01* +G75* +G01* +X5895573Y4475765D02* +G03* +X5881431Y4441623I34142J-34142D01* +G75* +G01* +X5881431Y4441623D02* +G03* +X5867289Y4475765I-48284J0D01* +G75* +G01* +X5867289Y4504049D02* +G03* +X5881431Y4538191I-34142J34143D01* +G75* +G01* +X5881431Y4538191D02* +G03* +X5895573Y4504049I48284J1D01* +G75* +G01* +X4747390Y3951988D02* +G03* +X4761532Y3986130I-34142J34142D01* +G75* +G01* +X4761532Y3986130D02* +G03* +X4775674Y3951988I48284J0D01* +G75* +G01* +X5730390Y3030989D02* +G03* +X5744533Y3065131I-34142J34142D01* +G75* +G01* +X5744533Y3065131D02* +G03* +X5758675Y3030989I48284J0D01* +G75* +G01* +X6178572Y4242766D02* +G03* +X6164430Y4208624I34142J-34142D01* +G75* +G01* +X6164430Y4208624D02* +G03* +X6150288Y4242766I-48284J0D01* +G75* +G01* +X6150288Y4271050D02* +G03* +X6164430Y4305192I-34142J34142D01* +G75* +G01* +X6164430Y4305192D02* +G03* +X6178572Y4271050I48284J0D01* +D10* +G75* +G01* +X-159603Y5798728D02* +G03* +X-171836Y5769195I29533J-29533D01* +G75* +G01* +X-171836Y5769195D02* +G03* +X-184069Y5798728I-41766J0D01* +D13* +G75* +G01* +X-161230Y5800355D02* +G03* +X-171836Y5774748I25607J-25607D01* +G75* +G01* +X-171836Y5774748D02* +G03* +X-182443Y5800355I-36213J0D01* +D11* +G75* +G01* +X1215435Y1453469D02* +G03* +X1249577Y1439327I34142J34142D01* +G75* +G01* +X1249577Y1439327D02* +G03* +X1215435Y1425184I0J-48285D01* +G75* +G01* +X5959991Y1363650D02* +G03* +X5931803Y1375326I-28188J-28187D01* +G75* +G01* +X5919895Y1375326D02* +G03* +X5959991Y1391935I0J56705D01* +G75* +G01* +X1486435Y1457469D02* +G03* +X1520577Y1443327I34143J34142D01* +G75* +G01* +X1520577Y1443327D02* +G03* +X1486435Y1429185I1J-48284D01* +G75* +G01* +X6053456Y1429185D02* +G03* +X6019314Y1443327I-34143J-34142D01* +G75* +G01* +X6019314Y1443327D02* +G03* +X6053456Y1457469I-1J48284D01* +G75* +G01* +X1484436Y576468D02* +G03* +X1518578Y562326I34143J34142D01* +G75* +G01* +X1518578Y562326D02* +G03* +X1484436Y548183I1J-48285D01* +G75* +G01* +X3247435Y592470D02* +G03* +X3281577Y578328I34142J34142D01* +G75* +G01* +X3281577Y578328D02* +G03* +X3247435Y564185I0J-48285D01* +G75* +G01* +X3158436Y1544469D02* +G03* +X3192578Y1530327I34142J34142D01* +G75* +G01* +X3192578Y1530327D02* +G03* +X3158436Y1516185I0J-48284D01* +G75* +G01* +X6287390Y1639705D02* +G03* +X6256921Y1652326I-30470J-30469D01* +G75* +G01* +X6249574Y1652326D02* +G03* +X6287390Y1667989I1J53479D01* +G75* +G01* +X3667434Y1595470D02* +G03* +X3701576Y1581328I34143J34142D01* +G75* +G01* +X3701576Y1581328D02* +G03* +X3667434Y1567186I1J-48284D01* +G75* +G01* +X6345390Y1566703D02* +G03* +X6310083Y1581328I-35307J-35307D01* +G75* +G01* +X6312414Y1581328D02* +G03* +X6345390Y1594987I-1J46636D01* +G75* +G01* +X6852151Y459468D02* +G03* +X6866293Y493610I-34142J34142D01* +G75* +G01* +X6866293Y493610D02* +G03* +X6880435Y459468I48284J0D01* +G75* +G01* +X6880435Y748185D02* +G03* +X6866293Y714044I34142J-34142D01* +G75* +G01* +X6866293Y714044D02* +G03* +X6852151Y748185I-48284J-1D01* +G75* +G01* +X3412436Y1531470D02* +G03* +X3446578Y1517327I34142J34142D01* +G75* +G01* +X3446578Y1517327D02* +G03* +X3412436Y1503185I0J-48284D01* +G75* +G01* +X7653150Y1503185D02* +G03* +X7619008Y1517327I-34142J-34142D01* +G75* +G01* +X7619008Y1517327D02* +G03* +X7653150Y1531470I0J48285D01* +G75* +G01* +X3512436Y582470D02* +G03* +X3546578Y568328I34142J34142D01* +G75* +G01* +X3546578Y568328D02* +G03* +X3512436Y554185I0J-48285D01* +G75* +G01* +X7750650Y868686D02* +G03* +X7716509Y882828I-34142J-34142D01* +G75* +G01* +X7716509Y882828D02* +G03* +X7750650Y896970I-1J48284D01* +G75* +G01* +X8571020Y1749104D02* +G03* +X8585134Y1783179I-34075J34075D01* +G75* +G01* +X8585134Y1783314D02* +G03* +X8599304Y1749104I48380J0D01* +D13* +G75* +G01* +X1755790Y492399D02* +G03* +X1781396Y481792I25606J25606D01* +G75* +G01* +X1781396Y481792D02* +G03* +X1755790Y471186I0J-36213D01* +D10* +G75* +G01* +X2644366Y2165073D02* +G03* +X2673899Y2152841I29533J29533D01* +G75* +G01* +X2673899Y2152841D02* +G03* +X2644366Y2140608I0J-41766D01* +D12* +G75* +G01* +X8271276Y866649D02* +G03* +X8257134Y832507I34142J-34143D01* +G75* +G01* +X8257134Y832507D02* +G03* +X8242991Y866649I-48285J-1D01* +D10* +G75* +G01* +X2901259Y2237179D02* +G03* +X2930792Y2224946I29533J29533D01* +G75* +G01* +X2930792Y2224946D02* +G03* +X2901259Y2212713I0J-41766D01* +G75* +G01* +X2393513Y2020314D02* +G03* +X2421329Y2008792I27816J27816D01* +G75* +G01* +X2424763Y2008792D02* +G03* +X2393513Y1995848I0J-44194D01* +G75* +G01* +X2772367Y1939074D02* +G03* +X2801900Y1926841I29533J29533D01* +G75* +G01* +X2801900Y1926841D02* +G03* +X2772367Y1914609I0J-41765D01* +D11* +G75* +G01* +X2774276Y1940984D02* +G03* +X2808418Y1926841I34143J34142D01* +G75* +G01* +X2808418Y1926841D02* +G03* +X2774276Y1912699I1J-48284D01* +D12* +G75* +G01* +X8348534Y4524847D02* +G03* +X8318202Y4598077I-103562J0D01* +G75* +G01* +X8348563Y4525386D02* +G03* +X8326165Y4588960I-77567J8404D01* +G75* +G01* +X8348563Y4525386D02* +G03* +X8326165Y4588960I-77567J8404D01* +D10* +G75* +G01* +X4086931Y6795194D02* +G03* +X4097162Y6819894I-24701J24700D01* +G75* +G01* +X4097162Y6829559D02* +G03* +X4111397Y6795194I48600J0D01* +G75* +G01* +X4109395Y6972729D02* +G03* +X4097162Y6943196I29533J-29533D01* +G75* +G01* +X4097162Y6943196D02* +G03* +X4084929Y6972729I-41765J0D01* +G75* +G01* +X4481396Y6972729D02* +G03* +X4470164Y6945612I27117J-27117D01* +G75* +G01* +X4470164Y6940780D02* +G03* +X4456930Y6972729I-45183J0D01* +G75* +G01* +X4733397Y6844728D02* +G03* +X4721164Y6815195I29533J-29533D01* +G75* +G01* +X4721164Y6815195D02* +G03* +X4708931Y6844728I-41766J0D01* +G75* +G01* +X4708931Y4202194D02* +G03* +X4721164Y4231727I-29533J29533D01* +G75* +G01* +X4721164Y4231727D02* +G03* +X4733397Y4202194I41766J0D01* +G75* +G01* +X4653395Y6589727D02* +G03* +X4641162Y6560195I29532J-29532D01* +G75* +G01* +X4641162Y6560195D02* +G03* +X4628929Y6589727I-41766J0D01* +G75* +G01* +X4567395Y6719727D02* +G03* +X4555162Y6690194I29533J-29533D01* +G75* +G01* +X4555162Y6690194D02* +G03* +X4542929Y6719727I-41765J0D01* +G75* +G01* +X4403395Y6087181D02* +G03* +X4391162Y6057648I29533J-29533D01* +G75* +G01* +X4391162Y6057648D02* +G03* +X4378929Y6087181I-41766J0D01* +G75* +G01* +X944931Y5998195D02* +G03* +X957163Y6027728I-29533J29533D01* +G75* +G01* +X957163Y6027728D02* +G03* +X969396Y5998195I41766J0D01* +G75* +G01* +X3561931Y7236729D02* +G03* +X3532398Y7248962I-29533J-29533D01* +G75* +G01* +X3532398Y7248962D02* +G03* +X3561931Y7261195I0J41766D01* +G75* +G01* +X962162Y6527262D02* +G03* +X991695Y6539494I0J41765D01* +G75* +G01* +X991695Y6539494D02* +G03* +X979462Y6509962I29533J-29532D01* +G75* +G01* +X2282462Y7178962D02* +G03* +X2294695Y7149429I41766J0D01* +G75* +G01* +X2294695Y7149429D02* +G03* +X2265162Y7161662I-29533J-29533D01* +G75* +G01* +X923567Y5718531D02* +G03* +X953099Y5730764I-1J41765D01* +G75* +G01* +X953099Y5730764D02* +G03* +X940867Y5701231I29534J-29533D01* +G75* +G01* +X2305931Y6810728D02* +G03* +X2273982Y6823961I-31949J-31949D01* +G75* +G01* +X2278814Y6823961D02* +G03* +X2305931Y6835194I0J38349D01* +D13* +G75* +G01* +X3982332Y6206020D02* +G03* +X3993162Y6232166I-26146J26146D01* +G75* +G01* +X3993162Y6231087D02* +G03* +X4003545Y6206020I35450J-1D01* +G75* +G01* +X4002770Y6978356D02* +G03* +X3993162Y6955159I23197J-23197D01* +G75* +G01* +X3993162Y6950339D02* +G03* +X3981557Y6978356I-39621J0D01* +D10* +G75* +G01* +X3402389Y7195134D02* +G03* +X3431922Y7182902I29532J29533D01* +G75* +G01* +X3431922Y7182902D02* +G03* +X3402389Y7170669I-1J-41766D01* +D11* +G75* +G01* +X2903020Y6660103D02* +G03* +X2917162Y6694245I-34142J34142D01* +G75* +G01* +X2917162Y6694245D02* +G03* +X2931304Y6660103I48284J0D01* +G75* +G01* +X2832022Y6740103D02* +G03* +X2846164Y6774245I-34142J34142D01* +G75* +G01* +X2846164Y6774245D02* +G03* +X2860306Y6740103I48284J0D01* +D10* +G75* +G01* +X4783930Y7169729D02* +G03* +X4752128Y7182902I-31802J-31802D01* +G75* +G01* +X4756666Y7182902D02* +G03* +X4783930Y7194195I0J38557D01* +D11* +G75* +G01* +X6424963Y6634036D02* +G03* +X6410821Y6668178I-48284J0D01* +G75* +G01* +X6410821Y6668178D02* +G03* +X6444963Y6654035I34142J34142D01* +G75* +G01* +X6464963Y6634035D02* +G03* +X6479105Y6599893I48284J0D01* +G75* +G01* +X6479105Y6599894D02* +G03* +X6444963Y6614036I-34142J-34143D01* +G75* +G01* +X6520421Y6695915D02* +G03* +X6504862Y6733478I-53122J0D01* +G75* +G01* +X6509700Y6728640D02* +G03* +X6540421Y6715915I30722J30721D01* +G75* +G01* +X6560421Y6695915D02* +G03* +X6573146Y6665194I43446J0D01* +G75* +G01* +X6577984Y6660356D02* +G03* +X6540421Y6675915I-37563J-37563D01* +G75* +G01* +X7125432Y5593908D02* +G03* +X7091290Y5579766I0J-48284D01* +G75* +G01* +X7091289Y5579766D02* +G03* +X7105432Y5613908I-34142J34142D01* +D10* +G75* +G01* +X7864876Y5626141D02* +G03* +X7876164Y5653393I-27252J27252D01* +G75* +G01* +X7876164Y5657955D02* +G03* +X7889342Y5626141I44992J0D01* +D11* +G75* +G01* +X6069521Y4341220D02* +G03* +X6083663Y4375362I-34142J34142D01* +G75* +G01* +X6083663Y4375362D02* +G03* +X6097805Y4341220I48284J0D01* +G75* +G01* +X7094431Y5674909D02* +G03* +X7060289Y5660766I0J-48284D01* +G75* +G01* +X7060289Y5660767D02* +G03* +X7074431Y5694909I-34142J34142D01* +D10* +G75* +G01* +X8184929Y5709194D02* +G03* +X8197162Y5738727I-29533J29533D01* +G75* +G01* +X8197162Y5738727D02* +G03* +X8209395Y5709194I41765J0D01* +G75* +G01* +X8184929Y5709194D02* +G03* +X8197162Y5738727I-29533J29533D01* +G75* +G01* +X8197162Y5738727D02* +G03* +X8209395Y5709194I41765J0D01* +D11* +G75* +G01* +X5975361Y4412957D02* +G03* +X5989503Y4447099I-34142J34143D01* +G75* +G01* +X5989503Y4447099D02* +G03* +X6003645Y4412957I48284J1D01* +G75* +G01* +X6885432Y5607909D02* +G03* +X6851290Y5593766I0J-48285D01* +G75* +G01* +X6851290Y5593767D02* +G03* +X6865432Y5627908I-34142J34142D01* +G75* +G01* +X6938432Y5802909D02* +G03* +X6904290Y5788767I0J-48284D01* +G75* +G01* +X6904289Y5788767D02* +G03* +X6918432Y5822909I-34141J34143D01* +D10* +G75* +G01* +X7601199Y5835142D02* +G03* +X7613432Y5864675I-29533J29533D01* +G75* +G01* +X7613432Y5864675D02* +G03* +X7625664Y5835142I41765J0D01* +G75* +G01* +X7601199Y5835142D02* +G03* +X7613432Y5864675I-29533J29533D01* +G75* +G01* +X7613432Y5864675D02* +G03* +X7625664Y5835142I41765J0D01* +D11* +G75* +G01* +X8637992Y1658104D02* +G03* +X8652134Y1692246I-34142J34142D01* +G75* +G01* +X8652134Y1692246D02* +G03* +X8666276Y1658104I48284J0D01* +D10* +G75* +G01* +X79421Y5319613D02* +G03* +X49888Y5307381I0J-41765D01* +G75* +G01* +X49888Y5307381D02* +G03* +X62121Y5336913I-29533J29532D01* +D11* +G75* +G01* +X120715Y5227836D02* +G03* +X108247Y5237114I-13482J-5102D01* +G75* +G01* +X108247Y5237114D02* +G03* +X121894Y5244549I1015J14379D01* +G75* +G01* +X93089Y5218816D02* +G03* +X139421Y5234915I4382J62111D01* +G75* +G01* +X133740Y5254091D02* +G03* +X107292Y5226751I10988J-37092D01* +G75* +G01* +X145944Y5253821D02* +G03* +X99655Y5243149I-14611J-42349D01* +G75* +G01* +X139421Y5234915D02* +G03* +X77039Y5220532I-19691J-57073D01* +G75* +G01* +X132898Y5216008D02* +G03* +X54423Y5197915I-24770J-71795D01* +G75* +G01* +X128429Y5218205D02* +G03* +X92137Y5225153I-26532J-40334D01* +G75* +G01* +X92130Y5225151D02* +G03* +X122711Y5245906I-9762J47293D01* +G75* +G01* +X128429Y5218205D02* +G03* +X92137Y5225153I-26532J-40334D01* +G75* +G01* +X92130Y5225151D02* +G03* +X122711Y5245906I-9762J47293D01* +G75* +G01* +X133740Y5254091D02* +G03* +X107293Y5226752I10987J-37090D01* +G75* +G01* +X177422Y5213654D02* +G03* +X142719Y5254641I-41556J0D01* +G75* +G01* +X177422Y5190033D02* +G03* +X139421Y5234915I-45506J-1D01* +G75* +G01* +X146305Y5253693D02* +G03* +X105463Y5237444I-11343J-30942D01* +G75* +G01* +X139421Y5234915D02* +G03* +X95499Y5217440I-12198J-33276D01* +G75* +G01* +X133740Y5254091D02* +G03* +X107292Y5226751I10988J-37092D01* +G75* +G01* +X145944Y5253821D02* +G03* +X99655Y5243149I-14611J-42349D01* +G75* +G01* +X139421Y5234915D02* +G03* +X77039Y5220532I-19691J-57073D01* +G75* +G01* +X132898Y5216008D02* +G03* +X54423Y5197915I-24770J-71795D01* +G75* +G01* +X128429Y5218205D02* +G03* +X92137Y5225153I-26532J-40334D01* +G75* +G01* +X92130Y5225151D02* +G03* +X122711Y5245906I-9762J47293D01* +G75* +G01* +X128429Y5218205D02* +G03* +X92137Y5225153I-26532J-40334D01* +G75* +G01* +X92130Y5225151D02* +G03* +X122711Y5245906I-9762J47293D01* +G75* +G01* +X133740Y5254091D02* +G03* +X107293Y5226752I10987J-37090D01* +G75* +G01* +X177422Y5213654D02* +G03* +X142719Y5254641I-41556J0D01* +G75* +G01* +X177422Y5190033D02* +G03* +X139421Y5234915I-45506J-1D01* +G75* +G01* +X146305Y5253693D02* +G03* +X105463Y5237444I-11343J-30942D01* +G75* +G01* +X139421Y5234915D02* +G03* +X95499Y5217440I-12198J-33276D01* +D14* +G75* +G01* +X137422Y5123080D02* +G03* +X96707Y5221373I-139008J0D01* +D11* +G75* +G01* +X94038Y5237532D02* +G03* +X82565Y5207231I27880J-27879D01* +G75* +G01* +X125417Y5268912D02* +G03* +X102527Y5208460I55621J-55620D01* +G75* +G01* +X102023Y5241893D02* +G03* +X82565Y5207231I19469J-33721D01* +G75* +G01* +X102023Y5241893D02* +G03* +X82565Y5207231I19469J-33721D01* +G75* +G01* +X82565Y5207231D02* +G03* +X110445Y5247445I-32850J52546D01* +G75* +G01* +X68423Y5221373D02* +G03* +X54422Y5187572I33802J-33802D01* +G75* +G01* +X82565Y5207231D02* +G03* +X54422Y5139287I67944J-67944D01* +G75* +G01* +X96707Y5193089D02* +G03* +X54422Y5091003I102086J-102086D01* +G75* +G01* +X82406Y5168314D02* +G03* +X82565Y5207231I-33945J19598D01* +G75* +G01* +X64920Y5138028D02* +G03* +X65163Y5197374I-51764J29885D01* +G75* +G01* +X87742Y5187913D02* +G03* +X58433Y5165424I12492J-46623D01* +G75* +G01* +X58422Y5165403D02* +G03* +X63247Y5202055I-41830J24151D01* +G75* +G01* +X326420Y5459913D02* +G03* +X292279Y5445771I1J-48284D01* +G75* +G01* +X292278Y5445771D02* +G03* +X306421Y5479913I-34142J34142D01* +D12* +G75* +G01* +X1466815Y4617521D02* +G03* +X1480421Y4650370I-32849J32849D01* +D10* +G75* +G01* +X4305968Y7305728D02* +G03* +X4276435Y7317961I-29533J-29533D01* +G75* +G01* +X4276435Y7317961D02* +G03* +X4305968Y7330194I0J41766D01* +G75* +G01* +X7530803Y6992961D02* +G03* +X7559540Y6923584I98113J1D01* +G75* +G01* +X7556203Y6992961D02* +G03* +X7602901Y6880224I159435J1D01* +G75* +G01* +X7559540Y6923584D02* +G03* +X7490163Y6952320I-69376J-69377D01* +G75* +G01* +X7602901Y6880224D02* +G03* +X7490164Y6926920I-112736J-112738D01* +G75* +G01* +X8038803Y6992960D02* +G03* +X8067540Y6923584I98113J0D01* +G75* +G01* +X8064203Y6992960D02* +G03* +X8110900Y6880223I159435J0D01* +G75* +G01* +X8067540Y6923584D02* +G03* +X7998163Y6952320I-69377J-69377D01* +G75* +G01* +X8110900Y6880223D02* +G03* +X7998163Y6926920I-112737J-112737D01* +G75* +G01* +X7784813Y6992961D02* +G03* +X7813557Y6923567I98137J1D01* +G75* +G01* +X7810213Y6992961D02* +G03* +X7856918Y6880207I159458J2D01* +G75* +G01* +X7813557Y6923567D02* +G03* +X7744163Y6952310I-69393J-69394D01* +G75* +G01* +X7856918Y6880207D02* +G03* +X7744164Y6926910I-112753J-112755D01* +D13* +G75* +G01* +X4963385Y367041D02* +G03* +X4903636Y391790I-59749J-59748D01* +G75* +G01* +X4942171Y345828D02* +G03* +X4831210Y391790I-110961J-110962D01* +G75* +G01* +X4903636Y391790D02* +G03* +X4963385Y416539I0J84497D01* +G75* +G01* +X4831210Y391790D02* +G03* +X4942171Y437752I0J156923D01* +G75* +G01* +X5461133Y391790D02* +G03* +X5436385Y451539I-84497J0D01* +G75* +G01* +X5431133Y391790D02* +G03* +X5385172Y502752I-156923J0D01* +G75* +G01* +X5436385Y451539D02* +G03* +X5496133Y426790I59748J59748D01* +G75* +G01* +X5385172Y502752D02* +G03* +X5496133Y456790I110961J110961D01* +G75* +G01* +X5202133Y391790D02* +G03* +X5173849Y460074I-96568J0D01* +G75* +G01* +X5172133Y391790D02* +G03* +X5122636Y511287I-168994J0D01* +G75* +G01* +X5173849Y460074D02* +G03* +X5242133Y431790I68284J68284D01* +G75* +G01* +X5122636Y511287D02* +G03* +X5242133Y461790I119498J119497D01* +D10* +G75* +G01* +X-221899Y5141763D02* +G03* +X-234132Y5112230I29532J-29533D01* +G75* +G01* +X-251435Y5129530D02* +G03* +X-221902Y5141763I1J41765D01* +D13* +G75* +G01* +X9370769Y1538354D02* +G03* +X9345163Y1548961I-25606J-25606D01* +G75* +G01* +X9360164Y1563962D02* +G03* +X9370771Y1538356I36213J0D01* +G75* +G01* +X9604164Y1107176D02* +G03* +X9614771Y1081570I36213J0D01* +G75* +G01* +X9593555Y1081570D02* +G03* +X9604162Y1107176I-25606J25606D01* +D11* +G75* +G01* +X7182288Y5445767D02* +G03* +X7196430Y5479908I-34141J34141D01* +G75* +G01* +X7216430Y5459908D02* +G03* +X7182288Y5445766I0J-48283D01* +G75* +G01* +X5972288Y5373768D02* +G03* +X5986429Y5407909I-34141J34141D01* +G75* +G01* +X6006432Y5387906D02* +G03* +X5972291Y5373765I0J-48282D01* +G75* +G01* +X6325287Y5515766D02* +G03* +X6339429Y5549908I-34141J34142D01* +G75* +G01* +X6359431Y5529908D02* +G03* +X6325290Y5515766I0J-48283D01* +G75* +G01* +X9243817Y6248844D02* +G03* +X9209676Y6234703I0J-48282D01* +G75* +G01* +X9209676Y6262989D02* +G03* +X9243817Y6248847I34141J34141D01* +G75* +G01* +X9247683Y6140447D02* +G03* +X9209677Y6124705I0J-53748D01* +G75* +G01* +X9209675Y6152991D02* +G03* +X9239951Y6140450I30276J30276D01* +G75* +G01* +X5835922Y2206518D02* +G03* +X5850063Y2172377I48283J0D01* +G75* +G01* +X5821778Y2172377D02* +G03* +X5835919Y2206518I-34142J34141D01* +G75* +G01* +X9249072Y6030592D02* +G03* +X9214931Y6016451I0J-48282D01* +G75* +G01* +X9214931Y6044737D02* +G03* +X9249072Y6030595I34141J34141D01* +G75* +G01* +X9774248Y6248847D02* +G03* +X9808389Y6262989I0J48283D01* +G75* +G01* +X9808389Y6234703D02* +G03* +X9774248Y6248844I-34141J-34141D01* +G75* +G01* +X9773849Y6140450D02* +G03* +X9807990Y6154592I0J48283D01* +G75* +G01* +X9807990Y6126306D02* +G03* +X9773849Y6140447I-34141J-34141D01* +G75* +G01* +X9774994Y6030595D02* +G03* +X9809136Y6044737I0J48283D01* +G75* +G01* +X9809136Y6016451D02* +G03* +X9774994Y6030592I-34142J-34141D01* +G75* +G01* +X5792288Y5298767D02* +G03* +X5806430Y5332908I-34141J34141D01* +G75* +G01* +X5826430Y5312908D02* +G03* +X5792289Y5298766I0J-48283D01* +G75* +G01* +X5928287Y5233768D02* +G03* +X5942429Y5267909I-34141J34141D01* +G75* +G01* +X5962432Y5247907D02* +G03* +X5928290Y5233765I0J-48283D01* +G75* +G01* +X6796289Y5167766D02* +G03* +X6810431Y5201907I-34141J34141D01* +G75* +G01* +X6830431Y5181907D02* +G03* +X6796290Y5167766I0J-48283D01* +G75* +G01* +X5855533Y2461130D02* +G03* +X5869675Y2426989I48283J0D01* +G75* +G01* +X5841389Y2426989D02* +G03* +X5855531Y2461130I-34141J34141D01* +G75* +G01* +X6045287Y5101767D02* +G03* +X6059429Y5135908I-34141J34141D01* +G75* +G01* +X6079432Y5115908D02* +G03* +X6045290Y5101766I0J-48283D01* +G75* +G01* +X4837951Y2665979D02* +G03* +X4803810Y2651837I0J-48283D01* +G75* +G01* +X4803810Y2680123D02* +G03* +X4837951Y2665981I34141J34141D01* +G75* +G01* +X4837811Y2919852D02* +G03* +X4803670Y2905710I0J-48283D01* +G75* +G01* +X4803670Y2933996D02* +G03* +X4837811Y2919854I34141J34141D01* +G75* +G01* +X4837557Y2412106D02* +G03* +X4803416Y2397964I0J-48283D01* +G75* +G01* +X4803416Y2426250D02* +G03* +X4837557Y2412108I34141J34141D01* +G75* +G01* +X4836206Y2158233D02* +G03* +X4802065Y2144091I0J-48283D01* +G75* +G01* +X4802065Y2172377D02* +G03* +X4836206Y2158235I34141J34141D01* +G75* +G01* +X4840696Y3173725D02* +G03* +X4806555Y3159583I0J-48283D01* +G75* +G01* +X4806555Y3187869D02* +G03* +X4840696Y3173727I34141J34141D01* +G75* +G01* +X7806535Y4635132D02* +G03* +X7820677Y4600991I48283J0D01* +G75* +G01* +X7792391Y4600991D02* +G03* +X7806533Y4635132I-34141J34141D01* +G75* +G01* +X409138Y4553847D02* +G03* +X443279Y4567988I0J48282D01* +G75* +G01* +X443279Y4539702D02* +G03* +X409138Y4553844I-34141J-34141D01* +G75* +G01* +X6764818Y4838845D02* +G03* +X6730676Y4824703I0J-48283D01* +G75* +G01* +X6730676Y4852989D02* +G03* +X6764818Y4838847I34142J34141D01* +G75* +G01* +X7467249Y4838847D02* +G03* +X7501391Y4852989I1J48283D01* +G75* +G01* +X7501391Y4824703D02* +G03* +X7467249Y4838845I-34141J-34141D01* +G75* +G01* +X6822816Y4768845D02* +G03* +X6788675Y4754703I0J-48283D01* +G75* +G01* +X6788675Y4782989D02* +G03* +X6822816Y4768847I34141J34141D01* +G75* +G01* +X7538248Y4768847D02* +G03* +X7572389Y4782989I0J48283D01* +G75* +G01* +X7572389Y4754703D02* +G03* +X7538248Y4768845I-34141J-34141D01* +G75* +G01* +X6897817Y4703846D02* +G03* +X6863676Y4689705I0J-48283D01* +G75* +G01* +X6863676Y4717991D02* +G03* +X6897817Y4703849I34141J34141D01* +G75* +G01* +X7699817Y4702846D02* +G03* +X7665676Y4688704I0J-48283D01* +G75* +G01* +X7665676Y4716990D02* +G03* +X7699817Y4702848I34141J34141D01* +G75* +G01* +X7665250Y4632848D02* +G03* +X7699391Y4646990I0J48283D01* +G75* +G01* +X7699391Y4618704D02* +G03* +X7665250Y4632846I-34141J-34141D01* +G75* +G01* +X6970232Y4632846D02* +G03* +X6933678Y4617704I1J-51697D01* +G75* +G01* +X6933677Y4645990D02* +G03* +X6965404Y4632848I31727J31727D01* +G75* +G01* +X4761532Y4044561D02* +G03* +X4747391Y4078703I-48283J0D01* +G75* +G01* +X4775677Y4078703D02* +G03* +X4761535Y4044561I34141J-34142D01* +G75* +G01* +X5744535Y2810132D02* +G03* +X5758677Y2775990I48283J0D01* +G75* +G01* +X5730391Y2775990D02* +G03* +X5744533Y2810132I-34141J34142D01* +G75* +G01* +X5881431Y4538193D02* +G03* +X5895573Y4504051I48283J0D01* +G75* +G01* +X5867287Y4504051D02* +G03* +X5881428Y4538193I-34141J34142D01* +G75* +G01* +X5881428Y4441624D02* +G03* +X5867287Y4475765I-48282J0D01* +G75* +G01* +X5895573Y4475765D02* +G03* +X5881431Y4441624I34141J-34141D01* +G75* +G01* +X4761535Y3986131D02* +G03* +X4775677Y3951990I48283J0D01* +G75* +G01* +X4747391Y3951990D02* +G03* +X4761532Y3986131I-34142J34141D01* +G75* +G01* +X5744535Y3065130D02* +G03* +X5758677Y3030989I48283J0D01* +G75* +G01* +X5730391Y3030989D02* +G03* +X5744533Y3065130I-34141J34141D01* +G75* +G01* +X6164433Y4305193D02* +G03* +X6178574Y4271052I48283J0D01* +G75* +G01* +X6150288Y4271052D02* +G03* +X6164430Y4305193I-34141J34141D01* +G75* +G01* +X6164430Y4208625D02* +G03* +X6150288Y4242766I-48283J0D01* +G75* +G01* +X6178574Y4242766D02* +G03* +X6164433Y4208625I34142J-34141D01* +D13* +G75* +G01* +X-171839Y5774748D02* +G03* +X-182445Y5800355I-36212J0D01* +G75* +G01* +X-161230Y5800355D02* +G03* +X-171836Y5774748I25607J-25607D01* +D10* +G75* +G01* +X-171839Y5769196D02* +G03* +X-184071Y5798729I-41765J0D01* +G75* +G01* +X-159603Y5798729D02* +G03* +X-171836Y5769196I29532J-29533D01* +D11* +G75* +G01* +X1249578Y1439327D02* +G03* +X1215437Y1425185I0J-48283D01* +G75* +G01* +X1215437Y1453471D02* +G03* +X1249578Y1439329I34141J34141D01* +G75* +G01* +X5919899Y1375329D02* +G03* +X5959991Y1391935I0J56698D01* +G75* +G01* +X5959990Y1363649D02* +G03* +X5931799Y1375326I-28191J-28191D01* +G75* +G01* +X1520576Y1443325D02* +G03* +X1486435Y1429183I0J-48283D01* +G75* +G01* +X1486435Y1457469D02* +G03* +X1520576Y1443327I34141J34141D01* +G75* +G01* +X6019312Y1443327D02* +G03* +X6053453Y1457469I0J48283D01* +G75* +G01* +X6053453Y1429183D02* +G03* +X6019312Y1443325I-34141J-34141D01* +G75* +G01* +X1518577Y562326D02* +G03* +X1484436Y548184I0J-48283D01* +G75* +G01* +X1484436Y576470D02* +G03* +X1518577Y562328I34141J34141D01* +G75* +G01* +X3281578Y578325D02* +G03* +X3247437Y564183I0J-48283D01* +G75* +G01* +X3247437Y592469D02* +G03* +X3281578Y578328I34141J34141D01* +G75* +G01* +X3192577Y1530325D02* +G03* +X3158436Y1516183I0J-48283D01* +G75* +G01* +X3158436Y1544469D02* +G03* +X3192577Y1530327I34141J34141D01* +G75* +G01* +X6249579Y1652328D02* +G03* +X6287389Y1667990I-1J53472D01* +G75* +G01* +X6287391Y1639704D02* +G03* +X6256919Y1652326I-30472J-30472D01* +G75* +G01* +X6866296Y493611D02* +G03* +X6880437Y459470I48282J0D01* +G75* +G01* +X6852151Y459470D02* +G03* +X6866293Y493611I-34141J34141D01* +G75* +G01* +X6866293Y714042D02* +G03* +X6852151Y748183I-48283J0D01* +G75* +G01* +X6880437Y748183D02* +G03* +X6866296Y714042I34141J-34141D01* +G75* +G01* +X3446577Y1517325D02* +G03* +X3412436Y1503183I0J-48283D01* +G75* +G01* +X3412436Y1531469D02* +G03* +X3446577Y1517327I34141J34141D01* +G75* +G01* +X7619009Y1517327D02* +G03* +X7653151Y1531469I0J48283D01* +G75* +G01* +X7653151Y1503183D02* +G03* +X7619009Y1517325I-34142J-34141D01* +G75* +G01* +X3546577Y568325D02* +G03* +X3512435Y554183I0J-48283D01* +G75* +G01* +X3512435Y582469D02* +G03* +X3546577Y568328I34142J34141D01* +G75* +G01* +X7716510Y882828D02* +G03* +X7750651Y896970I0J48283D01* +G75* +G01* +X7750651Y868684D02* +G03* +X7716510Y882825I-34141J-34142D01* +G75* +G01* +X8585134Y1783319D02* +G03* +X8599305Y1749106I48384J0D01* +G75* +G01* +X8571019Y1749105D02* +G03* +X8585131Y1783174I-34069J34069D01* +D13* +G75* +G01* +X1781396Y481790D02* +G03* +X1755790Y471183I0J-36213D01* +G75* +G01* +X1755790Y492399D02* +G03* +X1781396Y481792I25606J25606D01* +D10* +G75* +G01* +X2673899Y2152841D02* +G03* +X2644366Y2140608I-1J-41766D01* +G75* +G01* +X2644366Y2165073D02* +G03* +X2673899Y2152841I29532J29533D01* +D12* +G75* +G01* +X8257131Y832508D02* +G03* +X8242989Y866649I-48283J0D01* +G75* +G01* +X8271275Y866649D02* +G03* +X8257134Y832508I34141J-34141D01* +D10* +G75* +G01* +X2930792Y2224946D02* +G03* +X2901259Y2212713I-1J-41765D01* +G75* +G01* +X2901259Y2237181D02* +G03* +X2930792Y2224949I29532J29533D01* +G75* +G01* +X2424765Y2008789D02* +G03* +X2393516Y1995846I0J-44193D01* +G75* +G01* +X2393515Y2020315D02* +G03* +X2421329Y2008795I27813J27814D01* +G75* +G01* +X2801899Y1926841D02* +G03* +X2772367Y1914609I0J-41765D01* +G75* +G01* +X2772367Y1939074D02* +G03* +X2801899Y1926841I29532J29533D01* +D11* +G75* +G01* +X2808417Y1926839D02* +G03* +X2774276Y1912697I0J-48283D01* +G75* +G01* +X2774276Y1940983D02* +G03* +X2808417Y1926841I34141J34141D01* +D12* +G75* +G01* +X8348728Y4526234D02* +G03* +X8334791Y4580331I-52791J15243D01* +D10* +G75* +G01* +X4097165Y6829557D02* +G03* +X4111397Y6795197I48593J0D01* +G75* +G01* +X4086930Y6795195D02* +G03* +X4097162Y6819897I-24703J24703D01* +G75* +G01* +X4097162Y6943194D02* +G03* +X4084930Y6972727I-41765J0D01* +G75* +G01* +X4109395Y6972727D02* +G03* +X4097162Y6943194I29532J-29533D01* +G75* +G01* +X4470161Y6940781D02* +G03* +X4456929Y6972727I-45179J0D01* +G75* +G01* +X4481396Y6972726D02* +G03* +X4470164Y6945610I27117J-27116D01* +G75* +G01* +X4721161Y6815196D02* +G03* +X4708929Y6844728I-41765J0D01* +G75* +G01* +X4733397Y6844728D02* +G03* +X4721164Y6815196I29532J-29532D01* +G75* +G01* +X4721164Y4231726D02* +G03* +X4733397Y4202194I41765J0D01* +G75* +G01* +X4708929Y4202194D02* +G03* +X4721161Y4231726I-29533J29532D01* +G75* +G01* +X4641162Y6560195D02* +G03* +X4628929Y6589728I-41766J0D01* +G75* +G01* +X4653397Y6589728D02* +G03* +X4641164Y6560195I29532J-29533D01* +G75* +G01* +X4555162Y6690195D02* +G03* +X4542930Y6719727I-41765J0D01* +G75* +G01* +X4567395Y6719727D02* +G03* +X4555162Y6690195I29533J-29532D01* +G75* +G01* +X4391162Y6057649D02* +G03* +X4378930Y6087181I-41765J0D01* +G75* +G01* +X4403395Y6087181D02* +G03* +X4391162Y6057649I29532J-29532D01* +G75* +G01* +X957163Y6027727D02* +G03* +X969396Y5998195I41766J0D01* +G75* +G01* +X944931Y5998195D02* +G03* +X957163Y6027727I-29533J29532D01* +G75* +G01* +X991695Y6539494D02* +G03* +X979462Y6509962I29532J-29532D01* +G75* +G01* +X962162Y6527262D02* +G03* +X991695Y6539494I0J41765D01* +G75* +G01* +X2294694Y7149429D02* +G03* +X2265162Y7161662I-29532J-29532D01* +G75* +G01* +X2282464Y7178962D02* +G03* +X2294697Y7149429I41766J0D01* +G75* +G01* +X953099Y5730763D02* +G03* +X940867Y5701231I29533J-29532D01* +G75* +G01* +X923567Y5718531D02* +G03* +X953099Y5730763I0J41765D01* +G75* +G01* +X2278812Y6823961D02* +G03* +X2305930Y6835194I0J38352D01* +G75* +G01* +X2305930Y6810729D02* +G03* +X2273983Y6823961I-31947J-31947D01* +D13* +G75* +G01* +X3993162Y6231087D02* +G03* +X4003545Y6206020I35451J0D01* +G75* +G01* +X3982332Y6206022D02* +G03* +X3993162Y6232167I-26145J26145D01* +G75* +G01* +X3993162Y6950334D02* +G03* +X3981556Y6978354I-39627J0D01* +G75* +G01* +X4002768Y6978355D02* +G03* +X3993162Y6955163I23193J-23192D01* +D11* +G75* +G01* +X2917165Y6694246D02* +G03* +X2931306Y6660105I48282J0D01* +G75* +G01* +X2903020Y6660105D02* +G03* +X2917162Y6694246I-34141J34141D01* +G75* +G01* +X2846164Y6774246D02* +G03* +X2860306Y6740105I48283J0D01* +G75* +G01* +X2832020Y6740105D02* +G03* +X2846161Y6774246I-34141J34141D01* +D10* +G75* +G01* +X4756663Y7182902D02* +G03* +X4783929Y7194195I0J38559D01* +G75* +G01* +X4783928Y7169727D02* +G03* +X4752129Y7182899I-31799J-31799D01* +D11* +G75* +G01* +X6479104Y6599894D02* +G03* +X6444963Y6614036I-34141J-34141D01* +G75* +G01* +X6464965Y6634035D02* +G03* +X6479107Y6599894I48283J0D01* +G75* +G01* +X6410822Y6668180D02* +G03* +X6444963Y6654038I34141J34141D01* +G75* +G01* +X6424963Y6634035D02* +G03* +X6410821Y6668177I-48283J1D01* +G75* +G01* +X6577984Y6660353D02* +G03* +X6540421Y6675912I-37563J-37562D01* +G75* +G01* +X6560424Y6695915D02* +G03* +X6573148Y6665195I43444J0D01* +G75* +G01* +X6509701Y6728639D02* +G03* +X6540421Y6715915I30720J30720D01* +G75* +G01* +X6520421Y6695915D02* +G03* +X6504862Y6733478I-53121J0D01* +G75* +G01* +X7091287Y5579767D02* +G03* +X7105429Y5613908I-34141J34141D01* +G75* +G01* +X7125432Y5593908D02* +G03* +X7091290Y5579766I-1J-48283D01* +D10* +G75* +G01* +X7876164Y5657959D02* +G03* +X7889344Y5626140I44999J0D01* +G75* +G01* +X7864876Y5626141D02* +G03* +X7876162Y5653387I-27246J27246D01* +D11* +G75* +G01* +X6083666Y4375363D02* +G03* +X6097807Y4341222I48283J0D01* +G75* +G01* +X6069522Y4341222D02* +G03* +X6083663Y4375363I-34142J34141D01* +D10* +G75* +G01* +X8197164Y5738729D02* +G03* +X8209397Y5709196I41765J-1D01* +G75* +G01* +X8184927Y5709196D02* +G03* +X8197159Y5738726I-29531J29530D01* +G75* +G01* +X8197164Y5738726D02* +G03* +X8209397Y5709194I41765J0D01* +G75* +G01* +X8184929Y5709194D02* +G03* +X8197162Y5738726I-29533J29532D01* +D11* +G75* +G01* +X5989503Y4447101D02* +G03* +X6003645Y4412959I48283J0D01* +G75* +G01* +X5975359Y4412959D02* +G03* +X5989500Y4447101I-34142J34142D01* +G75* +G01* +X6851288Y5593767D02* +G03* +X6865429Y5627908I-34141J34141D01* +G75* +G01* +X6885432Y5607906D02* +G03* +X6851291Y5593764I0J-48283D01* +G75* +G01* +X6904287Y5788768D02* +G03* +X6918429Y5822909I-34141J34141D01* +G75* +G01* +X6938432Y5802907D02* +G03* +X6904290Y5788765I0J-48283D01* +D10* +G75* +G01* +X7613432Y5864675D02* +G03* +X7625664Y5835142I41765J-1D01* +G75* +G01* +X7601199Y5835142D02* +G03* +X7613432Y5864675I-29533J29532D01* +G75* +G01* +X7613432Y5864675D02* +G03* +X7625664Y5835142I41765J-1D01* +G75* +G01* +X7601199Y5835142D02* +G03* +X7613432Y5864675I-29533J29532D01* +D11* +G75* +G01* +X8652134Y1692245D02* +G03* +X8666276Y1658103I48283J-1D01* +G75* +G01* +X8637990Y1658103D02* +G03* +X8652132Y1692245I-34141J34141D01* +D10* +G75* +G01* +X49888Y5307381D02* +G03* +X62121Y5336913I-29532J29532D01* +G75* +G01* +X79421Y5319613D02* +G03* +X49888Y5307381I0J-41765D01* +D11* +G75* +G01* +X177422Y5190033D02* +G03* +X139422Y5234914I-45505J0D01* +G75* +G01* +X177422Y5213655D02* +G03* +X142721Y5254640I-41555J0D01* +G75* +G01* +X139421Y5234913D02* +G03* +X61941Y5205433I-5893J-101068D01* +G75* +G01* +X140585Y5254879D02* +G03* +X93455Y5236946I-3585J-61478D01* +G75* +G01* +X139421Y5234913D02* +G03* +X61941Y5205433I-5893J-101068D01* +G75* +G01* +X140585Y5254879D02* +G03* +X93455Y5236946I-3585J-61478D01* +G75* +G01* +X177422Y5190033D02* +G03* +X139422Y5234914I-45505J0D01* +G75* +G01* +X177422Y5213655D02* +G03* +X142721Y5254640I-41555J0D01* +D14* +G75* +G01* +X137422Y5123083D02* +G03* +X96709Y5221372I-139002J0D01* +D11* +G75* +G01* +X96709Y5193088D02* +G03* +X54422Y5090998I102089J-102090D01* +G75* +G01* +X82569Y5207228D02* +G03* +X54425Y5139281I67946J-67947D01* +G75* +G01* +X68425Y5221372D02* +G03* +X54422Y5187566I33805J-33805D01* +G75* +G01* +X125418Y5268912D02* +G03* +X102528Y5208459I55621J-55620D01* +G75* +G01* +X94040Y5237532D02* +G03* +X82566Y5207230I27880J-27880D01* +G75* +G01* +X292279Y5445772D02* +G03* +X306421Y5479913I-34141J34141D01* +G75* +G01* +X326420Y5459913D02* +G03* +X292279Y5445771I0J-48283D01* +D12* +G75* +G01* +X1466813Y4617521D02* +G03* +X1480419Y4650369I-32848J32848D01* +G36* +X74419Y5225161D02* +G01* +X108430Y5225161D01* +X108430Y5173929D01* +X74419Y5173929D01* +G37* +G36* +X81658Y5225161D02* +G01* +X108430Y5225161D01* +X108430Y5184927D01* +X81658Y5184927D01* +G37* +G36* +X95425Y5239918D02* +G01* +X108430Y5239918D01* +X108430Y5184927D01* +X95425Y5184927D01* +G37* +G36* +X108430Y5260924D02* +G01* +X177441Y5260924D01* +X177441Y5184927D01* +X108430Y5184927D01* +G37* +G36* +X69263Y5080914D02* +G01* +X75105Y5080914D01* +X75105Y5051069D01* +X69263Y5051069D01* +G37* +G36* +X75105Y5080914D02* +G01* +X112417Y5080914D01* +X112417Y5045227D01* +X75105Y5045227D01* +G37* +G36* +X54429Y5197906D02* +G01* +X137436Y5197906D01* +X137436Y5066893D01* +X54429Y5066893D01* +G37* +G36* +X10938431Y7422895D02* +G01* +X11461163Y7422895D01* +X11461163Y6695897D01* +X10938431Y6695897D01* +G37* +G36* +X11463525Y7182891D02* +G01* +X11562483Y7182891D01* +X11562483Y6976846D01* +X11463525Y6976846D01* +G37* +G36* +X11541528Y7182891D02* +G01* +X11562483Y7182891D01* +X11562483Y7145832D01* +X11541528Y7145832D01* +G37* +G36* +X11334544Y7335189D02* +G01* +X11538430Y7335189D01* +X11538430Y6849846D01* +X11334544Y6849846D01* +G37* +G36* +X11249174Y180975D02* +G01* +X11418415Y180975D01* +X11418415Y90652D01* +X11249174Y90652D01* +G37* +G36* +X11214529Y225856D02* +G01* +X11478409Y225856D01* +X11478409Y133807D01* +X11214529Y133807D01* +G37* +G36* +X10968428Y225856D02* +G01* +X11254534Y225856D01* +X11254534Y84861D01* +X10968428Y84861D01* +G37* +G36* +X10954941Y312902D02* +G01* +X11527508Y312902D01* +X11527508Y192912D01* +X10954941Y192912D01* +G37* +G36* +X10869546Y762914D02* +G01* +X11556565Y762914D01* +X11556565Y252907D01* +X10869546Y252907D01* +G37* +G36* +X-271960Y7302906D02* +G01* +X466417Y7302906D01* +X466417Y6732905D01* +X-271960Y6732905D01* +G37* +G36* +X-191543Y7408367D02* +G01* +X348460Y7408367D01* +X348460Y7224903D01* +X-191543Y7224903D01* +G37* +G36* +X-267642Y732917D02* +G01* +X397431Y732917D01* +X397431Y222910D01* +X-267642Y222910D01* +G37* +G36* +X-216562Y287909D02* +G01* +X348460Y287909D01* +X348460Y152907D01* +X-216562Y152907D01* +G37* +G36* +X-65559Y213918D02* +G01* +X238452Y213918D01* +X238452Y55016D01* +X-65559Y55016D01* +G37* +G36* +X-162562Y201904D02* +G01* +X-4574Y201904D01* +X-4574Y87909D01* +X-162562Y87909D01* +G37* +G36* +X180439Y192912D02* +G01* +X317472Y192912D01* +X317472Y106908D01* +X180439Y106908D01* +G37* +D18* +G01* +X6982152Y6992950D03* +G01* +X6982152Y6738950D03* +G01* +X7744152Y6992950D03* +D19* +G01* +X7998152Y6738950D03* +G01* +X7744152Y6738950D03* +G01* +X7490152Y6738950D03* +D20* +G01* +X7998152Y6992950D03* +D19* +G01* +X7490152Y6992950D03* +G01* +X7236152Y6738950D03* +G01* +X7236152Y6992950D03* +D21* +G01* +X-123675Y5972175D03* +G01* +X587524Y5972175D03* +D22* +G01* +X54124Y391795D03* +G01* +X11252984Y398145D03* +G01* +X11249174Y7108825D03* +G01* +X40154Y7085964D03* +D23* +G01* +X5240169Y7085964D03* +D24* +G01* +X5494169Y7085964D03* +G01* +X4986169Y7085964D03* +D19* +G01* +X1303195Y1578787D03* +G01* +X1557195Y1578787D03* +D23* +G01* +X5242125Y391795D03* +D24* +G01* +X5496125Y391795D03* +G01* +X4988125Y391795D03* +D25* +G01* +X1129078Y4394733D03* +G01* +X2126104Y5373370D03* +G01* +X2420236Y4413122D03* +G01* +X1404846Y2143302D03* +G01* +X1654451Y3647312D03* +G01* +X2401872Y3121939D03* +G01* +X3276546Y2985465D03* +D26* +G01* +X3374641Y6888962D03* +G01* +X3374641Y6762953D03* +G01* +X3249622Y6888962D03* +G01* +X3249622Y6763969D03* +D27* +G01* +X50314Y614045D03* +G01* +X207794Y549275D03* +G01* +X-104625Y550545D03* +G01* +X-175745Y387985D03* +G01* +X270024Y393064D03* +G01* +X-104625Y240664D03* +G01* +X50314Y174625D03* +G01* +X206524Y239395D03* +G01* +X11249174Y620395D03* +G01* +X11406654Y555625D03* +G01* +X11094234Y556895D03* +G01* +X11023114Y394335D03* +G01* +X11468884Y399414D03* +G01* +X11094234Y247014D03* +G01* +X11249174Y180975D03* +G01* +X11405384Y245745D03* +G01* +X11245364Y7331075D03* +G01* +X11402844Y7266304D03* +G01* +X11090424Y7267575D03* +G01* +X11019304Y7105014D03* +G01* +X11465074Y7110095D03* +G01* +X11090424Y6957695D03* +G01* +X11245364Y6891654D03* +G01* +X11401574Y6956425D03* +G01* +X36344Y7308214D03* +G01* +X193824Y7243445D03* +G01* +X-118595Y7244714D03* +G01* +X-189715Y7082154D03* +G01* +X256054Y7087235D03* +G01* +X-118595Y6934835D03* +G01* +X36344Y6868795D03* +G01* +X192554Y6933564D03* +D24* +G01* +X1447264Y4076547D03* +G01* +X2083661Y3440150D03* +D26* +G01* +X4318200Y7317968D03* +G01* +X5728967Y6387922D03* +G01* +X5563867Y6387922D03* +G01* +X5411467Y6387922D03* +G01* +X2354145Y5603951D03* +G01* +X-71554Y898905D03* +G01* +X4069433Y5433923D03* +G01* +X3918430Y5433923D03* +G01* +X3768443Y5433923D03* +G01* +X3619446Y5433923D03* +G01* +X3468443Y5433923D03* +G01* +X3318431Y5433923D03* +G01* +X3169434Y5433923D03* +G01* +X3018431Y5433923D03* +G01* +X2868444Y5433923D03* +G01* +X4069433Y5765901D03* +G01* +X3918430Y5765901D03* +G01* +X3768443Y5765901D03* +G01* +X3619446Y5765901D03* +G01* +X3468443Y5765901D03* +G01* +X3318431Y5765901D03* +G01* +X3169434Y5765901D03* +G01* +X3018431Y5765901D03* +G01* +X2868444Y5765901D03* +G01* +X2719448Y5765901D03* +G01* +X2568445Y5765901D03* +G01* +X2418433Y5765901D03* +G01* +X-260428Y4535220D03* +D28* +G01* +X1477413Y4606925D03* +D14* +G01* +X948433Y4572914D03* +D26* +G01* +X326412Y5479922D03* +G01* +X82572Y5207228D03* +G01* +X137411Y5175910D03* +G01* +X139418Y5234914D03* +G01* +X139418Y5234914D03* +G01* +X367433Y5094909D03* +G01* +X447418Y5094909D03* +G01* +X447418Y5181904D03* +G01* +X367433Y5181904D03* +G01* +X79423Y5336920D03* +G01* +X80413Y5416905D03* +G01* +X11538430Y1254912D03* +G01* +X11538430Y1414906D03* +G01* +X11538430Y1556918D03* +G01* +X9138434Y2232913D03* +G01* +X9288421Y2232913D03* +G01* +X9438434Y2232913D03* +G01* +X9588421Y2232913D03* +G01* +X9738433Y2232913D03* +G01* +X8208439Y2618917D03* +G01* +X8208439Y2715895D03* +G01* +X8652126Y1643964D03* +D29* +G01* +X6991372Y5923965D03* +G01* +X8637496Y5923965D03* +D26* +G01* +X7613444Y5822899D03* +G01* +X6938439Y5822899D03* +G01* +X6885429Y5627903D03* +G01* +X5989495Y4398822D03* +G01* +X8197161Y5696965D03* +G01* +X7094420Y5694908D03* +G01* +X6083653Y4327067D03* +G01* +X7877121Y5613907D03* +G01* +X7125434Y5613907D03* +G01* +X6540421Y6695922D03* +G01* +X2284422Y6912889D03* +G01* +X2285438Y7002906D03* +G01* +X2478453Y6928916D03* +G01* +X4128437Y6382918D03* +G01* +X4128437Y6474917D03* +G01* +X1759430Y6903923D03* +G01* +X1678429Y6903923D03* +G01* +X2195446Y6072911D03* +G01* +X2260445Y6159906D03* +G01* +X3348428Y6255918D03* +G01* +X3288433Y6316903D03* +G01* +X2268446Y4846904D03* +G01* +X2268446Y4948910D03* +G01* +X2268446Y5046903D03* +G01* +X1978124Y5079796D03* +G01* +X2055136Y5158790D03* +G01* +X1907131Y4999786D03* +G01* +X5328434Y7346924D03* +G01* +X5178422Y7346924D03* +G01* +X5478421Y7346924D03* +G01* +X4428436Y7346924D03* +G01* +X5628434Y7346924D03* +G01* +X5028435Y7346924D03* +G01* +X4878423Y7346924D03* +G01* +X5778421Y7346924D03* +G01* +X2188156Y7434961D03* +G01* +X2338169Y7434961D03* +G01* +X6444968Y6634022D03* +D12* +G01* +X3326152Y6456959D03* +D26* +G01* +X4796152Y7181951D03* +G01* +X2846169Y6725970D03* +G01* +X2917162Y6645960D03* +G01* +X3390160Y7182891D03* +G01* +X3992166Y6988962D03* +G01* +X3992928Y6195415D03* +G01* +X4797041Y6506845D03* +G01* +X2318153Y6822947D03* +G01* +X923566Y5701233D03* +G01* +X2265169Y7178954D03* +G01* +X962174Y6509969D03* +G01* +X3574158Y7248956D03* +G01* +X957171Y5985967D03* +G01* +X4391174Y6099403D03* +G01* +X4555157Y6731965D03* +G01* +X4641161Y6601968D03* +G01* +X4721171Y4189958D03* +G01* +X4721171Y6856958D03* +G01* +X4469152Y6984949D03* +G01* +X4097169Y6984949D03* +G01* +X4099176Y6782968D03* +G01* +X2517137Y2606802D03* +G01* +X3119142Y3144799D03* +G01* +X3027144Y3032785D03* +G01* +X2426129Y2527782D03* +G01* +X3339132Y2575788D03* +G01* +X3340122Y2442794D03* +G01* +X3191126Y2579801D03* +G01* +X3339132Y2729788D03* +G01* +X3208144Y3234791D03* +G01* +X4968440Y1136802D03* +G01* +X4818428Y1135786D03* +G01* +X4668441Y1134795D03* +G01* +X4518428Y1135786D03* +G01* +X4368441Y1134795D03* +G01* +X11538430Y1696923D03* +G01* +X11538430Y1816912D03* +G01* +X11536423Y1932914D03* +G01* +X11538430Y2065909D03* +G01* +X11521437Y822909D03* +G01* +X11520421Y672922D03* +G01* +X10938431Y123901D03* +G01* +X10788418Y124917D03* +G01* +X10638431Y125907D03* +G01* +X10488419Y124917D03* +G01* +X10338432Y124917D03* +G01* +X10188420Y123901D03* +G01* +X10038433Y122910D03* +G01* +X9888420Y123901D03* +G01* +X9738433Y123901D03* +G01* +X9588421Y122910D03* +G01* +X9438434Y122910D03* +G01* +X9288421Y122910D03* +G01* +X9138434Y122910D03* +G01* +X8988422Y122910D03* +G01* +X8838435Y122910D03* +G01* +X8688423Y121920D03* +G01* +X78458Y799922D03* +G01* +X228445Y687908D03* +G01* +X348434Y572896D03* +G01* +X-259565Y882903D03* +G01* +X-261571Y1032916D03* +G01* +X-261571Y1182903D03* +G01* +X-261571Y1332915D03* +G01* +X-261571Y1482902D03* +G01* +X-261571Y1632915D03* +G01* +X-81561Y6552895D03* +G01* +X-231574Y6552895D03* +G01* +X7608440Y7348448D03* +G01* +X7327160Y7345959D03* +G01* +X7128431Y7347458D03* +G01* +X6828431Y7348448D03* +G01* +X7458428Y2036851D03* +G01* +X7458428Y2165832D03* +G01* +X7458428Y2271852D03* +G01* +X8148419Y4447844D03* +G01* +X7436533Y2987852D03* +G01* +X7253526Y2982848D03* +G01* +X7063534Y2980842D03* +G01* +X7755531Y3965854D03* +G01* +X6933537Y3985844D03* +G01* +X7414536Y3930853D03* +G01* +X7414536Y4027855D03* +G01* +X7434526Y3392855D03* +G01* +X7433536Y3578834D03* +G01* +X7255532Y3576853D03* +G01* +X7254542Y3394837D03* +G01* +X7065540Y3393846D03* +G01* +X7068538Y3576853D03* +G01* +X9888420Y2232913D03* +G01* +X10038433Y2232913D03* +G01* +X10188420Y2232913D03* +G01* +X10338432Y2232913D03* +G01* +X10488419Y2232913D03* +G01* +X6678444Y2016836D03* +G01* +X6678444Y2104847D03* +G01* +X6678444Y2195855D03* +G01* +X6678444Y2280843D03* +G01* +X7212124Y2419781D03* +G01* +X7212124Y2507792D03* +G01* +X8353524Y4524857D03* +G01* +X7954439Y4961915D03* +G01* +X11538430Y2232913D03* +G01* +X11388443Y2232913D03* +G01* +X11238430Y2232913D03* +G01* +X11088443Y2232913D03* +G01* +X10938431Y2232913D03* +G01* +X10788444Y2232913D03* +G01* +X10638431Y2232913D03* +G01* +X158442Y6552895D03* +G01* +X328444Y6552895D03* +G01* +X498421Y6552895D03* +G01* +X638426Y6792899D03* +G01* +X638426Y6672910D03* +G01* +X638426Y6552895D03* +G01* +X-231574Y6702907D03* +G01* +X-81561Y6702907D03* +G01* +X138452Y6742912D03* +G01* +X318437Y6842912D03* +G01* +X418437Y7002906D03* +G01* +X438452Y7162901D03* +G01* +X-261571Y3282899D03* +G01* +X-261571Y3132912D03* +G01* +X-261571Y2982899D03* +G01* +X-261571Y2832912D03* +G01* +X-261571Y2682900D03* +G01* +X-261571Y2532913D03* +G01* +X-261571Y2382901D03* +G01* +X-261571Y2232913D03* +G01* +X-261571Y2082901D03* +G01* +X-261571Y1932914D03* +G01* +X-261571Y1782902D03* +G01* +X-251564Y752906D03* +G01* +X-251564Y622909D03* +G01* +X468449Y462914D03* +G01* +X558441Y362915D03* +G01* +X648434Y272922D03* +G01* +X738451Y182905D03* +G01* +X288439Y82905D03* +G01* +X438452Y82905D03* +G01* +X588439Y82905D03* +G01* +X738451Y82905D03* +G01* +X888438Y82905D03* +G01* +X1038451Y82905D03* +G01* +X1188438Y82905D03* +G01* +X1338450Y82905D03* +G01* +X1488437Y82905D03* +G01* +X1638449Y82905D03* +G01* +X1788436Y82905D03* +G01* +X1938449Y82905D03* +G01* +X2088436Y82905D03* +G01* +X2238448Y82905D03* +G01* +X2388435Y82905D03* +G01* +X2538448Y82905D03* +G01* +X2688435Y82905D03* +G01* +X2838447Y82905D03* +G01* +X2988434Y82905D03* +G01* +X3138446Y82905D03* +G01* +X3288433Y82905D03* +G01* +X3438446Y82905D03* +G01* +X3588433Y82905D03* +G01* +X3738445Y82905D03* +G01* +X3888432Y82905D03* +G01* +X4038445Y82905D03* +G01* +X4188432Y82905D03* +G01* +X4338444Y82905D03* +G01* +X4488431Y82905D03* +G01* +X4638443Y82905D03* +G01* +X4788430Y82905D03* +G01* +X4938443Y82905D03* +G01* +X5088430Y82905D03* +G01* +X5238442Y82905D03* +G01* +X5388429Y82905D03* +G01* +X5538442Y82905D03* +G01* +X5688429Y82905D03* +G01* +X5838441Y82905D03* +G01* +X5988428Y82905D03* +G01* +X6138440Y82905D03* +G01* +X6288427Y82905D03* +G01* +X6438440Y82905D03* +G01* +X6588427Y82905D03* +G01* +X6738439Y82905D03* +G01* +X6889137Y82905D03* +G01* +X7039124Y82905D03* +G01* +X7189137Y82905D03* +G01* +X7339124Y82905D03* +G01* +X7489136Y82905D03* +G01* +X7643136Y82778D03* +G01* +X7800159Y83972D03* +G01* +X7938437Y122910D03* +G01* +X8088424Y122910D03* +G01* +X8238436Y122910D03* +G01* +X8388423Y122910D03* +G01* +X8538436Y122910D03* +G01* +X438172Y7434961D03* +G01* +X588159Y7434961D03* +G01* +X738172Y7434961D03* +G01* +X888159Y7434961D03* +G01* +X1438170Y7434961D03* +G01* +X1588157Y7434961D03* +G01* +X1738170Y7434961D03* +G01* +X2038169Y7434961D03* +G01* +X1888157Y7434961D03* +G01* +X2488156Y7434961D03* +G01* +X2646169Y7432954D03* +G01* +X2792168Y7431963D03* +G01* +X2916171Y7433970D03* +G01* +X3088154Y7434961D03* +G01* +X3238167Y7434961D03* +G01* +X3388154Y7434961D03* +G01* +X3538166Y7434961D03* +G01* +X3688153Y7434961D03* +G01* +X3838166Y7434961D03* +G01* +X3988153Y7434961D03* +G01* +X4138165Y7434961D03* +G01* +X4578423Y7346924D03* +G01* +X4728436Y7346924D03* +G01* +X5928433Y7346924D03* +G01* +X6078446Y7347458D03* +G01* +X6228433Y7347458D03* +G01* +X6378445Y7347458D03* +G01* +X6528432Y7347458D03* +G01* +X6678444Y7347458D03* +G01* +X7860154Y7350963D03* +G01* +X8118421Y7347458D03* +G01* +X8268434Y7347458D03* +G01* +X8448418Y7347458D03* +G01* +X8598430Y7347458D03* +G01* +X8748417Y7347458D03* +G01* +X8898430Y7347458D03* +G01* +X9048417Y7347458D03* +G01* +X9198429Y7347458D03* +G01* +X9348416Y7347458D03* +G01* +X9498429Y7347458D03* +G01* +X9648416Y7347458D03* +G01* +X9798428Y7347458D03* +G01* +X9948415Y7347458D03* +G01* +X10098427Y7347458D03* +G01* +X10248414Y7347458D03* +G01* +X10398427Y7347458D03* +G01* +X10548414Y7347458D03* +G01* +X10698426Y7347458D03* +G01* +X10848413Y7347458D03* +G01* +X2760139Y1926844D03* +G01* +X2381272Y2008073D03* +G01* +X2889018Y2224938D03* +D29* +G01* +X401139Y1896795D03* +D30* +G01* +X8257131Y880795D03* +D26* +G01* +X2632123Y2152827D03* +G01* +X1745180Y481787D03* +G01* +X8585172Y1734972D03* +G01* +X7764802Y882827D03* +G01* +X3498288Y568325D03* +G01* +X7667292Y1517319D03* +G01* +X3398288Y1517319D03* +G01* +X6866303Y762330D03* +G01* +X6866303Y445312D03* +G01* +X6359522Y1580845D03* +G01* +X3653304Y1581327D03* +G01* +X6301534Y1653844D03* +G01* +X3144288Y1530324D03* +G01* +X6213523Y790854D03* +G01* +X3233290Y578332D03* +G01* +X6127010Y843330D03* +G01* +X1470301Y562330D03* +G01* +X6067600Y1443329D03* +G01* +X1472283Y1443329D03* +G01* +X5974128Y1377797D03* +G01* +X1201290Y1439316D03* +G01* +X-171833Y5810961D03* +G01* +X6164425Y4256912D03* +G01* +X5744537Y3016834D03* +G01* +X4761532Y3937838D03* +G01* +X5881443Y4489907D03* +G01* +X5744537Y2761843D03* +G01* +X4761532Y4092854D03* +G01* +X6919541Y4631842D03* +G01* +X7713545Y4632832D03* +G01* +X7651544Y4702835D03* +G01* +X6849539Y4703851D03* +G01* +X7586545Y4768850D03* +G01* +X6774533Y4768850D03* +G01* +X7515527Y4838852D03* +G01* +X6716544Y4838852D03* +G01* +X457426Y4553838D03* +G01* +X7806535Y4586833D03* +G01* +X4792418Y3173729D03* +G01* +X4787922Y2158237D03* +G01* +X4789269Y2412111D03* +G01* +X4789523Y2919856D03* +G01* +X4789675Y2665984D03* +G01* +X6079436Y5135905D03* +G01* +X5855535Y2412847D03* +G01* +X6830438Y5201894D03* +G01* +X5962444Y5267909D03* +G01* +X5826427Y5332907D03* +G01* +X9823269Y6030595D03* +G01* +X9822126Y6140450D03* +G01* +X9822533Y6248857D03* +G01* +X9200791Y6030595D03* +G01* +X5835926Y2158237D03* +G01* +X9195534Y6138849D03* +G01* +X9195534Y6248857D03* +G01* +X6359420Y5549900D03* +G01* +X6006437Y5407913D03* +G01* +X7216442Y5479897D03* +D28* +G01* +X1480411Y6408216D03* +D29* +G01* +X2127399Y1828850D03* +D26* +G01* +X8356292Y2908096D03* +G01* +X8353168Y1828952D03* +G01* +X7314791Y2444800D03* +G01* +X4813145Y1828850D03* +G01* +X9112653Y5923965D03* +G01* +X7879128Y1994788D03* +D31* +G01* +X2826128Y4818989D03* +D32* +G01* +X704796Y4818989D03* +D31* +G01* +X2826128Y2697683D03* +D26* +G01* +X2161131Y4076801D03* +G01* +X4032425Y3132912D03* +G01* +X4034431Y2982899D03* +G01* +X4034431Y2832912D03* +G01* +X4038445Y2672918D03* +G01* +X4038445Y2510917D03* +G01* +X-261571Y3432911D03* +G01* +X-261571Y3582898D03* +G01* +X-261571Y3782898D03* +G01* +X-261571Y3932910D03* +G01* +X2088436Y5973902D03* +G01* +X1998444Y5874918D03* +G01* +X1902432Y5772912D03* +G01* +X2508450Y6213906D03* +G01* +X2489426Y6072911D03* +G01* +X2388435Y5961913D03* +G01* +X2263442Y5862904D03* +G01* +X2148431Y5762904D03* +D28* +G01* +X10112169Y543966D03* +G01* +X9096169Y659968D03* +G01* +X9986159Y659968D03* +G01* +X8963174Y545947D03* +D26* +G01* +X9096169Y1543964D03* +G01* +X9096169Y1828952D03* +G01* +X9604169Y1070965D03* +G01* +X9345165Y1563954D03* +G01* +X-251437Y5112232D03* +G01* +X-259438Y4604232D03* +G01* +X-270436Y5036235D03* +G01* +X429562Y5672226D03* +G01* +X-111432Y4804232D03* +M02* diff --git a/hardware/portapack_h4m/h4-gerbers/Gerber_BottomPasteMaskLayer.GBP b/hardware/portapack_h4m/h4-gerbers/Gerber_BottomPasteMaskLayer.GBP new file mode 100644 index 000000000..e3c077a34 --- /dev/null +++ b/hardware/portapack_h4m/h4-gerbers/Gerber_BottomPasteMaskLayer.GBP @@ -0,0 +1,22 @@ +G04 Layer: BottomPasteMaskLayer* +G04 EasyEDA v6.5.46, 2025-01-01 16:01:39* +G04 1acd7fc2553046b79c71bda98b4923fc,10* +G04 Gerber Generator version 0.2* +G04 Scale: 100 percent, Rotated: No, Reflected: No * +G04 Dimensions in millimeters * +G04 leading zeros omitted , absolute positions ,4 integer and 5 decimal * +%FSLAX45Y45*% +%MOMM*% + +%AMMACRO1*21,1,$1,$2,0,0,$3*% +%ADD10MACRO1,5X2.3X135.0000*% +%ADD11MACRO1,5X2.3X-10.0001*% + +%LPD*% +D10* +G01* +X209293Y4568317D03* +D11* +G01* +X32306Y3442335D03* +M02* diff --git a/hardware/portapack_h4m/h4-gerbers/Gerber_BottomSilkscreenLayer.GBO b/hardware/portapack_h4m/h4-gerbers/Gerber_BottomSilkscreenLayer.GBO new file mode 100644 index 000000000..dacfa07b4 --- /dev/null +++ b/hardware/portapack_h4m/h4-gerbers/Gerber_BottomSilkscreenLayer.GBO @@ -0,0 +1,2549 @@ +G04 Layer: BottomSilkscreenLayer* +G04 EasyEDA v6.5.46, 2025-01-01 16:01:39* +G04 1acd7fc2553046b79c71bda98b4923fc,10* +G04 Gerber Generator version 0.2* +G04 Scale: 100 percent, Rotated: No, Reflected: No * +G04 Dimensions in millimeters * +G04 leading zeros omitted , absolute positions ,4 integer and 5 decimal * +%FSLAX45Y45*% +%MOMM*% + +%ADD10C,0.1200*% +%ADD11C,0.1800*% +%ADD12C,0.3000*% +%ADD13C,0.2540*% +%ADD14C,0.3048*% +%ADD15C,0.0149*% + +%LPD*% +G36* +X4839970Y761847D02* +G01* +X4833721Y761593D01* +X4827574Y760984D01* +X4821580Y759968D01* +X4815687Y758545D01* +X4809998Y756767D01* +X4804460Y754634D01* +X4799076Y752195D01* +X4793894Y749350D01* +X4788966Y746252D01* +X4784191Y742797D01* +X4779670Y739089D01* +X4775454Y735076D01* +X4771440Y730808D01* +X4767732Y726338D01* +X4764278Y721563D01* +X4761179Y716635D01* +X4758334Y711454D01* +X4755896Y706069D01* +X4753762Y700532D01* +X4751984Y694791D01* +X4750562Y688949D01* +X4749546Y682955D01* +X4748885Y676808D01* +X4748682Y670560D01* +X4748885Y664311D01* +X4749546Y658164D01* +X4750562Y652170D01* +X4751984Y646277D01* +X4753762Y640588D01* +X4755896Y635000D01* +X4758334Y629666D01* +X4759840Y626922D01* +X4839970Y626922D01* +X4839970Y720648D01* +X4840782Y727202D01* +X4843322Y731875D01* +X4847539Y734720D01* +X4853432Y735634D01* +X4858867Y734669D01* +X4862728Y731824D01* +X4865065Y727049D01* +X4865878Y720394D01* +X4865878Y665276D01* +X4866132Y660196D01* +X4884674Y722934D01* +X4885842Y726236D01* +X4887112Y728980D01* +X4888534Y731164D01* +X4890008Y732840D01* +X4891786Y734060D01* +X4893919Y734923D01* +X4896358Y735482D01* +X4899152Y735634D01* +X4901996Y735482D01* +X4904486Y734923D01* +X4906568Y734060D01* +X4908296Y732840D01* +X4909870Y731266D01* +X4911242Y729081D01* +X4912512Y726338D01* +X4930902Y665276D01* +X4932172Y660196D01* +X4932426Y665276D01* +X4932426Y720394D01* +X4933238Y727049D01* +X4935626Y731824D01* +X4939690Y734669D01* +X4945380Y735634D01* +X4951018Y734720D01* +X4955082Y731875D01* +X4957521Y727202D01* +X4958334Y720648D01* +X4958232Y623112D01* +X4957946Y619556D01* +X4973828Y619556D01* +X4973828Y720394D01* +X4974640Y727151D01* +X4977180Y732028D01* +X4981397Y734923D01* +X4987290Y735888D01* +X4990388Y735634D01* +X4993132Y734872D01* +X4995468Y733602D01* +X4997450Y731824D01* +X4998974Y729488D01* +X5000091Y726744D01* +X5000752Y723646D01* +X5001006Y720140D01* +X5001006Y671626D01* +X5012944Y671626D01* +X5013045Y680212D01* +X5013452Y687628D01* +X5014061Y693928D01* +X5014976Y699058D01* +X5016195Y703529D01* +X5017820Y707898D01* +X5019852Y712063D01* +X5022342Y716076D01* +X5025999Y720648D01* +X5030114Y724611D01* +X5034737Y728014D01* +X5039868Y730758D01* +X5045405Y732891D01* +X5051450Y734415D01* +X5058003Y735330D01* +X5065014Y735634D01* +X5072684Y735228D01* +X5079438Y734110D01* +X5248910Y734110D01* +X5248910Y618540D01* +X5367782Y618540D01* +X5367883Y725373D01* +X5368290Y728014D01* +X5369153Y729792D01* +X5370830Y731570D01* +X5372709Y732840D01* +X5374894Y733602D01* +X5377535Y734009D01* +X5444490Y734110D01* +X5450382Y733399D01* +X5454548Y731215D01* +X5457088Y727557D01* +X5457652Y724204D01* +X5459222Y724204D01* +X5459476Y726541D01* +X5460238Y728776D01* +X5461508Y730859D01* +X5463286Y732840D01* +X5465368Y734415D01* +X5467705Y735533D01* +X5470194Y736193D01* +X5472938Y736396D01* +X5476240Y735939D01* +X5479288Y734568D01* +X5482082Y732231D01* +X5484622Y729030D01* +X5506466Y693470D01* +X5508498Y691184D01* +X5510276Y693470D01* +X5532374Y729030D01* +X5534863Y732231D01* +X5537606Y734568D01* +X5540603Y735939D01* +X5543804Y736396D01* +X5546598Y736193D01* +X5549188Y735533D01* +X5551525Y734415D01* +X5553710Y732840D01* +X5555488Y730961D01* +X5556758Y728929D01* +X5557520Y726643D01* +X5557774Y724204D01* +X5557520Y722477D01* +X5556808Y720394D01* +X5553964Y715060D01* +X5525008Y669086D01* +X5524246Y666800D01* +X5524398Y665937D01* +X5551474Y623366D01* +X5552846Y619760D01* +X5553252Y621538D01* +X5553913Y623112D01* +X5554827Y624484D01* +X5555996Y625652D01* +X5557824Y626872D01* +X5560060Y627735D01* +X5562650Y628294D01* +X5583326Y628497D01* +X5584596Y628853D01* +X5585256Y629564D01* +X5585663Y630986D01* +X5585714Y723188D01* +X5585917Y726338D01* +X5586628Y729081D01* +X5587847Y731520D01* +X5589524Y733602D01* +X5591454Y735279D01* +X5593740Y736447D01* +X5596432Y737158D01* +X5599430Y737412D01* +X5602224Y737209D01* +X5604764Y736549D01* +X5607050Y735431D01* +X5609082Y733856D01* +X5610860Y731977D01* +X5612130Y729843D01* +X5612892Y727506D01* +X5613146Y724966D01* +X5613247Y630682D01* +X5613654Y629716D01* +X5614720Y629158D01* +X5616448Y628954D01* +X5634990Y628954D01* +X5640324Y628243D01* +X5644134Y626059D01* +X5646420Y622401D01* +X5647182Y617270D01* +X5646318Y612292D01* +X5643880Y608685D01* +X5639714Y606552D01* +X5633974Y605840D01* +X5567172Y605840D01* +X5561584Y606399D01* +X5557367Y608025D01* +X5554472Y610717D01* +X5552948Y614527D01* +X5551728Y611073D01* +X5549392Y608126D01* +X5547360Y606552D01* +X5545074Y605485D01* +X5542534Y604774D01* +X5539740Y604570D01* +X5536488Y604977D01* +X5533694Y606094D01* +X5531307Y608025D01* +X5529326Y610666D01* +X5510530Y640638D01* +X5508498Y643432D01* +X5506466Y640638D01* +X5487670Y610666D01* +X5485587Y608025D01* +X5483148Y606094D01* +X5480354Y604977D01* +X5477256Y604570D01* +X5474512Y604774D01* +X5472023Y605485D01* +X5469686Y606552D01* +X5467604Y608126D01* +X5465927Y610006D01* +X5464708Y612140D01* +X5463997Y614476D01* +X5463794Y617016D01* +X5463946Y618896D01* +X5465470Y623214D01* +X5466842Y625652D01* +X5491226Y663752D01* +X5492953Y666953D01* +X5492750Y667816D01* +X5491734Y669086D01* +X5461152Y718413D01* +X5460034Y720598D01* +X5459272Y723138D01* +X5459222Y724204D01* +X5457652Y724204D01* +X5457952Y722426D01* +X5457748Y719480D01* +X5457088Y717042D01* +X5456072Y715060D01* +X5454650Y713536D01* +X5452516Y712419D01* +X5449824Y711657D01* +X5446420Y711149D01* +X5442458Y710996D01* +X5397754Y710996D01* +X5396636Y710793D01* +X5395823Y710184D01* +X5395366Y709117D01* +X5395214Y707694D01* +X5395214Y683818D01* +X5395417Y682396D01* +X5396077Y681329D01* +X5397195Y680720D01* +X5398770Y680516D01* +X5437886Y680516D01* +X5443778Y679805D01* +X5447944Y677672D01* +X5450484Y674065D01* +X5451348Y669086D01* +X5450382Y663752D01* +X5447588Y659942D01* +X5442915Y657656D01* +X5436362Y656894D01* +X5397449Y656844D01* +X5396077Y656488D01* +X5395468Y655777D01* +X5395214Y654659D01* +X5395214Y631748D01* +X5395417Y630529D01* +X5396077Y629666D01* +X5397195Y629107D01* +X5398770Y628954D01* +X5441188Y628954D01* +X5444947Y628802D01* +X5448147Y628345D01* +X5450789Y627532D01* +X5452872Y626414D01* +X5454294Y624789D01* +X5455310Y622808D01* +X5455970Y620369D01* +X5456174Y617524D01* +X5455208Y612394D01* +X5452262Y608787D01* +X5447436Y606552D01* +X5440680Y605840D01* +X5378500Y605891D01* +X5373624Y606348D01* +X5371896Y607314D01* +X5370322Y608634D01* +X5369204Y610412D01* +X5368391Y612648D01* +X5367934Y615340D01* +X5367782Y618540D01* +X5248910Y618540D01* +X5248910Y606094D01* +X5223256Y606094D01* +X5223256Y734110D01* +X5079746Y734060D01* +X5086146Y732129D01* +X5091938Y729437D01* +X5097068Y725932D01* +X5101590Y721614D01* +X5105450Y716584D01* +X5108702Y710742D01* +X5110226Y707288D01* +X5111343Y704037D01* +X5112004Y700938D01* +X5112258Y698042D01* +X5112004Y695045D01* +X5111292Y692404D01* +X5110073Y690067D01* +X5108448Y688136D01* +X5106517Y686562D01* +X5104282Y685495D01* +X5101793Y684784D01* +X5099050Y684580D01* +X5095494Y684987D01* +X5092496Y686155D01* +X5090007Y688136D01* +X5088128Y690930D01* +X5085842Y696518D01* +X5082438Y703529D01* +X5077815Y708507D01* +X5072024Y711504D01* +X5065014Y712520D01* +X5062118Y712317D01* +X5059273Y711758D01* +X5056530Y710793D01* +X5051298Y707999D01* +X5049113Y706323D01* +X5047234Y704443D01* +X5045710Y702360D01* +X5044389Y699770D01* +X5043322Y697026D01* +X5041900Y691184D01* +X5040934Y683971D01* +X5040630Y674420D01* +X5040934Y662279D01* +X5041950Y652322D01* +X5043627Y644499D01* +X5045964Y638860D01* +X5047386Y636676D01* +X5049164Y634695D01* +X5051348Y632866D01* +X5053838Y631240D01* +X5056530Y630021D01* +X5059324Y629158D01* +X5062270Y628599D01* +X5065268Y628446D01* +X5070094Y628904D01* +X5074259Y630224D01* +X5077714Y632460D01* +X5080508Y635558D01* +X5084826Y641908D01* +X5087264Y645109D01* +X5090160Y647446D01* +X5093360Y648817D01* +X5097018Y649274D01* +X5099761Y649071D01* +X5102250Y648411D01* +X5104485Y647293D01* +X5106416Y645718D01* +X5107940Y643686D01* +X5109057Y641451D01* +X5109718Y639013D01* +X5109972Y636320D01* +X5109768Y633730D01* +X5109108Y631037D01* +X5108092Y628294D01* +X5106670Y625398D01* +X5104841Y622554D01* +X5102758Y619861D01* +X5100421Y617372D01* +X5097780Y614984D01* +X5091176Y610412D01* +X5083810Y607161D01* +X5075682Y605231D01* +X5066792Y604570D01* +X5059324Y604926D01* +X5052415Y605891D01* +X5046065Y607517D01* +X5040274Y609854D01* +X5035092Y612800D01* +X5030419Y616407D01* +X5026355Y620725D01* +X5022850Y625652D01* +X5020259Y630174D01* +X5018125Y634847D01* +X5016449Y639724D01* +X5015230Y644702D01* +X5014214Y650189D01* +X5013502Y656539D01* +X5013045Y663651D01* +X5012944Y671626D01* +X5001006Y671626D01* +X5001006Y618286D01* +X5000091Y611936D01* +X4997450Y607415D01* +X4992979Y604723D01* +X4986782Y603808D01* +X4981092Y604774D01* +X4977028Y607771D01* +X4974640Y612648D01* +X4973828Y619556D01* +X4957946Y619556D01* +X4957622Y617016D01* +X4957064Y614730D01* +X4956149Y612698D01* +X4954930Y610920D01* +X4953457Y609396D01* +X4948885Y606145D01* +X4945786Y604723D01* +X4942433Y603859D01* +X4938776Y603554D01* +X4934915Y603808D01* +X4931460Y604621D01* +X4928412Y605993D01* +X4925822Y607872D01* +X4923536Y610514D01* +X4921504Y613765D01* +X4919726Y617728D01* +X4918202Y622350D01* +X4900422Y684326D01* +X4899152Y688136D01* +X4898390Y684326D01* +X4880102Y622350D01* +X4878578Y617728D01* +X4876850Y613765D01* +X4874869Y610514D01* +X4872736Y607872D01* +X4870094Y605993D01* +X4867046Y604621D01* +X4863642Y603808D01* +X4859782Y603554D01* +X4855972Y603859D01* +X4852517Y604723D01* +X4849368Y606145D01* +X4844796Y609600D01* +X4843373Y611225D01* +X4842256Y613054D01* +X4840782Y617270D01* +X4840020Y623214D01* +X4839970Y626922D01* +X4759840Y626922D01* +X4764278Y619506D01* +X4767732Y614781D01* +X4771440Y610260D01* +X4775454Y605993D01* +X4779670Y602030D01* +X4784191Y598271D01* +X4788966Y594868D01* +X4793894Y591718D01* +X4799076Y588924D01* +X4804460Y586435D01* +X4809998Y584301D01* +X4815687Y582523D01* +X4821580Y581152D01* +X4827574Y580085D01* +X4833721Y579475D01* +X4839970Y579272D01* +X5647182Y579272D01* +X5653430Y579475D01* +X5659577Y580085D01* +X5665571Y581152D01* +X5671464Y582523D01* +X5677154Y584301D01* +X5682691Y586435D01* +X5688076Y588924D01* +X5693257Y591718D01* +X5698236Y594868D01* +X5702960Y598271D01* +X5707481Y602030D01* +X5711748Y605993D01* +X5715711Y610260D01* +X5719419Y614781D01* +X5722874Y619506D01* +X5726023Y624484D01* +X5728817Y629666D01* +X5731306Y635000D01* +X5733440Y640588D01* +X5735218Y646277D01* +X5736590Y652170D01* +X5737606Y658164D01* +X5738266Y664311D01* +X5738469Y670560D01* +X5738266Y676808D01* +X5737606Y682955D01* +X5736590Y688949D01* +X5735218Y694791D01* +X5733440Y700532D01* +X5731306Y706069D01* +X5728817Y711454D01* +X5726023Y716635D01* +X5722874Y721563D01* +X5719419Y726338D01* +X5715711Y730808D01* +X5711748Y735076D01* +X5707481Y739089D01* +X5702960Y742797D01* +X5698236Y746252D01* +X5693257Y749350D01* +X5688076Y752195D01* +X5682691Y754634D01* +X5677154Y756767D01* +X5671464Y758545D01* +X5665571Y759968D01* +X5659577Y760984D01* +X5653430Y761593D01* +X5647182Y761847D01* +G37* +G36* +X4969764Y6913372D02* +G01* +X4963515Y6913168D01* +X4957368Y6912559D01* +X4951374Y6911543D01* +X4945532Y6910120D01* +X4939792Y6908342D01* +X4934254Y6906209D01* +X4928870Y6903720D01* +X4923688Y6900925D01* +X4918760Y6897776D01* +X4913985Y6894372D01* +X4909515Y6890664D01* +X4905248Y6886651D01* +X4901234Y6882384D01* +X4897526Y6877862D01* +X4894072Y6873138D01* +X4890973Y6868159D01* +X4888128Y6863029D01* +X4885690Y6857644D01* +X4883556Y6852107D01* +X4881778Y6846366D01* +X4880356Y6840524D01* +X4879340Y6834479D01* +X4878730Y6828383D01* +X4878476Y6822135D01* +X4878730Y6815836D01* +X4879340Y6809740D01* +X4880356Y6803694D01* +X4881778Y6797852D01* +X4883556Y6792112D01* +X4885690Y6786575D01* +X4888128Y6781190D01* +X4890973Y6776059D01* +X4893407Y6772148D01* +X4969764Y6772148D01* +X4969764Y6873494D01* +X4970627Y6879590D01* +X4973218Y6883958D01* +X4977587Y6886600D01* +X4983734Y6887464D01* +X4989728Y6886651D01* +X4993995Y6884162D01* +X4996586Y6880047D01* +X4997450Y6874256D01* +X4997551Y6841490D01* +X4997958Y6840220D01* +X4999228Y6839813D01* +X5028184Y6839712D01* +X5035753Y6839000D01* +X5042560Y6836867D01* +X5048605Y6833260D01* +X5053838Y6828281D01* +X5058271Y6821678D01* +X5066792Y6821678D01* +X5066893Y6830466D01* +X5067300Y6838188D01* +X5067909Y6844741D01* +X5068824Y6850125D01* +X5070043Y6854850D01* +X5071770Y6859320D01* +X5074005Y6863588D01* +X5076698Y6867652D01* +X5080355Y6872325D01* +X5084521Y6876440D01* +X5089194Y6879844D01* +X5094325Y6882688D01* +X5099964Y6884873D01* +X5106111Y6886448D01* +X5112766Y6887413D01* +X5119878Y6887718D01* +X5126888Y6887362D01* +X5133492Y6886397D01* +X5139740Y6884720D01* +X5145532Y6882384D01* +X5150916Y6879539D01* +X5155692Y6876135D01* +X5159806Y6872173D01* +X5163312Y6867652D01* +X5165852Y6863384D01* +X5167985Y6859066D01* +X5169662Y6854647D01* +X5170932Y6850125D01* +X5171795Y6845046D01* +X5172456Y6838950D01* +X5172964Y6823709D01* +X5172456Y6806438D01* +X5171795Y6799478D01* +X5170932Y6793738D01* +X5169662Y6788708D01* +X5167985Y6784035D01* +X5165852Y6779666D01* +X5163312Y6775703D01* +X5159552Y6770979D01* +X5157866Y6769353D01* +X5177282Y6769353D01* +X5177536Y6772909D01* +X5201158Y6871208D01* +X5202986Y6876796D01* +X5204968Y6880859D01* +X5207406Y6883552D01* +X5208981Y6884720D01* +X5212791Y6886549D01* +X5214924Y6887209D01* +X5219700Y6887718D01* +X5222392Y6887565D01* +X5224881Y6887108D01* +X5227218Y6886397D01* +X5231231Y6884314D01* +X5232806Y6882942D01* +X5234127Y6881368D01* +X5235194Y6879590D01* +X5236565Y6876034D01* +X5237734Y6871462D01* +X5249164Y6814058D01* +X5250942Y6807708D01* +X5263642Y6871462D01* +X5265064Y6877151D01* +X5266944Y6881114D01* +X5268061Y6882536D01* +X5271109Y6884974D01* +X5274970Y6886702D01* +X5279288Y6887616D01* +X5281676Y6887718D01* +X5286908Y6887209D01* +X5291328Y6885686D01* +X5294782Y6883146D01* +X5297424Y6879590D01* +X5298541Y6877100D01* +X5300218Y6871208D01* +X5324195Y6772300D01* +X5324314Y6770116D01* +X5331714Y6770116D01* +X5331815Y6876897D01* +X5332222Y6879590D01* +X5333085Y6881368D01* +X5334762Y6883146D01* +X5336641Y6884416D01* +X5338826Y6885178D01* +X5341467Y6885533D01* +X5345430Y6885686D01* +X5408422Y6885686D01* +X5414314Y6884924D01* +X5418480Y6882739D01* +X5421020Y6879081D01* +X5421884Y6874002D01* +X5421680Y6871055D01* +X5421020Y6868566D01* +X5420004Y6866585D01* +X5418582Y6865112D01* +X5416448Y6863994D01* +X5413756Y6863181D01* +X5410352Y6862724D01* +X5406390Y6862572D01* +X5361686Y6862572D01* +X5360466Y6862368D01* +X5359552Y6861759D01* +X5359044Y6860692D01* +X5358892Y6859270D01* +X5358892Y6835394D01* +X5359095Y6833920D01* +X5359806Y6832904D01* +X5361025Y6832295D01* +X5362702Y6832092D01* +X5401818Y6832092D01* +X5407710Y6831380D01* +X5411876Y6829196D01* +X5414416Y6825640D01* +X5415280Y6820662D01* +X5414314Y6815328D01* +X5411520Y6811518D01* +X5406847Y6809231D01* +X5400294Y6808470D01* +X5361381Y6808419D01* +X5360009Y6808012D01* +X5359400Y6807352D01* +X5359146Y6806234D01* +X5359146Y6783324D01* +X5359349Y6782104D01* +X5359958Y6781241D01* +X5360974Y6780682D01* +X5362448Y6780530D01* +X5405120Y6780530D01* +X5408879Y6780377D01* +X5412079Y6779869D01* +X5414721Y6779107D01* +X5416804Y6777990D01* +X5418226Y6776364D01* +X5419242Y6774383D01* +X5419902Y6771944D01* +X5420106Y6769100D01* +X5419886Y6767931D01* +X5432298Y6767931D01* +X5432298Y6874002D01* +X5433161Y6880199D01* +X5435752Y6884670D01* +X5440121Y6887311D01* +X5446268Y6888225D01* +X5452008Y6887362D01* +X5456174Y6884822D01* +X5458612Y6880656D01* +X5459476Y6874764D01* +X5459476Y6839712D01* +X5459679Y6838137D01* +X5460288Y6837019D01* +X5461304Y6836359D01* +X5462778Y6836156D01* +X5475122Y6836257D01* +X5476240Y6836664D01* +X5477002Y6837476D01* +X5498846Y6880098D01* +X5501081Y6883653D01* +X5503824Y6886194D01* +X5507075Y6887718D01* +X5510784Y6888225D01* +X5513578Y6887972D01* +X5516168Y6887260D01* +X5518556Y6886092D01* +X5520690Y6884416D01* +X5522468Y6882434D01* +X5523738Y6880352D01* +X5524500Y6878116D01* +X5524754Y6875780D01* +X5524601Y6874052D01* +X5523433Y6870395D01* +X5503418Y6832600D01* +X5503164Y6831838D01* +X5503926Y6830822D01* +X5505958Y6830314D01* +X5510276Y6827875D01* +X5514136Y6824929D01* +X5517540Y6821373D01* +X5520436Y6817359D01* +X5522772Y6812838D01* +X5524398Y6808012D01* +X5525414Y6802831D01* +X5525770Y6797294D01* +X5524957Y6787896D01* +X5522569Y6779514D01* +X5518607Y6772148D01* +X5513070Y6765798D01* +X5510377Y6763562D01* +X5507736Y6761734D01* +X5505043Y6760260D01* +X5502402Y6759194D01* +X5499506Y6758381D01* +X5496102Y6757822D01* +X5487924Y6757416D01* +X5441950Y6757517D01* +X5438902Y6757924D01* +X5436768Y6758838D01* +X5435092Y6760209D01* +X5433618Y6761835D01* +X5432806Y6763766D01* +X5432298Y6767931D01* +X5419886Y6767931D01* +X5419140Y6763969D01* +X5416194Y6760311D01* +X5411368Y6758127D01* +X5404612Y6757416D01* +X5340248Y6757517D01* +X5337556Y6757924D01* +X5335778Y6758838D01* +X5334000Y6760209D01* +X5332984Y6761937D01* +X5332272Y6764172D01* +X5331866Y6766915D01* +X5331714Y6770116D01* +X5324314Y6770116D01* +X5324094Y6766661D01* +X5323382Y6764172D01* +X5322214Y6761937D01* +X5320538Y6759956D01* +X5318404Y6758279D01* +X5316016Y6757111D01* +X5313426Y6756349D01* +X5310632Y6756146D01* +X5305552Y6756857D01* +X5301589Y6758990D01* +X5298694Y6762546D01* +X5296916Y6767575D01* +X5283708Y6833362D01* +X5282438Y6842759D01* +X5281168Y6833362D01* +X5268976Y6771640D01* +X5266690Y6764629D01* +X5262930Y6759651D01* +X5257698Y6756603D01* +X5250942Y6755638D01* +X5244084Y6756603D01* +X5238750Y6759651D01* +X5234940Y6764629D01* +X5232654Y6771640D01* +X5220462Y6833362D01* +X5219192Y6842759D01* +X5217922Y6833362D01* +X5204460Y6767575D01* +X5202834Y6762546D01* +X5200040Y6758990D01* +X5196128Y6756857D01* +X5190998Y6756146D01* +X5188102Y6756349D01* +X5185460Y6757111D01* +X5183124Y6758279D01* +X5181092Y6759956D01* +X5179415Y6761886D01* +X5178196Y6764070D01* +X5177485Y6766559D01* +X5177282Y6769353D01* +X5157866Y6769353D01* +X5155336Y6766915D01* +X5150662Y6763461D01* +X5145430Y6760616D01* +X5139791Y6758431D01* +X5133644Y6756857D01* +X5126990Y6755942D01* +X5119878Y6755638D01* +X5112664Y6755942D01* +X5106009Y6756857D01* +X5099862Y6758431D01* +X5094224Y6760616D01* +X5089042Y6763461D01* +X5084419Y6766915D01* +X5080304Y6770979D01* +X5076698Y6775703D01* +X5073904Y6780174D01* +X5071618Y6784644D01* +X5069840Y6789166D01* +X5068570Y6793738D01* +X5067757Y6799021D01* +X5067198Y6805422D01* +X5066792Y6821678D01* +X5058271Y6821678D01* +X5061051Y6815175D01* +X5062880Y6807200D01* +X5063490Y6798309D01* +X5062626Y6788048D01* +X5060188Y6779209D01* +X5056022Y6771690D01* +X5050282Y6765544D01* +X5047691Y6763410D01* +X5045049Y6761683D01* +X5042357Y6760260D01* +X5039614Y6759194D01* +X5036616Y6758381D01* +X5033162Y6757822D01* +X5025136Y6757416D01* +X4981600Y6757517D01* +X4977892Y6757924D01* +X4975250Y6758838D01* +X4973066Y6760209D01* +X4971389Y6762089D01* +X4970526Y6764274D01* +X4969916Y6767220D01* +X4969764Y6772148D01* +X4893407Y6772148D01* +X4897526Y6766356D01* +X4901234Y6761835D01* +X4905248Y6757568D01* +X4909515Y6753555D01* +X4913985Y6749846D01* +X4918760Y6746443D01* +X4923688Y6743293D01* +X4928870Y6740499D01* +X4934254Y6738010D01* +X4939792Y6735876D01* +X4945532Y6734098D01* +X4951374Y6732676D01* +X4957368Y6731660D01* +X4963515Y6731050D01* +X4969764Y6730847D01* +X5525770Y6730847D01* +X5532018Y6731050D01* +X5538165Y6731660D01* +X5544159Y6732676D01* +X5550001Y6734098D01* +X5555742Y6735876D01* +X5561279Y6738010D01* +X5566664Y6740499D01* +X5571845Y6743293D01* +X5576773Y6746443D01* +X5581548Y6749846D01* +X5586018Y6753555D01* +X5590286Y6757568D01* +X5594299Y6761835D01* +X5598007Y6766356D01* +X5601462Y6771081D01* +X5604560Y6776059D01* +X5607354Y6781190D01* +X5609844Y6786575D01* +X5611977Y6792112D01* +X5613755Y6797852D01* +X5615178Y6803694D01* +X5616194Y6809740D01* +X5616803Y6815836D01* +X5617006Y6822135D01* +X5616803Y6828383D01* +X5616194Y6834479D01* +X5615178Y6840524D01* +X5613755Y6846366D01* +X5611977Y6852107D01* +X5609844Y6857644D01* +X5607354Y6863029D01* +X5604560Y6868159D01* +X5601462Y6873138D01* +X5598007Y6877862D01* +X5594299Y6882384D01* +X5590286Y6886651D01* +X5586018Y6890664D01* +X5581548Y6894372D01* +X5576773Y6897776D01* +X5571845Y6900925D01* +X5566664Y6903720D01* +X5561279Y6906209D01* +X5555742Y6908342D01* +X5550001Y6910120D01* +X5544159Y6911543D01* +X5538165Y6912559D01* +X5532018Y6913168D01* +X5525770Y6913372D01* +G37* +G36* +X5119878Y6864096D02* +G01* +X5112816Y6863334D01* +X5106822Y6861098D01* +X5101996Y6857390D01* +X5098288Y6852158D01* +X5096256Y6847027D01* +X5095595Y6844588D01* +X5094884Y6839153D01* +X5094528Y6828840D01* +X5094528Y6814972D01* +X5094884Y6805117D01* +X5095697Y6799072D01* +X5097221Y6793738D01* +X5098288Y6791198D01* +X5099862Y6788658D01* +X5101844Y6786372D01* +X5104180Y6784340D01* +X5106924Y6782562D01* +X5109921Y6781088D01* +X5113070Y6780072D01* +X5116372Y6779463D01* +X5119878Y6779259D01* +X5126939Y6779971D01* +X5132882Y6782257D01* +X5137708Y6785965D01* +X5141468Y6791198D01* +X5143652Y6796328D01* +X5144363Y6798767D01* +X5144770Y6801103D01* +X5145125Y6808673D01* +X5145278Y6821678D01* +X5145074Y6833920D01* +X5144516Y6841744D01* +X5143296Y6847078D01* +X5141214Y6852412D01* +X5139639Y6855053D01* +X5137708Y6857339D01* +X5135422Y6859371D01* +X5132832Y6861048D01* +X5129936Y6862368D01* +X5126786Y6863334D01* +X5123434Y6863892D01* +G37* +G36* +X5000752Y6816598D02* +G01* +X4997958Y6816090D01* +X4997551Y6815581D01* +X4997450Y6784340D01* +X4997602Y6782562D01* +X4998212Y6781292D01* +X4999278Y6780682D01* +X5001006Y6780530D01* +X5018278Y6780530D01* +X5022646Y6780784D01* +X5026304Y6781596D01* +X5029352Y6782968D01* +X5031740Y6784848D01* +X5033619Y6787235D01* +X5034940Y6790283D01* +X5035753Y6794093D01* +X5036058Y6798564D01* +X5034991Y6806438D01* +X5031790Y6812076D01* +X5026456Y6815480D01* +X5019040Y6816598D01* +G37* +G36* +X5462524Y6812534D02* +G01* +X5460644Y6812381D01* +X5459730Y6812025D01* +X5459526Y6811365D01* +X5459476Y6785102D01* +X5459679Y6783070D01* +X5460288Y6781647D01* +X5461304Y6780784D01* +X5462778Y6780530D01* +X5479796Y6780530D01* +X5487670Y6781546D01* +X5493308Y6784644D01* +X5496712Y6789826D01* +X5497830Y6797040D01* +X5496661Y6803796D01* +X5493258Y6808673D01* +X5487517Y6811568D01* +X5479542Y6812534D01* +G37* +G36* +X6933844Y533806D02* +G01* +X6930186Y531418D01* +X6929475Y527710D01* +X6929554Y455676D01* +X7080097Y455676D01* +X7081570Y462584D01* +X7098436Y462584D01* +X7127798Y465175D01* +X7128764Y463905D01* +X7128764Y377748D01* +X7132066Y373837D01* +X7300823Y372922D01* +X7311390Y368655D01* +X7321854Y366623D01* +X7325055Y362356D01* +X7331354Y360070D01* +X7333386Y355498D01* +X7337044Y354533D01* +X7339431Y349351D01* +X7342581Y347522D01* +X7344409Y341934D01* +X7347051Y340156D01* +X7348423Y333603D01* +X7352588Y327660D01* +X7355382Y312978D01* +X7355382Y308203D01* +X7357465Y294894D01* +X7355579Y288899D01* +X7381494Y288899D01* +X7381900Y398119D01* +X7385405Y407060D01* +X7385405Y411124D01* +X7392416Y429310D01* +X7397191Y436067D01* +X7404557Y445566D01* +X7405878Y445566D01* +X7407706Y451104D01* +X7414818Y452983D01* +X7418933Y457403D01* +X7424013Y459638D01* +X7595768Y459943D01* +X7602169Y458673D01* +X7608366Y458520D01* +X7612634Y452628D01* +X7619085Y451815D01* +X7621574Y447395D01* +X7627975Y443890D01* +X7629906Y439166D01* +X7632496Y438150D01* +X7634376Y433527D01* +X7638186Y430072D01* +X7640421Y420928D01* +X7643875Y418439D01* +X7645298Y411276D01* +X7646517Y393293D01* +X7648041Y383540D01* +X7647431Y289560D01* +X7643825Y274167D01* +X7640828Y270357D01* +X7639253Y261366D01* +X7637475Y259588D01* +X7634731Y256184D01* +X7628940Y247243D01* +X7618679Y235051D01* +X7613040Y233832D01* +X7610242Y230073D01* +X7677099Y230073D01* +X7677810Y458114D01* +X7678572Y463296D01* +X7720380Y462584D01* +X7722412Y456488D01* +X7723124Y453237D01* +X7722971Y396494D01* +X7723378Y390042D01* +X7722362Y378510D01* +X7728559Y371754D01* +X7880502Y371957D01* +X7893303Y372364D01* +X7895539Y373634D01* +X7897418Y378206D01* +X7897418Y458266D01* +X7898739Y462991D01* +X7934756Y463143D01* +X7939176Y462178D01* +X7941411Y457301D01* +X7941919Y382727D01* +X7940294Y363270D01* +X7939328Y360070D01* +X7936382Y355447D01* +X7936382Y353212D01* +X7931353Y347065D01* +X7930184Y340410D01* +X7931708Y335737D01* +X7934401Y332689D01* +X7935671Y327660D01* +X7937042Y320802D01* +X7940497Y315569D01* +X7940497Y286054D01* +X7937753Y282244D01* +X7937454Y280619D01* +X7964576Y280619D01* +X7965897Y282651D01* +X8073034Y282651D01* +X8075980Y286359D01* +X8076844Y457301D01* +X8077606Y461721D01* +X8081619Y462534D01* +X8118957Y462991D01* +X8120991Y456133D01* +X8213445Y456133D01* +X8213445Y459232D01* +X8214664Y463194D01* +X8220151Y464210D01* +X8229904Y461822D01* +X8236153Y462737D01* +X8241080Y461009D01* +X8245703Y463499D01* +X8260994Y461518D01* +X8266582Y454863D01* +X8270138Y444906D01* +X8271560Y443788D01* +X8277859Y427329D01* +X8278723Y421335D01* +X8283041Y412800D01* +X8284464Y407060D01* +X8287562Y401777D01* +X8291017Y399542D01* +X8385708Y399745D01* +X8388400Y402844D01* +X8388400Y404876D01* +X8392718Y411429D01* +X8393531Y418693D01* +X8396681Y421233D01* +X8398814Y426516D01* +X8402320Y432155D01* +X8403640Y438505D01* +X8406028Y441909D01* +X8408974Y450799D01* +X8413242Y456844D01* +X8414054Y461009D01* +X8417458Y463245D01* +X8437219Y463194D01* +X8461146Y464108D01* +X8461298Y462991D01* +X8461044Y456539D01* +X8489950Y456488D01* +X8490915Y462991D01* +X8494674Y462432D01* +X8510016Y461924D01* +X8518296Y463296D01* +X8537600Y464413D01* +X8538464Y458978D01* +X8538461Y457301D01* +X8750401Y457301D01* +X8750401Y463194D01* +X8752382Y464159D01* +X8758428Y464159D01* +X8773160Y461873D01* +X8791549Y462686D01* +X8797848Y459536D01* +X8800795Y452882D01* +X8803386Y449580D01* +X8803386Y447598D01* +X8804706Y441451D01* +X8808262Y436219D01* +X8809939Y430784D01* +X8814054Y424535D01* +X8814968Y416864D01* +X8819184Y411937D01* +X8820048Y405180D01* +X8822842Y401878D01* +X8827566Y399389D01* +X8921140Y399288D01* +X8924645Y404571D01* +X8924645Y405688D01* +X8929166Y414324D01* +X8929166Y417068D01* +X8932265Y421792D01* +X8934958Y430530D01* +X8937955Y434593D01* +X8940596Y442366D01* +X8944305Y447090D01* +X8945016Y451815D01* +X8946743Y454050D01* +X8951010Y461670D01* +X8956294Y462838D01* +X8978595Y463245D01* +X8996730Y464159D01* +X8997594Y462483D01* +X8993073Y450799D01* +X8992209Y445160D01* +X8988653Y440943D01* +X8986621Y432054D01* +X8984081Y429158D01* +X8981897Y421640D01* +X8978950Y417068D01* +X8977477Y409701D01* +X8973870Y405028D01* +X8971889Y396494D01* +X8968282Y390042D01* +X8966758Y384149D01* +X8964269Y381304D01* +X8961628Y372211D01* +X8959189Y368960D01* +X8957259Y362915D01* +X8957259Y359664D01* +X8952941Y353568D01* +X8946235Y336550D01* +X8943340Y332486D01* +X8941257Y323291D01* +X8938158Y318617D01* +X8937244Y313842D01* +X8935364Y309016D01* +X8932926Y305612D01* +X8931707Y299923D01* +X9003842Y299923D01* +X9003893Y398119D01* +X9005112Y404876D01* +X9006281Y418338D01* +X9009481Y421640D01* +X9012682Y430834D01* +X9015222Y432562D01* +X9016796Y437997D01* +X9020454Y439724D01* +X9021826Y444754D01* +X9023299Y444754D01* +X9028074Y446430D01* +X9029954Y451002D01* +X9034780Y453796D01* +X9037421Y457708D01* +X9050782Y459384D01* +X9064802Y462483D01* +X9267748Y462991D01* +X9271762Y457708D01* +X9271355Y410667D01* +X9267393Y407619D01* +X9052814Y407466D01* +X9050985Y405536D01* +X9049207Y401116D01* +X9049105Y286461D01* +X9051645Y283210D01* +X9057792Y281584D01* +X9261449Y281178D01* +X9268053Y280111D01* +X9272524Y274980D01* +X9271203Y251460D01* +X9272644Y230733D01* +X9301327Y230733D01* +X9301429Y457301D01* +X9303105Y462991D01* +X9305493Y462432D01* +X9333585Y462940D01* +X9340596Y462788D01* +X9345726Y462432D01* +X9349536Y462991D01* +X9350400Y454863D01* +X9350552Y373837D01* +X9353397Y363372D01* +X9354921Y362762D01* +X9359442Y374142D01* +X9361119Y375462D01* +X9363964Y380644D01* +X9366504Y381660D01* +X9368332Y386181D01* +X9373260Y388670D01* +X9375038Y391414D01* +X9381693Y395173D01* +X9383826Y399288D01* +X9388195Y401116D01* +X9389973Y405485D01* +X9397441Y408432D01* +X9400641Y412140D01* +X9407956Y414782D01* +X9410039Y418795D01* +X9411462Y418795D01* +X9416288Y420522D01* +X9420707Y426110D01* +X9422587Y426110D01* +X9428327Y432409D01* +X9433204Y434390D01* +X9435744Y437286D01* +X9442754Y440943D01* +X9446818Y444754D01* +X9448139Y444754D01* +X9454946Y447954D01* +X9462566Y457403D01* +X9468307Y460298D01* +X9472117Y462483D01* +X9520021Y462889D01* +X9529572Y462483D01* +X9560204Y462991D01* +X9556800Y461467D01* +X9556394Y456539D01* +X9550755Y453898D01* +X9548520Y450342D01* +X9539986Y446430D01* +X9538208Y443280D01* +X9532772Y442112D01* +X9528200Y435813D01* +X9525508Y435813D01* +X9522104Y434187D01* +X9518548Y429361D01* +X9515957Y429361D01* +X9510166Y423011D01* +X9505340Y421030D01* +X9502597Y417880D01* +X9494977Y413308D01* +X9494113Y411581D01* +X9486950Y408686D01* +X9484360Y404266D01* +X9478213Y401675D01* +X9476841Y398424D01* +X9469577Y394004D01* +X9466376Y391414D01* +X9461855Y389636D01* +X9457893Y384251D01* +X9451086Y382270D01* +X9446615Y377799D01* +X9442399Y375615D01* +X9440875Y372872D01* +X9434474Y368300D01* +X9431934Y365556D01* +X9423958Y361899D01* +X9422333Y359410D01* +X9416897Y356463D01* +X9416084Y353822D01* +X9407702Y348996D01* +X9406737Y347065D01* +X9406686Y338785D01* +X9408414Y336956D01* +X9414002Y334467D01* +X9417253Y330606D01* +X9422993Y327761D01* +X9425736Y324104D01* +X9432696Y321513D01* +X9435592Y317550D01* +X9441484Y314756D01* +X9444685Y310438D01* +X9449155Y308356D01* +X9453016Y303784D01* +X9457436Y301904D01* +X9460026Y299008D01* +X9468662Y295503D01* +X9469932Y292404D01* +X9479584Y284175D01* +X9483242Y282549D01* +X9485172Y278739D01* +X9492538Y276707D01* +X9497009Y271678D01* +X9502597Y269392D01* +X9504476Y265734D01* +X9510877Y263042D01* +X9514890Y258622D01* +X9519056Y256794D01* +X9523831Y251967D01* +X9529114Y250240D01* +X9530791Y247700D01* +X9538157Y242976D01* +X9539478Y239826D01* +X9545777Y237185D01* +X9549993Y232511D01* +X9555378Y230784D01* +X9555988Y229463D01* +X9554464Y225501D01* +X9544304Y224180D01* +X9535972Y224332D01* +X9507880Y223926D01* +X9473438Y224078D01* +X9464446Y229362D01* +X9460992Y233070D01* +X9454896Y235966D01* +X9450882Y240334D01* +X9445955Y242316D01* +X9442754Y245922D01* +X9436354Y248818D01* +X9433814Y252475D01* +X9428734Y255727D01* +X9426346Y259079D01* +X9419793Y261823D01* +X9415576Y266496D01* +X9409836Y268427D01* +X9408007Y272034D01* +X9402114Y275336D01* +X9398304Y279400D01* +X9394901Y280466D01* +X9390989Y285750D01* +X9385300Y287883D01* +X9381337Y293217D01* +X9379458Y293217D01* +X9374835Y298856D01* +X9369145Y300786D01* +X9367774Y304596D01* +X9363303Y307949D01* +X9363303Y310286D01* +X9358782Y313639D01* +X9358020Y317906D01* +X9355531Y323189D01* +X9353194Y323189D01* +X9351264Y319379D01* +X9350298Y313029D01* +X9350197Y227634D01* +X9348825Y225907D01* +X9334855Y224180D01* +X9309354Y224028D01* +X9303156Y225247D01* +X9301327Y230733D01* +X9272644Y230733D01* +X9271355Y227736D01* +X9267596Y223723D01* +X9156090Y223418D01* +X9146540Y226314D01* +X9052052Y226567D01* +X9038132Y229463D01* +X9036100Y232562D01* +X9031020Y235864D01* +X9026499Y240334D01* +X9021826Y242214D01* +X9021013Y246481D01* +X9016847Y251460D01* +X9011564Y259689D01* +X9008872Y268732D01* +X9006179Y273151D01* +X9005163Y291185D01* +X9003842Y299923D01* +X8931707Y299923D01* +X8930843Y296011D01* +X8927998Y291998D01* +X8925407Y284327D01* +X8922308Y278993D01* +X8920886Y273608D01* +X8917635Y268782D01* +X8916924Y264414D01* +X8915603Y260045D01* +X8913469Y259181D01* +X8907780Y248513D01* +X8905036Y242824D01* +X8901226Y239877D01* +X8900414Y235915D01* +X8895232Y233934D01* +X8890457Y228498D01* +X8879687Y226771D01* +X8869375Y223723D01* +X8865870Y227533D01* +X8860383Y227533D01* +X8853322Y229362D01* +X8851696Y233171D01* +X8846108Y235864D01* +X8841333Y244144D01* +X8832088Y256082D01* +X8832088Y258521D01* +X8827973Y263398D01* +X8826296Y271678D01* +X8823198Y275844D01* +X8821064Y283870D01* +X8817559Y288747D01* +X8815374Y297434D01* +X8812631Y300888D01* +X8811006Y309016D01* +X8807196Y313182D01* +X8805214Y322732D01* +X8802979Y326034D01* +X8798814Y336956D01* +X8797798Y336956D01* +X8796426Y341426D01* +X8795562Y346862D01* +X8791397Y352755D01* +X8790533Y358851D01* +X8786723Y364388D01* +X8784742Y372821D01* +X8781643Y376478D01* +X8779713Y384708D01* +X8776716Y389229D01* +X8774531Y397764D01* +X8772194Y399338D01* +X8770264Y406247D01* +X8769553Y410565D01* +X8766302Y415442D01* +X8764371Y423570D01* +X8761425Y428142D01* +X8758885Y435406D01* +X8756751Y437642D01* +X8754160Y448360D01* +X8751620Y451764D01* +X8750401Y457301D01* +X8538461Y457301D01* +X8538362Y378307D01* +X8539581Y375361D01* +X8542578Y373430D01* +X8711742Y373024D01* +X8716873Y369976D01* +X8730894Y366826D01* +X8734145Y362864D01* +X8735110Y362864D01* +X8741410Y359460D01* +X8742172Y356311D01* +X8747709Y353263D01* +X8748572Y349910D01* +X8752281Y347472D01* +X8754872Y341020D01* +X8756142Y341020D01* +X8759393Y331673D01* +X8762339Y327660D01* +X8763609Y319532D01* +X8767114Y304952D01* +X8767318Y291998D01* +X8764981Y286613D01* +X8763203Y273710D01* +X8761272Y269290D01* +X8757310Y258775D01* +X8752789Y252831D01* +X8751316Y249224D01* +X8745575Y246837D01* +X8737092Y235559D01* +X8729624Y233121D01* +X8726424Y229362D01* +X8715044Y227482D01* +X8710625Y225145D01* +X8495436Y225145D01* +X8491118Y227075D01* +X8490610Y230378D01* +X8489950Y456488D01* +X8461005Y456488D01* +X8458301Y452983D01* +X8455914Y444347D01* +X8453069Y440283D01* +X8450783Y432155D01* +X8447786Y428091D01* +X8445195Y418490D01* +X8442756Y415645D01* +X8440724Y406654D01* +X8438388Y403809D01* +X8431936Y386791D01* +X8430260Y381101D01* +X8426754Y375462D01* +X8425078Y367030D01* +X8421674Y363067D01* +X8420303Y356717D01* +X8417102Y352856D01* +X8415274Y345084D01* +X8411921Y339445D01* +X8410092Y331673D01* +X8406130Y324713D01* +X8404910Y319176D01* +X8403031Y316738D01* +X8401151Y311099D01* +X8401202Y308203D01* +X8396020Y302514D01* +X8395258Y294182D01* +X8391042Y289153D01* +X8390128Y282295D01* +X8386622Y278180D01* +X8383727Y270916D01* +X8380780Y266395D01* +X8379612Y261162D01* +X8374989Y252526D01* +X8374989Y249478D01* +X8371027Y246888D01* +X8369553Y242468D01* +X8364474Y234797D01* +X8359597Y233171D01* +X8358428Y229311D01* +X8351672Y227736D01* +X8340750Y225907D01* +X8333181Y226060D01* +X8317230Y229412D01* +X8314893Y233171D01* +X8311540Y235254D01* +X8309559Y239775D01* +X8306358Y241757D01* +X8304174Y247700D01* +X8301888Y248615D01* +X8299450Y253898D01* +X8295081Y264718D01* +X8291931Y267360D01* +X8288731Y276555D01* +X8286343Y279806D01* +X8283600Y289153D01* +X8281212Y290779D01* +X8278723Y299262D01* +X8274100Y307949D01* +X8274100Y309981D01* +X8271509Y314198D01* +X8269071Y323088D01* +X8265922Y330047D01* +X8263890Y338785D01* +X8260943Y343865D01* +X8258759Y351282D01* +X8255609Y356666D01* +X8253628Y364388D01* +X8250783Y366725D01* +X8248548Y375615D01* +X8246008Y378510D01* +X8243011Y386943D01* +X8240268Y390144D01* +X8238185Y398932D01* +X8234629Y404164D01* +X8233714Y411581D01* +X8229600Y417880D01* +X8228787Y424434D01* +X8224977Y429869D01* +X8223605Y437845D01* +X8219389Y442772D01* +X8218474Y449986D01* +X8213445Y456133D01* +X8120991Y456133D01* +X8121650Y323596D01* +X8120329Y287121D01* +X8123123Y284378D01* +X8128558Y282651D01* +X8161426Y281838D01* +X8167827Y280619D01* +X8230819Y281432D01* +X8233460Y274980D01* +X8233257Y239318D01* +X8232444Y228752D01* +X8230717Y224434D01* +X8223351Y223113D01* +X8126323Y223520D01* +X7970113Y222554D01* +X7967319Y223418D01* +X7964881Y228701D01* +X7964576Y280619D01* +X7937454Y280619D01* +X7935061Y267868D01* +X7931099Y262128D01* +X7929219Y256438D01* +X7926273Y253492D01* +X7925460Y248767D01* +X7921650Y246786D01* +X7919770Y242163D01* +X7915909Y239623D01* +X7914690Y235610D01* +X7911134Y233984D01* +X7907934Y232054D01* +X7904327Y228346D01* +X7900314Y228346D01* +X7884972Y225094D01* +X7679080Y225196D01* +X7677099Y230073D01* +X7610242Y230073D01* +X7609789Y229463D01* +X7607046Y227533D01* +X7598105Y227533D01* +X7588758Y225298D01* +X7445654Y225044D01* +X7428230Y227634D01* +X7423454Y230174D01* +X7422083Y232511D01* +X7413345Y235000D01* +X7408570Y240538D01* +X7404252Y242824D01* +X7401306Y247142D01* +X7397597Y248767D01* +X7396327Y253339D01* +X7393127Y256032D01* +X7390333Y263347D01* +X7387488Y267665D01* +X7382764Y282244D01* +X7381494Y288899D01* +X7355579Y288899D01* +X7355281Y287934D01* +X7353553Y273659D01* +X7350963Y268478D01* +X7347254Y258775D01* +X7338212Y246989D01* +X7336993Y246989D01* +X7327138Y235051D01* +X7322261Y234188D01* +X7314336Y229209D01* +X7302906Y226669D01* +X7296556Y222453D01* +X7288022Y223774D01* +X7281672Y223215D01* +X7082840Y223113D01* +X7081164Y225196D01* +X7080097Y455676D01* +X6929554Y455676D01* +X6929881Y156921D01* +X6932879Y153822D01* +X9715042Y154228D01* +X9718395Y158496D01* +X9716465Y162306D01* +X9714382Y172872D01* +X9711283Y176123D01* +X9708692Y186791D01* +X9706152Y189687D01* +X9704171Y198374D01* +X9700361Y203301D01* +X9700361Y206095D01* +X9699040Y212242D01* +X9696500Y215442D01* +X9693808Y224739D01* +X9690303Y229158D01* +X9689541Y235508D01* +X9685172Y242112D01* +X9684308Y250240D01* +X9680448Y254050D01* +X9678720Y262534D01* +X9674860Y268122D01* +X9674860Y271373D01* +X9673082Y276707D01* +X9669830Y280822D01* +X9668916Y288594D01* +X9664903Y294386D01* +X9663277Y302514D01* +X9659721Y306628D01* +X9658858Y314807D01* +X9654387Y319786D01* +X9654387Y323240D01* +X9652508Y328980D01* +X9649866Y331673D01* +X9648698Y338175D01* +X9648647Y346252D01* +X9650069Y352755D01* +X9653219Y357022D01* +X9655149Y366522D01* +X9658299Y370789D01* +X9660280Y380288D01* +X9663226Y384352D01* +X9666376Y393496D01* +X9667646Y394462D01* +X9670592Y404622D01* +X9674098Y409803D01* +X9675723Y418896D01* +X9677857Y420370D01* +X9679228Y424891D01* +X9680702Y432155D01* +X9683597Y435813D01* +X9685782Y445566D01* +X9688068Y448360D01* +X9695891Y468528D01* +X9695891Y471424D01* +X9699701Y476859D01* +X9701072Y484784D01* +X9704882Y488899D01* +X9705949Y497535D01* +X9709861Y502056D01* +X9710775Y508355D01* +X9711893Y511149D01* +X9715042Y515467D01* +X9716312Y521309D01* +X9716312Y529691D01* +X9712960Y533095D01* +X6934504Y532993D01* +G37* +G36* +X9758375Y533044D02* +G01* +X9755581Y531164D01* +X9754108Y528624D01* +X9753244Y521004D01* +X9750298Y518515D01* +X9748164Y509168D01* +X9745827Y505917D01* +X9742932Y497027D01* +X9740138Y492658D01* +X9737852Y482041D01* +X9735007Y479653D01* +X9732924Y471982D01* +X9732924Y469696D01* +X9729927Y466699D01* +X9728250Y459130D01* +X9725355Y454710D01* +X9722561Y445160D01* +X9719513Y440943D01* +X9717430Y431342D01* +X9714484Y427329D01* +X9712299Y417220D01* +X9709404Y414782D01* +X9707270Y405434D01* +X9704832Y402082D01* +X9701682Y391820D01* +X9699802Y389178D01* +X9696958Y379476D01* +X9692843Y373634D01* +X9691979Y365404D01* +X9689084Y363016D01* +X9686798Y352755D01* +X9683140Y347421D01* +X9683140Y339293D01* +X9685070Y334518D01* +X9686239Y334518D01* +X9688525Y325475D01* +X9692081Y321056D01* +X9693351Y312267D01* +X9697008Y307390D01* +X9697872Y302514D01* +X9699244Y298145D01* +X9702190Y295656D01* +X9703816Y286410D01* +X9707219Y281432D01* +X9709302Y273405D01* +X9712350Y269290D01* +X9714534Y259588D01* +X9717481Y255524D01* +X9719513Y246481D01* +X9722053Y243586D01* +X9724186Y236067D01* +X9725983Y231190D01* +X9833051Y231190D01* +X9833610Y459740D01* +X9834575Y463346D01* +X9860330Y462534D01* +X9875316Y461772D01* +X9880244Y458571D01* +X9881057Y455930D01* +X9881057Y375818D01* +X9882784Y370586D01* +X9885832Y368503D01* +X10049916Y368960D01* +X10054996Y372211D01* +X10057434Y377545D01* +X10057739Y462381D01* +X10058603Y464159D01* +X10061397Y463804D01* +X10100208Y462991D01* +X10102697Y458724D01* +X10102900Y229565D01* +X10100462Y224383D01* +X10065258Y223926D01* +X10059212Y226009D01* +X10057790Y229311D01* +X10057587Y309321D01* +X10055301Y312216D01* +X9879888Y312216D01* +X9877298Y309219D01* +X9876891Y229565D01* +X9875316Y226060D01* +X9870694Y224129D01* +X9850069Y224485D01* +X9834524Y225145D01* +X9833051Y231190D01* +X9725983Y231190D01* +X9729927Y220675D01* +X9732772Y216611D01* +X9733635Y210413D01* +X9735007Y206654D01* +X9737801Y205028D01* +X9739376Y196189D01* +X9743033Y191770D01* +X9745167Y181762D01* +X9748113Y177698D01* +X9750196Y168402D01* +X9753041Y165100D01* +X9755581Y155854D01* +X9760051Y153924D01* +X10429494Y153822D01* +X10429494Y338582D01* +X10411917Y338378D01* +X10409682Y337667D01* +X10407751Y332994D01* +X10407751Y229565D01* +X10406430Y223570D01* +X10401046Y222605D01* +X10362488Y223113D01* +X10360202Y226009D01* +X10359542Y335737D01* +X10355529Y338531D01* +X10186568Y338480D01* +X10181590Y337362D01* +X10178897Y332790D01* +X10178237Y228752D01* +X10176713Y225298D01* +X10170972Y224231D01* +X10150144Y224485D01* +X10136327Y224180D01* +X10130383Y227939D01* +X10130383Y321970D01* +X10133177Y331673D01* +X10135260Y347878D01* +X10137597Y351129D01* +X10140238Y357581D01* +X10140238Y359664D01* +X10143540Y361594D01* +X10146030Y367741D01* +X10147858Y367741D01* +X10157460Y379882D01* +X10158526Y379882D01* +X10161371Y386283D01* +X10165486Y388010D01* +X10172192Y389585D01* +X10175798Y392938D01* +X10196118Y394411D01* +X10356748Y395173D01* +X10359745Y397662D01* +X10362488Y403352D01* +X10362742Y457301D01* +X10365232Y463346D01* +X10374884Y462991D01* +X10407142Y464413D01* +X10407345Y463804D01* +X10408107Y401015D01* +X10411612Y396494D01* +X10429494Y395986D01* +X10429494Y533044D01* +G37* +G36* +X7431938Y404215D02* +G01* +X7428484Y401929D01* +X7426147Y398678D01* +X7427010Y395224D01* +X7427214Y287426D01* +X7432344Y283464D01* +X7598409Y283464D01* +X7601153Y287172D01* +X7601203Y400253D01* +X7598054Y404215D01* +G37* +G36* +X8358174Y342595D02* +G01* +X8322309Y341833D01* +X8316925Y340918D01* +X8315604Y334924D01* +X8315604Y333044D01* +X8320531Y319481D01* +X8324545Y314401D01* +X8324545Y311150D01* +X8327644Y306425D01* +X8330133Y298399D01* +X8336686Y284988D01* +X8339531Y285496D01* +X8343392Y294538D01* +X8346186Y298958D01* +X8348268Y307035D01* +X8351367Y310946D01* +X8351367Y313537D01* +X8353399Y318566D01* +X8355787Y321818D01* +X8357971Y329234D01* +X8360308Y332587D01* +X8360308Y339648D01* +G37* +G36* +X8870086Y342341D02* +G01* +X8854135Y341630D01* +X8851290Y339394D01* +X8850172Y334111D01* +X8851239Y329234D01* +X8853830Y325221D01* +X8856827Y317093D01* +X8859418Y314147D01* +X8860231Y309016D01* +X8868156Y290677D01* +X8874404Y286359D01* +X8877401Y291134D01* +X8878112Y295249D01* +X8881922Y300888D01* +X8884005Y308203D01* +X8886494Y311708D01* +X8889593Y320243D01* +X8892032Y322376D01* +X8894775Y332892D01* +X8895791Y333705D01* +X8893860Y339191D01* +X8890152Y341934D01* +X8874556Y340969D01* +G37* +G36* +X8542020Y318312D02* +G01* +X8538413Y313944D01* +X8538413Y286105D01* +X8540851Y282244D01* +X8716365Y281736D01* +X8719870Y287020D01* +X8719362Y313283D01* +X8717229Y317398D01* +X8714333Y318109D01* +G37* +G36* +X7306614Y318312D02* +G01* +X7132218Y317906D01* +X7128967Y315214D01* +X7128205Y288036D01* +X7130034Y283514D01* +X7132370Y281940D01* +X7306614Y281787D01* +X7310170Y286562D01* +X7310018Y313842D01* +G37* +G36* +X7870952Y316280D02* +G01* +X7734960Y315874D01* +X7726832Y313182D01* +X7725664Y309321D01* +X7725664Y286715D01* +X7729220Y281787D01* +X7888173Y281940D01* +X7894472Y283260D01* +X7897418Y287578D01* +X7896656Y310591D01* +X7894472Y315468D01* +G37* +D10* +X1811091Y1609519D02* +G01* +X1811091Y1691337D01* +X1770181Y1650428D02* +G01* +X1852000Y1650428D01* +X1811088Y1609519D02* +G01* +X1811088Y1691337D01* +X1770179Y1650428D02* +G01* +X1851997Y1650428D01* +X1796922Y1644388D02* +G01* +X1796922Y1697875D01* +X1770179Y1671132D02* +G01* +X1823664Y1671132D01* +D11* +X3127095Y3125419D02* +G01* +X3139953Y3125419D01* +X3152810Y3118990D01* +X3165665Y3106132D01* +X3172094Y3093278D01* +X3172094Y3080420D01* +X3165665Y3073991D01* +X3156023Y3070778D01* +X3149594Y3070778D01* +X3139953Y3073991D01* +X3114240Y3086849D01* +X3104598Y3090062D01* +X3098170Y3090062D01* +X3088528Y3086849D01* +X3078883Y3077207D01* +X3078883Y3064349D01* +X3085312Y3051492D01* +X3098170Y3038637D01* +X3111025Y3032208D01* +X3123882Y3032208D01* +X3083384Y3188416D02* +G01* +X3070527Y3111276D01* +X3022315Y3159488D01* +X3083384Y3188416D02* +G01* +X3015889Y3120918D01* +X2302095Y4519830D02* +G01* +X2234600Y4452335D01* +X2302095Y4519830D02* +G01* +X2273170Y4548759D01* +X2260312Y4555187D01* +X2253884Y4555187D01* +X2244242Y4551972D01* +X2237813Y4545543D01* +X2234600Y4535901D01* +X2234600Y4529472D01* +X2241029Y4516617D01* +X2269954Y4487689D02* +G01* +X2241029Y4516617D01* +X2228171Y4523046D01* +X2221743Y4523046D01* +X2212101Y4519830D01* +X2202459Y4510189D01* +X2199243Y4500547D01* +X2199243Y4494118D01* +X2205672Y4481261D01* +X2234600Y4452335D01* +X2062899Y5238960D02* +G01* +X2075756Y5238960D01* +X2088614Y5232532D01* +X2101468Y5219674D01* +X2107897Y5206819D01* +X2107897Y5193962D01* +X2101468Y5187533D01* +X2091827Y5184320D01* +X2085398Y5184320D01* +X2075756Y5187533D01* +X2050044Y5200390D01* +X2040402Y5203604D01* +X2033973Y5203604D01* +X2024331Y5200390D01* +X2014687Y5190749D01* +X2014687Y5177891D01* +X2021116Y5165034D01* +X2033973Y5152179D01* +X2046828Y5145750D01* +X2059686Y5145750D01* +X2044900Y5276242D02* +G01* +X2009546Y5311599D01* +X2003117Y5266601D01* +X1993475Y5276242D01* +X1983833Y5279458D01* +X1977405Y5279458D01* +X1964547Y5273029D01* +X1958119Y5266601D01* +X1951692Y5253746D01* +X1951692Y5240888D01* +X1958119Y5228031D01* +X1967763Y5218389D01* +X1980618Y5211960D01* +X1987047Y5211960D01* +X1996688Y5215176D01* +X2375700Y2963103D02* +G01* +X2385341Y2966318D01* +X2398199Y2966318D01* +X2407841Y2963103D01* +X2420698Y2950248D01* +X2423911Y2940606D01* +X2423911Y2927748D01* +X2420698Y2918106D01* +X2414269Y2905249D01* +X2398199Y2889178D01* +X2385341Y2882750D01* +X2375700Y2879537D01* +X2362845Y2879537D01* +X2353200Y2882750D01* +X2340345Y2895607D01* +X2337130Y2905249D01* +X2337130Y2918106D01* +X2340345Y2927748D01* +X2351272Y3019671D02* +G01* +X2354488Y3010029D01* +X2354488Y2997174D01* +X2351272Y2987530D01* +X2344844Y2974675D01* +X2328773Y2958604D01* +X2315918Y2952175D01* +X2306276Y2948962D01* +X2293419Y2948962D01* +X2283777Y2952175D01* +X2270920Y2965033D01* +X2267706Y2974675D01* +X2267706Y2987530D01* +X2270920Y2997174D01* +X2277348Y3010029D01* +X2293419Y3026100D01* +X2306276Y3032528D01* +X2315918Y3035741D01* +X2328773Y3035741D01* +X2338417Y3032528D01* +X2351272Y3019671D01* +X2297920Y3073026D02* +G01* +X2230422Y3005531D01* +X2297920Y3073026D02* +G01* +X2204709Y3031243D01* +X2246492Y3124451D02* +G01* +X2204709Y3031243D01* +X2246492Y3124451D02* +G01* +X2178997Y3056956D01* +X2170640Y3097453D02* +G01* +X2170640Y3091025D01* +X2164212Y3091025D01* +X2164212Y3097453D01* +X2170640Y3097453D01* +X2171926Y3199020D02* +G01* +X2130143Y3105810D01* +X2171926Y3199020D02* +G01* +X2078715Y3157237D01* +X2142997Y3137951D02* +G01* +X2110856Y3170092D01* +X1853598Y3827574D02* +G01* +X1866455Y3827574D01* +X1879312Y3821145D01* +X1892167Y3808288D01* +X1898596Y3795433D01* +X1898596Y3782575D01* +X1892167Y3776146D01* +X1882526Y3772933D01* +X1876097Y3772933D01* +X1866455Y3776146D01* +X1840743Y3789004D01* +X1831101Y3792217D01* +X1824672Y3792217D01* +X1815030Y3789004D01* +X1805386Y3779362D01* +X1805386Y3766505D01* +X1811815Y3753647D01* +X1824672Y3740792D01* +X1837527Y3734363D01* +X1850384Y3734363D01* +X1829170Y3845572D02* +G01* +X1825957Y3855214D01* +X1825957Y3874500D01* +X1758462Y3807002D01* +X1053795Y4329877D02* +G01* +X1012012Y4236669D01* +X1053795Y4329877D02* +G01* +X960587Y4288094D01* +X1024869Y4268810D02* +G01* +X992728Y4300951D01* +X554642Y4420836D02* +G01* +X567499Y4420836D01* +X580356Y4414408D01* +X593211Y4401550D01* +X599640Y4388695D01* +X599640Y4375838D01* +X593211Y4369409D01* +X583570Y4366196D01* +X577141Y4366196D01* +X567499Y4369409D01* +X541787Y4382267D01* +X532145Y4385480D01* +X525716Y4385480D01* +X516074Y4382267D01* +X506430Y4372625D01* +X506430Y4359767D01* +X512859Y4346910D01* +X525716Y4334055D01* +X538571Y4327626D01* +X551428Y4327626D01* +X523788Y4438835D02* +G01* +X527001Y4442048D01* +X530214Y4451690D01* +X530214Y4458119D01* +X527001Y4467760D01* +X514144Y4480618D01* +X504502Y4483831D01* +X498073Y4483831D01* +X488431Y4480618D01* +X482003Y4474189D01* +X478789Y4464547D01* +X475576Y4448477D01* +X475576Y4384194D01* +X430578Y4429193D01* +X1591967Y2341237D02* +G01* +X1604825Y2341237D01* +X1617682Y2334808D01* +X1630537Y2321951D01* +X1636966Y2309096D01* +X1636966Y2296238D01* +X1630537Y2289810D01* +X1620895Y2286596D01* +X1614467Y2286596D01* +X1604825Y2289810D01* +X1579112Y2302667D01* +X1569471Y2305880D01* +X1563042Y2305880D01* +X1553400Y2302667D01* +X1543756Y2293025D01* +X1543756Y2280168D01* +X1550184Y2267310D01* +X1563042Y2254455D01* +X1575897Y2248027D01* +X1588754Y2248027D01* +X1541828Y2410660D02* +G01* +X1573969Y2378519D01* +X1548256Y2346378D01* +X1548256Y2352807D01* +X1541828Y2365664D01* +X1532186Y2375306D01* +X1519328Y2381735D01* +X1506473Y2381735D01* +X1493616Y2375306D01* +X1487187Y2368877D01* +X1480761Y2356022D01* +X1480761Y2343165D01* +X1487187Y2330307D01* +X1496832Y2320665D01* +X1509687Y2314237D01* +X1516115Y2314237D01* +X1525757Y2317452D01* +X572576Y3385954D02* +G01* +X582218Y3389170D01* +X595076Y3389170D01* +X604718Y3385954D01* +X617575Y3373099D01* +X620788Y3363455D01* +X620788Y3350600D01* +X617575Y3340958D01* +X611146Y3328101D01* +X595076Y3312030D01* +X582218Y3305601D01* +X572576Y3302388D01* +X559722Y3302388D01* +X550077Y3305601D01* +X537222Y3318459D01* +X534007Y3328101D01* +X534007Y3340958D01* +X537222Y3350600D01* +X548149Y3442522D02* +G01* +X551365Y3432881D01* +X551365Y3420023D01* +X548149Y3410381D01* +X541721Y3397526D01* +X525650Y3381456D01* +X512795Y3375027D01* +X503153Y3371811D01* +X490296Y3371811D01* +X480654Y3375027D01* +X467796Y3387882D01* +X464583Y3397526D01* +X464583Y3410381D01* +X467796Y3420023D01* +X474225Y3432881D01* +X490296Y3448951D01* +X503153Y3455380D01* +X512795Y3458593D01* +X525650Y3458593D01* +X535294Y3455380D01* +X548149Y3442522D01* +X494797Y3495878D02* +G01* +X427299Y3428380D01* +X494797Y3495878D02* +G01* +X401586Y3454095D01* +X443369Y3547303D02* +G01* +X401586Y3454095D01* +X443369Y3547303D02* +G01* +X375874Y3479807D01* +X367517Y3520305D02* +G01* +X367517Y3513876D01* +X361088Y3513876D01* +X361088Y3520305D01* +X367517Y3520305D01* +X394515Y3596157D02* +G01* +X327019Y3528661D01* +X394515Y3596157D02* +G01* +X365589Y3625085D01* +X352732Y3631514D01* +X346303Y3631514D01* +X336661Y3628298D01* +X330233Y3621872D01* +X327019Y3612227D01* +X327019Y3605801D01* +X333448Y3592944D01* +X362374Y3564016D02* +G01* +X333448Y3592944D01* +X320591Y3599373D01* +X314162Y3599373D01* +X304520Y3596157D01* +X294878Y3586515D01* +X291663Y3576873D01* +X291663Y3570444D01* +X298091Y3557590D01* +X327019Y3528661D01* +D12* +X4233009Y1245649D02* +G01* +X11469006Y1245649D01* +X4234002Y1245649D02* +G01* +X4234002Y6242651D01* +X11374998Y6242651D01* +X11447005Y6499654D02* +G01* +X3716997Y6499654D01* +X3716997Y988654D01* +X11469006Y988654D01* +X11469006Y2308654D01* +X11469006Y5179654D02* +G01* +X11469006Y6499654D01* +X11371290Y6243327D02* +G01* +X11447005Y6243327D01* +X4233001Y1245651D02* +G01* +X11468999Y1245651D01* +X4234002Y1245651D02* +G01* +X4234002Y6242651D01* +X11375001Y6242651D01* +X11447000Y6499651D02* +G01* +X3717000Y6499651D01* +X3717000Y988651D01* +X11468999Y988651D01* +X11468999Y2308651D01* +X11468999Y5179651D02* +G01* +X11468999Y6499651D01* +X11371292Y6243325D02* +G01* +X11447000Y6243325D01* +D13* +X5740163Y7210960D02* +G01* +X5740163Y6960958D01* +X4740163Y6960958D01* +X4740163Y7210960D01* +X5740163Y7210960D01* +D14* +X1684185Y1705790D02* +G01* +X1176182Y1705790D01* +X1176182Y1451790D01* +X1684182Y1451790D01* +X1684185Y1705790D01* +D13* +X5742134Y516790D02* +G01* +X5742134Y266788D01* +X4742134Y266788D01* +X4742134Y516790D01* +X5742134Y516790D01* +D12* +G75* +G01* +X1756181Y1576791D02* +G03* +X1756180Y1575997I-324998J19D01* +G75* +G01* +X1756179Y1576791D02* +G03* +X1756179Y1575996I-324998J-397D01* +G75* +G01* +X1756179Y1576791D02* +G03* +X1756179Y1575999I-324998J-396D01* +G75* +G01* +X4680161Y7076592D02* +G03* +X4680158Y7076040I-51039J6D01* +G75* +G01* +X4682132Y382422D02* +G03* +X4682129Y381870I-51039J6D01* +G75* +G01* +X3365467Y3758341D02* +G03* +X3365467Y3757783I-1599999J-279D01* +G75* +G01* +X3374936Y3071214D02* +G03* +X2238815Y5443119I-1609468J687127D01* +G75* +G01* +X1474802Y2032867D02* +G03* +X3262140Y2851853I290666J1725475D01* +G75* +G01* +X66435Y3338408D02* +G03* +X1294756Y2072670I1699033J419933D01* +G75* +G01* +X2052953Y5484614D02* +G03* +X265935Y4660599I-287485J-1726272D01* +G75* +G01* +X154423Y4442057D02* +G03* +X36567Y3486614I1611045J-683715D01* +G75* +G01* +X1402202Y3948002D02* +G03* +X1955191Y3395109I363266J-189660D01* +G75* +G01* +X2129147Y3569167D02* +G03* +X1579519Y4123680I-363680J189174D01* +M02* diff --git a/hardware/portapack_h4m/h4-gerbers/Gerber_BottomSolderMaskLayer.GBS b/hardware/portapack_h4m/h4-gerbers/Gerber_BottomSolderMaskLayer.GBS new file mode 100644 index 000000000..a756da851 --- /dev/null +++ b/hardware/portapack_h4m/h4-gerbers/Gerber_BottomSolderMaskLayer.GBS @@ -0,0 +1,106 @@ +G04 Layer: BottomSolderMaskLayer* +G04 EasyEDA v6.5.46, 2025-01-01 16:01:39* +G04 1acd7fc2553046b79c71bda98b4923fc,10* +G04 Gerber Generator version 0.2* +G04 Scale: 100 percent, Rotated: No, Reflected: No * +G04 Dimensions in millimeters * +G04 leading zeros omitted , absolute positions ,4 integer and 5 decimal * +%FSLAX45Y45*% +%MOMM*% + +%AMMACRO1*4,1,8,-0.8085,-0.8382,-0.8382,-0.8085,-0.8382,0.8084,-0.8085,0.8382,0.8084,0.8382,0.8382,0.8084,0.8382,-0.8085,0.8084,-0.8382,-0.8085,-0.8382,0*% +%AMMACRO2*4,1,8,0.9335,-2.6317,-2.6317,0.9335,-2.6317,0.9756,-0.9756,2.6317,-0.9335,2.6317,2.6317,-0.9335,2.6317,-0.9756,0.9756,-2.6317,0.9335,-2.6317,0*% +%AMMACRO3*4,1,8,2.2742,-1.6203,-2.6912,-0.7448,-2.7154,-0.7103,-2.3087,1.5962,-2.2742,1.6203,2.6912,0.7448,2.7154,0.7103,2.3087,-1.5962,2.2742,-1.6203,0*% +%ADD10C,1.6766*% +%ADD11C,1.6764*% +%ADD12MACRO1*% +%ADD13C,1.6016*% +%ADD14C,5.4016*% +%ADD15C,1.8016*% +%ADD17C,1.7016*% +%ADD18MACRO2*% +%ADD19MACRO3*% +%ADD20C,2.4016*% + +%LPD*% +D10* +G01* +X6982152Y6992950D03* +G01* +X6982152Y6738950D03* +G01* +X7744152Y6992950D03* +D11* +G01* +X7998152Y6738950D03* +G01* +X7744152Y6738950D03* +G01* +X7490152Y6738950D03* +D12* +G01* +X7998152Y6992950D03* +D11* +G01* +X7490152Y6992950D03* +G01* +X7236152Y6738950D03* +G01* +X7236152Y6992950D03* +D13* +G01* +X-123675Y5972175D03* +G01* +X587524Y5972175D03* +D14* +G01* +X54124Y391795D03* +G01* +X11252984Y398145D03* +G01* +X11249174Y7108825D03* +G01* +X40154Y7085964D03* +D15* +G01* +X5240169Y7085964D03* +D17* +G01* +X5494169Y7085964D03* +G01* +X4986169Y7085964D03* +D11* +G01* +X1303195Y1578787D03* +G01* +X1557195Y1578787D03* +D15* +G01* +X5242125Y391795D03* +D17* +G01* +X5496125Y391795D03* +G01* +X4988125Y391795D03* +D18* +G01* +X209292Y4568315D03* +D19* +G01* +X32304Y3442333D03* +D20* +G01* +X1129078Y4394733D03* +G01* +X2126104Y5373370D03* +G01* +X2420236Y4413122D03* +G01* +X1404846Y2143302D03* +G01* +X1654451Y3647312D03* +G01* +X2401872Y3121939D03* +G01* +X3276546Y2985465D03* +M02* diff --git a/hardware/portapack_h4m/h4-gerbers/Gerber_TopLayer.GTL b/hardware/portapack_h4m/h4-gerbers/Gerber_TopLayer.GTL new file mode 100644 index 000000000..04567ef38 --- /dev/null +++ b/hardware/portapack_h4m/h4-gerbers/Gerber_TopLayer.GTL @@ -0,0 +1,29367 @@ +G04 Layer: TopLayer* +G04 EasyEDA v6.5.46, 2025-01-01 16:01:39* +G04 1acd7fc2553046b79c71bda98b4923fc,10* +G04 Gerber Generator version 0.2* +G04 Scale: 100 percent, Rotated: No, Reflected: No * +G04 Dimensions in millimeters * +G04 leading zeros omitted , absolute positions ,4 integer and 5 decimal * +%FSLAX45Y45*% +%MOMM*% + +%ADD10C,0.2540*% +%ADD11C,1.5000*% +%ADD12C,1.5000*% +%ADD13C,0.5000*% +%ADD14C,0.2000*% +%ADD15C,0.3000*% +%ADD16C,0.8000*% +%ADD17C,1.0000*% +%ADD18C,0.0116*% +%ADD19R,0.9000X1.1000*% +%ADD20R,0.7000X2.0000*% +%ADD21R,0.6850X0.2000*% +%ADD22R,1.3000X1.4000*% +%ADD23R,3.0000X3.0000*% +%ADD24R,1.0000X0.2800*% +%ADD25R,0.2800X1.0000*% +%ADD26R,0.6000X0.5000*% +%ADD27R,1.5000X1.2000*% +%ADD28R,1.5000X0.7000*% +%ADD29R,1.4500X1.7500*% +%ADD30R,2.3000X1.3000*% +%ADD31R,1.6000X0.2700*% +%ADD32R,0.2700X1.6000*% +%ADD33R,1.0842X1.1842*% +%ADD34O,0.6096X2.032*% +%ADD35R,1.5240X1.2000*% +%ADD36R,0.5000X0.6000*% +%ADD37R,0.9144X1.2700*% +%ADD38O,3.4999676X1.1999976*% +%ADD39R,4.0000X1.2000*% +%ADD40R,1.5000X2.5000*% +%ADD41R,0.7000X1.6000*% +%ADD42R,1.1000X0.9000*% +%ADD43R,1.2000X1.5240*% +%ADD44R,2.2000X2.5000*% +%ADD45R,1.6000X2.5000*% +%ADD46R,3.2000X1.0000*% +%ADD47R,1.0000X3.2000*% +%ADD48O,1.2500102X0.2999994*% +%ADD49O,2.999994X1.9999959999999999*% +%ADD50R,3.2000X4.2000*% +%ADD51R,0.7000X0.2500*% +%ADD52R,0.2500X0.7000*% +%ADD53R,1.6000X1.6000*% +%ADD54R,0.7000X0.7000*% +%ADD55C,1.5750*% +%ADD56C,1.5748*% +%ADD57R,1.5748X1.5748*% +%ADD58C,5.3000*% +%ADD59C,1.7000*% +%ADD60C,1.6000*% +%ADD61C,2.3000*% +%ADD62C,0.6000*% +%ADD63C,0.6500*% +%ADD64C,0.7000*% +%ADD65C,0.9000*% +%ADD66C,4.0000*% +%ADD67C,3.2000*% + +%LPD*% +G36* +X418236Y5483148D02* +G01* +X414324Y5483860D01* +X411022Y5486095D01* +X408838Y5489397D01* +X408076Y5493308D01* +X408076Y5504738D01* +X382219Y5504738D01* +X379018Y5505297D01* +X376123Y5506770D01* +X373888Y5509107D01* +X369163Y5515864D01* +X367995Y5517032D01* +X365760Y5520385D01* +X364998Y5524246D01* +X364998Y5532374D01* +X365760Y5536184D01* +X367995Y5539486D01* +X371297Y5541721D01* +X375158Y5542483D01* +X408076Y5542483D01* +X408076Y5574588D01* +X399999Y5574588D01* +X393649Y5573826D01* +X388213Y5571947D01* +X383286Y5568797D01* +X379069Y5565698D01* +X375158Y5564886D01* +X371297Y5565698D01* +X367995Y5567883D01* +X365760Y5571185D01* +X364998Y5575096D01* +X364998Y5673598D01* +X365760Y5677509D01* +X367995Y5680760D01* +X403555Y5716320D01* +X406857Y5718556D01* +X410718Y5719318D01* +X493623Y5719318D01* +X497535Y5718556D01* +X500837Y5716320D01* +X514807Y5702401D01* +X517042Y5699099D01* +X517804Y5695188D01* +X517804Y5573166D01* +X517245Y5569813D01* +X515569Y5566816D01* +X513029Y5564530D01* +X510285Y5562854D01* +X506222Y5558790D01* +X502564Y5552998D01* +X500024Y5550204D01* +X496620Y5548579D01* +X492861Y5548274D01* +X489204Y5549392D01* +X486257Y5551728D01* +X484378Y5555030D01* +X482701Y5559856D01* +X479602Y5564784D01* +X475538Y5568797D01* +X470611Y5571947D01* +X465175Y5573826D01* +X458825Y5574588D01* +X450748Y5574588D01* +X450748Y5542483D01* +X490321Y5542483D01* +X494233Y5541721D01* +X497535Y5539486D01* +X499719Y5536184D01* +X500481Y5532374D01* +X500481Y5514949D01* +X499719Y5511088D01* +X497535Y5507736D01* +X494233Y5505602D01* +X490321Y5504738D01* +X450748Y5504738D01* +X450748Y5493308D01* +X449986Y5489397D01* +X447801Y5486095D01* +X444500Y5483860D01* +X440588Y5483148D01* +G37* + +%LPD*% +G36* +X332587Y5234838D02* +G01* +X328574Y5236210D01* +X325475Y5239156D01* +X321614Y5244846D01* +X320243Y5247538D01* +X319786Y5250586D01* +X319786Y5256123D01* +X313486Y5256123D01* +X309575Y5256885D01* +X306273Y5259019D01* +X304088Y5262372D01* +X303326Y5266283D01* +X303326Y5281422D01* +X302463Y5289346D01* +X301650Y5294223D01* +X302564Y5297982D01* +X304800Y5301030D01* +X308051Y5303012D01* +X311759Y5303774D01* +X319786Y5303774D01* +X319786Y5329224D01* +X320598Y5333085D01* +X322783Y5336336D01* +X326085Y5338622D01* +X329946Y5339334D01* +X333857Y5338622D01* +X337159Y5336336D01* +X342036Y5331460D01* +X344424Y5327700D01* +X344932Y5323179D01* +X343966Y5314340D01* +X343966Y5244896D01* +X343103Y5240782D01* +X340563Y5237276D01* +X336854Y5235194D01* +G37* + +%LPD*% +G36* +X407416Y5058308D02* +G01* +X404063Y5058918D01* +X400659Y5060137D01* +X394309Y5060797D01* +X371195Y5060797D01* +X367334Y5061610D01* +X364032Y5063794D01* +X361797Y5067096D01* +X361035Y5070957D01* +X361035Y5093563D01* +X338480Y5093563D01* +X334568Y5094376D01* +X331317Y5096510D01* +X329082Y5099812D01* +X328320Y5103723D01* +X328320Y5126837D01* +X327609Y5133136D01* +X326440Y5136540D01* +X325831Y5139893D01* +X326440Y5143296D01* +X327609Y5146700D01* +X328320Y5152999D01* +X328320Y5176062D01* +X329082Y5179974D01* +X331317Y5183327D01* +X334568Y5185460D01* +X338480Y5186273D01* +X361035Y5186273D01* +X361035Y5208828D01* +X361797Y5212740D01* +X364032Y5216042D01* +X367334Y5218226D01* +X371195Y5218988D01* +X394309Y5218988D01* +X400659Y5219750D01* +X404063Y5220919D01* +X407416Y5221478D01* +X410768Y5220919D01* +X414172Y5219750D01* +X420471Y5218988D01* +X443585Y5218988D01* +X447446Y5218226D01* +X450748Y5216042D01* +X452983Y5212740D01* +X453745Y5208828D01* +X453745Y5186273D01* +X476351Y5186273D01* +X480212Y5185460D01* +X483514Y5183327D01* +X485698Y5179974D01* +X486511Y5176062D01* +X486511Y5152999D01* +X487222Y5146700D01* +X488391Y5143296D01* +X488950Y5139893D01* +X488391Y5136540D01* +X487222Y5133136D01* +X486511Y5126837D01* +X486511Y5103723D01* +X485698Y5099812D01* +X483514Y5096510D01* +X480212Y5094376D01* +X476351Y5093563D01* +X453745Y5093563D01* +X453745Y5070957D01* +X452983Y5067096D01* +X450748Y5063794D01* +X447446Y5061610D01* +X443585Y5060797D01* +X420471Y5060797D01* +X414172Y5060137D01* +X410768Y5058918D01* +G37* + +%LPD*% +G36* +X-138277Y4780838D02* +G01* +X-142138Y4781651D01* +X-145440Y4783785D01* +X-177800Y4816144D01* +X-184048Y4821326D01* +X-190703Y4824831D01* +X-195580Y4826304D01* +X-198424Y4827727D01* +X-200710Y4829962D01* +X-202234Y4832654D01* +X-203200Y4835448D01* +X-206248Y4840376D01* +X-210362Y4844389D01* +X-215239Y4847488D01* +X-220725Y4849368D01* +X-227025Y4850130D01* +X-295910Y4850130D01* +X-302209Y4849368D01* +X-307289Y4847640D01* +X-311099Y4847082D01* +X-314858Y4847945D01* +X-318008Y4850180D01* +X-320090Y4853482D01* +X-320802Y4857191D01* +X-320802Y4874920D01* +X-320090Y4878628D01* +X-318008Y4881930D01* +X-314858Y4884115D01* +X-311099Y4885029D01* +X-307289Y4884470D01* +X-302209Y4882743D01* +X-295910Y4881981D01* +X-227025Y4881981D01* +X-220725Y4882743D01* +X-215239Y4884572D01* +X-210362Y4887722D01* +X-206248Y4891735D01* +X-203200Y4896662D01* +X-201269Y4902098D01* +X-200558Y4908448D01* +X-200558Y4977282D01* +X-201269Y4983632D01* +X-203200Y4989068D01* +X-206248Y4993995D01* +X-210362Y4998110D01* +X-215493Y5001310D01* +X-218186Y5003850D01* +X-219862Y5007051D01* +X-220217Y5010708D01* +X-219303Y5014264D01* +X-217982Y5017160D01* +X-215442Y5026507D01* +X-214579Y5036261D01* +X-215442Y5045964D01* +X-217982Y5055362D01* +X-218694Y5056936D01* +X-219659Y5061000D01* +X-218948Y5065115D01* +X-216611Y5068519D01* +X-208635Y5076342D01* +X-203098Y5084267D01* +X-198983Y5093106D01* +X-196443Y5102555D01* +X-195580Y5112207D01* +X-196443Y5121910D01* +X-198983Y5131358D01* +X-203098Y5140198D01* +X-209092Y5148732D01* +X-210566Y5151983D01* +X-210870Y5155488D01* +X-209956Y5158892D01* +X-207975Y5161788D01* +X-206248Y5163413D01* +X-203200Y5168341D01* +X-201269Y5173776D01* +X-200558Y5180126D01* +X-200558Y5248960D01* +X-201269Y5255310D01* +X-203200Y5260797D01* +X-206248Y5265724D01* +X-210362Y5269788D01* +X-215239Y5272836D01* +X-220725Y5274716D01* +X-227025Y5275478D01* +X-295910Y5275478D01* +X-302209Y5274716D01* +X-307289Y5272938D01* +X-311099Y5272379D01* +X-314858Y5273294D01* +X-318008Y5275580D01* +X-320090Y5278780D01* +X-320802Y5282539D01* +X-320802Y5300218D01* +X-320090Y5303977D01* +X-318008Y5307279D01* +X-314858Y5309463D01* +X-311099Y5310378D01* +X-307289Y5309819D01* +X-302209Y5308041D01* +X-295910Y5307380D01* +X-227025Y5307380D01* +X-220725Y5308041D01* +X-215239Y5309920D01* +X-210362Y5313070D01* +X-206248Y5317134D01* +X-203200Y5322062D01* +X-201269Y5327446D01* +X-200507Y5334762D01* +X-199440Y5338318D01* +X-197205Y5341264D01* +X-193649Y5344515D01* +X-189128Y5350510D01* +X-187452Y5352338D01* +X-185369Y5353659D01* +X-169570Y5361076D01* +X-165760Y5361076D01* +X-162204Y5359654D01* +X-160528Y5358638D01* +X-155092Y5356707D01* +X-148742Y5355945D01* +X-99618Y5355945D01* +X-95402Y5355082D01* +X-91948Y5352491D01* +X-89865Y5348732D01* +X-89560Y5344464D01* +X-91033Y5340400D01* +X-93675Y5336235D01* +X-96113Y5331714D01* +X-98907Y5329224D01* +X-104038Y5323484D01* +X-110540Y5313172D01* +X-113182Y5308295D01* +X-116027Y5305755D01* +X-120497Y5300726D01* +X-123901Y5298186D01* +X-128066Y5297322D01* +X-140868Y5297322D01* +X-147218Y5296662D01* +X-152654Y5294680D01* +X-157581Y5291683D01* +X-161645Y5287518D01* +X-164744Y5282641D01* +X-166674Y5277154D01* +X-167386Y5270855D01* +X-167386Y5119624D01* +X-166674Y5113324D01* +X-164744Y5107787D01* +X-161645Y5102910D01* +X-157581Y5098846D01* +X-152654Y5095798D01* +X-147218Y5093868D01* +X-140868Y5093106D01* +X-102108Y5093106D01* +X-99364Y5092801D01* +X-91338Y5089702D01* +X-85039Y5089042D01* +X-55270Y5089042D01* +X-51358Y5088229D01* +X-48107Y5086045D01* +X-45872Y5082743D01* +X-45110Y5078831D01* +X-45110Y5011064D01* +X4470Y5011064D01* +X4470Y5042255D01* +X3759Y5048554D01* +X1828Y5054041D01* +X-1879Y5059883D01* +X-3200Y5063286D01* +X-3302Y5067046D01* +X-2032Y5070500D01* +X1016Y5073802D01* +X4013Y5075428D01* +X7416Y5075986D01* +X50444Y5075986D01* +X54356Y5075275D01* +X57658Y5072989D01* +X59842Y5069738D01* +X60604Y5065826D01* +X60604Y5061559D01* +X61315Y5055209D01* +X63246Y5049774D01* +X65836Y5045608D01* +X67208Y5042154D01* +X67208Y5038293D01* +X65836Y5034838D01* +X63246Y5030724D01* +X61315Y5025237D01* +X60604Y5018887D01* +X60604Y4970068D01* +X61315Y4963718D01* +X63246Y4958283D01* +X66344Y4953355D01* +X70408Y4949342D01* +X74320Y4946040D01* +X75996Y4942840D01* +X76403Y4939182D01* +X75488Y4935677D01* +X73456Y4932730D01* +X21539Y4880813D01* +X18034Y4878527D01* +X13970Y4877866D01* +X9906Y4878882D01* +X6654Y4881372D01* +X4622Y4884978D01* +X4216Y4889144D01* +X4470Y4891024D01* +X4470Y4922164D01* +X-45110Y4922164D01* +X-45110Y4864506D01* +X-22047Y4864506D01* +X-20167Y4864760D01* +X-16002Y4864354D01* +X-12395Y4862372D01* +X-9855Y4859020D01* +X-8839Y4855057D01* +X-9550Y4850892D01* +X-11836Y4847437D01* +X-75488Y4783785D01* +X-78790Y4781651D01* +X-82651Y4780838D01* +G37* + +%LPC*% +G36* +X-140868Y4864506D02* +G01* +X-117805Y4864506D01* +X-117805Y4922164D01* +X-167386Y4922164D01* +X-167386Y4891024D01* +X-166674Y4884724D01* +X-164744Y4879187D01* +X-161645Y4874310D01* +X-157581Y4870246D01* +X-152654Y4867198D01* +X-147218Y4865268D01* +G37* +G36* +X-167386Y5011064D02* +G01* +X-117805Y5011064D01* +X-117805Y5068722D01* +X-140868Y5068722D01* +X-147218Y5068062D01* +X-152654Y5066080D01* +X-157581Y5063083D01* +X-161645Y5058918D01* +X-164744Y5054041D01* +X-166674Y5048554D01* +X-167386Y5042255D01* +G37* + +%LPD*% +G36* +X2675178Y4590745D02* +G01* +X2671318Y4591456D01* +X2668016Y4593691D01* +X2527808Y4733899D01* +X2521559Y4738878D01* +X2514904Y4742281D01* +X2507538Y4744262D01* +X2501646Y4744720D01* +X926846Y4744720D01* +X918870Y4743907D01* +X911758Y4741621D01* +X905154Y4737811D01* +X900633Y4733950D01* +X883412Y4716729D01* +X880059Y4714443D01* +X876046Y4713782D01* +X872083Y4714595D01* +X868781Y4716983D01* +X866698Y4720437D01* +X866089Y4724501D01* +X867105Y4728413D01* +X875588Y4745685D01* +X882142Y4763312D01* +X886866Y4781600D01* +X889711Y4800193D01* +X890676Y4818938D01* +X889711Y4837836D01* +X888542Y4845507D01* +X888695Y4849418D01* +X890371Y4853076D01* +X893267Y4855667D01* +X896924Y4857038D01* +X900887Y4856988D01* +X904494Y4855362D01* +X907186Y4852466D01* +X909472Y4848758D01* +X913587Y4844745D01* +X918464Y4841595D01* +X923950Y4839665D01* +X930249Y4838954D01* +X979119Y4838954D01* +X985418Y4839665D01* +X990904Y4841595D01* +X995019Y4844237D01* +X998524Y4845608D01* +X1002284Y4845608D01* +X1005789Y4844237D01* +X1009903Y4841595D01* +X1015390Y4839665D01* +X1021689Y4838954D01* +X1027277Y4838954D01* +X1027277Y4873599D01* +X1015746Y4873599D01* +X1011885Y4874310D01* +X1008583Y4876546D01* +X1006348Y4879848D01* +X1005586Y4883759D01* +X1005586Y4906060D01* +X1006348Y4909972D01* +X1008583Y4913274D01* +X1011885Y4915509D01* +X1015746Y4916220D01* +X1027277Y4916220D01* +X1027277Y4950815D01* +X1021689Y4950815D01* +X1015390Y4950155D01* +X1009903Y4948224D01* +X1005789Y4945583D01* +X1002284Y4944262D01* +X998524Y4944262D01* +X995019Y4945583D01* +X990904Y4948224D01* +X985418Y4950155D01* +X979119Y4950815D01* +X930249Y4950815D01* +X923950Y4950155D01* +X917397Y4947869D01* +X913688Y4947259D01* +X909980Y4948072D01* +X906881Y4950256D01* +X877417Y4979619D01* +X875233Y4982972D01* +X874471Y4986883D01* +X875233Y4990744D01* +X877417Y4993995D01* +X880719Y4996230D01* +X884631Y4997043D01* +X905459Y4997043D01* +X908812Y4996434D01* +X911809Y4994757D01* +X914044Y4992268D01* +X917498Y4986832D01* +X921562Y4982667D01* +X926490Y4979619D01* +X931926Y4977688D01* +X938276Y4977028D01* +X987094Y4977028D01* +X993444Y4977688D01* +X998880Y4979619D01* +X1002995Y4982159D01* +X1006500Y4983530D01* +X1010310Y4983530D01* +X1013815Y4982159D01* +X1017930Y4979619D01* +X1023366Y4977688D01* +X1029716Y4977028D01* +X1035253Y4977028D01* +X1035253Y5011521D01* +X1023772Y5011521D01* +X1019860Y5012334D01* +X1016558Y5014518D01* +X1014374Y5017820D01* +X1013612Y5021681D01* +X1013612Y5044135D01* +X1014374Y5047996D01* +X1016558Y5051298D01* +X1019860Y5053482D01* +X1023772Y5054295D01* +X1035253Y5054295D01* +X1035253Y5088788D01* +X1029716Y5088788D01* +X1023366Y5088077D01* +X1017930Y5086146D01* +X1013815Y5083657D01* +X1010310Y5082235D01* +X1006500Y5082235D01* +X1002995Y5083657D01* +X998880Y5086146D01* +X993444Y5088077D01* +X987094Y5088788D01* +X938276Y5088788D01* +X932078Y5088077D01* +X928471Y5088382D01* +X925169Y5089906D01* +X922578Y5092446D01* +X921105Y5095748D01* +X920851Y5099304D01* +X921308Y5103520D01* +X921308Y5109006D01* +X921918Y5112512D01* +X923747Y5115560D01* +X926490Y5117846D01* +X939850Y5125212D01* +X953262Y5130698D01* +X967232Y5134660D01* +X981506Y5136997D01* +X995375Y5137810D01* +X1054811Y5137810D01* +X1064260Y5138978D01* +X1553768Y5138978D01* +X1567281Y5139842D01* +X1580184Y5142433D01* +X1592681Y5146700D01* +X1604518Y5152542D01* +X1615490Y5159857D01* +X1625701Y5168747D01* +X1956968Y5500065D01* +X1960270Y5502300D01* +X1964131Y5503062D01* +X2033879Y5503062D01* +X2038045Y5502198D01* +X2041448Y5499658D01* +X2043531Y5495950D01* +X2043938Y5491734D01* +X2042617Y5487670D01* +X2039721Y5484622D01* +X2038451Y5483707D01* +X2026462Y5472988D01* +X2015743Y5460949D01* +X2006498Y5447792D01* +X1998776Y5433771D01* +X1992731Y5418785D01* +X1988413Y5403291D01* +X1985873Y5387441D01* +X1985213Y5371388D01* +X1986330Y5355285D01* +X1989328Y5339537D01* +X1994052Y5324094D01* +X2000554Y5309362D01* +X2008632Y5295544D01* +X2018284Y5282590D01* +X2029358Y5270906D01* +X2041652Y5260543D01* +X2055063Y5251704D01* +X2069388Y5244388D01* +X2084476Y5238800D01* +X2100072Y5234940D01* +X2116023Y5232806D01* +X2132126Y5232654D01* +X2148128Y5234178D01* +X2163826Y5237632D01* +X2179066Y5242864D01* +X2193594Y5249722D01* +X2207260Y5258206D01* +X2219858Y5268264D01* +X2224735Y5273090D01* +X2226259Y5274259D01* +X2241905Y5288381D01* +X2259076Y5301030D01* +X2277414Y5311952D01* +X2296769Y5321096D01* +X2316886Y5328259D01* +X2337612Y5333339D01* +X2358745Y5336438D01* +X2379573Y5337505D01* +X2493924Y5337505D01* +X2497785Y5336692D01* +X2501087Y5334457D01* +X2779725Y5055819D01* +X2782062Y5052263D01* +X2782722Y5047996D01* +X2781503Y5043830D01* +X2778760Y5040630D01* +X2774899Y5038750D01* +X2764282Y5036312D01* +X2744520Y5029606D01* +X2725420Y5021173D01* +X2707182Y5011013D01* +X2689961Y4999228D01* +X2673908Y4985969D01* +X2659176Y4971186D01* +X2645816Y4955133D01* +X2634030Y4937912D01* +X2623870Y4919675D01* +X2615438Y4900574D01* +X2608834Y4880813D01* +X2604058Y4860493D01* +X2601163Y4839868D01* +X2600198Y4818938D01* +X2601163Y4798110D01* +X2604058Y4777435D01* +X2608834Y4757216D01* +X2615438Y4737354D01* +X2623870Y4718304D01* +X2634030Y4700117D01* +X2645816Y4682845D01* +X2659176Y4666843D01* +X2673908Y4652010D01* +X2689961Y4638700D01* +X2707182Y4626965D01* +X2725420Y4616754D01* +X2740406Y4610201D01* +X2743657Y4607915D01* +X2745740Y4604562D01* +X2746451Y4600702D01* +X2745638Y4596841D01* +X2743454Y4593640D01* +X2740152Y4591456D01* +X2736291Y4590745D01* +G37* + +%LPC*% +G36* +X1064971Y4838954D02* +G01* +X1070559Y4838954D01* +X1076858Y4839665D01* +X1082344Y4841595D01* +X1087221Y4844745D01* +X1091336Y4848758D01* +X1094384Y4853686D01* +X1096314Y4859121D01* +X1097026Y4865471D01* +X1097026Y4873599D01* +X1064971Y4873599D01* +G37* +G36* +X1064971Y4916220D02* +G01* +X1097026Y4916220D01* +X1097026Y4924348D01* +X1096314Y4930698D01* +X1094384Y4936134D01* +X1091336Y4941062D01* +X1087221Y4945075D01* +X1082344Y4948224D01* +X1076858Y4950155D01* +X1070559Y4950815D01* +X1064971Y4950815D01* +G37* +G36* +X1072997Y4977028D02* +G01* +X1078534Y4977028D01* +X1084884Y4977688D01* +X1090320Y4979619D01* +X1095248Y4982667D01* +X1099312Y4986832D01* +X1102410Y4991709D01* +X1104341Y4997196D01* +X1105052Y5003495D01* +X1105052Y5011521D01* +X1072997Y5011521D01* +G37* +G36* +X1072997Y5054295D02* +G01* +X1105052Y5054295D01* +X1105052Y5062321D01* +X1104341Y5068620D01* +X1102410Y5074107D01* +X1099312Y5078984D01* +X1095248Y5083149D01* +X1090320Y5086146D01* +X1084884Y5088077D01* +X1078534Y5088788D01* +X1072997Y5088788D01* +G37* + +%LPD*% +G36* +X8467445Y4536694D02* +G01* +X8463584Y4537506D01* +X8460282Y4539640D01* +X8454694Y4545279D01* +X8452510Y4548530D01* +X8451697Y4552442D01* +X8452510Y4556302D01* +X8454694Y4559604D01* +X8457996Y4561840D01* +X8461857Y4562602D01* +X8505596Y4562602D01* +X8508593Y4562144D01* +X8535466Y4562144D01* +X8537956Y4561890D01* +X8540597Y4560722D01* +X8549233Y4558131D01* +X8552992Y4556099D01* +X8555532Y4552645D01* +X8556447Y4548174D01* +X8555532Y4543958D01* +X8552992Y4540504D01* +X8549233Y4538472D01* +X8544915Y4537100D01* +X8541969Y4536694D01* +G37* + +%LPD*% +G36* +X8231073Y4333138D02* +G01* +X8227212Y4333900D01* +X8223910Y4336135D01* +X8221725Y4339386D01* +X8220913Y4343298D01* +X8220913Y4349546D01* +X8187842Y4349546D01* +X8183930Y4350308D01* +X8180679Y4352442D01* +X8056524Y4476546D01* +X8054340Y4479899D01* +X8053578Y4483811D01* +X8054340Y4487672D01* +X8056524Y4490974D01* +X8059826Y4493158D01* +X8063738Y4493971D01* +X8220405Y4493971D01* +X8224316Y4493158D01* +X8227618Y4490974D01* +X8274761Y4443780D01* +X8277047Y4440326D01* +X8277758Y4436262D01* +X8276742Y4432198D01* +X8274202Y4428947D01* +X8270595Y4426864D01* +X8266480Y4426559D01* +X8264194Y4426762D01* +X8258657Y4426762D01* +X8258657Y4392168D01* +X8270138Y4392168D01* +X8274050Y4391456D01* +X8277352Y4389221D01* +X8279536Y4385970D01* +X8280298Y4382058D01* +X8280298Y4359706D01* +X8279536Y4355795D01* +X8277352Y4352442D01* +X8274050Y4350308D01* +X8270138Y4349546D01* +X8258657Y4349546D01* +X8258657Y4343298D01* +X8257844Y4339386D01* +X8255660Y4336135D01* +X8252358Y4333900D01* +X8248497Y4333138D01* +G37* + +%LPC*% +G36* +X8188858Y4392168D02* +G01* +X8220913Y4392168D01* +X8220913Y4426762D01* +X8215375Y4426762D01* +X8209025Y4426102D01* +X8203590Y4424172D01* +X8198662Y4421022D01* +X8194598Y4416958D01* +X8191500Y4412030D01* +X8189569Y4406646D01* +X8188858Y4400296D01* +G37* + +%LPD*% +G36* +X8472932Y3981653D02* +G01* +X8469071Y3982415D01* +X8465769Y3984650D01* +X8457438Y3992930D01* +X8455253Y3996232D01* +X8454491Y4000144D01* +X8455253Y4004005D01* +X8457438Y4007256D01* +X8460740Y4009491D01* +X8464651Y4010253D01* +X8505596Y4010253D01* +X8508593Y4009847D01* +X8535466Y4009847D01* +X8537956Y4009542D01* +X8540597Y4008424D01* +X8549233Y4005783D01* +X8552992Y4003700D01* +X8555532Y4000296D01* +X8556447Y3995826D01* +X8555532Y3991610D01* +X8552992Y3988155D01* +X8549233Y3986123D01* +X8540242Y3983278D01* +X8537956Y3982364D01* +X8535466Y3982110D01* +X8508593Y3982110D01* +X8505596Y3981653D01* +G37* + +%LPD*% +G36* +X1509522Y3968699D02* +G01* +X1505356Y3969613D01* +X1501902Y3972153D01* +X1499819Y3975912D01* +X1499463Y3980230D01* +X1500886Y3984193D01* +X1503883Y3987292D01* +X1511706Y3992524D01* +X1522120Y4001719D01* +X1531264Y4012082D01* +X1538935Y4023614D01* +X1545082Y4036009D01* +X1549501Y4049115D01* +X1552244Y4062729D01* +X1553108Y4076496D01* +X1552244Y4090365D01* +X1549501Y4103928D01* +X1545082Y4117035D01* +X1538935Y4129532D01* +X1531264Y4140962D01* +X1522120Y4151376D01* +X1511706Y4160520D01* +X1500174Y4168292D01* +X1491234Y4172712D01* +X1487728Y4175506D01* +X1485798Y4179570D01* +X1485849Y4184040D01* +X1487779Y4188155D01* +X1491335Y4190898D01* +X1495704Y4191914D01* +X2857957Y4191914D01* +X2861818Y4191203D01* +X2865120Y4188917D01* +X2867355Y4185615D01* +X2868117Y4181805D01* +X2867355Y4177893D01* +X2865120Y4174642D01* +X2662224Y3971645D01* +X2658922Y3969512D01* +X2655062Y3968699D01* +G37* + +%LPD*% +G36* +X6619849Y3881475D02* +G01* +X6615938Y3882186D01* +X6612636Y3884422D01* +X6610451Y3887724D01* +X6609689Y3891635D01* +X6609689Y3905707D01* +X6608978Y3912057D01* +X6608114Y3914444D01* +X6607556Y3917797D01* +X6608114Y3921150D01* +X6608978Y3923588D01* +X6609689Y3929938D01* +X6609689Y3955745D01* +X6608978Y3962095D01* +X6608114Y3964482D01* +X6607556Y3967835D01* +X6608114Y3971137D01* +X6608978Y3973576D01* +X6609689Y3979875D01* +X6609689Y4005732D01* +X6608978Y4012031D01* +X6608114Y4014419D01* +X6607556Y4017822D01* +X6608114Y4021226D01* +X6608978Y4023614D01* +X6609689Y4029913D01* +X6609689Y4055770D01* +X6608978Y4062018D01* +X6608114Y4064457D01* +X6607556Y4067810D01* +X6608114Y4071162D01* +X6608978Y4073550D01* +X6609689Y4079900D01* +X6609689Y4105757D01* +X6608978Y4112107D01* +X6607048Y4117492D01* +X6604000Y4122420D01* +X6599885Y4126484D01* +X6595008Y4129633D01* +X6589522Y4131564D01* +X6583222Y4132224D01* +X6424320Y4132224D01* +X6418021Y4131564D01* +X6411671Y4129278D01* +X6408318Y4128719D01* +X6041034Y4128719D01* +X6033058Y4127855D01* +X6025896Y4125620D01* +X6019292Y4121810D01* +X6014821Y4117949D01* +X5963615Y4066692D01* +X5960313Y4064558D01* +X5956452Y4063796D01* +X5895644Y4063796D01* +X5891733Y4064558D01* +X5888431Y4066692D01* +X5886246Y4070045D01* +X5885484Y4073956D01* +X5886246Y4077817D01* +X5888431Y4081068D01* +X6074308Y4266996D01* +X6077102Y4268927D01* +X6079794Y4270248D01* +X6083249Y4271213D01* +X6093307Y4272026D01* +X6096254Y4272838D01* +X6100114Y4273143D01* +X6103772Y4271873D01* +X6106769Y4269435D01* +X6108598Y4265980D01* +X6109004Y4262120D01* +X6108547Y4256887D01* +X6109360Y4247235D01* +X6111900Y4237786D01* +X6116015Y4228947D01* +X6121603Y4221022D01* +X6128512Y4214164D01* +X6136487Y4208526D01* +X6145276Y4204462D01* +X6154724Y4201922D01* +X6164427Y4201007D01* +X6174079Y4201922D01* +X6183528Y4204462D01* +X6192316Y4208526D01* +X6200292Y4214164D01* +X6203746Y4217162D01* +X6207252Y4219448D01* +X6209842Y4220565D01* +X6212687Y4221022D01* +X6340957Y4221022D01* +X6348933Y4221886D01* +X6356096Y4224121D01* +X6362700Y4227931D01* +X6367170Y4231792D01* +X6398310Y4262983D01* +X6401612Y4265117D01* +X6405473Y4265930D01* +X6665214Y4265930D01* +X6669074Y4265117D01* +X6672376Y4262983D01* +X6674612Y4259630D01* +X6675374Y4255719D01* +X6675374Y4222394D01* +X6676085Y4216095D01* +X6677964Y4210608D01* +X6681063Y4205732D01* +X6685178Y4201566D01* +X6690055Y4198569D01* +X6695541Y4196638D01* +X6701840Y4195876D01* +X6727698Y4195876D01* +X6733997Y4196638D01* +X6736435Y4197502D01* +X6739788Y4198061D01* +X6743141Y4197502D01* +X6745528Y4196638D01* +X6751878Y4195876D01* +X6777685Y4195876D01* +X6784035Y4196638D01* +X6786422Y4197502D01* +X6789775Y4198061D01* +X6793128Y4197502D01* +X6795516Y4196638D01* +X6801866Y4195876D01* +X6827672Y4195876D01* +X6834022Y4196638D01* +X6836409Y4197502D01* +X6839762Y4198061D01* +X6843115Y4197502D01* +X6845553Y4196638D01* +X6851853Y4195876D01* +X6877710Y4195876D01* +X6884009Y4196638D01* +X6886397Y4197502D01* +X6889800Y4198061D01* +X6893153Y4197502D01* +X6895541Y4196638D01* +X6901840Y4195876D01* +X6927697Y4195876D01* +X6933996Y4196638D01* +X6936435Y4197502D01* +X6939788Y4198061D01* +X6943140Y4197502D01* +X6945528Y4196638D01* +X6951878Y4195876D01* +X6977684Y4195876D01* +X6984034Y4196638D01* +X6986422Y4197502D01* +X6989775Y4198061D01* +X6993128Y4197502D01* +X6995515Y4196638D01* +X7001865Y4195876D01* +X7027672Y4195876D01* +X7034022Y4196638D01* +X7036409Y4197502D01* +X7039762Y4198061D01* +X7043115Y4197502D01* +X7045553Y4196638D01* +X7051852Y4195876D01* +X7077709Y4195876D01* +X7084009Y4196638D01* +X7086396Y4197502D01* +X7089800Y4198061D01* +X7093153Y4197502D01* +X7095540Y4196638D01* +X7101840Y4195876D01* +X7127697Y4195876D01* +X7133996Y4196638D01* +X7136434Y4197502D01* +X7139787Y4198061D01* +X7143140Y4197502D01* +X7145528Y4196638D01* +X7151878Y4195876D01* +X7177684Y4195876D01* +X7184034Y4196638D01* +X7186422Y4197502D01* +X7189774Y4198061D01* +X7193127Y4197502D01* +X7195515Y4196638D01* +X7201865Y4195876D01* +X7227671Y4195876D01* +X7234021Y4196638D01* +X7236409Y4197502D01* +X7239762Y4198061D01* +X7243114Y4197502D01* +X7245553Y4196638D01* +X7251852Y4195876D01* +X7266025Y4195876D01* +X7269886Y4195165D01* +X7273188Y4192930D01* +X7275372Y4189679D01* +X7276185Y4185767D01* +X7276185Y3891635D01* +X7275372Y3887724D01* +X7273188Y3884422D01* +X7269886Y3882186D01* +X7266025Y3881475D01* +G37* + +%LPD*% +G36* +X7563561Y3831386D02* +G01* +X7559649Y3832250D01* +X7556347Y3834384D01* +X7554163Y3837686D01* +X7553401Y3841546D01* +X7553401Y4185767D01* +X7554163Y4189679D01* +X7556347Y4192930D01* +X7559649Y4195165D01* +X7563561Y4195876D01* +X7577683Y4195876D01* +X7584033Y4196638D01* +X7586421Y4197502D01* +X7589774Y4198061D01* +X7593126Y4197502D01* +X7595514Y4196638D01* +X7601864Y4195876D01* +X7627670Y4195876D01* +X7634020Y4196638D01* +X7636408Y4197502D01* +X7639761Y4198061D01* +X7643114Y4197502D01* +X7645552Y4196638D01* +X7651851Y4195876D01* +X7677708Y4195876D01* +X7684008Y4196638D01* +X7686395Y4197502D01* +X7689799Y4198061D01* +X7693152Y4197502D01* +X7695539Y4196638D01* +X7701838Y4195876D01* +X7727696Y4195876D01* +X7733995Y4196638D01* +X7736433Y4197502D01* +X7739786Y4198061D01* +X7743139Y4197502D01* +X7745526Y4196638D01* +X7751876Y4195876D01* +X7777683Y4195876D01* +X7784033Y4196638D01* +X7786420Y4197502D01* +X7789773Y4198061D01* +X7793126Y4197502D01* +X7795514Y4196638D01* +X7801864Y4195876D01* +X7827670Y4195876D01* +X7834020Y4196638D01* +X7836408Y4197502D01* +X7839760Y4198061D01* +X7843113Y4197502D01* +X7845552Y4196638D01* +X7851851Y4195876D01* +X7877708Y4195876D01* +X7884007Y4196638D01* +X7886395Y4197502D01* +X7889798Y4198061D01* +X7893151Y4197502D01* +X7895539Y4196638D01* +X7901838Y4195876D01* +X7927695Y4195876D01* +X7933994Y4196638D01* +X7939481Y4198569D01* +X7944358Y4201566D01* +X7948472Y4205732D01* +X7951571Y4210608D01* +X7953451Y4216095D01* +X7954162Y4222394D01* +X7954162Y4233824D01* +X7954924Y4237736D01* +X7957159Y4241088D01* +X7960461Y4243222D01* +X7964322Y4244035D01* +X7968234Y4243222D01* +X7971536Y4241088D01* +X8040776Y4171746D01* +X8047024Y4166768D01* +X8053679Y4163364D01* +X8061045Y4161383D01* +X8066938Y4160926D01* +X8505596Y4160926D01* +X8508593Y4160469D01* +X8535466Y4160469D01* +X8537956Y4160113D01* +X8540597Y4159046D01* +X8549233Y4156456D01* +X8552992Y4154322D01* +X8555532Y4150918D01* +X8556447Y4146448D01* +X8555532Y4142282D01* +X8552992Y4138879D01* +X8549233Y4136745D01* +X8537956Y4133087D01* +X8535466Y4132732D01* +X8517940Y4132732D01* +X8518499Y4131005D01* +X8520988Y4126280D01* +X8522055Y4123182D01* +X8522055Y4119879D01* +X8520988Y4116679D01* +X8518499Y4112056D01* +X8516162Y4104335D01* +X8515400Y4096410D01* +X8515705Y4093210D01* +X8515248Y4089095D01* +X8513114Y4085386D01* +X8509711Y4082948D01* +X8505596Y4082034D01* +X8452510Y4082034D01* +X8448598Y4082846D01* +X8445347Y4085082D01* +X8412530Y4117848D01* +X8406282Y4122877D01* +X8399627Y4126280D01* +X8392261Y4128262D01* +X8386368Y4128719D01* +X8220202Y4128719D01* +X8216849Y4129278D01* +X8210550Y4131564D01* +X8204200Y4132224D01* +X8045348Y4132224D01* +X8038998Y4131564D01* +X8033562Y4129633D01* +X8028686Y4126484D01* +X8024571Y4122420D01* +X8021472Y4117492D01* +X8019592Y4112107D01* +X8018881Y4105757D01* +X8018881Y4079900D01* +X8019592Y4073550D01* +X8020405Y4071162D01* +X8020964Y4067810D01* +X8020405Y4064457D01* +X8019592Y4062018D01* +X8018881Y4055770D01* +X8018881Y4029913D01* +X8019592Y4023614D01* +X8020405Y4021226D01* +X8020964Y4017822D01* +X8020405Y4014419D01* +X8019592Y4012031D01* +X8018881Y4005732D01* +X8018881Y3979875D01* +X8019592Y3973576D01* +X8020405Y3971137D01* +X8020964Y3967835D01* +X8020405Y3964482D01* +X8019592Y3962095D01* +X8018881Y3955745D01* +X8018881Y3929938D01* +X8019592Y3923588D01* +X8020405Y3921150D01* +X8020964Y3917797D01* +X8020405Y3914444D01* +X8019592Y3912057D01* +X8018881Y3905707D01* +X8018881Y3879951D01* +X8019592Y3873601D01* +X8020405Y3871214D01* +X8020964Y3867861D01* +X8020405Y3864457D01* +X8019592Y3862019D01* +X8018881Y3855720D01* +X8018881Y3841546D01* +X8018068Y3837686D01* +X8015884Y3834384D01* +X8012582Y3832250D01* +X8008721Y3831386D01* +G37* + +%LPD*% +G36* +X7384237Y3831386D02* +G01* +X7380376Y3832250D01* +X7377074Y3834384D01* +X7356348Y3855161D01* +X7354163Y3858463D01* +X7353401Y3862324D01* +X7353401Y4185767D01* +X7354163Y4189679D01* +X7356348Y4192930D01* +X7359650Y4195165D01* +X7363561Y4195876D01* +X7377684Y4195876D01* +X7384034Y4196638D01* +X7386421Y4197502D01* +X7389774Y4198061D01* +X7393127Y4197502D01* +X7395514Y4196638D01* +X7401661Y4195978D01* +X7401661Y4209186D01* +X7402220Y4212488D01* +X7403490Y4216095D01* +X7404201Y4222394D01* +X7404201Y4381296D01* +X7403490Y4387596D01* +X7402220Y4391101D01* +X7401661Y4394454D01* +X7401661Y4413504D01* +X7400696Y4417923D01* +X7400696Y4560519D01* +X7401458Y4564430D01* +X7403642Y4567783D01* +X7406944Y4569917D01* +X7410856Y4570730D01* +X7414717Y4569917D01* +X7418019Y4567783D01* +X7473188Y4512614D01* +X7475372Y4509262D01* +X7476185Y4505350D01* +X7476185Y4388967D01* +X7475372Y4381296D01* +X7475372Y4222394D01* +X7476185Y4214723D01* +X7476185Y3841546D01* +X7475372Y3837686D01* +X7473188Y3834384D01* +X7469886Y3832250D01* +X7466025Y3831386D01* +G37* + +%LPC*% +G36* +X7427874Y4195978D02* +G01* +X7434021Y4196638D01* +X7436408Y4197502D01* +X7439761Y4198061D01* +X7443114Y4197502D01* +X7445552Y4196638D01* +X7451699Y4195978D01* +X7451699Y4255465D01* +X7427874Y4255465D01* +G37* +G36* +X7427874Y4348124D02* +G01* +X7451699Y4348124D01* +X7451699Y4407662D01* +X7445552Y4407052D01* +X7443114Y4406188D01* +X7439761Y4405630D01* +X7436408Y4406188D01* +X7434021Y4407052D01* +X7427874Y4407662D01* +G37* + +%LPD*% +G36* +X7139736Y3131413D02* +G01* +X7135825Y3132226D01* +X7132523Y3134360D01* +X7097166Y3169818D01* +X7090968Y3174847D01* +X7084263Y3178403D01* +X7077049Y3180638D01* +X7069023Y3181451D01* +X6619849Y3181451D01* +X6615938Y3182162D01* +X6612636Y3184448D01* +X6610451Y3187750D01* +X6609689Y3191560D01* +X6609689Y3205734D01* +X6608978Y3212033D01* +X6608114Y3214420D01* +X6607556Y3217773D01* +X6608114Y3221177D01* +X6608978Y3223615D01* +X6609689Y3229914D01* +X6609689Y3255772D01* +X6608978Y3262071D01* +X6608114Y3264509D01* +X6607556Y3267862D01* +X6608114Y3271164D01* +X6608978Y3273552D01* +X6609689Y3279901D01* +X6609689Y3305708D01* +X6608978Y3312058D01* +X6608114Y3314446D01* +X6607556Y3317849D01* +X6608114Y3321202D01* +X6608978Y3323590D01* +X6609689Y3329940D01* +X6609689Y3355695D01* +X6608978Y3362045D01* +X6608114Y3364433D01* +X6607556Y3367786D01* +X6608114Y3371138D01* +X6608978Y3373577D01* +X6609689Y3379927D01* +X6609689Y3405784D01* +X6608978Y3412083D01* +X6608114Y3414471D01* +X6607556Y3417824D01* +X6608114Y3421176D01* +X6608978Y3423564D01* +X6609689Y3429863D01* +X6609689Y3455720D01* +X6608978Y3462020D01* +X6608114Y3464458D01* +X6607556Y3467862D01* +X6608114Y3471214D01* +X6608978Y3473602D01* +X6609689Y3479952D01* +X6609689Y3505758D01* +X6608978Y3512108D01* +X6608114Y3514445D01* +X6607556Y3517798D01* +X6608114Y3521151D01* +X6608978Y3523538D01* +X6609689Y3529888D01* +X6609689Y3555746D01* +X6608978Y3562096D01* +X6608114Y3564483D01* +X6607556Y3567836D01* +X6608114Y3571138D01* +X6608978Y3573576D01* +X6609689Y3579876D01* +X6609689Y3605733D01* +X6608978Y3612032D01* +X6608114Y3614420D01* +X6607556Y3617823D01* +X6608114Y3621227D01* +X6608978Y3623614D01* +X6609689Y3629914D01* +X6609689Y3655771D01* +X6608978Y3662070D01* +X6608114Y3664508D01* +X6607556Y3667810D01* +X6608114Y3671163D01* +X6608978Y3673551D01* +X6609689Y3679901D01* +X6609689Y3705707D01* +X6608978Y3712057D01* +X6608114Y3714496D01* +X6607556Y3717848D01* +X6608114Y3721201D01* +X6608978Y3723538D01* +X6609689Y3729888D01* +X6609689Y3755694D01* +X6608978Y3762044D01* +X6608114Y3764432D01* +X6607556Y3767785D01* +X6608114Y3771188D01* +X6608978Y3773627D01* +X6609638Y3779774D01* +X6596329Y3779774D01* +X6592976Y3780332D01* +X6589522Y3781501D01* +X6583222Y3782263D01* +X6424320Y3782263D01* +X6418021Y3781501D01* +X6414566Y3780332D01* +X6411214Y3779774D01* +X6392113Y3779774D01* +X6387693Y3778707D01* +X6127699Y3778707D01* +X6123838Y3779469D01* +X6120536Y3781755D01* +X6118301Y3785006D01* +X6117539Y3788867D01* +X6118301Y3792778D01* +X6120536Y3796080D01* +X6178397Y3853942D01* +X6181699Y3856177D01* +X6185560Y3856888D01* +X6387693Y3856888D01* +X6391605Y3856177D01* +X6394907Y3853942D01* +X6397091Y3850690D01* +X6397853Y3846779D01* +X6397853Y3829862D01* +X6398564Y3823563D01* +X6399428Y3821176D01* +X6399987Y3817772D01* +X6399428Y3814470D01* +X6398564Y3812082D01* +X6397904Y3805885D01* +X6411112Y3805885D01* +X6414465Y3805377D01* +X6418021Y3804107D01* +X6424320Y3803446D01* +X6583222Y3803446D01* +X6590944Y3804259D01* +X7293864Y3804259D01* +X7297724Y3803446D01* +X7301026Y3801262D01* +X7336383Y3765854D01* +X7342631Y3760774D01* +X7349286Y3757168D01* +X7356551Y3755034D01* +X7364526Y3754170D01* +X8037728Y3754170D01* +X8045348Y3753459D01* +X8204200Y3753459D01* +X8210550Y3754120D01* +X8214004Y3755390D01* +X8217357Y3755948D01* +X8230666Y3755948D01* +X8229955Y3762044D01* +X8229142Y3764432D01* +X8228584Y3767785D01* +X8229142Y3771188D01* +X8229955Y3773627D01* +X8230666Y3779926D01* +X8230666Y3796741D01* +X8231479Y3800601D01* +X8233664Y3803904D01* +X8236966Y3806190D01* +X8240826Y3806901D01* +X8268665Y3806901D01* +X8272576Y3806190D01* +X8275878Y3803904D01* +X8333740Y3746093D01* +X8335924Y3742791D01* +X8336737Y3738930D01* +X8335924Y3735019D01* +X8333740Y3731666D01* +X8330438Y3729532D01* +X8326577Y3728720D01* +X8240826Y3728720D01* +X8236508Y3729685D01* +X8217408Y3729685D01* +X8214055Y3730244D01* +X8210550Y3731564D01* +X8204200Y3732225D01* +X8045348Y3732225D01* +X8038998Y3731564D01* +X8035493Y3730244D01* +X8032140Y3729685D01* +X8018881Y3729685D01* +X8019592Y3723538D01* +X8020405Y3721201D01* +X8020964Y3717848D01* +X8020405Y3714496D01* +X8019592Y3712057D01* +X8018881Y3705707D01* +X8018881Y3679901D01* +X8019592Y3673551D01* +X8020405Y3671163D01* +X8020964Y3667810D01* +X8020405Y3664508D01* +X8019592Y3662070D01* +X8018881Y3655771D01* +X8018881Y3629914D01* +X8019592Y3623614D01* +X8020405Y3621227D01* +X8020964Y3617823D01* +X8020405Y3614420D01* +X8019592Y3612032D01* +X8018881Y3605733D01* +X8018881Y3579876D01* +X8019592Y3573576D01* +X8020405Y3571138D01* +X8020964Y3567836D01* +X8020405Y3564483D01* +X8019592Y3562096D01* +X8018881Y3555746D01* +X8018881Y3529888D01* +X8019592Y3523538D01* +X8020405Y3521151D01* +X8020964Y3517798D01* +X8020405Y3514445D01* +X8019592Y3512108D01* +X8018881Y3505758D01* +X8018881Y3479952D01* +X8019592Y3473602D01* +X8020405Y3471214D01* +X8020964Y3467862D01* +X8020405Y3464458D01* +X8019592Y3462020D01* +X8018881Y3455720D01* +X8018881Y3429863D01* +X8019592Y3423564D01* +X8020405Y3421176D01* +X8020964Y3417824D01* +X8020405Y3414471D01* +X8019592Y3412083D01* +X8018881Y3405784D01* +X8018881Y3379927D01* +X8019592Y3373577D01* +X8020405Y3371138D01* +X8020964Y3367786D01* +X8020405Y3364433D01* +X8019592Y3362045D01* +X8018881Y3355695D01* +X8018881Y3329940D01* +X8019592Y3323590D01* +X8020405Y3321202D01* +X8020964Y3317849D01* +X8020405Y3314446D01* +X8019592Y3312058D01* +X8018881Y3305708D01* +X8018881Y3279901D01* +X8019592Y3273552D01* +X8020405Y3271164D01* +X8020964Y3267862D01* +X8020405Y3264509D01* +X8019592Y3262071D01* +X8018881Y3255772D01* +X8018881Y3229914D01* +X8019592Y3223615D01* +X8020405Y3221177D01* +X8020964Y3217773D01* +X8020405Y3214420D01* +X8019592Y3212033D01* +X8018881Y3205734D01* +X8018881Y3179876D01* +X8019592Y3173628D01* +X8020405Y3171190D01* +X8020964Y3167837D01* +X8020405Y3164484D01* +X8019592Y3162046D01* +X8018881Y3155696D01* +X8018881Y3141573D01* +X8018068Y3137662D01* +X8015884Y3134360D01* +X8012582Y3132226D01* +X8008721Y3131413D01* +G37* + +%LPD*% +G36* +X942340Y2857754D02* +G01* +X938428Y2858566D01* +X935126Y2860700D01* +X932942Y2864053D01* +X932180Y2867914D01* +X932180Y2961792D01* +X932942Y2965704D01* +X935126Y2969006D01* +X938428Y2971139D01* +X942340Y2971952D01* +X2029002Y2971952D01* +X2036978Y2972765D01* +X2044090Y2975051D01* +X2050694Y2978912D01* +X2055164Y2982772D01* +X2252624Y3180130D01* +X2255875Y3182315D01* +X2257602Y3182670D01* +X2257958Y3184448D01* +X2260142Y3187750D01* +X2336088Y3263646D01* +X2339390Y3265830D01* +X2341067Y3266135D01* +X2341422Y3267913D01* +X2343607Y3271164D01* +X2395372Y3322878D01* +X2398623Y3325114D01* +X2402535Y3325876D01* +X2738577Y3325876D01* +X2746552Y3326688D01* +X2753715Y3329076D01* +X2760319Y3332886D01* +X2764790Y3336645D01* +X3164078Y3735984D01* +X3167380Y3738118D01* +X3171240Y3738930D01* +X4830064Y3738930D01* +X4833975Y3738118D01* +X4837277Y3735984D01* +X4839462Y3732631D01* +X4840224Y3728770D01* +X4840224Y3631996D01* +X4841036Y3625087D01* +X4840630Y3620820D01* +X4838496Y3617163D01* +X4835093Y3614674D01* +X4830927Y3613759D01* +X3092043Y3613759D01* +X3084068Y3612946D01* +X3076905Y3610559D01* +X3070301Y3606749D01* +X3065830Y3602990D01* +X2558694Y3095802D01* +X2555240Y3093567D01* +X2551176Y3092856D01* +X2547162Y3093821D01* +X2543860Y3096310D01* +X2541828Y3099968D01* +X2541422Y3103981D01* +X2542590Y3115868D01* +X2542387Y3131972D01* +X2540304Y3147923D01* +X2536444Y3163519D01* +X2535732Y3165500D01* +X2492146Y3121964D01* +X2531313Y3082798D01* +X2533497Y3079496D01* +X2534259Y3075584D01* +X2533497Y3071723D01* +X2531313Y3068370D01* +X2455367Y2992526D01* +X2452065Y2990240D01* +X2448204Y2989529D01* +X2444292Y2990240D01* +X2440990Y2992526D01* +X2401874Y3031642D01* +X2358288Y2988106D01* +X2360218Y2987294D01* +X2375865Y2983433D01* +X2391816Y2981401D01* +X2407869Y2981198D01* +X2419756Y2982366D01* +X2423871Y2981909D01* +X2427478Y2979877D01* +X2429967Y2976575D01* +X2430932Y2972562D01* +X2430221Y2968548D01* +X2427935Y2965094D01* +X2323592Y2860700D01* +X2320340Y2858566D01* +X2316429Y2857754D01* +G37* + +%LPC*% +G36* +X2268067Y3078480D02* +G01* +X2311552Y3121964D01* +X2267966Y3165500D01* +X2264156Y3151886D01* +X2261666Y3136036D01* +X2260955Y3119932D01* +X2262124Y3103930D01* +X2265070Y3088030D01* +G37* +G36* +X2401874Y3212287D02* +G01* +X2445359Y3255772D01* +X2435707Y3258718D01* +X2419908Y3261715D01* +X2403856Y3262782D01* +X2387803Y3262172D01* +X2371902Y3259632D01* +X2358288Y3255822D01* +G37* + +%LPD*% +G36* +X3295599Y2285746D02* +G01* +X3291687Y2286558D01* +X3288385Y2288692D01* +X3109264Y2467864D01* +X3103016Y2472893D01* +X3096361Y2476296D01* +X3088995Y2478278D01* +X3083102Y2478735D01* +X1620570Y2478735D01* +X1616710Y2479548D01* +X1613408Y2481681D01* +X1584553Y2510586D01* +X1582318Y2513888D01* +X1581556Y2517800D01* +X1582318Y2521712D01* +X1584553Y2524963D01* +X1587855Y2527147D01* +X1591716Y2527960D01* +X2289962Y2527960D01* +X2297988Y2528824D01* +X2305100Y2531059D01* +X2311704Y2534869D01* +X2316175Y2538780D01* +X3062427Y3284982D01* +X3065678Y3287115D01* +X3069590Y3287979D01* +X3503676Y3287979D01* +X3507587Y3287115D01* +X3510889Y3284982D01* +X3513074Y3281679D01* +X3513836Y3277819D01* +X3513074Y3273907D01* +X3510889Y3270554D01* +X3430371Y3190087D01* +X3414166Y3175457D01* +X3396996Y3162757D01* +X3378657Y3151835D01* +X3359353Y3142742D01* +X3339236Y3135630D01* +X3318510Y3130448D01* +X3297377Y3127400D01* +X3262477Y3125622D01* +X3246577Y3123133D01* +X3231083Y3118815D01* +X3216148Y3112770D01* +X3202076Y3105048D01* +X3188919Y3095752D01* +X3176879Y3085084D01* +X3166211Y3073095D01* +X3156915Y3059938D01* +X3149193Y3045815D01* +X3143148Y3030880D01* +X3138830Y3015437D01* +X3136341Y2999486D01* +X3135630Y2983433D01* +X3136798Y2967380D01* +X3139744Y2951581D01* +X3144520Y2936240D01* +X3150971Y2921457D01* +X3159099Y2907588D01* +X3168751Y2894736D01* +X3179775Y2883052D01* +X3192068Y2872638D01* +X3205480Y2863748D01* +X3219856Y2856433D01* +X3234893Y2850896D01* +X3250539Y2846984D01* +X3266490Y2844952D01* +X3282543Y2844698D01* +X3298545Y2846324D01* +X3314293Y2849778D01* +X3329533Y2854909D01* +X3344062Y2861767D01* +X3357676Y2870352D01* +X3370275Y2880309D01* +X3381654Y2891688D01* +X3391662Y2904286D01* +X3400196Y2917901D01* +X3407054Y2932480D01* +X3412236Y2947670D01* +X3415690Y2963418D01* +X3417315Y2979572D01* +X3417468Y2986024D01* +X3418535Y3007258D01* +X3421735Y3028391D01* +X3426968Y3049117D01* +X3434181Y3069234D01* +X3443376Y3088436D01* +X3454400Y3106775D01* +X3467150Y3123895D01* +X3481171Y3139287D01* +X3568801Y3226968D01* +X3572103Y3229152D01* +X3575964Y3229965D01* +X4745380Y3229965D01* +X4749241Y3229152D01* +X4752543Y3226968D01* +X4754727Y3223615D01* +X4755540Y3219754D01* +X4754727Y3215843D01* +X4752543Y3212592D01* +X4749596Y3209594D01* +X4744008Y3201619D01* +X4739894Y3192830D01* +X4737354Y3183432D01* +X4736541Y3173730D01* +X4737354Y3164027D01* +X4739894Y3154629D01* +X4744008Y3145840D01* +X4749596Y3137814D01* +X4756505Y3130905D01* +X4764481Y3125368D01* +X4773269Y3121202D01* +X4782718Y3118662D01* +X4792421Y3117900D01* +X4802073Y3118662D01* +X4811522Y3121202D01* +X4826355Y3128060D01* +X4830064Y3128975D01* +X4833874Y3128467D01* +X4837176Y3126587D01* +X4839614Y3123590D01* +X4840732Y3120034D01* +X4840935Y3118002D01* +X4842865Y3112566D01* +X4845964Y3107588D01* +X4850028Y3103524D01* +X4854956Y3100476D01* +X4860391Y3098546D01* +X4866741Y3097784D01* +X5185562Y3097784D01* +X5191912Y3098546D01* +X5197348Y3100476D01* +X5202275Y3103524D01* +X5206339Y3107588D01* +X5209438Y3112566D01* +X5211368Y3118002D01* +X5212080Y3124301D01* +X5212080Y3219754D01* +X5212842Y3223615D01* +X5215026Y3226968D01* +X5218328Y3229152D01* +X5222240Y3229965D01* +X5382514Y3229965D01* +X5386425Y3229152D01* +X5389727Y3226968D01* +X5391912Y3223615D01* +X5392674Y3219754D01* +X5392674Y3205073D01* +X5492242Y3205073D01* +X5492242Y3219754D01* +X5493004Y3223615D01* +X5495239Y3226968D01* +X5498541Y3229152D01* +X5502402Y3229965D01* +X5654802Y3229965D01* +X5658662Y3229152D01* +X5661964Y3226968D01* +X5664200Y3223615D01* +X5664962Y3219754D01* +X5664962Y3205073D01* +X5764530Y3205073D01* +X5764530Y3219754D01* +X5765292Y3223615D01* +X5767476Y3226968D01* +X5770778Y3229152D01* +X5774690Y3229965D01* +X5792978Y3229965D01* +X5800953Y3230778D01* +X5808116Y3233064D01* +X5814720Y3236874D01* +X5819190Y3240735D01* +X5872276Y3293821D01* +X5875578Y3296005D01* +X5879439Y3296818D01* +X5883351Y3296005D01* +X5886602Y3293821D01* +X5888837Y3290519D01* +X5889599Y3286607D01* +X5889599Y2474315D01* +X5888786Y2470353D01* +X5886500Y2467000D01* +X5883097Y2464866D01* +X5879084Y2464155D01* +X5865215Y2467914D01* +X5855512Y2468676D01* +X5845810Y2467914D01* +X5836412Y2465374D01* +X5827572Y2461209D01* +X5819597Y2455672D01* +X5816752Y2452928D01* +X5813348Y2450388D01* +X5809234Y2448560D01* +X5805424Y2448001D01* +X5784189Y2448052D01* +X5774334Y2449017D01* +X5771743Y2449576D01* +X5767984Y2451709D01* +X5765393Y2455164D01* +X5764530Y2459329D01* +X5764530Y2461564D01* +X5763818Y2467864D01* +X5761888Y2473350D01* +X5758789Y2478227D01* +X5754725Y2482291D01* +X5749798Y2485440D01* +X5744362Y2487320D01* +X5738012Y2487980D01* +X5419191Y2487980D01* +X5412841Y2487320D01* +X5407406Y2485440D01* +X5402478Y2482291D01* +X5398414Y2478227D01* +X5395315Y2473350D01* +X5393385Y2467864D01* +X5392674Y2461564D01* +X5392674Y2362657D01* +X5393385Y2356408D01* +X5395315Y2350871D01* +X5398414Y2345994D01* +X5402478Y2341930D01* +X5407406Y2338832D01* +X5412841Y2336952D01* +X5419191Y2336190D01* +X5738012Y2336190D01* +X5744362Y2336952D01* +X5749798Y2338832D01* +X5754725Y2341930D01* +X5758789Y2345994D01* +X5761888Y2350871D01* +X5763818Y2356408D01* +X5764530Y2362657D01* +X5764530Y2364892D01* +X5765393Y2369108D01* +X5767984Y2372512D01* +X5772353Y2374747D01* +X5774334Y2375154D01* +X5785154Y2376170D01* +X5808878Y2376170D01* +X5812586Y2375509D01* +X5815787Y2373528D01* +X5819444Y2370175D01* +X5827572Y2364435D01* +X5835396Y2360828D01* +X5838545Y2358542D01* +X5840577Y2355240D01* +X5841288Y2351379D01* +X5840476Y2347671D01* +X5838291Y2344369D01* +X5782614Y2288692D01* +X5779312Y2286558D01* +X5775452Y2285746D01* +G37* + +%LPC*% +G36* +X4866741Y2336190D02* +G01* +X5185562Y2336190D01* +X5191912Y2336952D01* +X5197348Y2338832D01* +X5202275Y2341930D01* +X5206339Y2345994D01* +X5209438Y2350871D01* +X5211368Y2356408D01* +X5212080Y2362657D01* +X5212080Y2461564D01* +X5211368Y2467864D01* +X5209438Y2473350D01* +X5206339Y2478227D01* +X5202275Y2482291D01* +X5197348Y2485440D01* +X5191912Y2487320D01* +X5185562Y2487980D01* +X4866741Y2487980D01* +X4860391Y2487320D01* +X4854956Y2485440D01* +X4850028Y2482291D01* +X4845964Y2478227D01* +X4842865Y2473350D01* +X4840935Y2467864D01* +X4840376Y2462580D01* +X4839055Y2458669D01* +X4836261Y2455570D01* +X4832451Y2453792D01* +X4828286Y2453792D01* +X4824425Y2455367D01* +X4817160Y2460498D01* +X4808372Y2464562D01* +X4798923Y2467102D01* +X4789271Y2467965D01* +X4779568Y2467102D01* +X4770120Y2464562D01* +X4761331Y2460498D01* +X4753356Y2454859D01* +X4746447Y2448001D01* +X4740859Y2440076D01* +X4736744Y2431237D01* +X4734204Y2421788D01* +X4733391Y2412136D01* +X4734204Y2402433D01* +X4736744Y2393035D01* +X4740859Y2384145D01* +X4746447Y2376170D01* +X4753356Y2369312D01* +X4761331Y2363774D01* +X4770120Y2359609D01* +X4779568Y2357069D01* +X4789271Y2356205D01* +X4798923Y2357069D01* +X4808372Y2359609D01* +X4817160Y2363774D01* +X4824425Y2368804D01* +X4828286Y2370429D01* +X4832451Y2370378D01* +X4836261Y2368702D01* +X4839055Y2365552D01* +X4840376Y2361590D01* +X4840935Y2356408D01* +X4842865Y2350871D01* +X4845964Y2345994D01* +X4850028Y2341930D01* +X4854956Y2338832D01* +X4860391Y2336952D01* +G37* +G36* +X4866741Y2590088D02* +G01* +X5185562Y2590088D01* +X5191912Y2590749D01* +X5197348Y2592679D01* +X5202275Y2595829D01* +X5206339Y2599842D01* +X5209438Y2604770D01* +X5211368Y2610205D01* +X5212080Y2616504D01* +X5212080Y2715463D01* +X5211368Y2721762D01* +X5209438Y2727198D01* +X5206339Y2732125D01* +X5202275Y2736138D01* +X5197348Y2739237D01* +X5191912Y2741168D01* +X5185562Y2741930D01* +X4866741Y2741930D01* +X4860391Y2741168D01* +X4854956Y2739237D01* +X4850028Y2736138D01* +X4845964Y2732125D01* +X4842865Y2727198D01* +X4840935Y2721762D01* +X4840630Y2718714D01* +X4839360Y2714955D01* +X4836769Y2711856D01* +X4833162Y2710129D01* +X4828336Y2709926D01* +X4825746Y2710688D01* +X4819243Y2713482D01* +X4808728Y2718511D01* +X4799330Y2721000D01* +X4789678Y2721864D01* +X4779975Y2721000D01* +X4770526Y2718511D01* +X4761738Y2714345D01* +X4753762Y2708757D01* +X4746853Y2701899D01* +X4741265Y2693924D01* +X4737150Y2685135D01* +X4734610Y2675636D01* +X4733798Y2665933D01* +X4734610Y2656332D01* +X4737150Y2646832D01* +X4741265Y2638044D01* +X4746853Y2630119D01* +X4753762Y2623210D01* +X4761738Y2617571D01* +X4770526Y2613507D01* +X4779975Y2610967D01* +X4789678Y2610104D01* +X4799330Y2610967D01* +X4808778Y2613507D01* +X4825492Y2621178D01* +X4829098Y2622143D01* +X4833162Y2621838D01* +X4836769Y2620060D01* +X4839411Y2617012D01* +X4840630Y2613152D01* +X4840935Y2610205D01* +X4842865Y2604770D01* +X4845964Y2599842D01* +X4850028Y2595829D01* +X4854956Y2592679D01* +X4860391Y2590749D01* +G37* +G36* +X5419191Y2590088D02* +G01* +X5738012Y2590088D01* +X5744362Y2590749D01* +X5749798Y2592679D01* +X5754725Y2595829D01* +X5758789Y2599842D01* +X5761888Y2604770D01* +X5763818Y2610205D01* +X5764530Y2616504D01* +X5764530Y2703322D01* +X5765241Y2707030D01* +X5767273Y2710230D01* +X5770372Y2712516D01* +X5772454Y2713482D01* +X5780430Y2719019D01* +X5787288Y2725928D01* +X5792876Y2733903D01* +X5796991Y2742692D01* +X5799531Y2752191D01* +X5800394Y2761843D01* +X5799531Y2771495D01* +X5796991Y2780995D01* +X5792876Y2789783D01* +X5787288Y2797708D01* +X5780430Y2804617D01* +X5772454Y2810256D01* +X5763615Y2814320D01* +X5754217Y2816860D01* +X5744514Y2817723D01* +X5734812Y2816860D01* +X5725414Y2814320D01* +X5716574Y2810256D01* +X5708599Y2804617D01* +X5701741Y2797708D01* +X5696153Y2789783D01* +X5692038Y2780995D01* +X5689498Y2771495D01* +X5688634Y2761538D01* +X5687669Y2758033D01* +X5686348Y2755290D01* +X5684367Y2752547D01* +X5676747Y2744876D01* +X5673445Y2742641D01* +X5669584Y2741930D01* +X5419191Y2741930D01* +X5412841Y2741168D01* +X5407406Y2739237D01* +X5402478Y2736138D01* +X5398414Y2732125D01* +X5395315Y2727198D01* +X5393385Y2721762D01* +X5392674Y2715463D01* +X5392674Y2616504D01* +X5393385Y2610205D01* +X5395315Y2604770D01* +X5398414Y2599842D01* +X5402478Y2595829D01* +X5407406Y2592679D01* +X5412841Y2590749D01* +G37* +G36* +X4866741Y2843987D02* +G01* +X5185562Y2843987D01* +X5191912Y2844647D01* +X5197348Y2846527D01* +X5202275Y2849626D01* +X5206339Y2853791D01* +X5209438Y2858668D01* +X5211368Y2864104D01* +X5212080Y2870454D01* +X5212080Y2969260D01* +X5211368Y2975559D01* +X5209438Y2981045D01* +X5206339Y2985922D01* +X5202275Y2990088D01* +X5197348Y2993136D01* +X5191912Y2995015D01* +X5185562Y2995726D01* +X4866741Y2995726D01* +X4860391Y2995015D01* +X4854956Y2993136D01* +X4850028Y2990088D01* +X4845964Y2985922D01* +X4842865Y2981045D01* +X4840935Y2975559D01* +X4840376Y2970530D01* +X4839055Y2966567D01* +X4836261Y2963418D01* +X4832451Y2961741D01* +X4828286Y2961690D01* +X4824476Y2963316D01* +X4817414Y2968193D01* +X4808626Y2972358D01* +X4799177Y2974898D01* +X4789525Y2975762D01* +X4779822Y2974898D01* +X4770374Y2972358D01* +X4761585Y2968193D01* +X4753610Y2962656D01* +X4746701Y2955798D01* +X4741113Y2947771D01* +X4736998Y2938932D01* +X4734458Y2929534D01* +X4733645Y2919831D01* +X4734458Y2910128D01* +X4736998Y2900730D01* +X4741113Y2891942D01* +X4746701Y2883966D01* +X4753610Y2877108D01* +X4761585Y2871470D01* +X4770374Y2867406D01* +X4779822Y2864815D01* +X4789525Y2864002D01* +X4799177Y2864815D01* +X4808626Y2867406D01* +X4817414Y2871470D01* +X4824476Y2876346D01* +X4828286Y2878074D01* +X4832451Y2877972D01* +X4836261Y2876296D01* +X4839055Y2873197D01* +X4840376Y2869184D01* +X4840935Y2864104D01* +X4842865Y2858668D01* +X4845964Y2853791D01* +X4850028Y2849626D01* +X4854956Y2846527D01* +X4860391Y2844647D01* +G37* +G36* +X5419191Y2843987D02* +G01* +X5738012Y2843987D01* +X5744362Y2844647D01* +X5749798Y2846527D01* +X5754725Y2849626D01* +X5758789Y2853791D01* +X5761888Y2858668D01* +X5763818Y2864104D01* +X5764530Y2870454D01* +X5764530Y2958287D01* +X5765241Y2961995D01* +X5767273Y2965246D01* +X5770372Y2967532D01* +X5772454Y2968498D01* +X5780430Y2974035D01* +X5787288Y2980893D01* +X5792876Y2988868D01* +X5796991Y2997758D01* +X5799531Y3007156D01* +X5800394Y3016859D01* +X5799531Y3026562D01* +X5796991Y3035960D01* +X5792876Y3044799D01* +X5787288Y3052724D01* +X5780430Y3059582D01* +X5772454Y3065221D01* +X5763615Y3069285D01* +X5754217Y3071825D01* +X5744514Y3072688D01* +X5734812Y3071825D01* +X5725414Y3069285D01* +X5716574Y3065221D01* +X5708599Y3059582D01* +X5701741Y3052724D01* +X5696153Y3044799D01* +X5692038Y3035960D01* +X5689498Y3026562D01* +X5688634Y3016504D01* +X5687669Y3013049D01* +X5686348Y3010255D01* +X5684367Y3007512D01* +X5675630Y2998774D01* +X5672328Y2996488D01* +X5668416Y2995726D01* +X5419191Y2995726D01* +X5412841Y2995015D01* +X5407406Y2993136D01* +X5402478Y2990088D01* +X5398414Y2985922D01* +X5395315Y2981045D01* +X5393385Y2975559D01* +X5392674Y2969260D01* +X5392674Y2870454D01* +X5393385Y2864104D01* +X5395315Y2858668D01* +X5398414Y2853791D01* +X5402478Y2849626D01* +X5407406Y2846527D01* +X5412841Y2844647D01* +G37* +G36* +X5419191Y3097784D02* +G01* +X5492242Y3097784D01* +X5492242Y3142386D01* +X5392674Y3142386D01* +X5392674Y3124301D01* +X5393385Y3118002D01* +X5395315Y3112566D01* +X5398414Y3107588D01* +X5402478Y3103524D01* +X5407406Y3100476D01* +X5412841Y3098546D01* +G37* +G36* +X5664962Y3097784D02* +G01* +X5738012Y3097784D01* +X5744362Y3098546D01* +X5749798Y3100476D01* +X5754725Y3103524D01* +X5758789Y3107588D01* +X5761888Y3112566D01* +X5763818Y3118002D01* +X5764530Y3124301D01* +X5764530Y3142386D01* +X5664962Y3142386D01* +G37* + +%LPD*% +G36* +X50Y25857D02* +G01* +X-25196Y26212D01* +X-49174Y28498D01* +X-72948Y32461D01* +X-96316Y38354D01* +X-119176Y46024D01* +X-141376Y55372D01* +X-162763Y66395D01* +X-183286Y79044D01* +X-202742Y93268D01* +X-221030Y109016D01* +X-238048Y125983D01* +X-253746Y144322D01* +X-267970Y163779D01* +X-280670Y184251D01* +X-291693Y205638D01* +X-301091Y227888D01* +X-308762Y250748D01* +X-314604Y274116D01* +X-318668Y297789D01* +X-320802Y321665D01* +X-320802Y4721250D01* +X-320090Y4725009D01* +X-318008Y4728210D01* +X-314858Y4730496D01* +X-311099Y4731410D01* +X-307289Y4730851D01* +X-302209Y4729073D01* +X-295910Y4728362D01* +X-227025Y4728362D01* +X-220725Y4729073D01* +X-215239Y4730953D01* +X-210667Y4733086D01* +X-207264Y4733340D01* +X-204012Y4732426D01* +X-201218Y4730445D01* +X-196189Y4725314D01* +X-194208Y4722571D01* +X-193243Y4719269D01* +X-193446Y4715865D01* +X-194767Y4712766D01* +X-197459Y4708448D01* +X-199390Y4703013D01* +X-200101Y4696663D01* +X-200101Y4688535D01* +X-168046Y4688535D01* +X-168046Y4693412D01* +X-167233Y4697323D01* +X-165049Y4700676D01* +X-161747Y4702810D01* +X-157886Y4703622D01* +X-140462Y4703622D01* +X-136601Y4702810D01* +X-133299Y4700676D01* +X-131114Y4697323D01* +X-130302Y4693412D01* +X-130302Y4688535D01* +X-118821Y4688535D01* +X-114909Y4687824D01* +X-111607Y4685588D01* +X-109423Y4682286D01* +X-108661Y4678375D01* +X-108661Y4656074D01* +X-109423Y4652162D01* +X-111607Y4648860D01* +X-114909Y4646625D01* +X-118821Y4645914D01* +X-130302Y4645914D01* +X-130302Y4611319D01* +X-124764Y4611319D01* +X-118414Y4611979D01* +X-112979Y4613910D01* +X-108864Y4616551D01* +X-105359Y4617872D01* +X-101549Y4617872D01* +X-98044Y4616551D01* +X-93929Y4613910D01* +X-88493Y4611979D01* +X-82143Y4611319D01* +X-33324Y4611319D01* +X-26974Y4611979D01* +X-21539Y4613910D01* +X-16611Y4617059D01* +X-12547Y4621123D01* +X-9448Y4626000D01* +X-7518Y4631436D01* +X-6807Y4637786D01* +X-6807Y4655870D01* +X-6045Y4659731D01* +X-3860Y4663084D01* +X73152Y4740097D01* +X76454Y4742230D01* +X80314Y4743043D01* +X84226Y4742230D01* +X87528Y4740097D01* +X89712Y4736795D01* +X90474Y4732883D01* +X90474Y4526635D01* +X89712Y4522774D01* +X87528Y4519472D01* +X84226Y4517186D01* +X80314Y4516475D01* +X-106273Y4516475D01* +X-117957Y4515612D01* +X-128981Y4513072D01* +X-139547Y4508906D01* +X-149402Y4503267D01* +X-158242Y4496155D01* +X-160172Y4494123D01* +X-163576Y4491685D01* +X-167640Y4490821D01* +X-172008Y4490821D01* +X-178358Y4490161D01* +X-183794Y4488230D01* +X-188722Y4485132D01* +X-192786Y4481017D01* +X-195884Y4476089D01* +X-197764Y4470654D01* +X-198272Y4466183D01* +X-199237Y4462830D01* +X-201218Y4460087D01* +X-263601Y4397705D01* +X-268681Y4391456D01* +X-272084Y4384751D01* +X-274066Y4377385D01* +X-274523Y4371492D01* +X-274523Y4085437D01* +X-273659Y4077462D01* +X-271373Y4070299D01* +X-267563Y4063746D01* +X-263702Y4059275D01* +X-203149Y3998671D01* +X-196900Y3993591D01* +X-190195Y3990187D01* +X-182829Y3988206D01* +X-176987Y3987749D01* +X-153365Y3987749D01* +X-149199Y3986885D01* +X-145745Y3984294D01* +X-143662Y3980535D01* +X-143306Y3976268D01* +X-144780Y3972255D01* +X-147116Y3968496D01* +X-149047Y3963009D01* +X-149758Y3956710D01* +X-149758Y3907840D01* +X-149047Y3901541D01* +X-147116Y3896055D01* +X-144068Y3891178D01* +X-139954Y3887012D01* +X-135077Y3884015D01* +X-129590Y3882085D01* +X-123291Y3881374D01* +X-64414Y3881374D01* +X-58115Y3882085D01* +X-52628Y3884015D01* +X-47752Y3887012D01* +X-43586Y3891229D01* +X-40284Y3893413D01* +X-36372Y3894226D01* +X-6248Y3894226D01* +X-1270Y3893769D01* +X2082Y3892804D01* +X4927Y3890873D01* +X6908Y3887978D01* +X7823Y3884625D01* +X8636Y3877056D01* +X10515Y3871620D01* +X13614Y3866743D01* +X17678Y3862578D01* +X22606Y3859529D01* +X28041Y3857650D01* +X34391Y3856888D01* +X353212Y3856888D01* +X359562Y3857650D01* +X364998Y3859529D01* +X369925Y3862578D01* +X373989Y3866743D01* +X377088Y3871620D01* +X379018Y3877106D01* +X379730Y3883406D01* +X379730Y3982212D01* +X379018Y3988562D01* +X377088Y3993997D01* +X373989Y3998874D01* +X369925Y4003040D01* +X364998Y4006138D01* +X359562Y4008018D01* +X353212Y4008678D01* +X34391Y4008678D01* +X28041Y4008018D01* +X22606Y4006138D01* +X17678Y4003040D01* +X13614Y3998874D01* +X10515Y3993997D01* +X8636Y3988562D01* +X7823Y3980891D01* +X6908Y3977640D01* +X4927Y3974795D01* +X2082Y3972814D01* +X-1270Y3971899D01* +X-6248Y3971442D01* +X-32258Y3971442D01* +X-36474Y3972356D01* +X-39928Y3974896D01* +X-42011Y3978656D01* +X-42367Y3982974D01* +X-38658Y3992930D01* +X-37947Y3999280D01* +X-37947Y4048150D01* +X-38658Y4054449D01* +X-40589Y4059885D01* +X-43637Y4064762D01* +X-47752Y4068876D01* +X-52628Y4071975D01* +X-58115Y4073906D01* +X-64414Y4074566D01* +X-123291Y4074566D01* +X-129590Y4073906D01* +X-135077Y4071975D01* +X-139954Y4068876D01* +X-146608Y4061815D01* +X-149606Y4060190D01* +X-152958Y4059580D01* +X-158292Y4059580D01* +X-162153Y4060342D01* +X-165455Y4062526D01* +X-199694Y4096816D01* +X-201930Y4100068D01* +X-202692Y4103979D01* +X-202692Y4149140D01* +X-201777Y4153306D01* +X-199237Y4156710D01* +X-195478Y4158843D01* +X-191160Y4159148D01* +X-187147Y4157675D01* +X-183794Y4155592D01* +X-178358Y4153662D01* +X-172008Y4153001D01* +X-156413Y4153001D01* +X-156413Y4200042D01* +X-192532Y4200042D01* +X-196443Y4200855D01* +X-199694Y4202988D01* +X-201930Y4206341D01* +X-202692Y4210253D01* +X-202692Y4257598D01* +X-201930Y4261510D01* +X-199694Y4264812D01* +X-196443Y4266996D01* +X-192532Y4267758D01* +X-156413Y4267758D01* +X-156413Y4318812D01* +X-155651Y4322724D01* +X-153466Y4326077D01* +X-150164Y4328210D01* +X-146253Y4329023D01* +X-108915Y4329023D01* +X-105003Y4328210D01* +X-101701Y4326077D01* +X-99517Y4322724D01* +X-98755Y4318812D01* +X-98755Y4267758D01* +X-56692Y4267758D01* +X-56692Y4288332D01* +X-57404Y4294682D01* +X-59283Y4300118D01* +X-62382Y4305046D01* +X-66446Y4309059D01* +X-75336Y4314444D01* +X-77724Y4317847D01* +X-78587Y4321860D01* +X-77724Y4325975D01* +X-75336Y4329379D01* +X-66446Y4334764D01* +X-62382Y4338777D01* +X-59283Y4343704D01* +X-57404Y4349140D01* +X-56641Y4355592D01* +X-55575Y4359148D01* +X-53340Y4362094D01* +X-50190Y4363974D01* +X-46583Y4364685D01* +X353212Y4364685D01* +X359562Y4365345D01* +X364998Y4367225D01* +X369925Y4370374D01* +X373989Y4374438D01* +X377088Y4379315D01* +X379018Y4384802D01* +X379730Y4391101D01* +X379730Y4490008D01* +X379018Y4496257D01* +X377088Y4501794D01* +X373989Y4506671D01* +X369925Y4510735D01* +X364998Y4513834D01* +X359562Y4515713D01* +X353212Y4516475D01* +X252475Y4516475D01* +X248564Y4517186D01* +X245262Y4519472D01* +X243078Y4522774D01* +X242316Y4526635D01* +X242316Y4748580D01* +X241452Y4760264D01* +X238912Y4771237D01* +X236778Y4776724D01* +X236067Y4780483D01* +X236880Y4784293D01* +X239064Y4787595D01* +X258165Y4806696D01* +X261416Y4808829D01* +X265328Y4809642D01* +X269189Y4808829D01* +X272491Y4806696D01* +X274726Y4803343D01* +X275488Y4799431D01* +X275488Y4778248D01* +X276199Y4771898D01* +X278130Y4766462D01* +X280670Y4762296D01* +X282041Y4758842D01* +X282041Y4754981D01* +X280670Y4751527D01* +X278130Y4747412D01* +X276199Y4741926D01* +X275488Y4735576D01* +X275488Y4730038D01* +X310032Y4730038D01* +X310032Y4741570D01* +X310794Y4745482D01* +X313029Y4748733D01* +X316331Y4750968D01* +X320192Y4751679D01* +X342595Y4751679D01* +X346456Y4750968D01* +X349758Y4748733D01* +X351993Y4745482D01* +X352755Y4741570D01* +X352755Y4730038D01* +X387959Y4730038D01* +X392328Y4731004D01* +X437032Y4731004D01* +X437032Y4742586D01* +X437794Y4746447D01* +X440029Y4749698D01* +X443331Y4751984D01* +X447192Y4752695D01* +X469595Y4752695D01* +X473456Y4751984D01* +X476758Y4749698D01* +X478993Y4746447D01* +X479755Y4742586D01* +X479755Y4731004D01* +X514299Y4731004D01* +X514299Y4736592D01* +X513588Y4743043D01* +X513892Y4746345D01* +X511251Y4749088D01* +X509117Y4752492D01* +X507746Y4755997D01* +X507746Y4759807D01* +X509676Y4764227D01* +X512826Y4767326D01* +X517042Y4768900D01* +X521512Y4768443D01* +X525322Y4766106D01* +X527761Y4762296D01* +X529386Y4757978D01* +X529996Y4753864D01* +X529539Y4752187D01* +X530961Y4751171D01* +X533196Y4747666D01* +X533958Y4745685D01* +X542239Y4728768D01* +X552196Y4712817D01* +X563727Y4697882D01* +X576681Y4684217D01* +X591007Y4671974D01* +X600557Y4665370D01* +X603453Y4662170D01* +X604875Y4658207D01* +X604469Y4653889D01* +X602335Y4650282D01* +X598932Y4647692D01* +X594766Y4646828D01* +X515010Y4646828D01* +X507390Y4646015D01* +X502920Y4646523D01* +X502259Y4646980D01* +X501497Y4645507D01* +X498551Y4642916D01* +X493268Y4639818D01* +X488797Y4636058D01* +X466750Y4613960D01* +X463956Y4611979D01* +X461213Y4610709D01* +X457758Y4609744D01* +X447700Y4608880D01* +X438302Y4606340D01* +X429463Y4602175D01* +X421487Y4596638D01* +X414629Y4589780D01* +X409041Y4581753D01* +X404926Y4572914D01* +X402386Y4563516D01* +X401523Y4553813D01* +X402386Y4544110D01* +X404926Y4534712D01* +X409041Y4525873D01* +X414629Y4517948D01* +X421487Y4511090D01* +X429463Y4505452D01* +X438302Y4501388D01* +X447700Y4498848D01* +X457403Y4497984D01* +X467106Y4498848D01* +X476504Y4501388D01* +X485343Y4505452D01* +X493318Y4511090D01* +X500176Y4517948D01* +X505764Y4525873D01* +X509879Y4534712D01* +X512419Y4544110D01* +X513283Y4554169D01* +X514248Y4557674D01* +X515518Y4560417D01* +X517499Y4563160D01* +X526389Y4572050D01* +X529640Y4574235D01* +X533552Y4575048D01* +X818591Y4575048D01* +X822502Y4574235D01* +X825804Y4572050D01* +X827989Y4568748D01* +X828751Y4564888D01* +X827989Y4560976D01* +X825804Y4557623D01* +X787552Y4519472D01* +X784301Y4517186D01* +X780389Y4516475D01* +X586841Y4516475D01* +X580491Y4515713D01* +X575056Y4513834D01* +X570128Y4510735D01* +X566064Y4506671D01* +X562965Y4501794D01* +X561035Y4496257D01* +X560324Y4490008D01* +X560324Y4391101D01* +X561035Y4384802D01* +X562965Y4379315D01* +X566064Y4374438D01* +X570128Y4370374D01* +X575056Y4367225D01* +X580491Y4365345D01* +X586841Y4364685D01* +X905662Y4364685D01* +X912012Y4365345D01* +X917448Y4367225D01* +X922375Y4370374D01* +X926439Y4374438D01* +X929538Y4379315D01* +X931468Y4384802D01* +X932180Y4391101D01* +X932180Y4440428D01* +X933196Y4446727D01* +X934719Y4450435D01* +X938377Y4455515D01* +X1002080Y4519218D01* +X1013917Y4529683D01* +X1022756Y4535627D01* +X1026109Y4537100D01* +X1032205Y4538573D01* +X1045718Y4543450D01* +X1058418Y4549800D01* +X1060602Y4551273D01* +X1064412Y4553000D01* +X1075131Y4555032D01* +X1090828Y4556048D01* +X1432407Y4556048D01* +X1435404Y4555591D01* +X1438198Y4554169D01* +X1444447Y4549851D01* +X1454048Y4545380D01* +X1464208Y4542383D01* +X1474724Y4541062D01* +X1485341Y4541520D01* +X1495704Y4543602D01* +X1505610Y4547362D01* +X1514805Y4552746D01* +X1523034Y4559452D01* +X1530045Y4567377D01* +X1535734Y4576267D01* +X1539900Y4586020D01* +X1542389Y4596333D01* +X1543253Y4606950D01* +X1542389Y4617516D01* +X1539900Y4627829D01* +X1535734Y4637582D01* +X1530045Y4646523D01* +X1522425Y4654905D01* +X1519834Y4658156D01* +X1518716Y4662119D01* +X1519275Y4666183D01* +X1521460Y4669688D01* +X1524812Y4672076D01* +X1528876Y4672888D01* +X2482951Y4672888D01* +X2486863Y4672126D01* +X2490165Y4669942D01* +X2516174Y4643983D01* +X2518410Y4640529D01* +X2519172Y4636465D01* +X2518206Y4632502D01* +X2515768Y4629251D01* +X2512263Y4627118D01* +X2506675Y4626762D01* +X2333040Y4626762D01* +X2325065Y4625949D01* +X2317902Y4623562D01* +X2311298Y4619752D01* +X2306828Y4615942D01* +X2124506Y4433620D01* +X2121204Y4431436D01* +X2117344Y4430623D01* +X1382522Y4430623D01* +X1360728Y4431741D01* +X1339596Y4434941D01* +X1318920Y4440174D01* +X1298803Y4447387D01* +X1279550Y4456582D01* +X1261262Y4467606D01* +X1244142Y4480407D01* +X1227023Y4495647D01* +X1219809Y4502505D01* +X1206906Y4512157D01* +X1193038Y4520285D01* +X1178306Y4526788D01* +X1162913Y4531512D01* +X1147114Y4534509D01* +X1131062Y4535627D01* +X1115009Y4534966D01* +X1099108Y4532376D01* +X1083614Y4528108D01* +X1068679Y4522012D01* +X1054608Y4514291D01* +X1041450Y4505045D01* +X1029411Y4494326D01* +X1018743Y4482388D01* +X1009446Y4469180D01* +X1001725Y4455058D01* +X995680Y4440224D01* +X991362Y4424730D01* +X988872Y4408779D01* +X988161Y4392676D01* +X989330Y4376724D01* +X992276Y4360824D01* +X997051Y4345533D01* +X1003503Y4330801D01* +X1011631Y4316831D01* +X1021283Y4304030D01* +X1032306Y4292346D01* +X1044600Y4281982D01* +X1058011Y4273042D01* +X1072388Y4265726D01* +X1087424Y4260138D01* +X1103071Y4256227D01* +X1119022Y4254246D01* +X1135075Y4253941D01* +X1151077Y4255617D01* +X1166825Y4259021D01* +X1182065Y4264152D01* +X1196594Y4271060D01* +X1210208Y4279595D01* +X1222806Y4289552D01* +X1229258Y4295648D01* +X1244904Y4309770D01* +X1262075Y4322470D01* +X1280414Y4333392D01* +X1299718Y4342485D01* +X1319834Y4349546D01* +X1340561Y4354779D01* +X1361694Y4357827D01* +X1382522Y4358792D01* +X2135886Y4358792D01* +X2143861Y4359706D01* +X2150973Y4361942D01* +X2157577Y4365752D01* +X2162098Y4369612D01* +X2275890Y4483404D01* +X2279192Y4485640D01* +X2283053Y4486402D01* +X2286914Y4485690D01* +X2290216Y4483455D01* +X2292451Y4480153D01* +X2293213Y4476343D01* +X2292502Y4472432D01* +X2286863Y4458563D01* +X2282545Y4443120D01* +X2280005Y4427169D01* +X2279345Y4411065D01* +X2280462Y4395063D01* +X2283460Y4379264D01* +X2288184Y4363872D01* +X2294686Y4349140D01* +X2302764Y4335272D01* +X2312416Y4322368D01* +X2323490Y4310735D01* +X2335784Y4300321D01* +X2349195Y4291431D01* +X2363520Y4284116D01* +X2365400Y4283456D01* +X2368854Y4281271D01* +X2371140Y4278071D01* +X2372004Y4274159D01* +X2371293Y4270197D01* +X2369108Y4266844D01* +X2365806Y4264507D01* +X2361895Y4263745D01* +X1281023Y4263745D01* +X1273048Y4262932D01* +X1265936Y4260646D01* +X1259332Y4256735D01* +X1254861Y4252925D01* +X1227429Y4225544D01* +X1224127Y4223359D01* +X1220266Y4222546D01* +X952804Y4222546D01* +X941984Y4223562D01* +X939393Y4224172D01* +X935634Y4226306D01* +X933043Y4229760D01* +X932180Y4233875D01* +X932180Y4236161D01* +X931468Y4242460D01* +X929538Y4247896D01* +X926439Y4252823D01* +X922375Y4256836D01* +X917448Y4259986D01* +X912012Y4261916D01* +X905662Y4262577D01* +X586841Y4262577D01* +X580491Y4261916D01* +X575056Y4259986D01* +X570128Y4256836D01* +X566064Y4252823D01* +X562965Y4247896D01* +X561035Y4242460D01* +X560324Y4236161D01* +X560324Y4137202D01* +X561035Y4130903D01* +X562965Y4125468D01* +X566064Y4120540D01* +X570128Y4116527D01* +X575056Y4113428D01* +X580491Y4111498D01* +X586841Y4110736D01* +X905662Y4110736D01* +X912012Y4111498D01* +X917448Y4113428D01* +X922375Y4116527D01* +X926439Y4120540D01* +X929538Y4125468D01* +X931468Y4130903D01* +X932180Y4137202D01* +X932180Y4139488D01* +X933043Y4143603D01* +X935634Y4147108D01* +X940003Y4149344D01* +X941984Y4149750D01* +X952804Y4150766D01* +X1238808Y4150766D01* +X1246784Y4151629D01* +X1253947Y4153966D01* +X1260551Y4157726D01* +X1265021Y4161536D01* +X1292402Y4188917D01* +X1295704Y4191203D01* +X1299616Y4191914D01* +X1398778Y4191914D01* +X1403146Y4190898D01* +X1406702Y4188155D01* +X1408633Y4184040D01* +X1408684Y4179570D01* +X1406753Y4175506D01* +X1403248Y4172712D01* +X1394307Y4168292D01* +X1382776Y4160520D01* +X1372362Y4151376D01* +X1363218Y4140962D01* +X1355547Y4129532D01* +X1349400Y4117035D01* +X1344980Y4103928D01* +X1342237Y4090365D01* +X1341374Y4076496D01* +X1342237Y4062729D01* +X1344980Y4049115D01* +X1349400Y4036009D01* +X1355547Y4023614D01* +X1363218Y4012082D01* +X1372362Y4001719D01* +X1382776Y3992524D01* +X1390599Y3987292D01* +X1393596Y3984193D01* +X1395018Y3980230D01* +X1394663Y3975912D01* +X1392580Y3972153D01* +X1389126Y3969613D01* +X1384960Y3968699D01* +X952804Y3968699D01* +X941984Y3969715D01* +X939393Y3970324D01* +X935634Y3972407D01* +X933043Y3975862D01* +X932180Y3980078D01* +X932180Y3982212D01* +X931468Y3988562D01* +X929538Y3993997D01* +X926439Y3998874D01* +X922375Y4003040D01* +X917448Y4006138D01* +X912012Y4008018D01* +X905662Y4008678D01* +X586841Y4008678D01* +X580491Y4008018D01* +X575056Y4006138D01* +X570128Y4003040D01* +X566064Y3998874D01* +X562965Y3993997D01* +X561035Y3988562D01* +X560324Y3982212D01* +X560324Y3883406D01* +X561035Y3877106D01* +X562965Y3871620D01* +X566064Y3866743D01* +X570128Y3862578D01* +X575056Y3859529D01* +X580491Y3857650D01* +X586841Y3856888D01* +X905662Y3856888D01* +X912012Y3857650D01* +X917448Y3859529D01* +X922375Y3862578D01* +X926439Y3866743D01* +X929538Y3871620D01* +X931468Y3877106D01* +X932180Y3883406D01* +X932180Y3885539D01* +X933043Y3889806D01* +X935634Y3893210D01* +X940003Y3895445D01* +X941984Y3895851D01* +X952804Y3896868D01* +X1359255Y3896868D01* +X1363116Y3896156D01* +X1366418Y3893870D01* +X1368653Y3890670D01* +X1369415Y3886758D01* +X1368653Y3882898D01* +X1366418Y3879596D01* +X1204722Y3717848D01* +X1201420Y3715562D01* +X1197508Y3714851D01* +X952804Y3714851D01* +X941984Y3715867D01* +X939393Y3716477D01* +X935634Y3718509D01* +X933043Y3721963D01* +X932180Y3726179D01* +X932180Y3728364D01* +X931468Y3734663D01* +X929538Y3740099D01* +X926439Y3745026D01* +X922375Y3749141D01* +X917448Y3752189D01* +X912012Y3754120D01* +X905662Y3754882D01* +X586841Y3754882D01* +X580491Y3754120D01* +X575056Y3752189D01* +X570128Y3749141D01* +X566064Y3745026D01* +X562965Y3740099D01* +X561035Y3734663D01* +X560324Y3728364D01* +X560324Y3629507D01* +X561035Y3623157D01* +X562965Y3617772D01* +X566064Y3612845D01* +X570128Y3608730D01* +X575056Y3605631D01* +X580491Y3603701D01* +X586841Y3603040D01* +X905662Y3603040D01* +X912012Y3603701D01* +X917448Y3605631D01* +X922375Y3608730D01* +X926439Y3612845D01* +X929538Y3617772D01* +X931468Y3623157D01* +X932180Y3629507D01* +X932180Y3631692D01* +X933043Y3635857D01* +X935634Y3639312D01* +X940003Y3641648D01* +X952804Y3643071D01* +X1215390Y3643071D01* +X1219250Y3642207D01* +X1222552Y3640074D01* +X1224788Y3636772D01* +X1225550Y3632911D01* +X1224788Y3628999D01* +X1222552Y3625646D01* +X1060805Y3463950D01* +X1057554Y3461715D01* +X1053642Y3461004D01* +X952804Y3461004D01* +X941984Y3461969D01* +X939393Y3462528D01* +X935634Y3464610D01* +X933043Y3468065D01* +X932180Y3472281D01* +X932180Y3474516D01* +X931468Y3480765D01* +X929538Y3486302D01* +X926439Y3491179D01* +X922375Y3495243D01* +X917448Y3498342D01* +X912012Y3500221D01* +X905662Y3500983D01* +X586841Y3500983D01* +X580491Y3500221D01* +X575056Y3498342D01* +X570128Y3495243D01* +X566064Y3491179D01* +X562965Y3486302D01* +X561035Y3480765D01* +X560324Y3474516D01* +X560324Y3375609D01* +X561035Y3369310D01* +X562965Y3363823D01* +X566064Y3358946D01* +X570128Y3354882D01* +X575056Y3351733D01* +X580491Y3349853D01* +X586841Y3349142D01* +X905662Y3349142D01* +X912012Y3349853D01* +X917448Y3351733D01* +X922375Y3354882D01* +X926439Y3358946D01* +X929538Y3363823D01* +X931468Y3369310D01* +X932180Y3375609D01* +X932180Y3377844D01* +X933043Y3382010D01* +X935634Y3385413D01* +X940003Y3387750D01* +X941984Y3388156D01* +X952804Y3389172D01* +X1072184Y3389172D01* +X1080160Y3390036D01* +X1087323Y3392271D01* +X1093927Y3396081D01* +X1098397Y3399942D01* +X1467408Y3768953D01* +X1470710Y3771188D01* +X1474571Y3771950D01* +X1556156Y3771950D01* +X1560169Y3771137D01* +X1563522Y3768801D01* +X1565656Y3765346D01* +X1566316Y3761435D01* +X1565351Y3757472D01* +X1562963Y3754170D01* +X1554784Y3746906D01* +X1544116Y3734968D01* +X1534820Y3721811D01* +X1527098Y3707688D01* +X1521053Y3692753D01* +X1516735Y3677310D01* +X1514246Y3661359D01* +X1513535Y3645255D01* +X1514703Y3629253D01* +X1517650Y3613404D01* +X1522425Y3598113D01* +X1528876Y3583330D01* +X1537004Y3569462D01* +X1546656Y3556609D01* +X1557680Y3544925D01* +X1569974Y3534562D01* +X1583385Y3525621D01* +X1597761Y3518306D01* +X1612798Y3512718D01* +X1628444Y3508857D01* +X1644396Y3506825D01* +X1660448Y3506520D01* +X1676450Y3508197D01* +X1692198Y3511600D01* +X1707438Y3516731D01* +X1721967Y3523640D01* +X1735582Y3532174D01* +X1748180Y3542131D01* +X1753107Y3546957D01* +X1770278Y3562299D01* +X1787448Y3574999D01* +X1805787Y3585972D01* +X1825142Y3595014D01* +X1845259Y3602177D01* +X1865985Y3607358D01* +X1887118Y3610457D01* +X1907946Y3611422D01* +X2670098Y3611422D01* +X2673807Y3611829D01* +X2677922Y3611422D01* +X2681528Y3609390D01* +X2684018Y3606088D01* +X2685034Y3602075D01* +X2684322Y3597960D01* +X2682036Y3594506D01* +X2629204Y3541674D01* +X2625902Y3539490D01* +X2622042Y3538677D01* +X2328011Y3538677D01* +X2319985Y3537813D01* +X2312873Y3535578D01* +X2306269Y3531768D01* +X2301798Y3527907D01* +X2206904Y3433013D01* +X2203704Y3430828D01* +X2199944Y3430066D01* +X2196134Y3430727D01* +X2192832Y3432657D01* +X2190546Y3435756D01* +X2189581Y3439515D01* +X2188616Y3453993D01* +X2185924Y3467506D01* +X2181453Y3480663D01* +X2175357Y3493109D01* +X2167636Y3504590D01* +X2158492Y3515055D01* +X2148078Y3524148D01* +X2136597Y3531819D01* +X2124151Y3538016D01* +X2111044Y3542436D01* +X2097481Y3545128D01* +X2083663Y3545992D01* +X2069795Y3545128D01* +X2056231Y3542436D01* +X2043125Y3538016D01* +X2030679Y3531819D01* +X2019198Y3524148D01* +X2008784Y3515055D01* +X1999640Y3504590D01* +X1991918Y3493109D01* +X1985822Y3480663D01* +X1981352Y3467506D01* +X1978660Y3453993D01* +X1977745Y3440125D01* +X1978660Y3426307D01* +X1981352Y3412744D01* +X1985822Y3399586D01* +X1991918Y3387242D01* +X1999640Y3375660D01* +X2008784Y3365296D01* +X2019198Y3356101D01* +X2030679Y3348482D01* +X2043125Y3342335D01* +X2056231Y3337915D01* +X2069795Y3335121D01* +X2084273Y3334207D01* +X2087981Y3333242D01* +X2091080Y3330956D01* +X2093112Y3327654D01* +X2093772Y3323844D01* +X2092960Y3320135D01* +X2090775Y3316884D01* +X1983943Y3210052D01* +X1980641Y3207867D01* +X1976780Y3207054D01* +X952804Y3207054D01* +X941984Y3208070D01* +X939393Y3208680D01* +X935634Y3210814D01* +X933043Y3214268D01* +X932180Y3218383D01* +X932180Y3220669D01* +X931468Y3226968D01* +X929538Y3232404D01* +X926439Y3237280D01* +X922375Y3241344D01* +X917448Y3244494D01* +X912012Y3246424D01* +X905662Y3247085D01* +X586841Y3247085D01* +X580491Y3246424D01* +X575056Y3244494D01* +X570128Y3241344D01* +X566064Y3237280D01* +X562965Y3232404D01* +X561035Y3226968D01* +X560324Y3220669D01* +X560324Y3121710D01* +X561035Y3115462D01* +X562152Y3112262D01* +X562711Y3108452D01* +X561848Y3104743D01* +X559612Y3101543D01* +X556361Y3099511D01* +X552551Y3098749D01* +X387502Y3098749D01* +X383692Y3099511D01* +X380441Y3101543D01* +X378206Y3104743D01* +X377342Y3108452D01* +X377901Y3112262D01* +X379018Y3115462D01* +X379730Y3121710D01* +X379730Y3220669D01* +X379018Y3226968D01* +X377088Y3232404D01* +X373989Y3237280D01* +X369925Y3241344D01* +X364998Y3244494D01* +X359562Y3246424D01* +X353212Y3247085D01* +X34391Y3247085D01* +X28041Y3246424D01* +X22606Y3244494D01* +X17678Y3241344D01* +X13614Y3237280D01* +X10515Y3232404D01* +X8585Y3226968D01* +X7873Y3220669D01* +X7873Y3121710D01* +X8585Y3115462D01* +X10515Y3109976D01* +X13614Y3105048D01* +X17678Y3100984D01* +X22606Y3097936D01* +X28041Y3096006D01* +X34391Y3095244D01* +X214731Y3095244D01* +X218592Y3094532D01* +X221894Y3092297D01* +X257403Y3056788D01* +X259486Y3053740D01* +X260350Y3050184D01* +X259892Y3046476D01* +X258114Y3043275D01* +X255320Y3040837D01* +X248310Y3036824D01* +X243840Y3032963D01* +X207060Y2996184D01* +X203809Y2993999D01* +X199898Y2993186D01* +X34391Y2993186D01* +X28041Y2992526D01* +X22606Y2990596D01* +X17678Y2987548D01* +X13614Y2983382D01* +X10515Y2978505D01* +X8585Y2973019D01* +X7873Y2966720D01* +X7873Y2867914D01* +X8585Y2861614D01* +X10515Y2856128D01* +X13614Y2851251D01* +X17678Y2847086D01* +X22606Y2844038D01* +X28041Y2842107D01* +X34391Y2841447D01* +X353212Y2841447D01* +X359562Y2842107D01* +X364998Y2844038D01* +X369925Y2847086D01* +X373989Y2851251D01* +X377088Y2856128D01* +X379018Y2861614D01* +X379730Y2867914D01* +X379730Y2961792D01* +X380492Y2965704D01* +X382676Y2969006D01* +X385978Y2971139D01* +X389890Y2971952D01* +X550164Y2971952D01* +X554075Y2971139D01* +X557377Y2969006D01* +X559562Y2965704D01* +X560324Y2961792D01* +X560324Y2867914D01* +X561035Y2861614D01* +X562965Y2856128D01* +X566064Y2851251D01* +X570128Y2847086D01* +X575056Y2844038D01* +X580491Y2842107D01* +X586841Y2841447D01* +X767181Y2841447D01* +X771042Y2840634D01* +X774344Y2838399D01* +X815949Y2796794D01* +X822198Y2791815D01* +X828903Y2788412D01* +X836269Y2786430D01* +X842111Y2785973D01* +X2326284Y2785973D01* +X2330196Y2785160D01* +X2333498Y2782976D01* +X2335682Y2779623D01* +X2336444Y2775762D01* +X2335682Y2771851D01* +X2333498Y2768549D01* +X2267204Y2702356D01* +X2263902Y2700070D01* +X2260041Y2699359D01* +X952804Y2699359D01* +X941984Y2700375D01* +X939393Y2700934D01* +X935634Y2703017D01* +X933043Y2706471D01* +X932180Y2710688D01* +X932180Y2712872D01* +X931468Y2719171D01* +X929538Y2724607D01* +X926439Y2729585D01* +X922375Y2733649D01* +X917448Y2736697D01* +X912012Y2738628D01* +X905662Y2739390D01* +X586841Y2739390D01* +X580491Y2738628D01* +X575056Y2736697D01* +X570128Y2733649D01* +X566064Y2729585D01* +X562965Y2724607D01* +X561035Y2719171D01* +X560324Y2712872D01* +X560324Y2614015D01* +X560679Y2611069D01* +X560273Y2606802D01* +X558139Y2603144D01* +X554736Y2600655D01* +X550570Y2599791D01* +X389483Y2599791D01* +X385318Y2600655D01* +X381914Y2603144D01* +X379780Y2606802D01* +X379374Y2611069D01* +X379730Y2614015D01* +X379730Y2712872D01* +X379018Y2719171D01* +X377088Y2724607D01* +X373989Y2729585D01* +X369925Y2733649D01* +X364998Y2736697D01* +X359562Y2738628D01* +X353212Y2739390D01* +X34391Y2739390D01* +X28041Y2738628D01* +X22606Y2736697D01* +X17678Y2733649D01* +X13614Y2729585D01* +X10515Y2724607D01* +X8585Y2719171D01* +X7873Y2712872D01* +X7873Y2614015D01* +X8585Y2607665D01* +X10515Y2602280D01* +X13614Y2597353D01* +X17678Y2593238D01* +X22606Y2590139D01* +X28041Y2588209D01* +X34391Y2587548D01* +X214731Y2587548D01* +X218592Y2586736D01* +X221894Y2584602D01* +X262788Y2543657D01* +X264972Y2540355D01* +X265734Y2536494D01* +X264972Y2532583D01* +X262788Y2529332D01* +X221894Y2488488D01* +X218643Y2486202D01* +X214731Y2485491D01* +X34391Y2485491D01* +X28041Y2484729D01* +X22606Y2482900D01* +X17678Y2479751D01* +X13614Y2475687D01* +X10515Y2470810D01* +X8585Y2465324D01* +X7873Y2459024D01* +X7873Y2360117D01* +X8585Y2353818D01* +X10515Y2348331D01* +X13614Y2343454D01* +X17678Y2339390D01* +X22606Y2336241D01* +X28041Y2334412D01* +X34391Y2333650D01* +X353212Y2333650D01* +X359562Y2334412D01* +X364998Y2336241D01* +X369925Y2339390D01* +X373989Y2343454D01* +X377088Y2348331D01* +X379018Y2353818D01* +X379730Y2360117D01* +X379730Y2458974D01* +X378815Y2466543D01* +X379222Y2470861D01* +X381304Y2474518D01* +X384759Y2477058D01* +X388924Y2477922D01* +X551129Y2477922D01* +X555294Y2477058D01* +X558749Y2474518D01* +X560832Y2470861D01* +X561238Y2466543D01* +X560324Y2458974D01* +X560324Y2360117D01* +X561035Y2353818D01* +X562965Y2348331D01* +X566064Y2343454D01* +X570128Y2339390D01* +X575056Y2336241D01* +X580491Y2334412D01* +X586841Y2333650D01* +X905662Y2333650D01* +X912012Y2334412D01* +X917448Y2336241D01* +X922375Y2339390D01* +X926439Y2343454D01* +X929538Y2348331D01* +X931468Y2353818D01* +X932180Y2360117D01* +X932180Y2362352D01* +X933043Y2366518D01* +X935634Y2369921D01* +X940003Y2372207D01* +X941984Y2372664D01* +X952804Y2373680D01* +X1514703Y2373680D01* +X1518615Y2372868D01* +X1521917Y2370683D01* +X1547063Y2345486D01* +X1549298Y2342032D01* +X1550009Y2338019D01* +X1549044Y2334056D01* +X1546606Y2330704D01* +X1536141Y2324811D01* +X1520240Y2310841D01* +X1507896Y2302205D01* +X1494688Y2295042D01* +X1480718Y2289302D01* +X1466189Y2285288D01* +X1451305Y2282901D01* +X1436217Y2282291D01* +X1406855Y2284222D01* +X1390751Y2283460D01* +X1374851Y2280970D01* +X1359357Y2276652D01* +X1344472Y2270607D01* +X1330350Y2262886D01* +X1317193Y2253589D01* +X1305204Y2242921D01* +X1294485Y2230932D01* +X1285240Y2217775D01* +X1277518Y2203704D01* +X1271473Y2188718D01* +X1267155Y2173274D01* +X1264615Y2157323D01* +X1263954Y2141270D01* +X1265072Y2125218D01* +X1268069Y2109419D01* +X1272794Y2094026D01* +X1279296Y2079294D01* +X1287373Y2065477D01* +X1297025Y2052574D01* +X1308100Y2040889D01* +X1320393Y2030475D01* +X1333804Y2021586D01* +X1348130Y2014270D01* +X1363218Y2008733D01* +X1378813Y2004872D01* +X1394764Y2002789D01* +X1410868Y2002536D01* +X1426870Y2004110D01* +X1442567Y2007565D01* +X1457807Y2012746D01* +X1472336Y2019604D01* +X1486001Y2028189D01* +X1498600Y2038146D01* +X1509979Y2049525D01* +X1519986Y2062124D01* +X1528470Y2075738D01* +X1535379Y2090318D01* +X1540560Y2105507D01* +X1543964Y2121255D01* +X1545590Y2137257D01* +X1545336Y2153513D01* +X1544675Y2160828D01* +X1543761Y2175865D01* +X1544574Y2190953D01* +X1547063Y2205786D01* +X1551228Y2220315D01* +X1557020Y2234184D01* +X1564335Y2247341D01* +X1570177Y2255621D01* +X1572412Y2257907D01* +X1575257Y2259380D01* +X1578457Y2259888D01* +X2827934Y2259888D01* +X2831947Y2259126D01* +X2835249Y2256840D01* +X2837434Y2253437D01* +X2838094Y2249474D01* +X2833979Y2234590D01* +X2833116Y2224887D01* +X2833979Y2215286D01* +X2836519Y2205786D01* +X2840634Y2196998D01* +X2846222Y2189073D01* +X2847441Y2187803D01* +X2849626Y2184552D01* +X2850388Y2180640D01* +X2850388Y1492300D01* +X2849930Y1487271D01* +X2849016Y1483918D01* +X2847035Y1481124D01* +X2844190Y1479143D01* +X2840888Y1478229D01* +X2833217Y1477365D01* +X2827782Y1475486D01* +X2822905Y1472438D01* +X2818790Y1468374D01* +X2817469Y1466240D01* +X2814421Y1463192D01* +X2810408Y1461617D01* +X2806090Y1461871D01* +X2802229Y1464005D01* +X2799638Y1467459D01* +X2798724Y1471625D01* +X2798724Y1882495D01* +X2799486Y1886407D01* +X2801670Y1889709D01* +X2802890Y1890979D01* +X2808478Y1898904D01* +X2812592Y1907692D01* +X2815132Y1917141D01* +X2815996Y1926793D01* +X2815132Y1936496D01* +X2812592Y1945944D01* +X2808478Y1954733D01* +X2802890Y1962759D01* +X2796032Y1969668D01* +X2788056Y1975205D01* +X2779217Y1979371D01* +X2769819Y1981911D01* +X2760116Y1982724D01* +X2750413Y1981911D01* +X2741015Y1979371D01* +X2732176Y1975205D01* +X2724200Y1969668D01* +X2717342Y1962759D01* +X2711754Y1954733D01* +X2707640Y1945944D01* +X2705100Y1936496D01* +X2704236Y1926793D01* +X2705100Y1917141D01* +X2707640Y1907692D01* +X2711754Y1898904D01* +X2717342Y1890979D01* +X2718511Y1889709D01* +X2720746Y1886407D01* +X2721508Y1882495D01* +X2721508Y1476705D01* +X2720746Y1472844D01* +X2718511Y1469542D01* +X2715209Y1467256D01* +X2711348Y1466545D01* +X2707436Y1467256D01* +X2704134Y1469542D01* +X2701239Y1472438D01* +X2696311Y1475486D01* +X2690876Y1477416D01* +X2684576Y1478178D01* +X2682240Y1478178D01* +X2678023Y1478991D01* +X2674620Y1481632D01* +X2672130Y1486560D01* +X2671775Y1488541D01* +X2670708Y1499514D01* +X2670708Y2108504D01* +X2671470Y2112365D01* +X2673705Y2115718D01* +X2674874Y2116886D01* +X2680462Y2124913D01* +X2684576Y2133752D01* +X2687116Y2143150D01* +X2687980Y2152853D01* +X2687116Y2162556D01* +X2684576Y2171954D01* +X2680462Y2180742D01* +X2674874Y2188718D01* +X2668016Y2195576D01* +X2660040Y2201214D01* +X2651201Y2205278D01* +X2641803Y2207818D01* +X2632100Y2208682D01* +X2622397Y2207818D01* +X2612999Y2205278D01* +X2604160Y2201214D01* +X2596184Y2195576D01* +X2589326Y2188718D01* +X2583738Y2180742D01* +X2579624Y2171954D01* +X2577084Y2162556D01* +X2576220Y2152853D01* +X2577084Y2143150D01* +X2579624Y2133752D01* +X2583738Y2124913D01* +X2589326Y2116886D01* +X2590546Y2115718D01* +X2592730Y2112365D01* +X2593492Y2108504D01* +X2593492Y1488084D01* +X2592832Y1484426D01* +X2590901Y1481277D01* +X2588006Y1479042D01* +X2584500Y1477975D01* +X2579370Y1477416D01* +X2573934Y1475486D01* +X2569006Y1472438D01* +X2564942Y1468374D01* +X2561844Y1463395D01* +X2559913Y1457960D01* +X2559202Y1451610D01* +X2559202Y1132840D01* +X2559913Y1126490D01* +X2561844Y1121003D01* +X2564942Y1116076D01* +X2569006Y1112012D01* +X2573934Y1108964D01* +X2579370Y1107033D01* +X2585669Y1106271D01* +X2684576Y1106271D01* +X2690876Y1107033D01* +X2696311Y1108964D01* +X2701239Y1112012D01* +X2704134Y1114907D01* +X2707436Y1117193D01* +X2711348Y1117904D01* +X2715209Y1117193D01* +X2718511Y1114907D01* +X2720746Y1111605D01* +X2721508Y1107744D01* +X2721508Y1061008D01* +X2720746Y1057148D01* +X2718511Y1053846D01* +X2608173Y943457D01* +X2603093Y937209D01* +X2599791Y931062D01* +X2597505Y928217D01* +X2594406Y926337D01* +X2590800Y925728D01* +X2585669Y925728D01* +X2579370Y924966D01* +X2573934Y923036D01* +X2569006Y919987D01* +X2564942Y915924D01* +X2561844Y910945D01* +X2559913Y905510D01* +X2559202Y899160D01* +X2559202Y580390D01* +X2559913Y574040D01* +X2561844Y568553D01* +X2564942Y563626D01* +X2569006Y559562D01* +X2573934Y556514D01* +X2579370Y554583D01* +X2585669Y553821D01* +X2684576Y553821D01* +X2690876Y554583D01* +X2696311Y556514D01* +X2701239Y559562D01* +X2705303Y563626D01* +X2708402Y568553D01* +X2710332Y574040D01* +X2711043Y580390D01* +X2711043Y899160D01* +X2710332Y905510D01* +X2708402Y910945D01* +X2702560Y919734D01* +X2701798Y923645D01* +X2702560Y927506D01* +X2704744Y930808D01* +X2787040Y1013155D01* +X2792171Y1019352D01* +X2795727Y1026007D01* +X2797911Y1033271D01* +X2798724Y1041247D01* +X2798724Y1112824D01* +X2799638Y1116990D01* +X2802229Y1120444D01* +X2806090Y1122578D01* +X2810408Y1122832D01* +X2814421Y1121257D01* +X2817469Y1118209D01* +X2818790Y1116076D01* +X2822905Y1112012D01* +X2827782Y1108964D01* +X2833268Y1107033D01* +X2839567Y1106271D01* +X2938424Y1106271D01* +X2944723Y1107033D01* +X2950210Y1108964D01* +X2955086Y1112012D01* +X2959201Y1116076D01* +X2962300Y1121003D01* +X2964180Y1126490D01* +X2964891Y1132840D01* +X2964891Y1451610D01* +X2964180Y1457960D01* +X2962300Y1463395D01* +X2959201Y1468374D01* +X2955086Y1472438D01* +X2950210Y1475486D01* +X2944774Y1477365D01* +X2937154Y1478229D01* +X2933801Y1479143D01* +X2930956Y1481124D01* +X2928975Y1483918D01* +X2928061Y1487271D01* +X2927604Y1492300D01* +X2927604Y2180640D01* +X2928366Y2184552D01* +X2930601Y2187803D01* +X2931769Y2189073D01* +X2937357Y2196998D01* +X2941472Y2205786D01* +X2944012Y2215286D01* +X2944876Y2224887D01* +X2944012Y2234590D01* +X2939897Y2249474D01* +X2940558Y2253437D01* +X2942742Y2256840D01* +X2946044Y2259126D01* +X2950057Y2259888D01* +X3009442Y2259888D01* +X3013303Y2259126D01* +X3016605Y2256942D01* +X3294735Y1978863D01* +X3300984Y1973732D01* +X3307638Y1970328D01* +X3315004Y1968398D01* +X3320897Y1967890D01* +X4830470Y1967890D01* +X4834636Y1967026D01* +X4838039Y1964537D01* +X4840173Y1960880D01* +X4840579Y1956612D01* +X4840224Y1953768D01* +X4840224Y1892452D01* +X4839563Y1888794D01* +X4837633Y1885696D01* +X4834686Y1883359D01* +X4831130Y1882292D01* +X4827473Y1882648D01* +X4822799Y1883867D01* +X4813147Y1884730D01* +X4803444Y1883867D01* +X4793996Y1881327D01* +X4785207Y1877263D01* +X4777232Y1871624D01* +X4770323Y1864715D01* +X4764735Y1856790D01* +X4760620Y1848002D01* +X4758080Y1838502D01* +X4757267Y1828850D01* +X4758080Y1819198D01* +X4760620Y1809699D01* +X4764735Y1800910D01* +X4770323Y1792935D01* +X4777232Y1786077D01* +X4785207Y1780438D01* +X4793996Y1776323D01* +X4803444Y1773834D01* +X4813147Y1772970D01* +X4822799Y1773834D01* +X4832248Y1776323D01* +X4833569Y1776984D01* +X4837887Y1777898D01* +X4965090Y1777898D01* +X4969002Y1777187D01* +X4972253Y1774952D01* +X4974488Y1771700D01* +X4975250Y1767738D01* +X4975250Y1661007D01* +X4974590Y1657400D01* +X4972659Y1654200D01* +X4969764Y1651965D01* +X4966208Y1650898D01* +X4961382Y1650339D01* +X4955946Y1648409D01* +X4951018Y1645412D01* +X4946954Y1641297D01* +X4943856Y1636420D01* +X4941925Y1630883D01* +X4941214Y1624584D01* +X4941214Y1473352D01* +X4941925Y1467053D01* +X4943856Y1461566D01* +X4946954Y1456690D01* +X4951018Y1452524D01* +X4955946Y1449527D01* +X4961382Y1447546D01* +X4967732Y1446885D01* +X5086553Y1446885D01* +X5092903Y1447546D01* +X5098338Y1449527D01* +X5103266Y1452524D01* +X5107330Y1456690D01* +X5110429Y1461566D01* +X5112359Y1467053D01* +X5113070Y1473352D01* +X5113070Y1624584D01* +X5112359Y1630883D01* +X5110429Y1636420D01* +X5107330Y1641297D01* +X5103266Y1645412D01* +X5098338Y1648409D01* +X5092903Y1650339D01* +X5086096Y1651152D01* +X5082540Y1652219D01* +X5079644Y1654505D01* +X5077714Y1657604D01* +X5077053Y1661210D01* +X5077053Y1818284D01* +X5077866Y1822196D01* +X5080050Y1825498D01* +X5083352Y1827682D01* +X5087213Y1828495D01* +X5185562Y1828495D01* +X5191912Y1829155D01* +X5197348Y1831035D01* +X5202275Y1834134D01* +X5206339Y1838299D01* +X5209438Y1843176D01* +X5211368Y1848612D01* +X5212080Y1854962D01* +X5212080Y1953768D01* +X5211724Y1956612D01* +X5212130Y1960880D01* +X5214264Y1964537D01* +X5217668Y1967026D01* +X5221833Y1967890D01* +X5382920Y1967890D01* +X5387086Y1967026D01* +X5390489Y1964537D01* +X5392623Y1960880D01* +X5393029Y1956612D01* +X5392674Y1953768D01* +X5392674Y1935683D01* +X5492242Y1935683D01* +X5492242Y1957730D01* +X5493004Y1961642D01* +X5495239Y1964943D01* +X5498541Y1967179D01* +X5502402Y1967890D01* +X5654802Y1967890D01* +X5658662Y1967179D01* +X5661964Y1964943D01* +X5664200Y1961642D01* +X5664962Y1957730D01* +X5664962Y1935683D01* +X5764530Y1935683D01* +X5764530Y1953768D01* +X5764174Y1956612D01* +X5764580Y1960880D01* +X5766714Y1964537D01* +X5770118Y1967026D01* +X5774283Y1967890D01* +X5884265Y1967890D01* +X5888278Y1968195D01* +X5891987Y1968754D01* +X5895594Y1969719D01* +X5899099Y1971090D01* +X5902452Y1972716D01* +X5905601Y1974799D01* +X5908548Y1977136D01* +X5911189Y1979879D01* +X5913424Y1982571D01* +X5916320Y1987397D01* +X5917844Y1989378D01* +X6025235Y2096770D01* +X6028537Y2099056D01* +X6032449Y2099767D01* +X6036310Y2099056D01* +X6039612Y2096770D01* +X6041847Y2093468D01* +X6042609Y2089607D01* +X6042609Y1610918D01* +X6041847Y1607007D01* +X6039612Y1603756D01* +X5949086Y1513179D01* +X5944057Y1506982D01* +X5940653Y1500327D01* +X5938672Y1492961D01* +X5938215Y1487068D01* +X5938215Y1426057D01* +X5937453Y1422247D01* +X5934862Y1417675D01* +X5931408Y1413865D01* +X5925718Y1405686D01* +X5921603Y1396898D01* +X5919063Y1387500D01* +X5918250Y1377746D01* +X5919063Y1368094D01* +X5921603Y1358646D01* +X5925718Y1349857D01* +X5931306Y1341932D01* +X5938215Y1335024D01* +X5946190Y1329385D01* +X5954979Y1325321D01* +X5964428Y1322730D01* +X5974130Y1321968D01* +X5983782Y1322730D01* +X5993231Y1325321D01* +X6002020Y1329385D01* +X6009995Y1335024D01* +X6016904Y1341932D01* +X6022492Y1349857D01* +X6026607Y1358646D01* +X6029147Y1368094D01* +X6029960Y1377746D01* +X6029553Y1382826D01* +X6030061Y1386992D01* +X6032246Y1390700D01* +X6035700Y1393037D01* +X6039815Y1393850D01* +X6043930Y1392936D01* +X6048451Y1390853D01* +X6057900Y1388313D01* +X6067602Y1387500D01* +X6077254Y1388313D01* +X6086703Y1390853D01* +X6095492Y1394917D01* +X6100622Y1398524D01* +X6104686Y1400200D01* +X6109055Y1400048D01* +X6112967Y1397965D01* +X6115659Y1394460D01* +X6116624Y1390243D01* +X6116624Y1005941D01* +X6115812Y1002080D01* +X6113627Y998728D01* +X6101994Y987044D01* +X6096914Y980897D01* +X6093510Y974191D01* +X6091529Y966825D01* +X6091072Y960932D01* +X6091072Y891641D01* +X6090310Y887780D01* +X6087770Y883208D01* +X6084316Y879449D01* +X6078626Y871219D01* +X6074511Y862431D01* +X6071971Y853033D01* +X6071108Y843330D01* +X6071971Y833628D01* +X6074511Y824230D01* +X6078626Y815441D01* +X6084214Y807415D01* +X6091072Y800506D01* +X6099048Y794969D01* +X6107887Y790803D01* +X6117285Y788263D01* +X6126988Y787501D01* +X6136690Y788263D01* +X6145682Y790702D01* +X6150051Y790956D01* +X6154115Y789178D01* +X6157112Y786028D01* +X6161024Y771702D01* +X6165138Y762914D01* +X6170726Y754938D01* +X6177584Y748080D01* +X6185560Y742442D01* +X6191707Y739648D01* +X6194856Y737311D01* +X6196939Y733958D01* +X6197600Y730097D01* +X6196736Y726287D01* +X6194501Y723138D01* +X6191250Y720953D01* +X6187440Y720242D01* +X3994607Y720242D01* +X3990746Y721055D01* +X3987444Y723188D01* +X3985209Y726541D01* +X3984447Y730402D01* +X3984447Y899160D01* +X3983736Y905510D01* +X3981856Y910945D01* +X3978757Y915924D01* +X3974642Y919987D01* +X3969765Y923036D01* +X3964279Y924966D01* +X3957980Y925728D01* +X3859123Y925728D01* +X3852824Y924966D01* +X3847337Y923036D01* +X3842461Y919987D01* +X3838346Y915924D01* +X3835247Y910945D01* +X3833368Y905510D01* +X3832656Y899160D01* +X3832656Y588264D01* +X3831894Y584403D01* +X3829659Y581050D01* +X3826357Y578916D01* +X3822496Y578104D01* +X3818585Y578916D01* +X3815283Y581050D01* +X3733546Y662787D01* +X3731361Y666089D01* +X3730599Y669950D01* +X3730599Y899160D01* +X3729888Y905510D01* +X3727958Y910945D01* +X3724859Y915924D01* +X3720795Y919987D01* +X3715867Y923036D01* +X3710432Y924966D01* +X3704132Y925728D01* +X3605225Y925728D01* +X3598926Y924966D01* +X3593490Y923036D01* +X3588562Y919987D01* +X3584498Y915924D01* +X3581400Y910945D01* +X3579469Y905510D01* +X3578758Y899160D01* +X3578758Y580390D01* +X3579469Y574040D01* +X3581400Y568553D01* +X3584498Y563626D01* +X3588562Y559562D01* +X3593490Y556514D01* +X3598926Y554583D01* +X3605225Y553821D01* +X3676446Y553821D01* +X3695852Y551738D01* +X3713937Y547827D01* +X3731564Y541934D01* +X3748481Y534314D01* +X3764534Y524967D01* +X3779469Y514045D01* +X3792270Y502462D01* +X3798722Y497230D01* +X3805428Y493826D01* +X3812794Y491845D01* +X3818686Y491388D01* +X4160723Y491388D01* +X4168698Y492251D01* +X4175861Y494588D01* +X4182465Y498398D01* +X4186936Y502259D01* +X4261154Y576478D01* +X4264456Y578612D01* +X4268368Y579424D01* +X4452569Y579424D01* +X4456785Y578510D01* +X4460240Y575970D01* +X4462322Y572211D01* +X4462678Y567893D01* +X4461205Y563880D01* +X4460087Y562102D01* +X4458208Y556666D01* +X4457496Y550316D01* +X4457496Y461467D01* +X4458208Y455117D01* +X4460087Y449681D01* +X4463186Y444754D01* +X4467301Y440740D01* +X4472178Y437591D01* +X4477664Y435762D01* +X4483963Y435000D01* +X4487316Y435000D01* +X4491228Y434187D01* +X4494530Y432054D01* +X4496714Y428701D01* +X4497476Y424840D01* +X4497476Y419404D01* +X4498340Y410972D01* +X4500676Y403250D01* +X4504436Y396240D01* +X4509820Y389585D01* +X4536236Y363169D01* +X4542840Y357784D01* +X4549902Y354025D01* +X4557572Y351688D01* +X4566005Y350926D01* +X4831181Y350926D01* +X4846980Y349808D01* +X4861864Y346710D01* +X4876190Y341731D01* +X4889754Y334975D01* +X4902352Y326491D01* +X4923637Y307797D01* +X4935169Y300126D01* +X4947564Y293928D01* +X4960721Y289509D01* +X4974285Y286816D01* +X4988102Y285953D01* +X5001920Y286816D01* +X5015484Y289509D01* +X5028641Y293928D01* +X5041036Y300126D01* +X5052568Y307797D01* +X5062982Y316890D01* +X5072126Y327355D01* +X5079796Y338836D01* +X5085943Y351282D01* +X5090363Y364388D01* +X5093106Y377952D01* +X5093970Y391820D01* +X5093106Y405638D01* +X5090363Y419201D01* +X5085943Y432358D01* +X5079796Y444754D01* +X5072126Y456285D01* +X5062982Y466699D01* +X5052568Y475843D01* +X5049570Y478942D01* +X5048097Y482904D01* +X5048453Y487222D01* +X5050536Y490982D01* +X5053990Y493522D01* +X5058206Y494436D01* +X5077409Y494436D01* +X5081320Y493623D01* +X5084622Y491490D01* +X5094122Y481888D01* +X5105146Y469188D01* +X5114340Y455218D01* +X5121706Y440232D01* +X5126990Y424281D01* +X5130190Y407822D01* +X5132120Y377647D01* +X5134864Y363677D01* +X5139334Y350164D01* +X5145481Y337362D01* +X5153253Y325475D01* +X5162448Y314655D01* +X5172964Y305054D01* +X5184597Y296926D01* +X5197195Y290372D01* +X5210556Y285496D01* +X5224424Y282295D01* +X5238546Y280974D01* +X5252770Y281432D01* +X5266791Y283667D01* +X5280406Y287680D01* +X5293410Y293471D01* +X5305552Y300837D01* +X5316677Y309676D01* +X5326532Y319887D01* +X5335016Y331317D01* +X5342026Y343662D01* +X5347360Y356819D01* +X5350967Y370586D01* +X5352745Y384657D01* +X5352745Y398881D01* +X5350967Y413004D01* +X5347360Y426720D01* +X5342026Y439877D01* +X5335016Y452272D01* +X5326532Y463702D01* +X5316677Y473913D01* +X5310733Y478586D01* +X5308092Y481838D01* +X5306923Y485800D01* +X5307482Y489864D01* +X5309616Y493471D01* +X5312968Y495909D01* +X5317032Y496671D01* +X5429453Y496671D01* +X5433669Y495858D01* +X5437073Y493217D01* +X5439156Y489508D01* +X5439511Y485241D01* +X5438089Y481228D01* +X5435092Y478078D01* +X5431637Y475843D01* +X5421223Y466699D01* +X5412079Y456285D01* +X5404408Y444754D01* +X5398262Y432358D01* +X5393842Y419201D01* +X5391099Y405638D01* +X5390235Y391820D01* +X5391099Y377952D01* +X5393842Y364388D01* +X5398262Y351282D01* +X5404408Y338836D01* +X5412079Y327355D01* +X5421223Y316890D01* +X5431637Y307797D01* +X5443169Y300126D01* +X5455564Y293928D01* +X5468721Y289509D01* +X5482285Y286816D01* +X5496102Y285953D01* +X5509920Y286816D01* +X5523484Y289509D01* +X5536641Y293928D01* +X5549036Y300126D01* +X5560568Y307797D01* +X5582666Y327152D01* +X5596077Y336245D01* +X5610555Y343509D01* +X5625896Y348742D01* +X5641746Y351993D01* +X5650585Y352602D01* +X5658002Y352094D01* +X5675172Y349097D01* +X5691936Y344220D01* +X5707989Y337515D01* +X5723229Y329031D01* +X5727242Y325577D01* +X5728716Y322681D01* +X5729224Y319582D01* +X5729224Y313334D01* +X5729935Y306984D01* +X5731814Y301599D01* +X5734913Y296672D01* +X5739028Y292557D01* +X5743905Y289458D01* +X5749391Y287578D01* +X5755690Y286918D01* +X5864555Y286918D01* +X5870854Y287578D01* +X5876340Y289458D01* +X5881217Y292557D01* +X5885332Y296672D01* +X5890666Y305511D01* +X5894070Y307898D01* +X5898134Y308762D01* +X5902198Y307898D01* +X5905550Y305511D01* +X5910935Y296672D01* +X5914999Y292557D01* +X5919927Y289458D01* +X5925362Y287578D01* +X5931712Y286918D01* +X6040526Y286918D01* +X6046876Y287578D01* +X6052312Y289458D01* +X6057239Y292557D01* +X6061303Y296672D01* +X6064402Y301599D01* +X6066332Y306984D01* +X6067044Y313334D01* +X6067044Y402234D01* +X6066332Y408584D01* +X6064402Y413969D01* +X6061303Y418896D01* +X6057239Y422960D01* +X6052312Y426110D01* +X6046876Y427990D01* +X6040526Y428650D01* +X6005068Y428650D01* +X6001207Y429463D01* +X5997905Y431596D01* +X5995720Y434898D01* +X5993434Y440283D01* +X5992672Y442823D01* +X5991758Y449783D01* +X5990945Y458317D01* +X5988710Y465582D01* +X5985154Y472185D01* +X5980074Y478434D01* +X5896406Y562051D01* +X5894222Y565404D01* +X5893460Y569264D01* +X5894222Y573176D01* +X5896406Y576478D01* +X5899708Y578612D01* +X5903620Y579424D01* +X8262721Y579424D01* +X8270748Y580237D01* +X8277859Y582574D01* +X8284464Y586384D01* +X8288934Y590245D01* +X8677148Y978357D01* +X8682177Y984605D01* +X8685580Y991362D01* +X8687562Y998677D01* +X8688019Y1004519D01* +X8688019Y1592935D01* +X8688781Y1596745D01* +X8691016Y1600047D01* +X8694267Y1602282D01* +X8698179Y1603044D01* +X9052001Y1603044D01* +X9055862Y1602282D01* +X9059164Y1600047D01* +X9061399Y1596745D01* +X9062161Y1592935D01* +X9061399Y1589024D01* +X9059164Y1585722D01* +X9053372Y1579880D01* +X9047784Y1571853D01* +X9043670Y1563065D01* +X9041130Y1553616D01* +X9040266Y1543913D01* +X9041130Y1534312D01* +X9043670Y1524812D01* +X9044279Y1523492D01* +X9045244Y1519224D01* +X9045244Y1447546D01* +X9044482Y1443634D01* +X9042247Y1440383D01* +X9040926Y1439113D01* +X9037878Y1434185D01* +X9035948Y1428699D01* +X9035237Y1422349D01* +X9035237Y1223518D01* +X9035948Y1217168D01* +X9037878Y1211732D01* +X9040926Y1206804D01* +X9045041Y1202791D01* +X9049918Y1199642D01* +X9055404Y1197813D01* +X9061704Y1197000D01* +X9130588Y1197000D01* +X9136888Y1197813D01* +X9142374Y1199642D01* +X9147251Y1202791D01* +X9151366Y1206804D01* +X9154414Y1211732D01* +X9156344Y1217168D01* +X9157055Y1223518D01* +X9157055Y1422349D01* +X9156344Y1428699D01* +X9154414Y1434185D01* +X9151366Y1439113D01* +X9150045Y1440383D01* +X9147810Y1443685D01* +X9147048Y1447546D01* +X9147048Y1519174D01* +X9148013Y1523441D01* +X9148622Y1524812D01* +X9151162Y1534312D01* +X9152026Y1543913D01* +X9151162Y1553616D01* +X9148622Y1563065D01* +X9144508Y1571853D01* +X9138920Y1579880D01* +X9133128Y1585722D01* +X9130893Y1589024D01* +X9130131Y1592935D01* +X9130893Y1596745D01* +X9133128Y1600047D01* +X9136430Y1602282D01* +X9140291Y1603044D01* +X9246971Y1603044D01* +X9250883Y1602282D01* +X9254185Y1600047D01* +X9286544Y1567688D01* +X9288576Y1564792D01* +X9289491Y1561388D01* +X9290100Y1554226D01* +X9292640Y1544828D01* +X9296755Y1535988D01* +X9302343Y1528064D01* +X9305340Y1524711D01* +X9307626Y1521206D01* +X9308846Y1518513D01* +X9309252Y1515668D01* +X9309252Y1455216D01* +X9308642Y1451864D01* +X9307017Y1448866D01* +X9304477Y1446580D01* +X9299041Y1443177D01* +X9294926Y1439113D01* +X9291878Y1434185D01* +X9289948Y1428699D01* +X9289237Y1422349D01* +X9289237Y1223518D01* +X9289948Y1217168D01* +X9291878Y1211732D01* +X9294926Y1206804D01* +X9299041Y1202791D01* +X9303918Y1199642D01* +X9309404Y1197813D01* +X9315704Y1197000D01* +X9384588Y1197000D01* +X9390888Y1197813D01* +X9396374Y1199642D01* +X9401251Y1202791D01* +X9405366Y1206804D01* +X9408414Y1211732D01* +X9410344Y1217168D01* +X9411055Y1223518D01* +X9411055Y1422349D01* +X9410344Y1428699D01* +X9408414Y1434185D01* +X9405366Y1439113D01* +X9401251Y1443177D01* +X9395815Y1446580D01* +X9393275Y1448866D01* +X9391599Y1451864D01* +X9391040Y1455216D01* +X9391040Y1529232D01* +X9391497Y1532280D01* +X9393529Y1535988D01* +X9397644Y1544828D01* +X9400184Y1554226D01* +X9400997Y1563928D01* +X9400184Y1573631D01* +X9397644Y1583029D01* +X9393529Y1591868D01* +X9387941Y1599895D01* +X9381032Y1606753D01* +X9373057Y1612290D01* +X9364268Y1616456D01* +X9350908Y1619961D01* +X9348012Y1621942D01* +X9297416Y1672488D01* +X9293148Y1676044D01* +X9290558Y1679244D01* +X9289440Y1683207D01* +X9290050Y1687322D01* +X9292183Y1690827D01* +X9295536Y1693265D01* +X9299600Y1694078D01* +X9430004Y1694078D01* +X9433864Y1693265D01* +X9437166Y1691030D01* +X9560255Y1568043D01* +X9562439Y1564741D01* +X9563252Y1560830D01* +X9563252Y1455216D01* +X9562642Y1451864D01* +X9561017Y1448866D01* +X9558477Y1446580D01* +X9553041Y1443177D01* +X9548926Y1439113D01* +X9545878Y1434185D01* +X9543948Y1428699D01* +X9543237Y1422349D01* +X9543237Y1258062D01* +X9542170Y1249222D01* +X9541459Y1246682D01* +X9538614Y1239774D01* +X9537293Y1237488D01* +X9531858Y1230579D01* +X9321546Y1020216D01* +X9316161Y1013663D01* +X9312402Y1006551D01* +X9311386Y1003249D01* +X9310014Y1000455D01* +X9307830Y998169D01* +X9303918Y996238D01* +X9299041Y993190D01* +X9294926Y989076D01* +X9291878Y984148D01* +X9289948Y978712D01* +X9289237Y972362D01* +X9289237Y773531D01* +X9289948Y767181D01* +X9291878Y761746D01* +X9294926Y756869D01* +X9299041Y752805D01* +X9303918Y749655D01* +X9309404Y747776D01* +X9315704Y747064D01* +X9384588Y747064D01* +X9390888Y747776D01* +X9396374Y749655D01* +X9401251Y752805D01* +X9405366Y756869D01* +X9408414Y761746D01* +X9410344Y767181D01* +X9411055Y773531D01* +X9411055Y972362D01* +X9410344Y978712D01* +X9408668Y983538D01* +X9408109Y987247D01* +X9408922Y990904D01* +X9411055Y994003D01* +X9611106Y1194054D01* +X9614408Y1196238D01* +X9618268Y1197000D01* +X9638588Y1197000D01* +X9644888Y1197813D01* +X9650374Y1199642D01* +X9655251Y1202791D01* +X9662515Y1210157D01* +X9666579Y1211630D01* +X9670897Y1211376D01* +X9674707Y1209294D01* +X9677298Y1205839D01* +X9678212Y1201674D01* +X9678212Y1131163D01* +X9678416Y1126540D01* +X9679025Y1122172D01* +X9679990Y1117803D01* +X9681311Y1113536D01* +X9682988Y1109472D01* +X9685070Y1105560D01* +X9687458Y1101750D01* +X9690150Y1098245D01* +X9693300Y1094841D01* +X9796424Y991717D01* +X9798507Y988568D01* +X9799370Y984910D01* +X9798812Y981151D01* +X9797948Y978712D01* +X9797237Y972362D01* +X9797237Y773531D01* +X9797948Y767181D01* +X9799878Y761746D01* +X9802926Y756869D01* +X9807041Y752805D01* +X9811918Y749655D01* +X9817404Y747776D01* +X9823704Y747064D01* +X9892588Y747064D01* +X9898888Y747776D01* +X9904374Y749655D01* +X9909251Y752805D01* +X9913366Y756869D01* +X9916464Y761796D01* +X9919512Y764895D01* +X9923576Y766470D01* +X9927894Y766165D01* +X9931704Y764133D01* +X9934295Y760679D01* +X9935210Y756412D01* +X9935210Y704951D01* +X9934702Y701700D01* +X9933178Y698804D01* +X9930485Y695198D01* +X9925558Y685749D01* +X9922154Y675741D01* +X9920478Y665226D01* +X9920478Y654710D01* +X9922154Y644194D01* +X9925558Y634187D01* +X9930485Y624738D01* +X9936835Y616254D01* +X9944455Y608939D01* +X9953193Y602945D01* +X9962794Y598424D01* +X9972954Y595376D01* +X9983470Y594156D01* +X9994087Y594614D01* +X10004450Y596646D01* +X10014356Y600456D01* +X10023551Y605790D01* +X10031780Y612444D01* +X10038791Y620420D01* +X10042499Y626262D01* +X10045547Y629310D01* +X10049560Y630834D01* +X10053878Y630529D01* +X10057688Y628446D01* +X10060330Y624992D01* +X10061244Y620776D01* +X10061244Y588873D01* +X10060686Y585724D01* +X10059212Y582828D01* +X10056469Y579170D01* +X10051542Y569772D01* +X10048189Y559714D01* +X10046462Y549300D01* +X10046462Y538632D01* +X10048189Y528218D01* +X10051542Y518109D01* +X10056469Y508711D01* +X10062819Y500329D01* +X10070490Y492963D01* +X10079228Y486867D01* +X10088778Y482346D01* +X10098989Y479450D01* +X10109504Y478129D01* +X10120071Y478535D01* +X10130485Y480720D01* +X10140391Y484428D01* +X10149586Y489712D01* +X10157764Y496468D01* +X10164826Y504342D01* +X10170464Y513334D01* +X10174630Y523087D01* +X10177170Y533349D01* +X10178034Y543915D01* +X10177170Y554583D01* +X10174630Y564845D01* +X10170464Y574598D01* +X10164622Y583844D01* +X10163454Y586435D01* +X10163048Y589280D01* +X10163048Y748385D01* +X10163810Y752195D01* +X10166045Y755497D01* +X10167366Y756869D01* +X10170414Y761746D01* +X10172344Y767181D01* +X10173055Y773531D01* +X10173055Y972362D01* +X10172344Y978712D01* +X10170414Y984148D01* +X10167366Y989076D01* +X10163251Y993190D01* +X10158374Y996238D01* +X10152888Y998169D01* +X10146588Y998829D01* +X10077704Y998829D01* +X10071404Y998169D01* +X10065918Y996238D01* +X10061041Y993190D01* +X10056926Y989076D01* +X10055809Y987298D01* +X10052761Y984148D01* +X10048697Y982624D01* +X10044379Y982929D01* +X10040569Y985012D01* +X10037978Y988415D01* +X10037064Y992733D01* +X10037064Y1194765D01* +X10036860Y1199388D01* +X10036352Y1203147D01* +X10036606Y1207058D01* +X10038283Y1210564D01* +X10038283Y1211478D01* +X10034778Y1213408D01* +X10032288Y1216507D01* +X10030206Y1220419D01* +X10027869Y1224076D01* +X10025126Y1227683D01* +X10022027Y1231087D01* +X9922052Y1331112D01* +X9919817Y1334312D01* +X9919055Y1338224D01* +X9919055Y1422349D01* +X9918344Y1428699D01* +X9916414Y1434185D01* +X9913366Y1439113D01* +X9909251Y1443177D01* +X9904374Y1446225D01* +X9898888Y1448104D01* +X9892588Y1448866D01* +X9823704Y1448866D01* +X9817404Y1448104D01* +X9811918Y1446225D01* +X9807041Y1443177D01* +X9802926Y1439113D01* +X9797745Y1430477D01* +X9794494Y1428089D01* +X9790531Y1427175D01* +X9786569Y1427886D01* +X9783114Y1430020D01* +X9780828Y1433372D01* +X9780066Y1437335D01* +X9780066Y1649780D01* +X9779863Y1654352D01* +X9779254Y1658772D01* +X9778288Y1663090D01* +X9776968Y1667357D01* +X9775291Y1671421D01* +X9773208Y1675384D01* +X9770821Y1679143D01* +X9768128Y1682648D01* +X9764979Y1686102D01* +X9586315Y1864766D01* +X9582861Y1867966D01* +X9579356Y1870608D01* +X9575596Y1872996D01* +X9571634Y1875078D01* +X9567570Y1876806D01* +X9563303Y1878075D01* +X9558985Y1879041D01* +X9554565Y1879701D01* +X9549942Y1879854D01* +X9120886Y1879854D01* +X9116618Y1880819D01* +X9115247Y1881428D01* +X9105849Y1883968D01* +X9096146Y1884781D01* +X9086443Y1883968D01* +X9077045Y1881428D01* +X9075674Y1880819D01* +X9071406Y1879854D01* +X8377885Y1879854D01* +X8373618Y1880819D01* +X8372246Y1881428D01* +X8362848Y1883968D01* +X8353145Y1884781D01* +X8343442Y1883968D01* +X8334044Y1881428D01* +X8332673Y1880819D01* +X8328406Y1879854D01* +X8285784Y1879854D01* +X8282940Y1880311D01* +X8279079Y1882241D01* +X8273592Y1884172D01* +X8267293Y1884832D01* +X8218424Y1884832D01* +X8212124Y1884172D01* +X8206638Y1882241D01* +X8202523Y1879701D01* +X8199018Y1878330D01* +X8195259Y1878330D01* +X8191753Y1879701D01* +X8187639Y1882241D01* +X8182152Y1884172D01* +X8175853Y1884832D01* +X8170265Y1884832D01* +X8170265Y1850288D01* +X8181797Y1850288D01* +X8185658Y1849577D01* +X8188959Y1847291D01* +X8191195Y1844039D01* +X8191957Y1840179D01* +X8191957Y1817776D01* +X8191195Y1813915D01* +X8188959Y1810562D01* +X8185658Y1808378D01* +X8181797Y1807565D01* +X8170265Y1807565D01* +X8170265Y1773021D01* +X8175853Y1773021D01* +X8182152Y1773783D01* +X8187639Y1775714D01* +X8191753Y1778254D01* +X8195259Y1779625D01* +X8199018Y1779625D01* +X8202523Y1778254D01* +X8206638Y1775714D01* +X8212124Y1773783D01* +X8218424Y1773021D01* +X8267293Y1773021D01* +X8273592Y1773783D01* +X8279079Y1775714D01* +X8282990Y1777695D01* +X8285784Y1778101D01* +X8328355Y1778101D01* +X8332622Y1777136D01* +X8334044Y1776425D01* +X8343442Y1773885D01* +X8353145Y1773072D01* +X8362848Y1773885D01* +X8372246Y1776425D01* +X8373668Y1777136D01* +X8377936Y1778101D01* +X8527897Y1778101D01* +X8531860Y1777288D01* +X8535212Y1774952D01* +X8537346Y1771497D01* +X8538057Y1767535D01* +X8537092Y1763623D01* +X8532672Y1754124D01* +X8530132Y1744624D01* +X8529269Y1734921D01* +X8530132Y1725320D01* +X8532672Y1715820D01* +X8536787Y1707032D01* +X8542375Y1699107D01* +X8545372Y1695704D01* +X8547608Y1692198D01* +X8548776Y1689557D01* +X8549182Y1686763D01* +X8549182Y1556512D01* +X8548268Y1552244D01* +X8545728Y1548790D01* +X8541969Y1546707D01* +X8537702Y1546352D01* +X8527846Y1550009D01* +X8521547Y1550670D01* +X8202675Y1550670D01* +X8196376Y1550009D01* +X8190890Y1548079D01* +X8186013Y1544980D01* +X8181898Y1540865D01* +X8178850Y1535988D01* +X8176920Y1530553D01* +X8176209Y1524254D01* +X8176209Y1105306D01* +X8176920Y1099007D01* +X8178850Y1093520D01* +X8181898Y1088644D01* +X8186013Y1084580D01* +X8190890Y1081532D01* +X8200694Y1078382D01* +X8203641Y1076198D01* +X8205520Y1072997D01* +X8206181Y1069441D01* +X8206181Y933703D01* +X8205571Y930249D01* +X8203793Y927150D01* +X8199780Y922477D01* +X8193938Y912926D01* +X8189722Y902665D01* +X8187080Y891844D01* +X8186216Y880821D01* +X8187080Y869696D01* +X8189722Y858926D01* +X8193938Y848664D01* +X8199780Y839114D01* +X8206994Y830630D01* +X8215426Y823417D01* +X8224926Y817625D01* +X8235188Y813409D01* +X8246008Y810768D01* +X8257133Y809955D01* +X8268208Y810768D01* +X8279028Y813409D01* +X8289290Y817625D01* +X8298789Y823417D01* +X8306714Y830224D01* +X8314436Y839114D01* +X8320278Y848664D01* +X8324494Y858926D01* +X8327136Y869696D01* +X8327999Y880821D01* +X8327136Y891844D01* +X8324494Y902665D01* +X8322462Y907643D01* +X8321700Y911148D01* +X8322208Y914653D01* +X8324494Y921613D01* +X8326069Y930503D01* +X8326069Y939444D01* +X8324545Y948182D01* +X8323325Y953363D01* +X8324037Y957021D01* +X8330895Y974242D01* +X8340699Y993902D01* +X8352078Y1012850D01* +X8365032Y1030630D01* +X8379409Y1047394D01* +X8395157Y1062786D01* +X8411667Y1076502D01* +X8414715Y1078280D01* +X8418169Y1078839D01* +X8521547Y1078839D01* +X8527846Y1079601D01* +X8537702Y1083157D01* +X8541969Y1082802D01* +X8545728Y1080719D01* +X8548268Y1077315D01* +X8549182Y1073048D01* +X8549182Y1048207D01* +X8548420Y1044397D01* +X8546236Y1041095D01* +X8228380Y723188D01* +X8225078Y721055D01* +X8221167Y720242D01* +X6923989Y720242D01* +X6920026Y721055D01* +X6916724Y723290D01* +X6914540Y726744D01* +X6913880Y730707D01* +X6914794Y734720D01* +X6918756Y743204D01* +X6921296Y752602D01* +X6922160Y762304D01* +X6921296Y772007D01* +X6918756Y781405D01* +X6914642Y790244D01* +X6909053Y798271D01* +X6905853Y801827D01* +X6903720Y805230D01* +X6902551Y807770D01* +X6902196Y810615D01* +X6902196Y1257198D01* +X6902958Y1261110D01* +X6905142Y1264412D01* +X7089800Y1449019D01* +X7094829Y1455318D01* +X7098233Y1462024D01* +X7100214Y1469390D01* +X7100671Y1475232D01* +X7100671Y2169668D01* +X7101433Y2173528D01* +X7103668Y2176830D01* +X7106970Y2179015D01* +X7110882Y2179828D01* +X7114743Y2179015D01* +X7118045Y2176830D01* +X7123023Y2171852D01* +X7127900Y2168753D01* +X7133336Y2166874D01* +X7139686Y2166112D01* +X7147763Y2166112D01* +X7147763Y2198217D01* +X7110831Y2198217D01* +X7106970Y2198979D01* +X7103668Y2201214D01* +X7101433Y2204516D01* +X7100671Y2208326D01* +X7100671Y2225751D01* +X7101433Y2229612D01* +X7103668Y2232964D01* +X7106970Y2235098D01* +X7110831Y2235962D01* +X7147763Y2235962D01* +X7147763Y2247392D01* +X7148525Y2251303D01* +X7150709Y2254605D01* +X7154011Y2256840D01* +X7157923Y2257552D01* +X7180275Y2257552D01* +X7184186Y2256840D01* +X7187488Y2254605D01* +X7189673Y2251303D01* +X7190435Y2247392D01* +X7190435Y2235962D01* +X7225030Y2235962D01* +X7225030Y2241448D01* +X7224318Y2247798D01* +X7221981Y2254402D01* +X7221423Y2258212D01* +X7222337Y2261920D01* +X7224572Y2265121D01* +X7227773Y2267204D01* +X7231583Y2267864D01* +X7253884Y2267864D01* +X7258100Y2267000D01* +X7261555Y2264410D01* +X7263587Y2260701D01* +X7263942Y2256383D01* +X7261809Y2251252D01* +X7259878Y2245766D01* +X7259167Y2239467D01* +X7259167Y2233930D01* +X7293762Y2233930D01* +X7293762Y2245410D01* +X7294524Y2249271D01* +X7296708Y2252573D01* +X7300010Y2254859D01* +X7303922Y2255570D01* +X7326274Y2255570D01* +X7330186Y2254859D01* +X7333488Y2252573D01* +X7335672Y2249271D01* +X7336434Y2245410D01* +X7336434Y2233930D01* +X7371029Y2233930D01* +X7371029Y2239467D01* +X7370318Y2245766D01* +X7368387Y2251252D01* +X7365796Y2255367D01* +X7364425Y2258872D01* +X7364425Y2262682D01* +X7365796Y2266188D01* +X7368387Y2270252D01* +X7370318Y2275738D01* +X7371029Y2282037D01* +X7371029Y2330907D01* +X7370318Y2337206D01* +X7368387Y2342743D01* +X7365339Y2347620D01* +X7361224Y2351684D01* +X7358125Y2353665D01* +X7355586Y2355951D01* +X7353960Y2358948D01* +X7353401Y2362301D01* +X7353401Y2400503D01* +X7354163Y2404414D01* +X7356348Y2407716D01* +X7357567Y2408885D01* +X7363155Y2416860D01* +X7367270Y2425649D01* +X7369809Y2435148D01* +X7370622Y2444800D01* +X7369809Y2454452D01* +X7367270Y2463952D01* +X7363155Y2472740D01* +X7357567Y2480665D01* +X7356348Y2481935D01* +X7354163Y2485186D01* +X7353401Y2489098D01* +X7353401Y2566720D01* +X7354163Y2570632D01* +X7356348Y2573934D01* +X7359650Y2576118D01* +X7363561Y2576880D01* +X7377684Y2576880D01* +X7384034Y2577592D01* +X7386421Y2578455D01* +X7389774Y2579014D01* +X7393127Y2578455D01* +X7395514Y2577592D01* +X7401661Y2576931D01* +X7401661Y2590139D01* +X7402220Y2593492D01* +X7403490Y2597048D01* +X7404201Y2603347D01* +X7404201Y2762300D01* +X7403490Y2768549D01* +X7402220Y2772156D01* +X7401661Y2775508D01* +X7401661Y2788716D01* +X7395514Y2788005D01* +X7393127Y2787142D01* +X7389774Y2786583D01* +X7386421Y2787142D01* +X7384034Y2788005D01* +X7377684Y2788767D01* +X7351877Y2788767D01* +X7345527Y2788005D01* +X7343140Y2787142D01* +X7339787Y2786583D01* +X7336434Y2787142D01* +X7333996Y2788005D01* +X7327696Y2788767D01* +X7301839Y2788767D01* +X7295540Y2788005D01* +X7293152Y2787142D01* +X7289800Y2786583D01* +X7286396Y2787142D01* +X7284008Y2788005D01* +X7277709Y2788767D01* +X7251852Y2788767D01* +X7245553Y2788005D01* +X7243114Y2787142D01* +X7239762Y2786583D01* +X7236409Y2787142D01* +X7234021Y2788005D01* +X7227671Y2788767D01* +X7201865Y2788767D01* +X7195515Y2788005D01* +X7193127Y2787142D01* +X7189774Y2786583D01* +X7186422Y2787142D01* +X7184034Y2788005D01* +X7177887Y2788716D01* +X7177887Y2775508D01* +X7177328Y2772156D01* +X7176058Y2768549D01* +X7175347Y2762300D01* +X7175347Y2603347D01* +X7176058Y2597048D01* +X7177328Y2593492D01* +X7177887Y2590139D01* +X7177887Y2576931D01* +X7184034Y2577592D01* +X7186422Y2578455D01* +X7189774Y2579014D01* +X7193127Y2578455D01* +X7195515Y2577592D01* +X7201865Y2576880D01* +X7227671Y2576880D01* +X7234021Y2577592D01* +X7236409Y2578455D01* +X7239762Y2579014D01* +X7243114Y2578455D01* +X7245553Y2577592D01* +X7251852Y2576880D01* +X7266025Y2576880D01* +X7269886Y2576118D01* +X7273188Y2573934D01* +X7275372Y2570632D01* +X7276185Y2566720D01* +X7276185Y2489098D01* +X7275372Y2485186D01* +X7273188Y2481935D01* +X7271969Y2480665D01* +X7266381Y2472740D01* +X7262266Y2463952D01* +X7259726Y2454452D01* +X7258913Y2444800D01* +X7259726Y2435148D01* +X7262266Y2425649D01* +X7266381Y2416860D01* +X7271969Y2408885D01* +X7273188Y2407716D01* +X7275372Y2404414D01* +X7276185Y2400503D01* +X7276185Y2361844D01* +X7275575Y2358491D01* +X7273950Y2355494D01* +X7271410Y2353208D01* +X7269022Y2351684D01* +X7265416Y2348128D01* +X7262114Y2345842D01* +X7258202Y2345080D01* +X7227722Y2345080D01* +X7224471Y2345690D01* +X7221575Y2347214D01* +X7215225Y2353665D01* +X7210298Y2356764D01* +X7204862Y2358694D01* +X7198512Y2359456D01* +X7177024Y2359456D01* +X7173112Y2360168D01* +X7169810Y2362403D01* +X7156348Y2375865D01* +X7154164Y2379116D01* +X7153402Y2383028D01* +X7153402Y2595778D01* +X7154164Y2603347D01* +X7154164Y2762300D01* +X7153452Y2768549D01* +X7152233Y2772003D01* +X7151674Y2775356D01* +X7151674Y2788716D01* +X7145528Y2788005D01* +X7143140Y2787142D01* +X7139787Y2786583D01* +X7136434Y2787142D01* +X7133996Y2788005D01* +X7127697Y2788767D01* +X7101840Y2788767D01* +X7095540Y2788005D01* +X7093153Y2787142D01* +X7089800Y2786583D01* +X7086396Y2787142D01* +X7084009Y2788005D01* +X7077709Y2788767D01* +X7051852Y2788767D01* +X7045553Y2788005D01* +X7043115Y2787142D01* +X7039762Y2786583D01* +X7036409Y2787142D01* +X7034022Y2788005D01* +X7027672Y2788767D01* +X7001865Y2788767D01* +X6995515Y2788005D01* +X6993128Y2787142D01* +X6989775Y2786583D01* +X6986422Y2787142D01* +X6984034Y2788005D01* +X6977684Y2788767D01* +X6951878Y2788767D01* +X6945528Y2788005D01* +X6943140Y2787142D01* +X6939788Y2786583D01* +X6936435Y2787142D01* +X6933996Y2788005D01* +X6927697Y2788767D01* +X6901840Y2788767D01* +X6895541Y2788005D01* +X6893153Y2787142D01* +X6889800Y2786583D01* +X6886397Y2787142D01* +X6884009Y2788005D01* +X6877710Y2788767D01* +X6851853Y2788767D01* +X6845553Y2788005D01* +X6843115Y2787142D01* +X6839762Y2786583D01* +X6836409Y2787142D01* +X6834022Y2788005D01* +X6827672Y2788767D01* +X6801866Y2788767D01* +X6795516Y2788005D01* +X6793128Y2787142D01* +X6789775Y2786583D01* +X6786422Y2787142D01* +X6784035Y2788005D01* +X6777685Y2788767D01* +X6751878Y2788767D01* +X6745528Y2788005D01* +X6743141Y2787142D01* +X6739788Y2786583D01* +X6736435Y2787142D01* +X6733997Y2788005D01* +X6727698Y2788767D01* +X6701840Y2788767D01* +X6695541Y2788005D01* +X6690055Y2786075D01* +X6685178Y2783027D01* +X6681063Y2778963D01* +X6677964Y2774086D01* +X6676085Y2768549D01* +X6675374Y2762300D01* +X6675374Y2603347D01* +X6676085Y2597048D01* +X6677964Y2591562D01* +X6681063Y2586685D01* +X6685178Y2582621D01* +X6690055Y2579522D01* +X6695541Y2577592D01* +X6701840Y2576880D01* +X6727698Y2576880D01* +X6733997Y2577592D01* +X6736435Y2578455D01* +X6739788Y2579014D01* +X6743141Y2578455D01* +X6745528Y2577592D01* +X6751878Y2576880D01* +X6777685Y2576880D01* +X6784035Y2577592D01* +X6786422Y2578455D01* +X6789775Y2579014D01* +X6793128Y2578455D01* +X6795516Y2577592D01* +X6801866Y2576880D01* +X6827672Y2576880D01* +X6834022Y2577592D01* +X6836409Y2578455D01* +X6839762Y2579014D01* +X6843115Y2578455D01* +X6845553Y2577592D01* +X6851853Y2576880D01* +X6877710Y2576880D01* +X6884009Y2577592D01* +X6886397Y2578455D01* +X6889800Y2579014D01* +X6893153Y2578455D01* +X6895541Y2577592D01* +X6901840Y2576880D01* +X6918706Y2576880D01* +X6922566Y2576118D01* +X6925868Y2573934D01* +X6928103Y2570632D01* +X6928866Y2566720D01* +X6928866Y2396337D01* +X6927850Y2385466D01* +X6927443Y2383536D01* +X6924598Y2374087D01* +X6923836Y2372207D01* +X6919163Y2363470D01* +X6909409Y2351328D01* +X6906259Y2348026D01* +X6899554Y2338527D01* +X6894423Y2328164D01* +X6890918Y2317038D01* +X6889140Y2305608D01* +X6889140Y2294026D01* +X6890918Y2282494D01* +X6894423Y2271471D01* +X6899554Y2261006D01* +X6906259Y2251557D01* +X6914286Y2243175D01* +X6923531Y2236063D01* +X6933742Y2230577D01* +X6944664Y2226665D01* +X6956094Y2224379D01* +X6967677Y2223922D01* +X6979208Y2225294D01* +X6990435Y2228342D01* +X7001052Y2233117D01* +X7015276Y2242413D01* +X7019086Y2243074D01* +X7022846Y2242210D01* +X7026046Y2239924D01* +X7028129Y2236724D01* +X7028840Y2232914D01* +X7028840Y1493926D01* +X7028078Y1490065D01* +X7025894Y1486712D01* +X6841236Y1302054D01* +X6836206Y1295806D01* +X6832803Y1289202D01* +X6830822Y1281836D01* +X6830364Y1275943D01* +X6830364Y810615D01* +X6829602Y806704D01* +X6827062Y802233D01* +X6823608Y798423D01* +X6817918Y790244D01* +X6813803Y781405D01* +X6811264Y772007D01* +X6810400Y762304D01* +X6811264Y752602D01* +X6813803Y743204D01* +X6817766Y734720D01* +X6818680Y730707D01* +X6818020Y726744D01* +X6815836Y723290D01* +X6812534Y721055D01* +X6808571Y720242D01* +X6239560Y720242D01* +X6235750Y720953D01* +X6232499Y723138D01* +X6230264Y726287D01* +X6229400Y730097D01* +X6230061Y733958D01* +X6232144Y737311D01* +X6235293Y739648D01* +X6241440Y742442D01* +X6249416Y748080D01* +X6256274Y754938D01* +X6261862Y762914D01* +X6265976Y771702D01* +X6268516Y781202D01* +X6269380Y790803D01* +X6268516Y800506D01* +X6265976Y810006D01* +X6261862Y818794D01* +X6256274Y826719D01* +X6253175Y830224D01* +X6250990Y833678D01* +X6249822Y836320D01* +X6249416Y839114D01* +X6249416Y947775D01* +X6250178Y951687D01* +X6252413Y954938D01* +X6262522Y965047D01* +X6267602Y971296D01* +X6271006Y978001D01* +X6272936Y985367D01* +X6273444Y991260D01* +X6273444Y1590548D01* +X6274104Y1594104D01* +X6276035Y1597355D01* +X6278981Y1599539D01* +X6282537Y1600606D01* +X6286195Y1600352D01* +X6291834Y1598828D01* +X6294983Y1598523D01* +X6298793Y1597456D01* +X6301892Y1594967D01* +X6303772Y1591513D01* +X6304229Y1587550D01* +X6303619Y1580845D01* +X6304483Y1571142D01* +X6307023Y1561744D01* +X6311138Y1552956D01* +X6316726Y1544929D01* +X6323584Y1538020D01* +X6331559Y1532483D01* +X6340398Y1528318D01* +X6349796Y1525778D01* +X6359499Y1524965D01* +X6369202Y1525778D01* +X6378600Y1528318D01* +X6387439Y1532483D01* +X6395415Y1538020D01* +X6402273Y1544929D01* +X6407861Y1552956D01* +X6411976Y1561744D01* +X6414516Y1571142D01* +X6415379Y1580845D01* +X6414516Y1590548D01* +X6411976Y1599946D01* +X6407861Y1608734D01* +X6402273Y1616710D01* +X6398412Y1620621D01* +X6396177Y1623923D01* +X6395415Y1627835D01* +X6395415Y2848457D01* +X6396329Y2852674D01* +X6398869Y2856128D01* +X6402679Y2858211D01* +X6406946Y2858465D01* +X6410960Y2856992D01* +X6412534Y2856026D01* +X6418021Y2854147D01* +X6424320Y2853385D01* +X6583222Y2853385D01* +X6589522Y2854147D01* +X6595008Y2856026D01* +X6599885Y2859176D01* +X6604000Y2863189D01* +X6607048Y2868117D01* +X6608978Y2873552D01* +X6609689Y2879902D01* +X6609689Y2905709D01* +X6608978Y2912059D01* +X6608114Y2914446D01* +X6607556Y2917850D01* +X6608114Y2921203D01* +X6608978Y2923590D01* +X6609689Y2929940D01* +X6609689Y2955747D01* +X6608978Y2962097D01* +X6608114Y2964434D01* +X6607556Y2967786D01* +X6608114Y2971139D01* +X6608978Y2973578D01* +X6609689Y2979877D01* +X6609689Y3005734D01* +X6608978Y3012084D01* +X6608114Y3014472D01* +X6607556Y3017824D01* +X6608114Y3021228D01* +X6608978Y3023565D01* +X6609689Y3029864D01* +X6609689Y3055721D01* +X6608978Y3062020D01* +X6608114Y3064459D01* +X6607556Y3067812D01* +X6608114Y3071215D01* +X6608978Y3073603D01* +X6609638Y3079699D01* +X6596329Y3079699D01* +X6592976Y3080308D01* +X6589522Y3081477D01* +X6583222Y3082188D01* +X6424320Y3082188D01* +X6418021Y3081477D01* +X6414566Y3080308D01* +X6411214Y3079699D01* +X6405575Y3079699D01* +X6401714Y3080512D01* +X6398412Y3082747D01* +X6396177Y3085998D01* +X6395415Y3089859D01* +X6395415Y3095752D01* +X6396177Y3099612D01* +X6398412Y3102965D01* +X6401714Y3105200D01* +X6405575Y3105912D01* +X6411112Y3105912D01* +X6414465Y3105404D01* +X6418021Y3104083D01* +X6424320Y3103422D01* +X6583222Y3103422D01* +X6590944Y3104235D01* +X7049312Y3104235D01* +X7053224Y3103473D01* +X7056526Y3101238D01* +X7091883Y3065830D01* +X7098131Y3060801D01* +X7104786Y3057194D01* +X7112000Y3055010D01* +X7120026Y3054197D01* +X8037728Y3054197D01* +X8045348Y3053435D01* +X8201101Y3053435D01* +X8205012Y3052673D01* +X8209178Y3049625D01* +X8211362Y3046323D01* +X8212124Y3042412D01* +X8211362Y3038500D01* +X8209178Y3035198D01* +X8205876Y3033014D01* +X8201964Y3032201D01* +X8045348Y3032201D01* +X8038998Y3031540D01* +X8035493Y3030270D01* +X8032140Y3029712D01* +X8018881Y3029712D01* +X8019592Y3023565D01* +X8020405Y3021228D01* +X8020964Y3017824D01* +X8020405Y3014472D01* +X8019592Y3012084D01* +X8018881Y3005734D01* +X8018881Y2979877D01* +X8019592Y2973578D01* +X8020405Y2971139D01* +X8020964Y2967786D01* +X8020405Y2964434D01* +X8019592Y2962097D01* +X8018881Y2955747D01* +X8018881Y2929940D01* +X8019592Y2923590D01* +X8020405Y2921203D01* +X8020964Y2917850D01* +X8020405Y2914446D01* +X8019592Y2912059D01* +X8018881Y2905709D01* +X8018881Y2879902D01* +X8019592Y2873552D01* +X8021472Y2868117D01* +X8024571Y2863189D01* +X8028686Y2859176D01* +X8033562Y2856026D01* +X8038998Y2854147D01* +X8045348Y2853385D01* +X8075980Y2853385D01* +X8079892Y2852674D01* +X8083194Y2850438D01* +X8085378Y2847136D01* +X8086140Y2843225D01* +X8086140Y2486812D01* +X8085328Y2482748D01* +X8082991Y2479395D01* +X8079536Y2477262D01* +X8075472Y2476652D01* +X8071510Y2477668D01* +X8068259Y2480157D01* +X8064500Y2484577D01* +X7956753Y2592324D01* +X7954975Y2594762D01* +X7953959Y2597607D01* +X7954162Y2603347D01* +X7954162Y2762300D01* +X7953451Y2768549D01* +X7951571Y2774086D01* +X7948472Y2778963D01* +X7944358Y2783027D01* +X7939481Y2786075D01* +X7933994Y2788005D01* +X7927695Y2788767D01* +X7901838Y2788767D01* +X7895539Y2788005D01* +X7893151Y2787142D01* +X7889798Y2786583D01* +X7886395Y2787142D01* +X7884007Y2788005D01* +X7877708Y2788767D01* +X7851851Y2788767D01* +X7845552Y2788005D01* +X7843113Y2787142D01* +X7839760Y2786583D01* +X7836408Y2787142D01* +X7834020Y2788005D01* +X7827670Y2788767D01* +X7801864Y2788767D01* +X7795514Y2788005D01* +X7793126Y2787142D01* +X7789773Y2786583D01* +X7786420Y2787142D01* +X7784033Y2788005D01* +X7777683Y2788767D01* +X7751876Y2788767D01* +X7745526Y2788005D01* +X7743139Y2787142D01* +X7739786Y2786583D01* +X7736433Y2787142D01* +X7733995Y2788005D01* +X7727696Y2788767D01* +X7701838Y2788767D01* +X7695539Y2788005D01* +X7693152Y2787142D01* +X7689799Y2786583D01* +X7686395Y2787142D01* +X7684008Y2788005D01* +X7677708Y2788767D01* +X7651851Y2788767D01* +X7645552Y2788005D01* +X7643114Y2787142D01* +X7639761Y2786583D01* +X7636408Y2787142D01* +X7634020Y2788005D01* +X7627670Y2788767D01* +X7601864Y2788767D01* +X7595514Y2788005D01* +X7593126Y2787142D01* +X7589774Y2786583D01* +X7586421Y2787142D01* +X7584033Y2788005D01* +X7577683Y2788767D01* +X7551877Y2788767D01* +X7545527Y2788005D01* +X7543139Y2787142D01* +X7539786Y2786583D01* +X7536434Y2787142D01* +X7533995Y2788005D01* +X7527696Y2788767D01* +X7501839Y2788767D01* +X7495540Y2788005D01* +X7493152Y2787142D01* +X7489799Y2786583D01* +X7486396Y2787142D01* +X7484008Y2788005D01* +X7477709Y2788767D01* +X7451852Y2788767D01* +X7445552Y2788005D01* +X7443114Y2787142D01* +X7439761Y2786583D01* +X7436408Y2787142D01* +X7434021Y2788005D01* +X7427874Y2788716D01* +X7427874Y2775356D01* +X7427315Y2772003D01* +X7426096Y2768549D01* +X7425385Y2762300D01* +X7425385Y2603347D01* +X7426096Y2597048D01* +X7427315Y2593594D01* +X7427874Y2590241D01* +X7427874Y2576931D01* +X7434021Y2577592D01* +X7436408Y2578455D01* +X7439761Y2579014D01* +X7443114Y2578455D01* +X7445552Y2577592D01* +X7451852Y2576880D01* +X7477709Y2576880D01* +X7484008Y2577592D01* +X7486396Y2578455D01* +X7489799Y2579014D01* +X7493152Y2578455D01* +X7495540Y2577592D01* +X7501839Y2576880D01* +X7527696Y2576880D01* +X7533995Y2577592D01* +X7536434Y2578455D01* +X7539786Y2579014D01* +X7543139Y2578455D01* +X7545527Y2577592D01* +X7551877Y2576880D01* +X7565999Y2576880D01* +X7569911Y2576118D01* +X7573162Y2573934D01* +X7575397Y2570632D01* +X7576159Y2566720D01* +X7576159Y2273147D01* +X7575296Y2264156D01* +X7574940Y2262174D01* +X7572603Y2254453D01* +X7571841Y2252573D01* +X7566914Y2243734D01* +X7561427Y2237130D01* +X7556296Y2231542D01* +X7549540Y2221839D01* +X7544409Y2211476D01* +X7540904Y2200351D01* +X7539126Y2188921D01* +X7539126Y2177338D01* +X7540904Y2165807D01* +X7544409Y2154783D01* +X7549540Y2144318D01* +X7556246Y2134819D01* +X7564272Y2126488D01* +X7573518Y2119376D01* +X7583728Y2113838D01* +X7594650Y2109927D01* +X7606080Y2107692D01* +X7617663Y2107285D01* +X7629194Y2108606D01* +X7640421Y2111705D01* +X7651038Y2116429D01* +X7665262Y2125776D01* +X7669072Y2126386D01* +X7672882Y2125522D01* +X7676032Y2123236D01* +X7678115Y2120036D01* +X7678877Y2116226D01* +X7678877Y1985873D01* +X7678064Y1982012D01* +X7675880Y1978710D01* +X7642250Y1945132D01* +X7637221Y1938883D01* +X7633817Y1932127D01* +X7631836Y1924812D01* +X7631379Y1918919D01* +X7631379Y1565656D01* +X7630566Y1561744D01* +X7628026Y1557172D01* +X7624622Y1553464D01* +X7618882Y1545234D01* +X7614767Y1536446D01* +X7612227Y1527048D01* +X7611414Y1517345D01* +X7612227Y1507642D01* +X7614767Y1498244D01* +X7618882Y1489405D01* +X7624470Y1481378D01* +X7631379Y1474520D01* +X7639354Y1468983D01* +X7648143Y1464818D01* +X7657592Y1462278D01* +X7667294Y1461414D01* +X7676946Y1462278D01* +X7686395Y1464818D01* +X7695184Y1468983D01* +X7703159Y1474520D01* +X7713472Y1484731D01* +X7717536Y1486154D01* +X7721752Y1485696D01* +X7725460Y1483664D01* +X7727950Y1480210D01* +X7728864Y1475994D01* +X7728864Y931113D01* +X7728102Y927252D01* +X7725562Y922680D01* +X7722108Y918971D01* +X7716418Y910742D01* +X7712303Y901953D01* +X7709763Y892556D01* +X7708900Y882853D01* +X7709763Y873150D01* +X7712303Y863752D01* +X7716418Y854913D01* +X7722006Y846886D01* +X7728864Y840028D01* +X7736840Y834491D01* +X7745679Y830326D01* +X7755077Y827786D01* +X7764780Y826922D01* +X7774482Y827786D01* +X7783880Y830326D01* +X7792720Y834491D01* +X7800695Y840028D01* +X7807553Y846886D01* +X7813141Y854913D01* +X7817256Y863752D01* +X7819796Y873150D01* +X7820659Y882853D01* +X7819796Y892556D01* +X7817256Y901953D01* +X7813141Y910742D01* +X7807553Y918718D01* +X7804353Y922375D01* +X7802219Y925779D01* +X7801051Y928319D01* +X7800695Y931164D01* +X7800695Y2195423D01* +X7801660Y2199792D01* +X7804403Y2203246D01* +X7808417Y2205228D01* +X7812887Y2205329D01* +X7816951Y2203551D01* +X7819847Y2200148D01* +X7823758Y2192680D01* +X7830108Y2184196D01* +X7837728Y2176881D01* +X7846466Y2170887D01* +X7856067Y2166315D01* +X7866227Y2163318D01* +X7876743Y2162098D01* +X7887360Y2162556D01* +X7897723Y2164638D01* +X7907629Y2168398D01* +X7916824Y2173732D01* +X7925053Y2180386D01* +X7932064Y2188362D01* +X7937753Y2197303D01* +X7941919Y2207056D01* +X7944408Y2217369D01* +X7945272Y2227935D01* +X7944967Y2232152D01* +X7945424Y2236165D01* +X7947456Y2239721D01* +X7950708Y2242159D01* +X7954670Y2243175D01* +X7964322Y2243480D01* +X7974736Y2245664D01* +X7984642Y2249424D01* +X7993837Y2254656D01* +X8002016Y2261362D01* +X8009077Y2269286D01* +X8014716Y2278329D01* +X8018881Y2288082D01* +X8021421Y2298344D01* +X8022285Y2308860D01* +X8020812Y2325014D01* +X8022132Y2328722D01* +X8024723Y2331669D01* +X8028228Y2333345D01* +X8032089Y2333650D01* +X8036763Y2333091D01* +X8047329Y2333548D01* +X8057743Y2335580D01* +X8067649Y2339390D01* +X8070900Y2341321D01* +X8074914Y2342540D01* +X8079130Y2342134D01* +X8082788Y2340000D01* +X8085277Y2336596D01* +X8086140Y2332482D01* +X8086140Y2299563D01* +X8086953Y2291588D01* +X8089138Y2284323D01* +X8092694Y2277668D01* +X8097824Y2271471D01* +X8178647Y2190597D01* +X8180882Y2187295D01* +X8181644Y2183384D01* +X8181644Y2161895D01* +X8182356Y2155545D01* +X8184286Y2150110D01* +X8187334Y2145182D01* +X8191449Y2141169D01* +X8196325Y2138070D01* +X8201812Y2136140D01* +X8208111Y2135378D01* +X8256981Y2135378D01* +X8263280Y2136140D01* +X8268766Y2138070D01* +X8272881Y2140661D01* +X8276386Y2142032D01* +X8280146Y2142032D01* +X8283651Y2140661D01* +X8287766Y2138070D01* +X8293252Y2136140D01* +X8299551Y2135378D01* +X8348421Y2135378D01* +X8354720Y2136140D01* +X8360206Y2138070D01* +X8365083Y2141169D01* +X8369198Y2145182D01* +X8370925Y2147976D01* +X8373160Y2150465D01* +X8376158Y2152142D01* +X8379510Y2152751D01* +X8448649Y2152751D01* +X8452510Y2151938D01* +X8455812Y2149703D01* +X8458454Y2147112D01* +X8463330Y2144064D01* +X8468817Y2142134D01* +X8475116Y2141372D01* +X8523986Y2141372D01* +X8530285Y2142134D01* +X8535771Y2144064D01* +X8539886Y2146604D01* +X8543391Y2148027D01* +X8547150Y2148027D01* +X8550656Y2146604D01* +X8554770Y2144064D01* +X8560257Y2142134D01* +X8566556Y2141372D01* +X8572144Y2141372D01* +X8572144Y2175967D01* +X8560612Y2175967D01* +X8556752Y2176780D01* +X8553450Y2178913D01* +X8551214Y2182215D01* +X8550452Y2186127D01* +X8550452Y2208530D01* +X8551214Y2212441D01* +X8553450Y2215743D01* +X8556752Y2217877D01* +X8560612Y2218690D01* +X8572144Y2218690D01* +X8572144Y2253234D01* +X8566556Y2253234D01* +X8560257Y2252573D01* +X8554770Y2250592D01* +X8550656Y2248052D01* +X8547150Y2246680D01* +X8543391Y2246680D01* +X8539886Y2248052D01* +X8535771Y2250592D01* +X8530285Y2252573D01* +X8523986Y2253234D01* +X8475116Y2253234D01* +X8468817Y2252573D01* +X8463330Y2250592D01* +X8458454Y2247544D01* +X8454339Y2243429D01* +X8451291Y2238502D01* +X8450630Y2236774D01* +X8448497Y2233168D01* +X8445093Y2230780D01* +X8441029Y2229967D01* +X8380018Y2229967D01* +X8376158Y2230678D01* +X8372856Y2232914D01* +X8370671Y2236165D01* +X8369858Y2240076D01* +X8369858Y2273096D01* +X8370570Y2276703D01* +X8372449Y2279904D01* +X8375396Y2282088D01* +X8378901Y2283206D01* +X8382762Y2283663D01* +X8388197Y2285593D01* +X8393125Y2288641D01* +X8397189Y2292705D01* +X8400288Y2297582D01* +X8402167Y2303068D01* +X8402929Y2309368D01* +X8402929Y2435250D01* +X8402167Y2441600D01* +X8400288Y2447036D01* +X8397189Y2451912D01* +X8393125Y2456078D01* +X8388197Y2459126D01* +X8382762Y2461056D01* +X8376412Y2461717D01* +X8286140Y2461717D01* +X8279790Y2461056D01* +X8274354Y2459126D01* +X8269427Y2456078D01* +X8265363Y2451912D01* +X8262264Y2447036D01* +X8260384Y2441600D01* +X8259673Y2435250D01* +X8259673Y2309368D01* +X8260384Y2303068D01* +X8262264Y2297582D01* +X8265363Y2292705D01* +X8269427Y2288641D01* +X8274354Y2285593D01* +X8279790Y2283663D01* +X8283651Y2283256D01* +X8287156Y2282088D01* +X8290102Y2279904D01* +X8291982Y2276703D01* +X8292642Y2273096D01* +X8292642Y2253335D01* +X8292084Y2249982D01* +X8290458Y2246985D01* +X8287918Y2244750D01* +X8283651Y2242007D01* +X8280146Y2240686D01* +X8276386Y2240686D01* +X8272881Y2242007D01* +X8268766Y2244648D01* +X8263280Y2246579D01* +X8256981Y2247239D01* +X8235442Y2247239D01* +X8231530Y2248052D01* +X8228279Y2250186D01* +X8166353Y2312162D01* +X8164169Y2315464D01* +X8163356Y2319324D01* +X8163356Y2843225D01* +X8164169Y2847136D01* +X8166353Y2850438D01* +X8169656Y2852674D01* +X8173516Y2853385D01* +X8204200Y2853385D01* +X8210550Y2854147D01* +X8215985Y2856026D01* +X8220862Y2859176D01* +X8224977Y2863189D01* +X8228075Y2868117D01* +X8229955Y2873552D01* +X8230666Y2879902D01* +X8230666Y2905709D01* +X8229955Y2912059D01* +X8229142Y2914446D01* +X8228584Y2917850D01* +X8229142Y2921203D01* +X8229955Y2923590D01* +X8230666Y2929940D01* +X8230666Y2955747D01* +X8229955Y2962097D01* +X8229142Y2964434D01* +X8228584Y2967786D01* +X8229142Y2971139D01* +X8229955Y2973578D01* +X8230666Y2979877D01* +X8230666Y3003499D01* +X8231479Y3007410D01* +X8233664Y3010712D01* +X8236966Y3012948D01* +X8240826Y3013659D01* +X8244738Y3012948D01* +X8248040Y3010712D01* +X8264093Y2994609D01* +X8270341Y2989580D01* +X8276996Y2986024D01* +X8284209Y2983788D01* +X8292236Y2982976D01* +X8299348Y2982976D01* +X8303259Y2982264D01* +X8306562Y2979978D01* +X8310168Y2976422D01* +X8315604Y2973019D01* +X8318144Y2970682D01* +X8319770Y2967685D01* +X8320379Y2964332D01* +X8320379Y2956407D01* +X8319566Y2952496D01* +X8317026Y2947974D01* +X8313572Y2944215D01* +X8307882Y2935986D01* +X8303768Y2927197D01* +X8301228Y2917799D01* +X8300415Y2908046D01* +X8301228Y2898394D01* +X8303768Y2888996D01* +X8307882Y2880207D01* +X8313470Y2872232D01* +X8320379Y2865272D01* +X8328355Y2859684D01* +X8337143Y2855620D01* +X8346592Y2853029D01* +X8356295Y2852267D01* +X8365947Y2853029D01* +X8375396Y2855620D01* +X8384184Y2859684D01* +X8395512Y2867456D01* +X8399373Y2868066D01* +X8403183Y2867253D01* +X8406434Y2865069D01* +X8408619Y2861767D01* +X8409381Y2857906D01* +X8409381Y2741726D01* +X8408314Y2726740D01* +X8405418Y2712669D01* +X8400694Y2699004D01* +X8396528Y2690622D01* +X8394293Y2687624D01* +X8391144Y2685643D01* +X8387435Y2684881D01* +X8382660Y2684881D01* +X8376310Y2684221D01* +X8370874Y2682341D01* +X8365947Y2679192D01* +X8361883Y2675128D01* +X8358784Y2670200D01* +X8356904Y2664815D01* +X8356193Y2658465D01* +X8356193Y2532583D01* +X8356904Y2526233D01* +X8358784Y2520797D01* +X8361883Y2515870D01* +X8365947Y2511856D01* +X8370874Y2508707D01* +X8376310Y2506878D01* +X8382660Y2506065D01* +X8472932Y2506065D01* +X8479282Y2506878D01* +X8484717Y2508707D01* +X8489645Y2511856D01* +X8493709Y2515870D01* +X8496808Y2520797D01* +X8498687Y2526233D01* +X8499449Y2532583D01* +X8499449Y2658465D01* +X8498687Y2664815D01* +X8496808Y2670200D01* +X8493709Y2675128D01* +X8489645Y2679192D01* +X8485936Y2681528D01* +X8483396Y2683865D01* +X8481771Y2686812D01* +X8481161Y2690164D01* +X8481161Y2945638D01* +X8481974Y2949498D01* +X8484158Y2952800D01* +X8487460Y2954985D01* +X8491321Y2955798D01* +X8505596Y2955798D01* +X8508542Y2955340D01* +X8535466Y2955340D01* +X8537956Y2954985D01* +X8540597Y2953969D01* +X8548268Y2951581D01* +X8556752Y2950768D01* +X8650732Y2950768D01* +X8659215Y2951581D01* +X8669528Y2954985D01* +X8672017Y2955340D01* +X8689543Y2955340D01* +X8688984Y2957068D01* +X8686495Y2961792D01* +X8685428Y2964891D01* +X8685428Y2968193D01* +X8686495Y2971393D01* +X8688984Y2976016D01* +X8691321Y2983738D01* +X8692083Y2991662D01* +X8691321Y2999638D01* +X8688984Y3007309D01* +X8686495Y3012033D01* +X8685428Y3015081D01* +X8685428Y3018434D01* +X8686495Y3021533D01* +X8688984Y3026257D01* +X8691321Y3033928D01* +X8692083Y3041904D01* +X8691321Y3049828D01* +X8688984Y3057550D01* +X8686495Y3062224D01* +X8685428Y3065373D01* +X8685428Y3068675D01* +X8686495Y3071774D01* +X8688984Y3076498D01* +X8691321Y3084118D01* +X8692083Y3092094D01* +X8691321Y3100019D01* +X8688984Y3107740D01* +X8686495Y3112363D01* +X8685428Y3115564D01* +X8685428Y3118815D01* +X8686495Y3122015D01* +X8688984Y3126638D01* +X8691321Y3134309D01* +X8692083Y3142335D01* +X8691321Y3150311D01* +X8688984Y3157982D01* +X8686495Y3162604D01* +X8685428Y3165805D01* +X8685428Y3169056D01* +X8686495Y3172256D01* +X8688984Y3176879D01* +X8691321Y3184550D01* +X8692083Y3192475D01* +X8691321Y3200501D01* +X8688984Y3208121D01* +X8686495Y3212846D01* +X8685428Y3215944D01* +X8685428Y3219246D01* +X8686495Y3222447D01* +X8688984Y3227070D01* +X8691321Y3234791D01* +X8692083Y3242716D01* +X8691321Y3250692D01* +X8688984Y3258362D01* +X8686495Y3263087D01* +X8685428Y3266186D01* +X8685428Y3269538D01* +X8686495Y3272637D01* +X8688984Y3277362D01* +X8691321Y3285032D01* +X8692083Y3292957D01* +X8691321Y3300882D01* +X8688984Y3308604D01* +X8686495Y3313226D01* +X8685428Y3316427D01* +X8685428Y3319729D01* +X8686495Y3322828D01* +X8688984Y3327552D01* +X8691321Y3335172D01* +X8692083Y3343198D01* +X8691321Y3351123D01* +X8688984Y3358845D01* +X8686495Y3363468D01* +X8685428Y3366668D01* +X8685428Y3369970D01* +X8686495Y3373069D01* +X8688984Y3377793D01* +X8691321Y3385413D01* +X8692083Y3393338D01* +X8691321Y3401364D01* +X8688984Y3409035D01* +X8686495Y3413658D01* +X8685428Y3416858D01* +X8685428Y3420110D01* +X8686495Y3423310D01* +X8688984Y3427933D01* +X8691321Y3435604D01* +X8692083Y3443579D01* +X8691321Y3451606D01* +X8688984Y3459226D01* +X8686495Y3463950D01* +X8685428Y3467049D01* +X8685428Y3470351D01* +X8686495Y3473551D01* +X8688984Y3478174D01* +X8691321Y3485896D01* +X8692083Y3493770D01* +X8691321Y3501745D01* +X8688984Y3509416D01* +X8686495Y3514140D01* +X8685428Y3517239D01* +X8685428Y3520592D01* +X8686495Y3523691D01* +X8688984Y3528415D01* +X8691321Y3536086D01* +X8692083Y3544062D01* +X8691321Y3551986D01* +X8688984Y3559657D01* +X8686495Y3564382D01* +X8685428Y3567480D01* +X8685428Y3570833D01* +X8686495Y3573932D01* +X8688984Y3578656D01* +X8691321Y3586276D01* +X8692083Y3594252D01* +X8691321Y3602177D01* +X8688984Y3609898D01* +X8686495Y3614521D01* +X8685428Y3617722D01* +X8685428Y3621024D01* +X8686495Y3624173D01* +X8688984Y3628847D01* +X8691321Y3636467D01* +X8692083Y3644493D01* +X8691321Y3652469D01* +X8688984Y3660140D01* +X8686495Y3664762D01* +X8685428Y3667912D01* +X8685428Y3671214D01* +X8686495Y3674364D01* +X8688984Y3678986D01* +X8691321Y3686657D01* +X8692083Y3694633D01* +X8691321Y3702659D01* +X8688984Y3710279D01* +X8686495Y3715004D01* +X8685428Y3718102D01* +X8685428Y3721404D01* +X8686495Y3724605D01* +X8688984Y3729228D01* +X8691321Y3736949D01* +X8692083Y3744823D01* +X8691321Y3752799D01* +X8688984Y3760470D01* +X8686495Y3765194D01* +X8685428Y3768293D01* +X8685428Y3771646D01* +X8686495Y3774744D01* +X8688984Y3779469D01* +X8691321Y3787140D01* +X8692083Y3795115D01* +X8691321Y3803040D01* +X8688984Y3810762D01* +X8686495Y3815435D01* +X8685428Y3818585D01* +X8685428Y3821887D01* +X8686495Y3824986D01* +X8688984Y3829710D01* +X8691321Y3837330D01* +X8692083Y3845306D01* +X8691321Y3853230D01* +X8688984Y3860952D01* +X8686495Y3865575D01* +X8685428Y3868775D01* +X8685428Y3872026D01* +X8686495Y3875227D01* +X8688984Y3879900D01* +X8691321Y3887520D01* +X8692083Y3895547D01* +X8691321Y3903522D01* +X8688984Y3911193D01* +X8686495Y3915816D01* +X8685428Y3919016D01* +X8685428Y3922268D01* +X8686495Y3925468D01* +X8688984Y3930091D01* +X8691321Y3937762D01* +X8692083Y3945686D01* +X8691321Y3953713D01* +X8688984Y3961333D01* +X8686495Y3966057D01* +X8685428Y3969156D01* +X8685428Y3972458D01* +X8686495Y3975658D01* +X8688984Y3980281D01* +X8689543Y3982110D01* +X8672017Y3982110D01* +X8669528Y3982364D01* +X8666886Y3983532D01* +X8658250Y3986123D01* +X8654491Y3988155D01* +X8651951Y3991610D01* +X8651036Y3996080D01* +X8651951Y4000296D01* +X8654491Y4003700D01* +X8658250Y4005783D01* +X8667242Y4008577D01* +X8669528Y4009542D01* +X8672017Y4009847D01* +X8689543Y4009847D01* +X8688984Y4011574D01* +X8686495Y4016298D01* +X8685428Y4019397D01* +X8685428Y4022750D01* +X8686495Y4025849D01* +X8688984Y4030573D01* +X8691321Y4038244D01* +X8692083Y4046169D01* +X8691321Y4054094D01* +X8688984Y4061815D01* +X8686495Y4066438D01* +X8685428Y4069638D01* +X8685428Y4072940D01* +X8686495Y4076039D01* +X8688984Y4080764D01* +X8691321Y4088384D01* +X8692083Y4096410D01* +X8691321Y4104335D01* +X8688984Y4112056D01* +X8686495Y4116679D01* +X8685428Y4119879D01* +X8685428Y4123182D01* +X8686495Y4126280D01* +X8688984Y4131005D01* +X8689543Y4132732D01* +X8672017Y4132732D01* +X8669528Y4133087D01* +X8666886Y4134104D01* +X8658250Y4136745D01* +X8654491Y4138879D01* +X8651951Y4142282D01* +X8651036Y4146753D01* +X8651951Y4150918D01* +X8654491Y4154322D01* +X8658250Y4156456D01* +X8669528Y4160113D01* +X8672017Y4160469D01* +X8689543Y4160469D01* +X8688984Y4162247D01* +X8686495Y4166870D01* +X8685428Y4170070D01* +X8685428Y4173321D01* +X8686495Y4176522D01* +X8688984Y4181144D01* +X8691321Y4188815D01* +X8692083Y4196791D01* +X8691321Y4204817D01* +X8688984Y4212437D01* +X8686495Y4217162D01* +X8685428Y4220260D01* +X8685428Y4223562D01* +X8686495Y4226763D01* +X8688984Y4231386D01* +X8691321Y4239107D01* +X8692083Y4246981D01* +X8691321Y4254957D01* +X8688984Y4262628D01* +X8686495Y4267352D01* +X8685428Y4270451D01* +X8685428Y4273804D01* +X8686495Y4276902D01* +X8688984Y4281627D01* +X8691321Y4289298D01* +X8692083Y4297273D01* +X8691321Y4305198D01* +X8688984Y4312869D01* +X8686495Y4317593D01* +X8685428Y4320692D01* +X8685428Y4324045D01* +X8686495Y4327093D01* +X8688984Y4331817D01* +X8691321Y4339437D01* +X8692083Y4347464D01* +X8691321Y4355388D01* +X8688984Y4363110D01* +X8686495Y4367733D01* +X8685428Y4370933D01* +X8685428Y4374235D01* +X8686495Y4377385D01* +X8688984Y4382058D01* +X8691321Y4389678D01* +X8692083Y4397603D01* +X8691321Y4405630D01* +X8688984Y4413300D01* +X8686495Y4417923D01* +X8685428Y4421124D01* +X8685428Y4424375D01* +X8686495Y4427575D01* +X8688984Y4432198D01* +X8691321Y4439869D01* +X8692083Y4447844D01* +X8691321Y4455871D01* +X8688984Y4463491D01* +X8686495Y4468215D01* +X8685428Y4471314D01* +X8685428Y4474616D01* +X8686495Y4477816D01* +X8688984Y4482439D01* +X8691321Y4490161D01* +X8692083Y4498035D01* +X8691321Y4506010D01* +X8688984Y4513681D01* +X8686495Y4518406D01* +X8685428Y4521504D01* +X8685428Y4524857D01* +X8686495Y4527956D01* +X8688984Y4532680D01* +X8689543Y4534458D01* +X8672017Y4534458D01* +X8669528Y4534712D01* +X8666886Y4535830D01* +X8658250Y4538472D01* +X8654491Y4540504D01* +X8651951Y4543958D01* +X8651036Y4548428D01* +X8651951Y4552645D01* +X8654491Y4556099D01* +X8658250Y4558131D01* +X8667242Y4560976D01* +X8669528Y4561890D01* +X8672017Y4562144D01* +X8689543Y4562144D01* +X8688984Y4563973D01* +X8686495Y4568647D01* +X8685428Y4571796D01* +X8685428Y4575098D01* +X8686495Y4578197D01* +X8688984Y4582922D01* +X8691321Y4590542D01* +X8692083Y4598517D01* +X8691321Y4606442D01* +X8688984Y4614164D01* +X8686495Y4618786D01* +X8685428Y4621987D01* +X8685428Y4625238D01* +X8686495Y4628438D01* +X8688984Y4633112D01* +X8691321Y4640732D01* +X8692083Y4648758D01* +X8691473Y4655312D01* +X8691676Y4658715D01* +X8693048Y4661814D01* +X8695385Y4664405D01* +X8699195Y4666183D01* +X8705799Y4669993D01* +X8710269Y4673854D01* +X8730284Y4693869D01* +X8735314Y4700117D01* +X8738717Y4706721D01* +X8740698Y4714087D01* +X8741156Y4719980D01* +X8741156Y4770170D01* +X8742121Y4774488D01* +X8744813Y4777994D01* +X8748776Y4780026D01* +X8753144Y4780229D01* +X8765895Y4777892D01* +X8781389Y4776927D01* +X8880754Y4776927D01* +X8896248Y4777892D01* +X8911183Y4780635D01* +X8925712Y4785156D01* +X8939580Y4791405D01* +X8952585Y4799279D01* +X8964574Y4808626D01* +X8975293Y4819396D01* +X8984691Y4831283D01* +X8992565Y4844338D01* +X8998762Y4858156D01* +X9003284Y4872685D01* +X9006027Y4887671D01* +X9006941Y4902860D01* +X9006027Y4918049D01* +X9003284Y4932934D01* +X8998762Y4947462D01* +X8992565Y4961382D01* +X8984691Y4974336D01* +X8975293Y4986324D01* +X8964574Y4997094D01* +X8952585Y5006441D01* +X8939580Y5014315D01* +X8925712Y5020564D01* +X8911183Y5025085D01* +X8896248Y5027828D01* +X8880754Y5028692D01* +X8781389Y5028692D01* +X8765895Y5027828D01* +X8750960Y5025085D01* +X8736431Y5020564D01* +X8722563Y5014315D01* +X8709558Y5006441D01* +X8697569Y4997094D01* +X8686850Y4986324D01* +X8677452Y4974336D01* +X8669578Y4961382D01* +X8663381Y4947462D01* +X8658860Y4932934D01* +X8656116Y4918049D01* +X8655202Y4902860D01* +X8656116Y4887671D01* +X8658860Y4872685D01* +X8663432Y4858054D01* +X8664295Y4854143D01* +X8663584Y4850180D01* +X8661400Y4846777D01* +X8658098Y4844542D01* +X8654135Y4843780D01* +X7994599Y4843780D01* +X7990687Y4844491D01* +X7987385Y4846777D01* +X7970266Y4863896D01* +X7964017Y4868875D01* +X7957362Y4872278D01* +X7949996Y4874260D01* +X7944103Y4874717D01* +X7563815Y4874717D01* +X7559903Y4875530D01* +X7555382Y4878070D01* +X7551623Y4881473D01* +X7543444Y4887264D01* +X7534148Y4891582D01* +X7530998Y4893818D01* +X7528915Y4897170D01* +X7528306Y4901031D01* +X7529118Y4904892D01* +X7531353Y4908042D01* +X7534605Y4910226D01* +X7538415Y4910937D01* +X7929778Y4910937D01* +X7944713Y4906873D01* +X7954416Y4906010D01* +X7964119Y4906873D01* +X7973517Y4909413D01* +X7982356Y4913579D01* +X7990331Y4919116D01* +X7997190Y4925974D01* +X8002778Y4934000D01* +X8006892Y4942840D01* +X8009432Y4952238D01* +X8010296Y4961940D01* +X8009432Y4971643D01* +X8006892Y4981041D01* +X8002778Y4989880D01* +X7997190Y4997805D01* +X7990331Y5004663D01* +X7982356Y5010302D01* +X7973517Y5014366D01* +X7964119Y5016906D01* +X7954416Y5017770D01* +X7944713Y5016906D01* +X7935315Y5014366D01* +X7933791Y5013756D01* +X7929473Y5012791D01* +X7483754Y5012791D01* +X7480401Y5013350D01* +X7477404Y5014925D01* +X7475118Y5017465D01* +X7471714Y5023002D01* +X7467600Y5027015D01* +X7462723Y5030114D01* +X7457236Y5031994D01* +X7450937Y5032756D01* +X7342073Y5032756D01* +X7335774Y5031994D01* +X7330287Y5030114D01* +X7325410Y5027015D01* +X7321296Y5023002D01* +X7315962Y5014163D01* +X7312558Y5011775D01* +X7308494Y5010912D01* +X7304430Y5011775D01* +X7301077Y5014163D01* +X7295692Y5023002D01* +X7291628Y5027015D01* +X7286701Y5030114D01* +X7281265Y5031994D01* +X7274915Y5032756D01* +X7254341Y5032756D01* +X7254341Y4990693D01* +X7305446Y4990693D01* +X7309307Y4989880D01* +X7312609Y4987747D01* +X7314844Y4984445D01* +X7315606Y4980533D01* +X7315606Y4943144D01* +X7314844Y4939233D01* +X7312609Y4935982D01* +X7309307Y4933746D01* +X7305446Y4933035D01* +X7254341Y4933035D01* +X7254341Y4890922D01* +X7274915Y4890922D01* +X7281265Y4891684D01* +X7286701Y4893564D01* +X7291628Y4896612D01* +X7295692Y4900676D01* +X7301077Y4909515D01* +X7304430Y4911902D01* +X7308494Y4912766D01* +X7312558Y4911902D01* +X7315962Y4909515D01* +X7321296Y4900676D01* +X7325410Y4896612D01* +X7330287Y4893564D01* +X7335774Y4891684D01* +X7342073Y4890922D01* +X7364323Y4890922D01* +X7368184Y4890160D01* +X7371486Y4887925D01* +X7373670Y4884674D01* +X7375347Y4880356D01* +X7378039Y4868570D01* +X7378903Y4857343D01* +X7378903Y4831130D01* +X7378344Y4827778D01* +X7376668Y4824831D01* +X7374128Y4822545D01* +X7370927Y4820513D01* +X7367422Y4819142D01* +X7363612Y4819142D01* +X7360107Y4820513D01* +X7355992Y4823155D01* +X7350556Y4825085D01* +X7344206Y4825796D01* +X7338669Y4825796D01* +X7338669Y4791151D01* +X7350150Y4791151D01* +X7354062Y4790440D01* +X7357364Y4788204D01* +X7359548Y4784902D01* +X7360310Y4780991D01* +X7360310Y4758690D01* +X7359548Y4754778D01* +X7357364Y4751476D01* +X7354062Y4749241D01* +X7350150Y4748530D01* +X7338669Y4748530D01* +X7338669Y4713935D01* +X7344206Y4713935D01* +X7350556Y4714595D01* +X7355992Y4716526D01* +X7360107Y4719167D01* +X7363612Y4720488D01* +X7367422Y4720488D01* +X7370927Y4719167D01* +X7374128Y4717135D01* +X7376668Y4714849D01* +X7378344Y4711903D01* +X7378903Y4708550D01* +X7378903Y4647793D01* +X7378141Y4643882D01* +X7375906Y4640630D01* +X7372654Y4638344D01* +X7368743Y4637633D01* +X7364831Y4638344D01* +X7361580Y4640630D01* +X7303922Y4698238D01* +X7301738Y4701540D01* +X7300925Y4705400D01* +X7300925Y4748530D01* +X7262825Y4748530D01* +X7258913Y4747615D01* +X7254900Y4748326D01* +X7251547Y4750562D01* +X6919214Y5082997D01* +X6916978Y5086197D01* +X6916216Y5090109D01* +X6916978Y5094020D01* +X6919214Y5097322D01* +X6922465Y5099507D01* +X6926376Y5100269D01* +X8594344Y5100269D01* +X8602319Y5101183D01* +X8609431Y5103418D01* +X8616035Y5107228D01* +X8620556Y5111089D01* +X8842044Y5332628D01* +X8845296Y5334762D01* +X8849207Y5335574D01* +X9890861Y5335574D01* +X9894925Y5334711D01* +X9898329Y5332323D01* +X9900462Y5328767D01* +X9901682Y5325262D01* +X9904730Y5320385D01* +X9908844Y5316220D01* +X9913721Y5313222D01* +X9919208Y5311292D01* +X9925507Y5310530D01* +X9949840Y5310530D01* +X9953752Y5309819D01* +X9957054Y5307533D01* +X9959238Y5304332D01* +X9960000Y5300421D01* +X9960000Y5287213D01* +X10017048Y5287213D01* +X10017048Y5300421D01* +X10017861Y5304332D01* +X10020046Y5307533D01* +X10023348Y5309819D01* +X10027208Y5310530D01* +X10074402Y5310530D01* +X10080701Y5311292D01* +X10086187Y5313222D01* +X10089184Y5315102D01* +X10093248Y5316575D01* +X10097516Y5316169D01* +X10101275Y5314137D01* +X10103866Y5310733D01* +X10104780Y5306466D01* +X10104780Y5287213D01* +X10161828Y5287213D01* +X10161828Y5310276D01* +X10161117Y5316575D01* +X10159187Y5322062D01* +X10156139Y5326938D01* +X10152024Y5331002D01* +X10147147Y5334101D01* +X10141661Y5336032D01* +X10135362Y5336692D01* +X10111028Y5336692D01* +X10107117Y5337505D01* +X10103815Y5339689D01* +X10101630Y5343042D01* +X10100868Y5346903D01* +X10100868Y5405932D01* +X10100157Y5412232D01* +X10098227Y5417718D01* +X10096144Y5421020D01* +X10094772Y5424525D01* +X10094772Y5428234D01* +X10096144Y5431840D01* +X10098227Y5435092D01* +X10100157Y5440578D01* +X10100868Y5446928D01* +X10100868Y5515762D01* +X10100157Y5522112D01* +X10098227Y5527548D01* +X10096144Y5530799D01* +X10094772Y5534406D01* +X10094772Y5538114D01* +X10096144Y5541670D01* +X10098227Y5544921D01* +X10100157Y5550458D01* +X10100868Y5556707D01* +X10100868Y5625592D01* +X10100157Y5631891D01* +X10098227Y5637428D01* +X10096144Y5640679D01* +X10094772Y5644235D01* +X10094772Y5647944D01* +X10096144Y5651550D01* +X10098227Y5654802D01* +X10100157Y5660237D01* +X10100868Y5666587D01* +X10100868Y5677154D01* +X10043820Y5677154D01* +X10043820Y5662218D01* +X10043007Y5658307D01* +X10040823Y5655106D01* +X10037521Y5652820D01* +X10033660Y5652109D01* +X9966248Y5652109D01* +X9962388Y5652820D01* +X9959086Y5655106D01* +X9956901Y5658307D01* +X9956088Y5662218D01* +X9956088Y5677154D01* +X9899040Y5677154D01* +X9899040Y5666587D01* +X9899751Y5660237D01* +X9901682Y5654802D01* +X9903764Y5651550D01* +X9905136Y5647944D01* +X9905136Y5644235D01* +X9903764Y5640679D01* +X9901682Y5637428D01* +X9900462Y5633872D01* +X9898278Y5630316D01* +X9894925Y5627878D01* +X9890861Y5627065D01* +X8860078Y5627065D01* +X8856167Y5627827D01* +X8852865Y5630062D01* +X8850680Y5633313D01* +X8849918Y5637225D01* +X8850680Y5641086D01* +X8852865Y5644438D01* +X8965539Y5757113D01* +X8968841Y5759246D01* +X8972702Y5760059D01* +X9362541Y5760059D01* +X9365894Y5759500D01* +X9368840Y5757824D01* +X9371126Y5755335D01* +X9374581Y5749848D01* +X9378645Y5745734D01* +X9383572Y5742635D01* +X9389008Y5740704D01* +X9395358Y5740044D01* +X9444177Y5740044D01* +X9450527Y5740704D01* +X9455962Y5742635D01* +X9460077Y5745226D01* +X9463582Y5746597D01* +X9467392Y5746597D01* +X9470898Y5745226D01* +X9475012Y5742635D01* +X9480448Y5740704D01* +X9486798Y5740044D01* +X9535617Y5740044D01* +X9541967Y5740704D01* +X9547402Y5742635D01* +X9552330Y5745734D01* +X9556394Y5749848D01* +X9559493Y5754776D01* +X9561423Y5760212D01* +X9562033Y5765952D01* +X9563100Y5769457D01* +X9565386Y5772404D01* +X9568535Y5774334D01* +X9572142Y5774944D01* +X9890861Y5774944D01* +X9894925Y5774080D01* +X9898329Y5771743D01* +X9900462Y5768136D01* +X9901682Y5764631D01* +X9903764Y5761329D01* +X9905136Y5757824D01* +X9905136Y5754065D01* +X9903764Y5750509D01* +X9901682Y5747207D01* +X9899751Y5741771D01* +X9899040Y5735421D01* +X9899040Y5724906D01* +X9956088Y5724906D01* +X9956088Y5739790D01* +X9956901Y5743702D01* +X9959086Y5747004D01* +X9962388Y5749188D01* +X9966248Y5749950D01* +X10033660Y5749950D01* +X10037521Y5749188D01* +X10040823Y5747004D01* +X10043007Y5743702D01* +X10043820Y5739790D01* +X10043820Y5724906D01* +X10100868Y5724906D01* +X10100868Y5735421D01* +X10100157Y5741771D01* +X10098227Y5747207D01* +X10096144Y5750509D01* +X10094772Y5754065D01* +X10094772Y5757824D01* +X10096144Y5761329D01* +X10098227Y5764631D01* +X10100157Y5770118D01* +X10100868Y5776417D01* +X10100868Y5845302D01* +X10100157Y5851601D01* +X10098227Y5857087D01* +X10096144Y5860389D01* +X10094772Y5863894D01* +X10094772Y5867654D01* +X10096144Y5871210D01* +X10098227Y5874512D01* +X10100157Y5879947D01* +X10100868Y5886297D01* +X10100868Y5955131D01* +X10100157Y5961481D01* +X10098227Y5966917D01* +X10096144Y5970219D01* +X10094772Y5973775D01* +X10094772Y5977585D01* +X10096144Y5981039D01* +X10098227Y5984392D01* +X10100157Y5989828D01* +X10100868Y5996127D01* +X10100868Y6065012D01* +X10100157Y6071362D01* +X10098227Y6076797D01* +X10096144Y6080150D01* +X10094772Y6083604D01* +X10094772Y6087414D01* +X10096144Y6090920D01* +X10098227Y6094272D01* +X10100157Y6099657D01* +X10100868Y6106007D01* +X10100868Y6174892D01* +X10100157Y6181242D01* +X10098227Y6186627D01* +X10096144Y6189980D01* +X10094772Y6193485D01* +X10094772Y6197295D01* +X10096144Y6200800D01* +X10098227Y6204102D01* +X10100157Y6209588D01* +X10100868Y6215888D01* +X10100868Y6284772D01* +X10100157Y6291072D01* +X10098227Y6296507D01* +X10095179Y6301435D01* +X10091064Y6305499D01* +X10086187Y6308598D01* +X10080701Y6310528D01* +X10074402Y6311188D01* +X9925507Y6311188D01* +X9919208Y6310528D01* +X9913721Y6308598D01* +X9908844Y6305499D01* +X9904730Y6301435D01* +X9901682Y6296507D01* +X9899954Y6291580D01* +X9897770Y6288024D01* +X9894417Y6285636D01* +X9890353Y6284772D01* +X9870795Y6284772D01* +X9866884Y6285484D01* +X9862362Y6288125D01* +X9858603Y6291580D01* +X9850424Y6297218D01* +X9841636Y6301384D01* +X9832187Y6303873D01* +X9822535Y6304737D01* +X9812832Y6303873D01* +X9803384Y6301384D01* +X9794595Y6297218D01* +X9786620Y6291630D01* +X9779711Y6284772D01* +X9774123Y6276797D01* +X9770008Y6268008D01* +X9767468Y6258509D01* +X9766655Y6248806D01* +X9767468Y6239205D01* +X9770008Y6229705D01* +X9774123Y6220917D01* +X9779711Y6212992D01* +X9786620Y6206083D01* +X9790785Y6203137D01* +X9793478Y6200292D01* +X9794951Y6196736D01* +X9794951Y6192875D01* +X9793478Y6189218D01* +X9790785Y6186474D01* +X9786213Y6183223D01* +X9779304Y6176365D01* +X9773716Y6168390D01* +X9769602Y6159601D01* +X9767062Y6150102D01* +X9766249Y6140399D01* +X9767062Y6130798D01* +X9769602Y6121298D01* +X9773716Y6112510D01* +X9779304Y6104585D01* +X9786213Y6097676D01* +X9792208Y6093409D01* +X9794900Y6090615D01* +X9796322Y6087059D01* +X9796322Y6083147D01* +X9794900Y6079591D01* +X9792208Y6076797D01* +X9787331Y6073343D01* +X9780473Y6066485D01* +X9774885Y6058560D01* +X9770770Y6049721D01* +X9768230Y6040272D01* +X9767366Y6030620D01* +X9768230Y6020917D01* +X9770770Y6011468D01* +X9774885Y6002629D01* +X9780473Y5994654D01* +X9787331Y5987846D01* +X9795306Y5982258D01* +X9804146Y5978093D01* +X9809632Y5976569D01* +X9813340Y5974740D01* +X9815982Y5971590D01* +X9817150Y5967526D01* +X9816592Y5963412D01* +X9814458Y5959906D01* +X9811054Y5957519D01* +X9807041Y5956604D01* +X9568688Y5956604D01* +X9564624Y5957519D01* +X9561271Y5959906D01* +X9559086Y5963412D01* +X9558477Y5965190D01* +X9555429Y5970117D01* +X9551314Y5974130D01* +X9548825Y5975705D01* +X9546285Y5978042D01* +X9544659Y5980988D01* +X9544100Y5984341D01* +X9544100Y6002680D01* +X9544659Y6006033D01* +X9546285Y6008979D01* +X9549282Y6011621D01* +X9553397Y6015685D01* +X9556445Y6020562D01* +X9558375Y6025997D01* +X9559086Y6032347D01* +X9559086Y6091224D01* +X9558375Y6097574D01* +X9556445Y6103010D01* +X9553397Y6107938D01* +X9546285Y6114542D01* +X9544659Y6117488D01* +X9544100Y6120841D01* +X9544100Y6205677D01* +X9544862Y6209588D01* +X9547047Y6212941D01* +X9550349Y6215075D01* +X9554260Y6215888D01* +X9559899Y6215888D01* +X9566198Y6216548D01* +X9571685Y6218478D01* +X9576562Y6221526D01* +X9580676Y6225692D01* +X9583775Y6230569D01* +X9585655Y6236004D01* +X9586366Y6242304D01* +X9586366Y6331204D01* +X9585655Y6337554D01* +X9583775Y6342989D01* +X9580676Y6347866D01* +X9576562Y6352032D01* +X9571685Y6355080D01* +X9566198Y6357010D01* +X9559899Y6357670D01* +X9451035Y6357670D01* +X9444736Y6357010D01* +X9439249Y6355080D01* +X9434372Y6352032D01* +X9430258Y6347866D01* +X9424924Y6339078D01* +X9421520Y6336639D01* +X9417456Y6335826D01* +X9413392Y6336639D01* +X9410039Y6339078D01* +X9404654Y6347866D01* +X9400590Y6352032D01* +X9395663Y6355080D01* +X9390227Y6357010D01* +X9383877Y6357670D01* +X9363303Y6357670D01* +X9363303Y6315608D01* +X9414408Y6315608D01* +X9418269Y6314897D01* +X9421571Y6312662D01* +X9423806Y6309309D01* +X9424568Y6305448D01* +X9424568Y6268110D01* +X9423806Y6264249D01* +X9421571Y6260896D01* +X9418269Y6258712D01* +X9414408Y6257950D01* +X9363303Y6257950D01* +X9363303Y6215888D01* +X9383877Y6215888D01* +X9390227Y6216548D01* +X9395663Y6218478D01* +X9400590Y6221526D01* +X9404654Y6225692D01* +X9410039Y6234480D01* +X9413392Y6236919D01* +X9417456Y6237732D01* +X9421520Y6236919D01* +X9424924Y6234480D01* +X9430258Y6225692D01* +X9434372Y6221526D01* +X9439249Y6218478D01* +X9444736Y6216548D01* +X9451035Y6215888D01* +X9460992Y6215888D01* +X9464598Y6215176D01* +X9467748Y6213297D01* +X9470034Y6210401D01* +X9471101Y6206845D01* +X9472269Y6195771D01* +X9472269Y6121298D01* +X9471355Y6117132D01* +X9468815Y6113678D01* +X9465056Y6111544D01* +X9460738Y6111290D01* +X9456724Y6112764D01* +X9452965Y6115100D01* +X9447479Y6116980D01* +X9441180Y6117742D01* +X9435592Y6117742D01* +X9435592Y6083096D01* +X9447123Y6083096D01* +X9450984Y6082385D01* +X9454286Y6080150D01* +X9456521Y6076848D01* +X9457283Y6072936D01* +X9457283Y6050635D01* +X9456521Y6046724D01* +X9454286Y6043422D01* +X9450984Y6041186D01* +X9447123Y6040475D01* +X9435592Y6040475D01* +X9435592Y6005880D01* +X9441180Y6005880D01* +X9447479Y6006541D01* +X9452965Y6008471D01* +X9456724Y6010808D01* +X9460738Y6012281D01* +X9465056Y6011976D01* +X9468815Y6009894D01* +X9471355Y6006439D01* +X9472269Y6002274D01* +X9472269Y5984798D01* +X9471355Y5980531D01* +X9468815Y5977077D01* +X9465056Y5975045D01* +X9460738Y5974689D01* +X9456724Y5976162D01* +X9454997Y5977229D01* +X9449511Y5979160D01* +X9443212Y5979922D01* +X9394342Y5979922D01* +X9388043Y5979160D01* +X9382556Y5977229D01* +X9377680Y5974130D01* +X9371025Y5967120D01* +X9368028Y5965393D01* +X9364675Y5964885D01* +X9236151Y5964885D01* +X9231985Y5965799D01* +X9228582Y5968288D01* +X9226448Y5971997D01* +X9226092Y5976162D01* +X9227464Y5980226D01* +X9230360Y5983376D01* +X9236659Y5987846D01* +X9243568Y5994654D01* +X9249156Y6002629D01* +X9253270Y6011468D01* +X9255810Y6020917D01* +X9256623Y6030620D01* +X9255810Y6040272D01* +X9253270Y6049721D01* +X9249156Y6058560D01* +X9243568Y6066485D01* +X9236659Y6073343D01* +X9229750Y6078220D01* +X9227058Y6081064D01* +X9225635Y6084620D01* +X9225635Y6088481D01* +X9227058Y6092088D01* +X9229750Y6094882D01* +X9231426Y6096101D01* +X9238284Y6102959D01* +X9243872Y6110935D01* +X9247987Y6119723D01* +X9250527Y6129121D01* +X9251391Y6138824D01* +X9250527Y6148527D01* +X9247987Y6157925D01* +X9243872Y6166764D01* +X9238284Y6174790D01* +X9231426Y6181648D01* +X9225889Y6185560D01* +X9223197Y6188303D01* +X9221724Y6191961D01* +X9221724Y6195822D01* +X9223197Y6199378D01* +X9225889Y6202222D01* +X9231426Y6206083D01* +X9238284Y6212992D01* +X9243161Y6219850D01* +X9245955Y6222593D01* +X9249562Y6224066D01* +X9253474Y6224066D01* +X9257030Y6222593D01* +X9263329Y6218428D01* +X9268714Y6216548D01* +X9275064Y6215888D01* +X9295638Y6215888D01* +X9295638Y6257950D01* +X9258503Y6257950D01* +X9254185Y6258915D01* +X9250730Y6261557D01* +X9248698Y6265418D01* +X9247987Y6268008D01* +X9243872Y6276797D01* +X9238284Y6284772D01* +X9231426Y6291630D01* +X9223451Y6297218D01* +X9214612Y6301384D01* +X9205214Y6303873D01* +X9195511Y6304737D01* +X9185808Y6303873D01* +X9176410Y6301384D01* +X9167571Y6297218D01* +X9159595Y6291630D01* +X9156039Y6288430D01* +X9152636Y6286296D01* +X9150045Y6285179D01* +X9147251Y6284772D01* +X9114028Y6284772D01* +X9106052Y6283909D01* +X9098940Y6281572D01* +X9092336Y6277813D01* +X9087815Y6274003D01* +X8713317Y5899404D01* +X8709660Y5897067D01* +X8705291Y5896457D01* +X8701125Y5897829D01* +X8697874Y5900775D01* +X8696147Y5904788D01* +X8696299Y5909157D01* +X8697518Y5913983D01* +X8698331Y5923940D01* +X8697518Y5933998D01* +X8695029Y5943752D01* +X8691016Y5952947D01* +X8685530Y5961380D01* +X8678722Y5968796D01* +X8670747Y5974943D01* +X8661908Y5979668D01* +X8652408Y5982970D01* +X8642502Y5984595D01* +X8632444Y5984595D01* +X8622538Y5982970D01* +X8613038Y5979668D01* +X8606332Y5976112D01* +X8603996Y5975146D01* +X8601506Y5974842D01* +X7805216Y5974842D01* +X7801305Y5975604D01* +X7798003Y5977890D01* +X7795818Y5981141D01* +X7795056Y5985002D01* +X7795056Y6609181D01* +X7796174Y6622338D01* +X7799171Y6634378D01* +X7803286Y6644335D01* +X7809636Y6654901D01* +X7817662Y6664452D01* +X7827111Y6675221D01* +X7834731Y6686651D01* +X7840776Y6698945D01* +X7845196Y6711848D01* +X7847838Y6725310D01* +X7848752Y6738975D01* +X7847838Y6752640D01* +X7845196Y6766001D01* +X7840776Y6779006D01* +X7834731Y6791299D01* +X7827111Y6802628D01* +X7818120Y6812889D01* +X7807807Y6821982D01* +X7796428Y6829552D01* +X7784185Y6835648D01* +X7771231Y6840016D01* +X7757769Y6842658D01* +X7744155Y6843623D01* +X7730490Y6842658D01* +X7717028Y6840016D01* +X7704074Y6835648D01* +X7691831Y6829552D01* +X7680452Y6821982D01* +X7670139Y6812889D01* +X7661148Y6802628D01* +X7653528Y6791299D01* +X7647482Y6779006D01* +X7643063Y6766001D01* +X7640421Y6752640D01* +X7639507Y6738975D01* +X7640421Y6725310D01* +X7643063Y6711848D01* +X7647482Y6698945D01* +X7653528Y6686651D01* +X7661148Y6675221D01* +X7678623Y6654901D01* +X7684973Y6644335D01* +X7689596Y6632803D01* +X7692339Y6620764D01* +X7693253Y6609181D01* +X7693253Y5985002D01* +X7692440Y5981141D01* +X7690256Y5977890D01* +X7686954Y5975604D01* +X7683093Y5974842D01* +X7027316Y5974842D01* +X7024827Y5975146D01* +X7022490Y5976112D01* +X7015784Y5979668D01* +X7006285Y5982970D01* +X6996379Y5984595D01* +X6986320Y5984595D01* +X6976414Y5982970D01* +X6966915Y5979668D01* +X6958075Y5974943D01* +X6950100Y5968796D01* +X6943293Y5961380D01* +X6937806Y5952947D01* +X6933793Y5943752D01* +X6931304Y5933998D01* +X6930491Y5923940D01* +X6931304Y5913983D01* +X6933793Y5904230D01* +X6940092Y5889955D01* +X6939940Y5885738D01* +X6938111Y5881979D01* +X6934962Y5879338D01* +X6930999Y5878068D01* +X6928713Y5877915D01* +X6919315Y5875426D01* +X6910476Y5871260D01* +X6902500Y5865723D01* +X6895642Y5858814D01* +X6890054Y5850788D01* +X6885940Y5842050D01* +X6883400Y5832551D01* +X6882536Y5822848D01* +X6883400Y5813247D01* +X6885940Y5803747D01* +X6890054Y5794959D01* +X6895642Y5787034D01* +X6902500Y5780125D01* +X6910476Y5774486D01* +X6919315Y5770422D01* +X6928713Y5767882D01* +X6938416Y5767019D01* +X6948119Y5767882D01* +X6957517Y5770422D01* +X6966356Y5774486D01* +X6974331Y5780125D01* +X6977989Y5783326D01* +X6981342Y5785510D01* +X6983933Y5786577D01* +X6986727Y5787034D01* +X7565085Y5787034D01* +X7568946Y5786221D01* +X7573568Y5783681D01* +X7577328Y5780227D01* +X7585506Y5774486D01* +X7594295Y5770422D01* +X7603744Y5767882D01* +X7613446Y5767019D01* +X7623098Y5767882D01* +X7632547Y5770422D01* +X7641336Y5774486D01* +X7649311Y5780125D01* +X7656220Y5787034D01* +X7661808Y5794959D01* +X7665923Y5803747D01* +X7668463Y5813247D01* +X7669275Y5822848D01* +X7668463Y5832551D01* +X7665923Y5842050D01* +X7661808Y5850788D01* +X7657439Y5857036D01* +X7655763Y5861151D01* +X7655966Y5865571D01* +X7657998Y5869432D01* +X7661452Y5872073D01* +X7665770Y5873038D01* +X8601506Y5873038D01* +X8603996Y5872734D01* +X8606332Y5871870D01* +X8613038Y5868212D01* +X8622538Y5864910D01* +X8632444Y5863285D01* +X8642502Y5863285D01* +X8652865Y5865063D01* +X8657082Y5864809D01* +X8660892Y5862929D01* +X8663533Y5859678D01* +X8664651Y5855563D01* +X8663990Y5851398D01* +X8661704Y5847791D01* +X8404606Y5590692D01* +X8401304Y5588558D01* +X8397443Y5587796D01* +X7940954Y5587796D01* +X7937296Y5588406D01* +X7934147Y5590336D01* +X7931912Y5593283D01* +X7930845Y5596890D01* +X7931150Y5600496D01* +X7932115Y5604256D01* +X7932978Y5613857D01* +X7932115Y5623560D01* +X7929575Y5633059D01* +X7925104Y5642406D01* +X7923428Y5646420D01* +X7923631Y5650788D01* +X7925663Y5654700D01* +X7929168Y5657443D01* +X7933436Y5658307D01* +X8152841Y5658307D01* +X8156702Y5657596D01* +X8160003Y5655360D01* +X8161223Y5654192D01* +X8169198Y5648553D01* +X8178038Y5644438D01* +X8187436Y5641949D01* +X8197138Y5641086D01* +X8206841Y5641949D01* +X8216239Y5644438D01* +X8225078Y5648553D01* +X8233054Y5654192D01* +X8239912Y5661050D01* +X8245500Y5669026D01* +X8249615Y5677814D01* +X8252155Y5687314D01* +X8253018Y5696915D01* +X8252155Y5706618D01* +X8249615Y5716117D01* +X8245500Y5724906D01* +X8239912Y5732830D01* +X8233054Y5739739D01* +X8225078Y5745378D01* +X8216239Y5749442D01* +X8206841Y5751982D01* +X8197138Y5752846D01* +X8187436Y5751982D01* +X8178038Y5749442D01* +X8169198Y5745378D01* +X8161223Y5739739D01* +X8160003Y5738571D01* +X8156702Y5736336D01* +X8152841Y5735574D01* +X7136587Y5735574D01* +X7133488Y5736082D01* +X7130745Y5737402D01* +X7122312Y5743244D01* +X7113524Y5747410D01* +X7104075Y5749950D01* +X7094423Y5750814D01* +X7084720Y5749950D01* +X7075271Y5747410D01* +X7066483Y5743244D01* +X7058507Y5737707D01* +X7051598Y5730849D01* +X7046010Y5722874D01* +X7041896Y5713984D01* +X7039356Y5704586D01* +X7038543Y5694883D01* +X7039356Y5685180D01* +X7041896Y5675782D01* +X7046010Y5666943D01* +X7051598Y5659018D01* +X7058507Y5652160D01* +X7068566Y5645200D01* +X7071715Y5642203D01* +X7073341Y5638190D01* +X7073138Y5633872D01* +X7070394Y5623560D01* +X7069531Y5613857D01* +X7070394Y5604256D01* +X7071359Y5600496D01* +X7071664Y5596890D01* +X7070598Y5593283D01* +X7068362Y5590336D01* +X7065213Y5588406D01* +X7061555Y5587796D01* +X6944055Y5587796D01* +X6940092Y5588609D01* +X6936740Y5590844D01* +X6934555Y5594248D01* +X6933895Y5598312D01* +X6934809Y5602224D01* +X6937908Y5608777D01* +X6940448Y5618175D01* +X6941261Y5627878D01* +X6940448Y5637580D01* +X6937908Y5646978D01* +X6933793Y5655818D01* +X6928205Y5663844D01* +X6926986Y5665012D01* +X6924802Y5668365D01* +X6924040Y5672226D01* +X6924040Y5711393D01* +X6923227Y5719470D01* +X6921042Y5726633D01* +X6917486Y5733338D01* +X6912356Y5739587D01* +X6853732Y5798210D01* +X6851497Y5801512D01* +X6850735Y5805424D01* +X6850735Y6802729D01* +X6851497Y6806641D01* +X6853732Y6809943D01* +X6896709Y6852920D01* +X6908038Y6862876D01* +X6921144Y6871766D01* +X6935266Y6878828D01* +X6950202Y6884009D01* +X6967016Y6887362D01* +X6995769Y6889191D01* +X7009231Y6891883D01* +X7022185Y6896303D01* +X7034428Y6902297D01* +X7045807Y6909968D01* +X7056120Y6918959D01* +X7065162Y6929221D01* +X7072731Y6940651D01* +X7078776Y6952945D01* +X7083196Y6965848D01* +X7085888Y6979310D01* +X7086752Y6992975D01* +X7085888Y7006640D01* +X7083196Y7020001D01* +X7078776Y7033006D01* +X7072731Y7045299D01* +X7065162Y7056628D01* +X7056120Y7066889D01* +X7045807Y7075982D01* +X7034428Y7083552D01* +X7022185Y7089648D01* +X7009231Y7094067D01* +X6995769Y7096658D01* +X6982155Y7097623D01* +X6968490Y7096658D01* +X6955028Y7094067D01* +X6942074Y7089648D01* +X6929831Y7083552D01* +X6918452Y7075982D01* +X6908139Y7066889D01* +X6899097Y7056628D01* +X6891528Y7045299D01* +X6885482Y7033006D01* +X6881063Y7020001D01* +X6878370Y7006640D01* +X6876491Y6977888D01* +X6873494Y6962343D01* +X6868515Y6947306D01* +X6861606Y6933082D01* +X6852920Y6919925D01* +X6842099Y6907530D01* +X6785203Y6850583D01* +X6780072Y6844385D01* +X6776516Y6837730D01* +X6774332Y6830466D01* +X6773519Y6822490D01* +X6773519Y5785662D01* +X6774332Y5777687D01* +X6776516Y5770422D01* +X6780072Y5763717D01* +X6785203Y5757570D01* +X6843826Y5698845D01* +X6846011Y5695645D01* +X6846824Y5691733D01* +X6846824Y5672226D01* +X6846011Y5668365D01* +X6843826Y5665012D01* +X6842607Y5663844D01* +X6837019Y5655818D01* +X6832904Y5646978D01* +X6830364Y5637580D01* +X6829552Y5627878D01* +X6830364Y5618175D01* +X6832904Y5608777D01* +X6836003Y5602224D01* +X6836918Y5598312D01* +X6836257Y5594248D01* +X6834073Y5590844D01* +X6830720Y5588609D01* +X6826758Y5587796D01* +X6404559Y5587796D01* +X6400698Y5588457D01* +X6397447Y5590641D01* +X6395364Y5592673D01* +X6387338Y5598312D01* +X6378498Y5602427D01* +X6369100Y5604916D01* +X6359398Y5605780D01* +X6349695Y5604916D01* +X6340297Y5602427D01* +X6331458Y5598312D01* +X6323482Y5592673D01* +X6316624Y5585815D01* +X6311036Y5577840D01* +X6306921Y5569051D01* +X6304381Y5559552D01* +X6303518Y5549849D01* +X6304381Y5540248D01* +X6306921Y5530748D01* +X6311036Y5521960D01* +X6316624Y5514035D01* +X6323482Y5507126D01* +X6331458Y5501487D01* +X6340297Y5497423D01* +X6349695Y5494883D01* +X6359398Y5494020D01* +X6369100Y5494883D01* +X6378498Y5497423D01* +X6387338Y5501487D01* +X6395313Y5507126D01* +X6398260Y5509920D01* +X6403035Y5513374D01* +X6406997Y5515051D01* +X6412382Y5515965D01* +X7155891Y5515965D01* +X7159853Y5515102D01* +X7163155Y5512866D01* +X7165340Y5509463D01* +X7166000Y5505399D01* +X7165086Y5501436D01* +X7163917Y5498998D01* +X7161377Y5489600D01* +X7160564Y5479846D01* +X7161377Y5470194D01* +X7163917Y5460796D01* +X7165594Y5457240D01* +X7166559Y5453278D01* +X7165848Y5449265D01* +X7163714Y5445810D01* +X7160361Y5443575D01* +X7156399Y5442712D01* +X6057239Y5442712D01* +X6053023Y5443372D01* +X6049365Y5444947D01* +X6046266Y5447131D01* +X6042507Y5450586D01* +X6034328Y5456326D01* +X6025540Y5460390D01* +X6016091Y5462930D01* +X6006439Y5463743D01* +X5996736Y5462930D01* +X5987288Y5460390D01* +X5978499Y5456326D01* +X5970524Y5450687D01* +X5963615Y5443778D01* +X5958027Y5435854D01* +X5953912Y5427065D01* +X5951372Y5417616D01* +X5950559Y5407914D01* +X5951372Y5398262D01* +X5953912Y5388813D01* +X5957011Y5382158D01* +X5957925Y5378246D01* +X5957265Y5374284D01* +X5955080Y5370880D01* +X5951728Y5368544D01* +X5947765Y5367782D01* +X5877255Y5367782D01* +X5873038Y5368442D01* +X5869381Y5369915D01* +X5866282Y5372150D01* +X5862523Y5375605D01* +X5854344Y5381244D01* +X5845505Y5385409D01* +X5836107Y5387949D01* +X5826404Y5388813D01* +X5816701Y5387949D01* +X5807303Y5385409D01* +X5798464Y5381244D01* +X5790488Y5375706D01* +X5783630Y5368848D01* +X5778042Y5360822D01* +X5773928Y5351983D01* +X5771388Y5342585D01* +X5770524Y5332882D01* +X5771388Y5323179D01* +X5773928Y5313781D01* +X5778042Y5304942D01* +X5783630Y5297017D01* +X5790488Y5290159D01* +X5798464Y5284520D01* +X5807303Y5280456D01* +X5816701Y5277916D01* +X5826404Y5277053D01* +X5836107Y5277916D01* +X5845505Y5280456D01* +X5854344Y5284520D01* +X5862472Y5290261D01* +X5865672Y5293207D01* +X5868924Y5295188D01* +X5872632Y5295950D01* +X5899048Y5295950D01* +X5902706Y5295239D01* +X5905855Y5293309D01* +X5908141Y5290362D01* +X5909157Y5286857D01* +X5908903Y5283098D01* +X5907379Y5277612D01* +X5906566Y5267858D01* +X5907379Y5258206D01* +X5909919Y5248757D01* +X5914034Y5239969D01* +X5919622Y5232044D01* +X5926531Y5225135D01* +X5934506Y5219496D01* +X5943295Y5215432D01* +X5952744Y5212842D01* +X5962446Y5212080D01* +X5972098Y5212842D01* +X5981547Y5215432D01* +X5990336Y5219496D01* +X5998362Y5225135D01* +X6000191Y5226964D01* +X6003493Y5229199D01* +X6007404Y5229910D01* +X6767068Y5229910D01* +X6770725Y5229250D01* +X6773875Y5227320D01* +X6776110Y5224373D01* +X6777177Y5220868D01* +X6776872Y5217109D01* +X6775399Y5211622D01* +X6774535Y5201869D01* +X6775399Y5192166D01* +X6777329Y5184851D01* +X6777634Y5181244D01* +X6776567Y5177637D01* +X6774332Y5174691D01* +X6771182Y5172760D01* +X6767525Y5172100D01* +X6126988Y5172100D01* +X6122263Y5173218D01* +X6119266Y5175097D01* +X6115507Y5178552D01* +X6107328Y5184292D01* +X6098540Y5188356D01* +X6089091Y5190947D01* +X6079439Y5191760D01* +X6069736Y5190947D01* +X6060287Y5188356D01* +X6051499Y5184292D01* +X6043523Y5178653D01* +X6036614Y5171795D01* +X6031026Y5163820D01* +X6026912Y5154980D01* +X6024372Y5145633D01* +X6023559Y5135930D01* +X6024372Y5126177D01* +X6028131Y5112308D01* +X6027470Y5108244D01* +X6025286Y5104841D01* +X6021933Y5102606D01* +X6017971Y5101742D01* +X2839567Y5101742D01* +X2835706Y5102555D01* +X2832404Y5104688D01* +X2538730Y5398363D01* +X2532532Y5403443D01* +X2525826Y5406847D01* +X2518460Y5408828D01* +X2512568Y5409285D01* +X2379573Y5409285D01* +X2357729Y5410403D01* +X2336647Y5413552D01* +X2315921Y5418785D01* +X2295855Y5426049D01* +X2276551Y5435244D01* +X2258263Y5446217D01* +X2241143Y5458968D01* +X2224074Y5474309D01* +X2216810Y5481167D01* +X2211984Y5484723D01* +X2209241Y5487924D01* +X2207971Y5491937D01* +X2208428Y5496052D01* +X2210562Y5499760D01* +X2213965Y5502198D01* +X2218080Y5503062D01* +X4563618Y5503062D01* +X4577130Y5503926D01* +X4590084Y5506516D01* +X4602581Y5510733D01* +X4614418Y5516575D01* +X4625390Y5523890D01* +X4635550Y5532882D01* +X5057241Y5954572D01* +X5066182Y5964732D01* +X5073497Y5975654D01* +X5079339Y5987491D01* +X5083606Y6000038D01* +X5086146Y6012942D01* +X5087061Y6026454D01* +X5087061Y7052818D01* +X5087569Y7056120D01* +X5088432Y7058558D01* +X5091125Y7072172D01* +X5092039Y7085939D01* +X5091125Y7099757D01* +X5088432Y7113320D01* +X5083962Y7126478D01* +X5077866Y7138924D01* +X5070144Y7150404D01* +X5061000Y7160818D01* +X5050586Y7169962D01* +X5039106Y7177684D01* +X5026660Y7183780D01* +X5013553Y7188250D01* +X4999990Y7190943D01* +X4986172Y7191857D01* +X4972304Y7190943D01* +X4958740Y7188250D01* +X4945634Y7183780D01* +X4933188Y7177684D01* +X4921707Y7169962D01* +X4911293Y7160818D01* +X4902149Y7150404D01* +X4894427Y7138924D01* +X4888331Y7126478D01* +X4883861Y7113320D01* +X4881168Y7099757D01* +X4880254Y7085939D01* +X4881168Y7072172D01* +X4883861Y7058558D01* +X4884674Y7056120D01* +X4885232Y7052818D01* +X4885232Y6072174D01* +X4884470Y6068263D01* +X4882235Y6064961D01* +X4525162Y5707888D01* +X4521860Y5705602D01* +X4517948Y5704890D01* +X1918462Y5704890D01* +X1904949Y5704027D01* +X1892046Y5701436D01* +X1879549Y5697169D01* +X1867712Y5691327D01* +X1856739Y5684012D01* +X1846529Y5675122D01* +X1515262Y5343753D01* +X1511960Y5341569D01* +X1508099Y5340807D01* +X1064310Y5340807D01* +X1054811Y5342026D01* +X935990Y5342026D01* +X929640Y5341264D01* +X924204Y5339435D01* +X922223Y5338165D01* +X918718Y5336794D01* +X914958Y5336794D01* +X911453Y5338165D01* +X906627Y5341162D01* +X901141Y5343093D01* +X894842Y5343855D01* +X844448Y5343855D01* +X836574Y5344515D01* +X832866Y5345633D01* +X830732Y5347360D01* +X828192Y5344058D01* +X824585Y5342128D01* +X822655Y5341569D01* +X816000Y5338013D01* +X809752Y5332831D01* +X763625Y5286756D01* +X760323Y5284520D01* +X756462Y5283809D01* +X752551Y5284520D01* +X749249Y5286756D01* +X747064Y5290007D01* +X746302Y5293918D01* +X746302Y5356707D01* +X747217Y5360924D01* +X749757Y5364378D01* +X753516Y5366461D01* +X757834Y5366715D01* +X762914Y5364632D01* +X768350Y5362702D01* +X774700Y5362041D01* +X780237Y5362041D01* +X780237Y5396585D01* +X768756Y5396585D01* +X764844Y5397296D01* +X761542Y5399582D01* +X759358Y5402834D01* +X758596Y5406694D01* +X758596Y5429097D01* +X759358Y5432958D01* +X761542Y5436311D01* +X764844Y5438495D01* +X768756Y5439257D01* +X780237Y5439257D01* +X780237Y5480862D01* +X781050Y5484774D01* +X783234Y5488127D01* +X786536Y5490260D01* +X790397Y5491073D01* +X807821Y5491073D01* +X811682Y5490260D01* +X814984Y5488127D01* +X817168Y5484774D01* +X817981Y5480862D01* +X817981Y5439257D01* +X850036Y5439257D01* +X850036Y5447385D01* +X849325Y5453634D01* +X847394Y5459171D01* +X844296Y5464048D01* +X840232Y5468112D01* +X835304Y5471160D01* +X829868Y5473090D01* +X826719Y5473496D01* +X823010Y5474614D01* +X820013Y5477103D01* +X818184Y5480507D01* +X817727Y5484368D01* +X818794Y5488127D01* +X821131Y5491175D01* +X826058Y5493664D01* +X830935Y5496814D01* +X835050Y5500827D01* +X838098Y5505754D01* +X840028Y5511190D01* +X840740Y5517540D01* +X840740Y5632348D01* +X841349Y5635802D01* +X843127Y5638901D01* +X845819Y5641136D01* +X855218Y5646521D01* +X868680Y5652312D01* +X871829Y5653176D01* +X875030Y5652871D01* +X878179Y5652211D01* +X885698Y5651906D01* +X891336Y5652871D01* +X894384Y5652871D01* +X897280Y5652109D01* +X904443Y5648756D01* +X913841Y5646216D01* +X923544Y5645404D01* +X933246Y5646216D01* +X942644Y5648756D01* +X951484Y5652820D01* +X959459Y5658459D01* +X966317Y5665368D01* +X971905Y5673293D01* +X976020Y5682081D01* +X978560Y5691530D01* +X979424Y5701182D01* +X978560Y5710885D01* +X976020Y5720334D01* +X971905Y5729122D01* +X966317Y5737148D01* +X959459Y5744057D01* +X951484Y5749594D01* +X942644Y5753760D01* +X933246Y5756300D01* +X923544Y5757113D01* +X913841Y5756300D01* +X904443Y5753760D01* +X895603Y5749594D01* +X887628Y5744057D01* +X886409Y5742787D01* +X883107Y5740654D01* +X879246Y5739790D01* +X862076Y5739841D01* +X850341Y5740958D01* +X848512Y5741314D01* +X844499Y5743295D01* +X841705Y5746902D01* +X840740Y5751271D01* +X840740Y5766409D01* +X840028Y5772759D01* +X838098Y5778195D01* +X835050Y5783122D01* +X830935Y5787136D01* +X826058Y5790285D01* +X820572Y5792165D01* +X814273Y5792927D01* +X655370Y5792927D01* +X649071Y5792165D01* +X643585Y5790285D01* +X638708Y5787136D01* +X634593Y5783122D01* +X631545Y5778195D01* +X629615Y5772759D01* +X628904Y5766409D01* +X628904Y5558536D01* +X627989Y5554268D01* +X625398Y5550814D01* +X621588Y5548731D01* +X617220Y5548528D01* +X613206Y5550052D01* +X610158Y5553100D01* +X606602Y5558790D01* +X602538Y5562854D01* +X599744Y5564632D01* +X597204Y5566816D01* +X595579Y5569813D01* +X595020Y5573166D01* +X595020Y5714847D01* +X594207Y5722924D01* +X592023Y5730087D01* +X588467Y5736793D01* +X583336Y5743041D01* +X541477Y5784900D01* +X535279Y5789980D01* +X528624Y5793536D01* +X521360Y5795772D01* +X513334Y5796534D01* +X391058Y5796534D01* +X383032Y5795772D01* +X375767Y5793536D01* +X369112Y5789980D01* +X362915Y5784900D01* +X299466Y5721451D01* +X294335Y5715254D01* +X292150Y5711088D01* +X289255Y5707786D01* +X285191Y5705957D01* +X280720Y5706059D01* +X276758Y5708040D01* +X274015Y5711545D01* +X273050Y5715914D01* +X273050Y5766409D01* +X272338Y5772759D01* +X270408Y5778195D01* +X267360Y5783122D01* +X263245Y5787136D01* +X258368Y5790285D01* +X252882Y5792165D01* +X246583Y5792927D01* +X230428Y5792927D01* +X226060Y5793892D01* +X222504Y5796686D01* +X220522Y5800699D01* +X218948Y5807710D01* +X218033Y5819800D01* +X218033Y5920638D01* +X218846Y5924600D01* +X221030Y5927801D01* +X342239Y6049060D01* +X345541Y6051296D01* +X349453Y6052007D01* +X500989Y6052007D01* +X504748Y6051346D01* +X508000Y6049264D01* +X510235Y6046063D01* +X511149Y6042355D01* +X510540Y6038545D01* +X508609Y6035192D01* +X507187Y6033617D01* +X499872Y6022594D01* +X494030Y6010757D01* +X489813Y5998260D01* +X487222Y5985357D01* +X486359Y5972200D01* +X487222Y5958992D01* +X489813Y5946038D01* +X494030Y5933592D01* +X499872Y5921756D01* +X507187Y5910732D01* +X515924Y5900877D01* +X525830Y5892088D01* +X536803Y5884773D01* +X548640Y5878931D01* +X561136Y5874715D01* +X574141Y5872124D01* +X587044Y5871260D01* +X600913Y5872124D01* +X613867Y5874715D01* +X626364Y5878931D01* +X638200Y5884773D01* +X649173Y5892088D01* +X659079Y5900877D01* +X667816Y5910732D01* +X675132Y5921756D01* +X680974Y5933592D01* +X685190Y5946038D01* +X687781Y5958992D01* +X688644Y5972200D01* +X687781Y5985357D01* +X685190Y5998260D01* +X680974Y6010757D01* +X675132Y6022594D01* +X667816Y6033617D01* +X666394Y6035192D01* +X664464Y6038545D01* +X663854Y6042355D01* +X664768Y6046063D01* +X667004Y6049264D01* +X670255Y6051346D01* +X674014Y6052007D01* +X763828Y6052007D01* +X767638Y6051346D01* +X770890Y6049264D01* +X778256Y6042152D01* +X781659Y6039561D01* +X785418Y6037173D01* +X789330Y6035141D01* +X793445Y6033363D01* +X797661Y6032093D01* +X802030Y6031128D01* +X806399Y6030518D01* +X811072Y6030315D01* +X900734Y6030315D01* +X905052Y6029350D01* +X908558Y6026708D01* +X910590Y6022848D01* +X910742Y6018428D01* +X904646Y6005068D01* +X902106Y5995619D01* +X901293Y5985916D01* +X902106Y5976264D01* +X904646Y5966815D01* +X908761Y5958027D01* +X914349Y5950102D01* +X921258Y5943193D01* +X929233Y5937554D01* +X938021Y5933490D01* +X947470Y5930950D01* +X957173Y5930138D01* +X966825Y5930950D01* +X976274Y5933490D01* +X985062Y5937554D01* +X993038Y5943193D01* +X999947Y5950102D01* +X1005535Y5958027D01* +X1009650Y5966815D01* +X1012190Y5976264D01* +X1013002Y5985916D01* +X1012190Y5995619D01* +X1009650Y6005068D01* +X1005586Y6013805D01* +X1004620Y6017717D01* +X1005281Y6021730D01* +X1007465Y6025134D01* +X1010818Y6027420D01* +X1014780Y6028283D01* +X1065834Y6028283D01* +X1072134Y6028944D01* +X1074369Y6029807D01* +X1077722Y6030315D01* +X1178001Y6030315D01* +X1187297Y6031179D01* +X1193952Y6032906D01* +X1196594Y6033262D01* +X1210818Y6033262D01* +X1217168Y6034024D01* +X1222603Y6035903D01* +X1227531Y6039002D01* +X1231595Y6043066D01* +X1234694Y6047943D01* +X1236624Y6053429D01* +X1237335Y6059728D01* +X1237335Y6108598D01* +X1236624Y6114897D01* +X1234694Y6120384D01* +X1232103Y6124549D01* +X1230731Y6128004D01* +X1230731Y6131814D01* +X1232103Y6135319D01* +X1234694Y6139383D01* +X1236624Y6144920D01* +X1237335Y6151168D01* +X1237335Y6156807D01* +X1202740Y6156807D01* +X1202740Y6145225D01* +X1201978Y6141364D01* +X1199794Y6138113D01* +X1196492Y6135827D01* +X1192580Y6135065D01* +X1170228Y6135065D01* +X1166317Y6135827D01* +X1163015Y6138113D01* +X1160830Y6141364D01* +X1160068Y6145225D01* +X1160068Y6156807D01* +X1125474Y6156807D01* +X1125474Y6151270D01* +X1126439Y6143548D01* +X1126032Y6139281D01* +X1123950Y6135522D01* +X1120495Y6133033D01* +X1116330Y6132118D01* +X1102106Y6132118D01* +X1097940Y6133033D01* +X1094536Y6135522D01* +X1092403Y6139230D01* +X1091996Y6143447D01* +X1092301Y6146190D01* +X1092301Y6151778D01* +X1057757Y6151778D01* +X1057757Y6142278D01* +X1056995Y6138418D01* +X1054760Y6135166D01* +X1051458Y6132880D01* +X1047597Y6132118D01* +X1025194Y6132118D01* +X1021334Y6132880D01* +X1018032Y6135166D01* +X1015796Y6138418D01* +X1015034Y6142278D01* +X1015034Y6151778D01* +X980490Y6151778D01* +X980490Y6146190D01* +X980795Y6143447D01* +X980389Y6139230D01* +X978255Y6135522D01* +X974852Y6133033D01* +X970686Y6132118D01* +X836168Y6132118D01* +X832358Y6132880D01* +X829106Y6134963D01* +X821791Y6142024D01* +X818337Y6144615D01* +X814679Y6147003D01* +X808583Y6150000D01* +X805078Y6152845D01* +X803148Y6156858D01* +X803148Y6161379D01* +X805129Y6165443D01* +X808685Y6168237D01* +X813053Y6169202D01* +X867613Y6169202D01* +X873912Y6169964D01* +X879398Y6171895D01* +X884275Y6174943D01* +X888390Y6179007D01* +X891438Y6183985D01* +X893368Y6189421D01* +X894080Y6195771D01* +X894080Y6309309D01* +X894638Y6312763D01* +X896366Y6315760D01* +X899007Y6318046D01* +X907389Y6322974D01* +X923899Y6330746D01* +X941120Y6336893D01* +X958850Y6341313D01* +X968857Y6342786D01* +X973175Y6342430D01* +X976985Y6340449D01* +X979576Y6336995D01* +X980490Y6332677D01* +X980490Y6327038D01* +X1015034Y6327038D01* +X1015034Y6334607D01* +X1015796Y6338519D01* +X1018032Y6341821D01* +X1021334Y6343954D01* +X1025194Y6344818D01* +X1047597Y6344818D01* +X1051458Y6343954D01* +X1054760Y6341821D01* +X1056995Y6338519D01* +X1057757Y6334607D01* +X1057757Y6327038D01* +X1092301Y6327038D01* +X1092200Y6333388D01* +X1092606Y6337604D01* +X1094740Y6341364D01* +X1098143Y6343853D01* +X1102309Y6344767D01* +X1114907Y6344767D01* +X1119073Y6343853D01* +X1122476Y6341364D01* +X1124610Y6337604D01* +X1125016Y6333388D01* +X1124458Y6328664D01* +X1124458Y6323025D01* +X1159052Y6323025D01* +X1159052Y6334607D01* +X1159814Y6338468D01* +X1161999Y6341770D01* +X1165301Y6343954D01* +X1169212Y6344767D01* +X1191564Y6344767D01* +X1195476Y6343954D01* +X1198778Y6341770D01* +X1200962Y6338468D01* +X1201724Y6334607D01* +X1201724Y6323025D01* +X1236319Y6323025D01* +X1236319Y6328664D01* +X1235608Y6334963D01* +X1233678Y6340449D01* +X1231087Y6344513D01* +X1229715Y6348018D01* +X1229715Y6351778D01* +X1231087Y6355283D01* +X1233678Y6359448D01* +X1235608Y6364935D01* +X1236319Y6371234D01* +X1236319Y6420104D01* +X1235608Y6426403D01* +X1233678Y6431838D01* +X1230579Y6436715D01* +X1226515Y6440830D01* +X1221587Y6443929D01* +X1216152Y6445859D01* +X1209802Y6446520D01* +X1082598Y6446570D01* +X1079144Y6447180D01* +X1072032Y6449872D01* +X1065834Y6450533D01* +X1010919Y6450533D01* +X1007008Y6451346D01* +X1003706Y6453479D01* +X1001521Y6456781D01* +X1000760Y6460693D01* +X1000760Y6465620D01* +X1001521Y6469532D01* +X1003706Y6472834D01* +X1004925Y6474053D01* +X1010513Y6482080D01* +X1014628Y6490868D01* +X1017168Y6500266D01* +X1018032Y6509969D01* +X1017168Y6519672D01* +X1014628Y6529070D01* +X1010513Y6537858D01* +X1004925Y6545834D01* +X998067Y6552793D01* +X990092Y6558330D01* +X981252Y6562445D01* +X971854Y6565036D01* +X962152Y6565798D01* +X952449Y6565036D01* +X943051Y6562445D01* +X934212Y6558330D01* +X926236Y6552793D01* +X919378Y6545834D01* +X913790Y6537858D01* +X909675Y6529070D01* +X907135Y6519672D01* +X906271Y6509969D01* +X907135Y6500266D01* +X909675Y6490868D01* +X913790Y6482080D01* +X919378Y6474053D01* +X920546Y6472885D01* +X922782Y6469532D01* +X923544Y6465620D01* +X923544Y6456730D01* +X922782Y6452819D01* +X920546Y6449517D01* +X917244Y6447383D01* +X913384Y6446570D01* +X902055Y6446570D01* +X897991Y6447485D01* +X894638Y6449872D01* +X892505Y6453378D01* +X891438Y6456324D01* +X888390Y6461252D01* +X884275Y6465366D01* +X879398Y6468465D01* +X873912Y6470396D01* +X867613Y6471056D01* +X708710Y6471056D01* +X702411Y6470396D01* +X696925Y6468465D01* +X692048Y6465366D01* +X687933Y6461252D01* +X684885Y6456324D01* +X682802Y6450431D01* +X680669Y6446926D01* +X677265Y6444538D01* +X673252Y6443624D01* +X669188Y6444538D01* +X665784Y6446926D01* +X663651Y6450431D01* +X661568Y6456324D01* +X658520Y6461252D01* +X654405Y6465366D01* +X649528Y6468465D01* +X644042Y6470396D01* +X637743Y6471056D01* +X478840Y6471056D01* +X472541Y6470396D01* +X467055Y6468465D01* +X462178Y6465366D01* +X458063Y6461252D01* +X455015Y6456324D01* +X453085Y6450888D01* +X452374Y6444538D01* +X452374Y6195771D01* +X453085Y6189421D01* +X455015Y6183985D01* +X458063Y6179007D01* +X462178Y6174943D01* +X465886Y6172606D01* +X468985Y6169558D01* +X470509Y6165545D01* +X470204Y6161227D01* +X468172Y6157366D01* +X464718Y6154826D01* +X460451Y6153912D01* +X324358Y6153912D01* +X319684Y6153708D01* +X315315Y6153048D01* +X310946Y6152083D01* +X306730Y6150813D01* +X302615Y6149086D01* +X298704Y6147054D01* +X294944Y6144615D01* +X291439Y6141974D01* +X287985Y6138773D01* +X131318Y5982106D01* +X128168Y5978652D01* +X125425Y5975146D01* +X123037Y5971387D01* +X121005Y5967425D01* +X119329Y5963412D01* +X117957Y5959094D01* +X116992Y5954776D01* +X116433Y5950356D01* +X116230Y5945784D01* +X116230Y5819800D01* +X115316Y5807710D01* +X113741Y5800699D01* +X111760Y5796686D01* +X108254Y5793892D01* +X103885Y5792927D01* +X87680Y5792927D01* +X81381Y5792165D01* +X75895Y5790285D01* +X71018Y5787136D01* +X66903Y5783122D01* +X63855Y5778195D01* +X61925Y5772759D01* +X61214Y5766409D01* +X61214Y5517540D01* +X61925Y5511190D01* +X63855Y5505754D01* +X66903Y5500827D01* +X71018Y5496814D01* +X75895Y5493664D01* +X80060Y5492191D01* +X83464Y5490210D01* +X85801Y5487162D01* +X86461Y5484723D01* +X88392Y5487771D01* +X91744Y5490210D01* +X95808Y5491073D01* +X246583Y5491073D01* +X252882Y5491734D01* +X257302Y5493359D01* +X261264Y5493918D01* +X265176Y5492851D01* +X268376Y5490413D01* +X270306Y5486806D01* +X270764Y5482844D01* +X270510Y5479897D01* +X271373Y5470194D01* +X272592Y5465622D01* +X272897Y5461914D01* +X271830Y5458358D01* +X269595Y5455412D01* +X266446Y5453481D01* +X262788Y5452821D01* +X127406Y5452821D01* +X123494Y5453583D01* +X120192Y5455818D01* +X116281Y5459730D01* +X108305Y5465267D01* +X99517Y5469432D01* +X93218Y5471058D01* +X89509Y5472988D01* +X86868Y5476138D01* +X86055Y5478881D01* +X84429Y5476036D01* +X81381Y5473598D01* +X77571Y5472480D01* +X70713Y5471972D01* +X61264Y5469432D01* +X52476Y5465267D01* +X44500Y5459730D01* +X37592Y5452821D01* +X34239Y5448046D01* +X30937Y5445048D01* +X26720Y5443677D01* +X22352Y5444286D01* +X18643Y5446674D01* +X16306Y5450484D01* +X15392Y5453075D01* +X12293Y5458002D01* +X8229Y5462117D01* +X3302Y5465165D01* +X-2133Y5467146D01* +X-8483Y5467807D01* +X-45821Y5467807D01* +X-50038Y5468721D01* +X-53492Y5471363D01* +X-55575Y5475122D01* +X-55880Y5479440D01* +X-54305Y5483555D01* +X-51206Y5486603D01* +X-47091Y5489143D01* +X-43027Y5493207D01* +X-39928Y5498185D01* +X-38049Y5503621D01* +X-37338Y5509971D01* +X-37338Y5758738D01* +X-38049Y5765088D01* +X-39928Y5770524D01* +X-43027Y5775452D01* +X-47091Y5779566D01* +X-52019Y5782665D01* +X-57454Y5784596D01* +X-63804Y5785256D01* +X-107899Y5785256D01* +X-111506Y5785967D01* +X-114655Y5787898D01* +X-116941Y5790844D01* +X-118008Y5794400D01* +X-117703Y5798007D01* +X-116839Y5801258D01* +X-115976Y5810961D01* +X-116839Y5820664D01* +X-119380Y5830062D01* +X-123494Y5838850D01* +X-129082Y5846826D01* +X-136296Y5854090D01* +X-138531Y5857443D01* +X-139293Y5861405D01* +X-138430Y5865368D01* +X-136144Y5868670D01* +X-132689Y5870803D01* +X-128727Y5871464D01* +X-124053Y5871260D01* +X-110286Y5872124D01* +X-97332Y5874715D01* +X-84836Y5878931D01* +X-72999Y5884773D01* +X-62026Y5892088D01* +X-52120Y5900877D01* +X-43383Y5910732D01* +X-36068Y5921756D01* +X-30226Y5933592D01* +X-26009Y5946038D01* +X-23418Y5958992D01* +X-22555Y5972200D01* +X-23418Y5985357D01* +X-26009Y5998260D01* +X-30226Y6010757D01* +X-36068Y6022594D01* +X-43383Y6033617D01* +X-52120Y6043523D01* +X-62026Y6052261D01* +X-72999Y6059576D01* +X-84836Y6065418D01* +X-97485Y6069685D01* +X-110439Y6072276D01* +X-123647Y6073038D01* +X-126898Y6072987D01* +X-137210Y6072225D01* +X-150164Y6069584D01* +X-162509Y6065418D01* +X-174396Y6059576D01* +X-185369Y6052261D01* +X-195275Y6043523D01* +X-204012Y6033617D01* +X-211328Y6022594D01* +X-217170Y6010757D01* +X-221386Y5998260D01* +X-223977Y5985357D01* +X-224840Y5972200D01* +X-223977Y5958992D01* +X-221386Y5946038D01* +X-217170Y5933592D01* +X-211328Y5921756D01* +X-204012Y5910732D01* +X-195275Y5900877D01* +X-185369Y5892088D01* +X-174345Y5884773D01* +X-171450Y5881827D01* +X-169976Y5877915D01* +X-170129Y5873800D01* +X-171958Y5870092D01* +X-175107Y5867349D01* +X-179120Y5866180D01* +X-181559Y5866028D01* +X-190957Y5863437D01* +X-199796Y5859373D01* +X-207771Y5853785D01* +X-214629Y5846826D01* +X-220217Y5838850D01* +X-224332Y5830062D01* +X-226872Y5820664D01* +X-227736Y5810961D01* +X-226872Y5801258D01* +X-226009Y5798007D01* +X-225704Y5794400D01* +X-226771Y5790844D01* +X-229057Y5787898D01* +X-232206Y5785967D01* +X-235813Y5785256D01* +X-282651Y5785256D01* +X-289001Y5784596D01* +X-294436Y5782665D01* +X-299364Y5779566D01* +X-303479Y5775401D01* +X-306781Y5773267D01* +X-310642Y5772404D01* +X-314553Y5773267D01* +X-317855Y5775401D01* +X-320040Y5778754D01* +X-320802Y5782614D01* +X-320802Y7186675D01* +X-321005Y7211720D01* +X-319328Y7234885D01* +X-315823Y7257846D01* +X-310438Y7280452D01* +X-303326Y7302601D01* +X-294436Y7324090D01* +X-283819Y7344765D01* +X-271627Y7364526D01* +X-257911Y7383322D01* +X-242722Y7400899D01* +X-226161Y7417155D01* +X-208330Y7432192D01* +X-189382Y7445603D01* +X-169468Y7457541D01* +X-148590Y7467853D01* +X-127000Y7476388D01* +X-104800Y7483195D01* +X-82092Y7488275D01* +X-59080Y7491425D01* +X-35864Y7492796D01* +X-11328Y7492288D01* +X11310010Y7492288D01* +X11334140Y7492796D01* +X11356035Y7491374D01* +X11377726Y7488275D01* +X11399113Y7483297D01* +X11419992Y7476540D01* +X11440261Y7468057D01* +X11459768Y7457998D01* +X11478361Y7446365D01* +X11495887Y7433208D01* +X11512296Y7418578D01* +X11527434Y7402728D01* +X11541252Y7385659D01* +X11553545Y7367422D01* +X11564315Y7348321D01* +X11573459Y7328357D01* +X11580926Y7307732D01* +X11586667Y7286599D01* +X11590629Y7265009D01* +X11592763Y7243165D01* +X11593118Y7221220D01* +X11591544Y7196785D01* +X11591544Y5316677D01* +X11590324Y5301335D01* +X11587683Y5287467D01* +X11583568Y5274056D01* +X11578082Y5261051D01* +X11571224Y5248757D01* +X11563045Y5237276D01* +X11553748Y5226761D01* +X11543334Y5217210D01* +X11532006Y5208879D01* +X11519814Y5201869D01* +X11506962Y5196078D01* +X11493550Y5191760D01* +X11479784Y5188864D01* +X11465763Y5187543D01* +X11174628Y5187543D01* +X11170767Y5188254D01* +X11167465Y5190490D01* +X11165281Y5193741D01* +X11164468Y5197652D01* +X11164468Y5213197D01* +X11087404Y5213197D01* +X11087404Y5197652D01* +X11086642Y5193741D01* +X11084458Y5190490D01* +X11081156Y5188254D01* +X11077244Y5187543D01* +X10969904Y5187543D01* +X10965992Y5188254D01* +X10962690Y5190490D01* +X10960506Y5193741D01* +X10959744Y5197652D01* +X10959744Y5213197D01* +X10882680Y5213197D01* +X10882680Y5197652D01* +X10881918Y5193741D01* +X10879683Y5190490D01* +X10876381Y5188254D01* +X10872520Y5187543D01* +X10171988Y5187543D01* +X10168077Y5188254D01* +X10164775Y5190490D01* +X10162590Y5193741D01* +X10161828Y5197652D01* +X10161828Y5214467D01* +X10104780Y5214467D01* +X10104780Y5197652D01* +X10103967Y5193741D01* +X10101783Y5190490D01* +X10098481Y5188254D01* +X10094620Y5187543D01* +X10027208Y5187543D01* +X10023348Y5188254D01* +X10020046Y5190490D01* +X10017861Y5193741D01* +X10017048Y5197652D01* +X10017048Y5214467D01* +X9960000Y5214467D01* +X9960000Y5197652D01* +X9959238Y5193741D01* +X9957054Y5190490D01* +X9953752Y5188254D01* +X9949840Y5187543D01* +X9285884Y5187543D01* +X9263938Y5186680D01* +X9246514Y5184190D01* +X9226296Y5179212D01* +X9206788Y5171948D01* +X9203791Y5170627D01* +X9188145Y5162651D01* +X9170670Y5151272D01* +X9168028Y5149291D01* +X9152128Y5135880D01* +X9139986Y5123230D01* +X9137853Y5120741D01* +X9127134Y5106771D01* +X9125305Y5104079D01* +X9116212Y5089042D01* +X9114637Y5086146D01* +X9107271Y5070195D01* +X9106052Y5067147D01* +X9100464Y5050485D01* +X9099600Y5047386D01* +X9095384Y5026964D01* +X9093606Y5009438D01* +X9093454Y5006441D01* +X9093454Y2454605D01* +X9093708Y2450795D01* +X9095740Y2435250D01* +X9096349Y2431796D01* +X9100159Y2416657D01* +X9101175Y2413355D01* +X9106712Y2398725D01* +X9108135Y2395626D01* +X9115348Y2381656D01* +X9117126Y2378710D01* +X9125864Y2365806D01* +X9127947Y2363012D01* +X9138158Y2351227D01* +X9140596Y2348738D01* +X9152077Y2338120D01* +X9167418Y2326792D01* +X9170365Y2324912D01* +X9187129Y2315768D01* +X9201556Y2309774D01* +X9219844Y2304389D01* +X9238640Y2301138D01* +X9259316Y2300071D01* +X11485524Y2300071D01* +X11500154Y2299055D01* +X11513108Y2296668D01* +X11525707Y2292807D01* +X11537797Y2287574D01* +X11549227Y2280920D01* +X11559844Y2273046D01* +X11569446Y2264105D01* +X11578031Y2254046D01* +X11585397Y2243124D01* +X11591493Y2231440D01* +X11596166Y2219045D01* +X11599468Y2206294D01* +X11601297Y2193290D01* +X11601704Y2179421D01* +X11601704Y330758D01* +X11599316Y306628D01* +X11595201Y283260D01* +X11589410Y260299D01* +X11581942Y237794D01* +X11572900Y215950D01* +X11562283Y194716D01* +X11550142Y174345D01* +X11536527Y154990D01* +X11521592Y136550D01* +X11505336Y119380D01* +X11487861Y103327D01* +X11469268Y88646D01* +X11449659Y75336D01* +X11429136Y63449D01* +X11407851Y53086D01* +X11385804Y44348D01* +X11363198Y37236D01* +X11340134Y31699D01* +X11316766Y27990D01* +X11293246Y25857D01* +G37* + +%LPC*% +G36* +X52781Y116332D02* +G01* +X62585Y117551D01* +X72034Y120446D01* +X80873Y124917D01* +X88849Y130759D01* +X95707Y137972D01* +X101244Y146202D01* +X105308Y155143D01* +X107848Y164795D01* +X108661Y174650D01* +X107848Y184454D01* +X105308Y194106D01* +X101244Y203047D01* +X95707Y211277D01* +X88849Y218490D01* +X80873Y224332D01* +X72034Y228803D01* +X62585Y231698D01* +X52781Y232917D01* +X42875Y232562D01* +X33223Y230428D01* +X24028Y226771D01* +X15595Y221538D01* +X8128Y215036D01* +X1930Y207314D01* +X-2895Y198628D01* +X-6197Y189331D01* +X-7873Y179527D01* +X-7873Y169722D01* +X-6197Y159918D01* +X-2895Y150622D01* +X1930Y141935D01* +X8128Y134213D01* +X15595Y127711D01* +X24028Y122478D01* +X33223Y118821D01* +X42875Y116687D01* +G37* +G36* +X11251641Y122682D02* +G01* +X11261445Y123901D01* +X11270894Y126796D01* +X11279733Y131267D01* +X11287709Y137109D01* +X11294567Y144322D01* +X11300104Y152552D01* +X11304168Y161493D01* +X11306708Y171145D01* +X11307521Y181000D01* +X11306708Y190804D01* +X11304168Y200456D01* +X11300104Y209397D01* +X11294567Y217627D01* +X11287709Y224840D01* +X11279733Y230682D01* +X11270894Y235153D01* +X11261445Y238048D01* +X11251641Y239267D01* +X11241735Y238912D01* +X11232083Y236778D01* +X11222888Y233121D01* +X11214455Y227888D01* +X11206988Y221386D01* +X11200790Y213664D01* +X11195964Y204978D01* +X11192662Y195681D01* +X11190986Y185877D01* +X11190986Y176072D01* +X11192662Y166268D01* +X11195964Y156972D01* +X11200790Y148285D01* +X11206988Y140563D01* +X11214455Y134061D01* +X11222888Y128828D01* +X11232083Y125171D01* +X11241735Y123037D01* +G37* +G36* +X958646Y132435D02* +G01* +X6588759Y132435D01* +X6596735Y133248D01* +X6603847Y135534D01* +X6610451Y139395D01* +X6614922Y143256D01* +X6856933Y385165D01* +X6859727Y387146D01* +X6862419Y388467D01* +X6865874Y389432D01* +X6875983Y390245D01* +X6885381Y392836D01* +X6894220Y396900D01* +X6902196Y402488D01* +X6909053Y409448D01* +X6914642Y417372D01* +X6918756Y426161D01* +X6921296Y435609D01* +X6922160Y445262D01* +X6921296Y455015D01* +X6918756Y464413D01* +X6914642Y473201D01* +X6909053Y481228D01* +X6902196Y488137D01* +X6894220Y493674D01* +X6885381Y497840D01* +X6875983Y500380D01* +X6866280Y501142D01* +X6856577Y500380D01* +X6847179Y497840D01* +X6838340Y493674D01* +X6830364Y488137D01* +X6823506Y481228D01* +X6817918Y473201D01* +X6813803Y464413D01* +X6811264Y455015D01* +X6810400Y445109D01* +X6809486Y441706D01* +X6808165Y438861D01* +X6806133Y435965D01* +X6577380Y207213D01* +X6574078Y204978D01* +X6570167Y204266D01* +X977341Y204266D01* +X973480Y204978D01* +X970178Y207213D01* +X549148Y628243D01* +X546862Y631748D01* +X546150Y635762D01* +X547166Y639826D01* +X549706Y643077D01* +X553313Y645109D01* +X557479Y645515D01* +X560679Y645109D01* +X619556Y645109D01* +X625856Y645871D01* +X631342Y647801D01* +X636219Y650900D01* +X639876Y654456D01* +X643178Y656691D01* +X647039Y657453D01* +X771956Y657453D01* +X775817Y656691D01* +X779119Y654456D01* +X781354Y651205D01* +X782116Y647344D01* +X782116Y580390D01* +X782828Y574040D01* +X784707Y568553D01* +X787806Y563626D01* +X791921Y559562D01* +X796798Y556514D01* +X802284Y554583D01* +X808583Y553821D01* +X907440Y553821D01* +X913739Y554583D01* +X919226Y556514D01* +X924102Y559562D01* +X928217Y563626D01* +X931316Y568553D01* +X933196Y574040D01* +X933907Y580390D01* +X933907Y899160D01* +X933196Y905510D01* +X931316Y910945D01* +X928217Y915924D01* +X924102Y919987D01* +X919226Y923036D01* +X913739Y924966D01* +X907440Y925728D01* +X808583Y925728D01* +X802284Y924966D01* +X796798Y923036D01* +X791921Y919987D01* +X787806Y915924D01* +X784707Y910945D01* +X782828Y905510D01* +X782116Y899160D01* +X782116Y779678D01* +X781608Y776528D01* +X780186Y773684D01* +X778002Y771499D01* +X773531Y768197D01* +X756615Y758190D01* +X738784Y749757D01* +X720242Y743204D01* +X701141Y738428D01* +X681634Y735584D01* +X662482Y734720D01* +X651357Y734720D01* +X647141Y735584D01* +X643686Y738174D01* +X641604Y741883D01* +X641299Y746201D01* +X645312Y756767D01* +X646023Y763117D01* +X646023Y811936D01* +X645312Y818286D01* +X643382Y823721D01* +X640334Y828649D01* +X633222Y835253D01* +X631596Y838250D01* +X631037Y841552D01* +X631037Y1052525D01* +X632206Y1064260D01* +X633272Y1067866D01* +X635508Y1070813D01* +X638657Y1072743D01* +X642315Y1073404D01* +X646379Y1073404D01* +X652678Y1074064D01* +X658164Y1075994D01* +X663041Y1079093D01* +X667156Y1083157D01* +X670204Y1088034D01* +X672134Y1093520D01* +X672846Y1099820D01* +X672846Y1217117D01* +X672134Y1223416D01* +X670204Y1228902D01* +X667156Y1233779D01* +X663041Y1237945D01* +X658164Y1240942D01* +X652678Y1242872D01* +X646379Y1243584D01* +X539089Y1243584D01* +X532790Y1242872D01* +X527304Y1240942D01* +X522427Y1237945D01* +X518312Y1233779D01* +X515264Y1228902D01* +X513334Y1223416D01* +X512622Y1217117D01* +X512622Y1099820D01* +X513334Y1093520D01* +X515264Y1088034D01* +X518312Y1083157D01* +X522427Y1079093D01* +X527304Y1075994D01* +X532739Y1074064D01* +X540105Y1073353D01* +X543661Y1072286D01* +X546608Y1070000D01* +X548538Y1066901D01* +X549198Y1063193D01* +X549198Y841552D01* +X548640Y838250D01* +X546963Y835202D01* +X544017Y832662D01* +X539902Y828649D01* +X536854Y823721D01* +X534924Y818286D01* +X534212Y811936D01* +X534212Y763117D01* +X534924Y756767D01* +X536854Y751332D01* +X539394Y747166D01* +X540766Y743661D01* +X540766Y739851D01* +X539394Y736346D01* +X536854Y732282D01* +X534924Y726795D01* +X534212Y720445D01* +X534212Y671626D01* +X534568Y668426D01* +X534162Y664260D01* +X532180Y660654D01* +X528878Y658164D01* +X524865Y657148D01* +X520750Y657809D01* +X517296Y660095D01* +X235000Y942390D01* +X232816Y945642D01* +X232003Y949553D01* +X232003Y1249781D01* +X232613Y1253134D01* +X234238Y1256131D01* +X236778Y1258468D01* +X242214Y1261872D01* +X246329Y1265936D01* +X249377Y1270812D01* +X251307Y1276299D01* +X252018Y1282598D01* +X252018Y1331468D01* +X251307Y1337767D01* +X249377Y1343253D01* +X247040Y1347012D01* +X245567Y1351076D01* +X245922Y1355344D01* +X248005Y1359154D01* +X251409Y1361643D01* +X255625Y1362557D01* +X291693Y1362557D01* +X304038Y1361490D01* +X314553Y1358950D01* +X317093Y1358036D01* +X320395Y1355801D01* +X322630Y1352499D01* +X323392Y1348638D01* +X323392Y1342440D01* +X324104Y1336141D01* +X326034Y1330655D01* +X329082Y1325778D01* +X333197Y1321612D01* +X338074Y1318615D01* +X343560Y1316634D01* +X349859Y1315974D01* +X457149Y1315974D01* +X463448Y1316634D01* +X468934Y1318615D01* +X473811Y1321612D01* +X477926Y1325778D01* +X480974Y1330655D01* +X482904Y1336141D01* +X483616Y1342440D01* +X483616Y1459738D01* +X482904Y1466037D01* +X480974Y1471472D01* +X477926Y1476400D01* +X473811Y1480464D01* +X468934Y1483563D01* +X463448Y1485493D01* +X457149Y1486154D01* +X349859Y1486154D01* +X343560Y1485493D01* +X338074Y1483563D01* +X333197Y1480464D01* +X329082Y1476400D01* +X326034Y1471472D01* +X324104Y1466037D01* +X323392Y1459738D01* +X323392Y1445666D01* +X322732Y1442059D01* +X320802Y1438859D01* +X317855Y1436674D01* +X314299Y1435557D01* +X302615Y1434388D01* +X255219Y1434388D01* +X251866Y1434947D01* +X248869Y1436674D01* +X246329Y1439621D01* +X242214Y1443685D01* +X237337Y1446733D01* +X231851Y1448663D01* +X225552Y1449425D01* +X166674Y1449425D01* +X160375Y1448663D01* +X154889Y1446733D01* +X150012Y1443685D01* +X145897Y1439621D01* +X142849Y1434744D01* +X140919Y1429207D01* +X140208Y1422958D01* +X140208Y1374038D01* +X140919Y1367790D01* +X142849Y1362252D01* +X145389Y1358188D01* +X146761Y1354683D01* +X146761Y1350873D01* +X145389Y1347419D01* +X142849Y1343253D01* +X140919Y1337767D01* +X140208Y1331468D01* +X140208Y1282598D01* +X140919Y1276299D01* +X142849Y1270812D01* +X145897Y1265936D01* +X150012Y1261872D01* +X155448Y1258468D01* +X157988Y1256131D01* +X159613Y1253134D01* +X160223Y1249781D01* +X160223Y931062D01* +X161036Y922985D01* +X163372Y915924D01* +X167182Y909269D01* +X170992Y904849D01* +X932484Y143357D01* +X938733Y138226D01* +X945438Y134874D01* +X952804Y132842D01* +G37* +G36* +X192938Y136347D02* +G01* +X196088Y137922D01* +X216357Y150317D01* +X235458Y164388D01* +X253390Y179933D01* +X270002Y196900D01* +X285191Y215138D01* +X298805Y234543D01* +X309626Y252933D01* +X270764Y252933D01* +X266954Y253695D01* +X263753Y255727D01* +X261518Y258876D01* +X257454Y267868D01* +X251917Y276098D01* +X245059Y283210D01* +X237083Y289052D01* +X228244Y293522D01* +X218795Y296418D01* +X208991Y297738D01* +X199085Y297281D01* +X189433Y295249D01* +X180238Y291490D01* +X171805Y286359D01* +X164338Y279755D01* +X158140Y272034D01* +X153314Y263448D01* +X150012Y254152D01* +X148336Y244348D01* +X148336Y234442D01* +X150012Y224637D01* +X153314Y215341D01* +X158140Y206756D01* +X164338Y199034D01* +X171805Y192430D01* +X180238Y187299D01* +X186588Y184759D01* +X189941Y182524D01* +X192176Y179171D01* +X192938Y175260D01* +G37* +G36* +X-84734Y136448D02* +G01* +X-84734Y179324D01* +X-84074Y182930D01* +X-82143Y186080D01* +X-79146Y188366D01* +X-74066Y190957D01* +X-66090Y196799D01* +X-59232Y203962D01* +X-53695Y212242D01* +X-49631Y221183D01* +X-47091Y230784D01* +X-46278Y240639D01* +X-47091Y250494D01* +X-49631Y260096D01* +X-53695Y269087D01* +X-59232Y277317D01* +X-66090Y284530D01* +X-74066Y290372D01* +X-82905Y294792D01* +X-92354Y297738D01* +X-102158Y299008D01* +X-112064Y298602D01* +X-121716Y296468D01* +X-130911Y292811D01* +X-139344Y287578D01* +X-146812Y281076D01* +X-153009Y273304D01* +X-157835Y264668D01* +X-159613Y259689D01* +X-161747Y256184D01* +X-165150Y253746D01* +X-169164Y252933D01* +X-201269Y252933D01* +X-196850Y244602D01* +X-183997Y224637D01* +X-169570Y205841D01* +X-153670Y188214D01* +X-136398Y171907D01* +X-117856Y157124D01* +X-98145Y143916D01* +G37* +G36* +X11391798Y142697D02* +G01* +X11394948Y144272D01* +X11415217Y156667D01* +X11434318Y170738D01* +X11452250Y186283D01* +X11468862Y203250D01* +X11484051Y221488D01* +X11497665Y240893D01* +X11508486Y259283D01* +X11469624Y259283D01* +X11465814Y260045D01* +X11462613Y262077D01* +X11460378Y265226D01* +X11456314Y274218D01* +X11450777Y282448D01* +X11443919Y289560D01* +X11435943Y295402D01* +X11427104Y299872D01* +X11417655Y302768D01* +X11407851Y304088D01* +X11397945Y303631D01* +X11388293Y301599D01* +X11379098Y297840D01* +X11370665Y292709D01* +X11363198Y286105D01* +X11357000Y278384D01* +X11352174Y269798D01* +X11348872Y260502D01* +X11347196Y250698D01* +X11347196Y240792D01* +X11348872Y230987D01* +X11352174Y221691D01* +X11357000Y213106D01* +X11363198Y205384D01* +X11370665Y198780D01* +X11379098Y193649D01* +X11385448Y191109D01* +X11388801Y188874D01* +X11391036Y185521D01* +X11391798Y181610D01* +G37* +G36* +X11114125Y142798D02* +G01* +X11114125Y185674D01* +X11114786Y189280D01* +X11116716Y192430D01* +X11119713Y194716D01* +X11124793Y197307D01* +X11132769Y203149D01* +X11139627Y210312D01* +X11145164Y218592D01* +X11149228Y227533D01* +X11151768Y237134D01* +X11152581Y246989D01* +X11151768Y256844D01* +X11149228Y266446D01* +X11145164Y275437D01* +X11139627Y283667D01* +X11132769Y290880D01* +X11124793Y296722D01* +X11115954Y301142D01* +X11106505Y304088D01* +X11096701Y305358D01* +X11086795Y304952D01* +X11077143Y302818D01* +X11067948Y299161D01* +X11059515Y293928D01* +X11052048Y287426D01* +X11045850Y279654D01* +X11041024Y271018D01* +X11039246Y266039D01* +X11037112Y262534D01* +X11033709Y260096D01* +X11029696Y259283D01* +X10997590Y259283D01* +X11002010Y250952D01* +X11014862Y230987D01* +X11029289Y212191D01* +X11045190Y194564D01* +X11062462Y178257D01* +X11081004Y163474D01* +X11100714Y150266D01* +G37* +G36* +X975410Y297129D02* +G01* +X986942Y298399D01* +X998169Y301548D01* +X1008786Y306222D01* +X1018489Y312572D01* +X1027176Y320294D01* +X1034592Y329285D01* +X1040536Y339242D01* +X1044854Y350012D01* +X1047496Y361289D01* +X1048410Y372922D01* +X1047496Y384556D01* +X1044854Y395833D01* +X1040536Y406603D01* +X1034592Y416559D01* +X1027176Y425551D01* +X1018489Y433222D01* +X1008786Y439572D01* +X998169Y444296D01* +X986942Y447395D01* +X975410Y448716D01* +X963828Y448259D01* +X952398Y446125D01* +X941476Y442163D01* +X931265Y436575D01* +X922019Y429615D01* +X913993Y421233D01* +X907287Y411683D01* +X902157Y401269D01* +X898652Y390194D01* +X896874Y378764D01* +X896874Y367080D01* +X898652Y355650D01* +X902157Y344576D01* +X907287Y334162D01* +X913993Y324612D01* +X922019Y316280D01* +X931265Y309270D01* +X941476Y303682D01* +X952398Y299720D01* +X963828Y297586D01* +G37* +G36* +X-173278Y329641D02* +G01* +X-163474Y330911D01* +X-154025Y333857D01* +X-145186Y338277D01* +X-137210Y344119D01* +X-130352Y351332D01* +X-124815Y359562D01* +X-120751Y368554D01* +X-118211Y378155D01* +X-117398Y388010D01* +X-118211Y397865D01* +X-120751Y407466D01* +X-124815Y416407D01* +X-130352Y424688D01* +X-137210Y431850D01* +X-145186Y437642D01* +X-154025Y442163D01* +X-163474Y445058D01* +X-173278Y446278D01* +X-183184Y445871D01* +X-192836Y443788D01* +X-202031Y440080D01* +X-210464Y434949D01* +X-217932Y428345D01* +X-224129Y420674D01* +X-228955Y412038D01* +X-232257Y402742D01* +X-233934Y392938D01* +X-233934Y383082D01* +X-232257Y373278D01* +X-228955Y363982D01* +X-224129Y355346D01* +X-217932Y347573D01* +X-210464Y341071D01* +X-202031Y335838D01* +X-192836Y332130D01* +X-183184Y330047D01* +G37* +G36* +X272491Y334772D02* +G01* +X282295Y335991D01* +X291744Y338886D01* +X300583Y343357D01* +X308559Y349199D01* +X315417Y356362D01* +X320954Y364642D01* +X325018Y373583D01* +X327558Y383184D01* +X328371Y393039D01* +X327558Y402894D01* +X325018Y412496D01* +X320954Y421487D01* +X315417Y429717D01* +X308559Y436930D01* +X300583Y442772D01* +X291744Y447192D01* +X282295Y450138D01* +X272491Y451408D01* +X262585Y451002D01* +X252933Y448868D01* +X243738Y445211D01* +X235305Y439978D01* +X227838Y433476D01* +X221640Y425704D01* +X216814Y417068D01* +X213512Y407771D01* +X211836Y397967D01* +X211836Y388112D01* +X213512Y378307D01* +X216814Y369011D01* +X221640Y360375D01* +X227838Y352653D01* +X235305Y346100D01* +X243738Y340918D01* +X252933Y337261D01* +X262585Y335178D01* +G37* +G36* +X11025581Y335991D02* +G01* +X11035385Y337261D01* +X11044834Y340207D01* +X11053673Y344627D01* +X11061649Y350469D01* +X11068507Y357682D01* +X11074044Y365912D01* +X11078108Y374904D01* +X11080648Y384505D01* +X11081461Y394360D01* +X11080648Y404215D01* +X11078108Y413816D01* +X11074044Y422757D01* +X11068507Y431038D01* +X11061649Y438200D01* +X11053673Y443992D01* +X11044834Y448513D01* +X11035385Y451408D01* +X11025581Y452628D01* +X11015675Y452221D01* +X11006023Y450138D01* +X10996828Y446430D01* +X10988395Y441299D01* +X10980928Y434695D01* +X10974730Y427024D01* +X10969904Y418388D01* +X10966602Y409092D01* +X10964926Y399288D01* +X10964926Y389432D01* +X10966602Y379628D01* +X10969904Y370332D01* +X10974730Y361696D01* +X10980928Y353923D01* +X10988395Y347421D01* +X10996828Y342188D01* +X11006023Y338480D01* +X11015675Y336397D01* +G37* +G36* +X11471351Y341122D02* +G01* +X11481155Y342341D01* +X11490604Y345236D01* +X11499443Y349707D01* +X11507419Y355549D01* +X11514277Y362712D01* +X11519814Y370992D01* +X11523878Y379933D01* +X11526418Y389534D01* +X11527231Y399389D01* +X11526418Y409244D01* +X11523878Y418846D01* +X11519814Y427837D01* +X11514277Y436067D01* +X11507419Y443280D01* +X11499443Y449122D01* +X11490604Y453542D01* +X11481155Y456488D01* +X11471351Y457758D01* +X11461445Y457352D01* +X11451793Y455218D01* +X11442598Y451561D01* +X11434165Y446328D01* +X11426698Y439826D01* +X11420500Y432054D01* +X11415674Y423418D01* +X11412372Y414121D01* +X11410696Y404317D01* +X11410696Y394462D01* +X11412372Y384657D01* +X11415674Y375361D01* +X11420500Y366725D01* +X11426698Y359003D01* +X11434165Y352450D01* +X11442598Y347268D01* +X11451793Y343611D01* +X11461445Y341528D01* +G37* +G36* +X1745183Y425907D02* +G01* +X1754835Y426720D01* +X1764284Y429259D01* +X1773072Y433425D01* +X1781048Y438962D01* +X1787956Y445871D01* +X1793544Y453898D01* +X1797659Y462686D01* +X1800199Y472084D01* +X1801012Y481787D01* +X1800199Y491490D01* +X1797659Y500938D01* +X1793544Y509727D01* +X1787906Y517753D01* +X1786534Y520496D01* +X1786077Y523595D01* +X1786077Y556412D01* +X1786839Y560222D01* +X1789023Y563524D01* +X1792325Y565759D01* +X1796237Y566521D01* +X1800098Y565759D01* +X1803400Y563524D01* +X1807413Y559562D01* +X1812289Y556514D01* +X1817776Y554583D01* +X1824075Y553821D01* +X1842160Y553821D01* +X1842160Y653389D01* +X1796237Y653389D01* +X1792325Y654202D01* +X1789023Y656386D01* +X1786839Y659688D01* +X1786077Y663600D01* +X1786077Y816000D01* +X1786839Y819861D01* +X1789023Y823163D01* +X1792325Y825347D01* +X1796237Y826160D01* +X1842160Y826160D01* +X1842160Y925728D01* +X1824075Y925728D01* +X1817776Y924966D01* +X1812289Y923036D01* +X1807413Y919987D01* +X1803400Y916025D01* +X1800098Y913790D01* +X1796237Y913028D01* +X1792325Y913790D01* +X1789023Y916025D01* +X1786839Y919276D01* +X1786077Y923137D01* +X1786077Y1108862D01* +X1786839Y1112672D01* +X1789023Y1115974D01* +X1792325Y1118209D01* +X1796237Y1118971D01* +X1800098Y1118209D01* +X1803400Y1115974D01* +X1807413Y1112012D01* +X1812289Y1108964D01* +X1817776Y1107033D01* +X1824075Y1106271D01* +X1922932Y1106271D01* +X1929231Y1107033D01* +X1934718Y1108964D01* +X1939594Y1112012D01* +X1943709Y1116076D01* +X1946808Y1121003D01* +X1948688Y1126490D01* +X1949399Y1132840D01* +X1949399Y1451610D01* +X1948688Y1457960D01* +X1946808Y1463395D01* +X1943709Y1468374D01* +X1939594Y1472438D01* +X1934718Y1475486D01* +X1929231Y1477416D01* +X1922932Y1478178D01* +X1824075Y1478178D01* +X1817776Y1477416D01* +X1812289Y1475486D01* +X1807413Y1472438D01* +X1803400Y1468475D01* +X1800098Y1466240D01* +X1796237Y1465478D01* +X1792325Y1466240D01* +X1789023Y1468475D01* +X1786839Y1471726D01* +X1786077Y1475587D01* +X1786077Y1499311D01* +X1785213Y1507744D01* +X1782927Y1515465D01* +X1779117Y1522476D01* +X1773732Y1529080D01* +X1695450Y1607362D01* +X1688846Y1612747D01* +X1681784Y1616557D01* +X1674114Y1618894D01* +X1664360Y1619859D01* +X1660855Y1620469D01* +X1657502Y1621688D01* +X1654352Y1623517D01* +X1651355Y1626260D01* +X1648155Y1630578D01* +X1640179Y1642465D01* +X1631137Y1652727D01* +X1620875Y1661820D01* +X1609496Y1669389D01* +X1597202Y1675485D01* +X1584248Y1679803D01* +X1570837Y1682496D01* +X1557172Y1683461D01* +X1543507Y1682496D01* +X1530096Y1679803D01* +X1517142Y1675485D01* +X1504848Y1669389D01* +X1493469Y1661820D01* +X1483207Y1652727D01* +X1474165Y1642465D01* +X1466545Y1631137D01* +X1460500Y1618843D01* +X1456131Y1605838D01* +X1453438Y1592478D01* +X1452524Y1578813D01* +X1453438Y1565148D01* +X1456131Y1551686D01* +X1460500Y1538782D01* +X1466545Y1526438D01* +X1474571Y1514500D01* +X1476146Y1510588D01* +X1475994Y1506474D01* +X1474165Y1502714D01* +X1471015Y1499920D01* +X1467002Y1498752D01* +X1462582Y1498346D01* +X1453134Y1495856D01* +X1444345Y1491691D01* +X1436370Y1486154D01* +X1430477Y1480261D01* +X1428038Y1478432D01* +X1425194Y1477416D01* +X1422146Y1477365D01* +X1415186Y1478178D01* +X1373733Y1478178D01* +X1369720Y1478940D01* +X1366418Y1481277D01* +X1364234Y1484680D01* +X1363573Y1488694D01* +X1364589Y1492656D01* +X1367028Y1495907D01* +X1377137Y1504797D01* +X1386179Y1515059D01* +X1393799Y1526438D01* +X1397050Y1533042D01* +X1348892Y1533042D01* +X1348892Y1488287D01* +X1348130Y1484376D01* +X1345895Y1481124D01* +X1342644Y1478889D01* +X1338732Y1478178D01* +X1316329Y1478178D01* +X1310030Y1477416D01* +X1304544Y1475486D01* +X1299667Y1472438D01* +X1295552Y1468374D01* +X1292453Y1463395D01* +X1290574Y1457960D01* +X1289862Y1451610D01* +X1289862Y1132840D01* +X1290574Y1126490D01* +X1292453Y1121003D01* +X1295552Y1116076D01* +X1299667Y1112012D01* +X1304544Y1108964D01* +X1310030Y1107033D01* +X1316329Y1106271D01* +X1415186Y1106271D01* +X1421485Y1107033D01* +X1426972Y1108964D01* +X1431848Y1112012D01* +X1435963Y1116076D01* +X1439062Y1121003D01* +X1440942Y1126490D01* +X1441653Y1132840D01* +X1441653Y1357731D01* +X1442415Y1361592D01* +X1444650Y1364945D01* +X1462938Y1383182D01* +X1465732Y1385163D01* +X1468424Y1386484D01* +X1471930Y1387449D01* +X1481937Y1388313D01* +X1491386Y1390853D01* +X1500174Y1394917D01* +X1508150Y1400556D01* +X1515059Y1407464D01* +X1520647Y1415389D01* +X1524355Y1423314D01* +X1526641Y1426514D01* +X1529994Y1428546D01* +X1533804Y1429207D01* +X1537614Y1428394D01* +X1540814Y1426108D01* +X1542999Y1422857D01* +X1543710Y1419098D01* +X1543710Y1132840D01* +X1544421Y1126490D01* +X1546352Y1121003D01* +X1549450Y1116076D01* +X1553514Y1112012D01* +X1558442Y1108964D01* +X1563878Y1107033D01* +X1570177Y1106271D01* +X1669084Y1106271D01* +X1675384Y1107033D01* +X1680819Y1108964D01* +X1685747Y1112012D01* +X1690217Y1115415D01* +X1694078Y1116126D01* +X1697989Y1115415D01* +X1701292Y1113180D01* +X1703476Y1109929D01* +X1704238Y1106017D01* +X1704238Y925982D01* +X1703476Y922070D01* +X1701292Y918768D01* +X1697989Y916584D01* +X1694078Y915822D01* +X1690217Y916584D01* +X1685747Y919987D01* +X1680819Y923036D01* +X1675384Y924966D01* +X1669084Y925728D01* +X1570177Y925728D01* +X1563878Y924966D01* +X1558442Y923036D01* +X1553514Y919987D01* +X1549450Y915924D01* +X1546352Y910945D01* +X1544421Y905510D01* +X1543710Y899160D01* +X1543710Y580491D01* +X1542897Y576376D01* +X1542186Y575462D01* +X1543304Y574700D01* +X1545488Y571093D01* +X1546352Y568553D01* +X1549450Y563626D01* +X1553514Y559562D01* +X1558442Y556514D01* +X1563878Y554583D01* +X1570177Y553821D01* +X1669084Y553821D01* +X1675384Y554583D01* +X1680819Y556514D01* +X1685747Y559562D01* +X1690217Y562965D01* +X1694078Y563676D01* +X1697989Y562965D01* +X1701292Y560730D01* +X1703476Y557479D01* +X1704238Y553567D01* +X1704238Y523595D01* +X1703781Y520547D01* +X1702409Y517753D01* +X1696770Y509727D01* +X1692656Y500938D01* +X1690116Y491490D01* +X1689303Y481787D01* +X1690116Y472084D01* +X1692656Y462686D01* +X1696770Y453898D01* +X1702358Y445871D01* +X1709267Y438962D01* +X1717243Y433425D01* +X1726031Y429259D01* +X1735480Y426720D01* +G37* +G36* +X8960510Y480110D02* +G01* +X8971076Y480517D01* +X8981490Y482701D01* +X8991396Y486409D01* +X9000591Y491693D01* +X9008770Y498449D01* +X9015831Y506323D01* +X9021470Y515315D01* +X9025636Y525068D01* +X9028176Y535330D01* +X9029039Y545896D01* +X9028176Y556564D01* +X9025636Y566826D01* +X9021470Y576580D01* +X9015628Y585876D01* +X9014460Y588416D01* +X9014053Y591261D01* +X9014053Y636066D01* +X9014866Y640029D01* +X9017152Y643382D01* +X9020606Y645515D01* +X9024620Y646125D01* +X9028582Y645160D01* +X9031833Y642721D01* +X9033865Y639216D01* +X9035542Y634187D01* +X9040469Y624738D01* +X9046819Y616254D01* +X9054490Y608939D01* +X9063228Y602945D01* +X9072778Y598424D01* +X9082989Y595376D01* +X9093504Y594156D01* +X9104071Y594614D01* +X9114485Y596646D01* +X9124391Y600456D01* +X9133586Y605790D01* +X9141764Y612444D01* +X9148826Y620420D01* +X9154464Y629361D01* +X9158630Y639114D01* +X9161170Y649427D01* +X9162034Y659993D01* +X9161170Y670509D01* +X9158630Y680821D01* +X9154464Y690575D01* +X9148622Y699820D01* +X9147454Y702462D01* +X9147048Y705256D01* +X9147048Y748385D01* +X9147810Y752195D01* +X9150045Y755497D01* +X9151366Y756869D01* +X9154414Y761746D01* +X9156344Y767181D01* +X9157055Y773531D01* +X9157055Y972362D01* +X9156344Y978712D01* +X9154414Y984148D01* +X9151366Y989076D01* +X9147251Y993190D01* +X9142374Y996238D01* +X9136888Y998169D01* +X9130588Y998829D01* +X9061704Y998829D01* +X9055404Y998169D01* +X9049918Y996238D01* +X9045041Y993190D01* +X9040926Y989076D01* +X9037878Y984148D01* +X9035948Y978712D01* +X9035237Y972362D01* +X9035237Y773531D01* +X9035948Y767181D01* +X9037878Y761746D01* +X9040926Y756869D01* +X9042247Y755497D01* +X9044482Y752297D01* +X9045244Y748385D01* +X9045244Y704951D01* +X9044686Y701700D01* +X9043212Y698754D01* +X9040469Y695198D01* +X9035542Y685749D01* +X9033865Y680669D01* +X9031833Y677214D01* +X9028582Y674776D01* +X9024620Y673811D01* +X9020606Y674370D01* +X9017152Y676605D01* +X9014866Y679907D01* +X9014053Y683920D01* +X9014053Y1076756D01* +X9013850Y1081379D01* +X9013240Y1085799D01* +X9012326Y1090117D01* +X9010954Y1094384D01* +X9009278Y1098448D01* +X9007195Y1102410D01* +X9004808Y1106119D01* +X9002115Y1109675D01* +X8998966Y1113078D01* +X8904935Y1207211D01* +X8903106Y1209700D01* +X8902090Y1212596D01* +X8902039Y1215644D01* +X8903055Y1223568D01* +X8903055Y1422349D01* +X8902344Y1428699D01* +X8900414Y1434185D01* +X8897366Y1439113D01* +X8893251Y1443177D01* +X8888374Y1446225D01* +X8882888Y1448104D01* +X8876588Y1448866D01* +X8807704Y1448866D01* +X8801404Y1448104D01* +X8795918Y1446225D01* +X8791041Y1443177D01* +X8786926Y1439113D01* +X8783878Y1434185D01* +X8781948Y1428699D01* +X8781237Y1422349D01* +X8781237Y1223518D01* +X8781948Y1217168D01* +X8783878Y1211732D01* +X8786926Y1206804D01* +X8788247Y1205484D01* +X8790381Y1202385D01* +X8791244Y1198778D01* +X8791448Y1193546D01* +X8792006Y1189126D01* +X8792972Y1184757D01* +X8794292Y1180541D01* +X8796020Y1176477D01* +X8798052Y1172514D01* +X8800439Y1168755D01* +X8803132Y1165250D01* +X8806281Y1161796D01* +X8909253Y1058824D01* +X8911437Y1055522D01* +X8912250Y1051712D01* +X8912250Y998728D01* +X8911437Y994816D01* +X8909253Y991514D01* +X8905951Y989380D01* +X8902090Y988568D01* +X8898178Y989380D01* +X8894876Y991514D01* +X8893251Y993190D01* +X8888374Y996238D01* +X8882888Y998169D01* +X8876588Y998829D01* +X8865971Y998829D01* +X8865971Y929284D01* +X8902090Y929284D01* +X8905951Y928522D01* +X8909253Y926388D01* +X8911437Y923036D01* +X8912250Y919124D01* +X8912250Y826769D01* +X8911437Y822858D01* +X8909253Y819556D01* +X8905951Y817422D01* +X8902090Y816610D01* +X8865971Y816610D01* +X8865971Y747064D01* +X8876588Y747064D01* +X8882888Y747776D01* +X8888374Y749655D01* +X8893251Y752805D01* +X8894876Y754430D01* +X8898178Y756564D01* +X8902090Y757377D01* +X8905951Y756564D01* +X8909253Y754430D01* +X8911437Y751078D01* +X8912250Y747166D01* +X8912250Y590854D01* +X8911691Y587705D01* +X8910218Y584809D01* +X8907475Y581152D01* +X8902547Y571754D01* +X8899194Y561695D01* +X8897467Y551230D01* +X8897467Y540613D01* +X8899194Y530199D01* +X8902547Y520090D01* +X8907475Y510692D01* +X8913825Y502310D01* +X8921496Y494944D01* +X8930233Y488848D01* +X8939784Y484327D01* +X8949994Y481380D01* +G37* +G36* +X210261Y490982D02* +G01* +X220065Y492201D01* +X229514Y495096D01* +X238353Y499567D01* +X246329Y505409D01* +X253187Y512622D01* +X258724Y520852D01* +X260502Y524713D01* +X262686Y527812D01* +X265938Y529894D01* +X269748Y530656D01* +X309626Y530656D01* +X298805Y549097D01* +X285191Y568452D01* +X270002Y586740D01* +X253390Y603656D01* +X235458Y619201D01* +X216357Y633272D01* +X196088Y645668D01* +X192938Y647293D01* +X192938Y612851D01* +X192176Y608939D01* +X189941Y605586D01* +X186588Y603453D01* +X181508Y601421D01* +X173075Y596188D01* +X165608Y589686D01* +X159410Y581964D01* +X154584Y573278D01* +X151282Y563981D01* +X149606Y554177D01* +X149606Y544372D01* +X151282Y534568D01* +X154584Y525272D01* +X159410Y516585D01* +X165608Y508863D01* +X173075Y502361D01* +X181508Y497128D01* +X190703Y493471D01* +X200355Y491337D01* +G37* +G36* +X-102158Y492201D02* +G01* +X-92354Y493522D01* +X-82905Y496417D01* +X-74066Y500888D01* +X-66090Y506730D01* +X-59232Y513842D01* +X-53695Y522071D01* +X-49631Y531114D01* +X-47091Y540664D01* +X-46278Y550570D01* +X-47091Y560425D01* +X-49631Y569976D01* +X-53695Y579018D01* +X-59232Y587248D01* +X-66090Y594360D01* +X-74066Y600202D01* +X-79146Y602843D01* +X-82143Y605078D01* +X-84074Y608279D01* +X-84734Y611886D01* +X-84734Y647141D01* +X-98145Y639622D01* +X-117856Y626465D01* +X-136398Y611682D01* +X-153670Y595376D01* +X-169570Y577748D01* +X-183997Y558952D01* +X-196850Y538988D01* +X-201269Y530656D01* +X-166116Y530656D01* +X-162610Y530047D01* +X-159512Y528218D01* +X-157226Y525424D01* +X-153009Y517906D01* +X-146812Y510184D01* +X-139344Y503580D01* +X-130911Y498449D01* +X-121716Y494690D01* +X-112064Y492607D01* +G37* +G36* +X11409121Y497332D02* +G01* +X11418925Y498551D01* +X11428374Y501446D01* +X11437213Y505917D01* +X11445189Y511759D01* +X11452047Y518972D01* +X11457584Y527202D01* +X11459362Y531063D01* +X11461546Y534162D01* +X11464798Y536244D01* +X11468608Y537006D01* +X11508486Y537006D01* +X11497665Y555447D01* +X11484051Y574802D01* +X11468862Y593090D01* +X11452250Y610006D01* +X11434318Y625551D01* +X11415217Y639622D01* +X11394948Y652018D01* +X11391798Y653643D01* +X11391798Y619201D01* +X11391036Y615289D01* +X11388801Y611936D01* +X11385448Y609803D01* +X11380368Y607771D01* +X11371935Y602538D01* +X11364468Y596036D01* +X11358270Y588314D01* +X11353444Y579628D01* +X11350142Y570331D01* +X11348466Y560527D01* +X11348466Y550722D01* +X11350142Y540918D01* +X11353444Y531622D01* +X11358270Y522935D01* +X11364468Y515213D01* +X11371935Y508711D01* +X11380368Y503478D01* +X11389563Y499821D01* +X11399215Y497687D01* +G37* +G36* +X11096701Y498551D02* +G01* +X11106505Y499872D01* +X11115954Y502767D01* +X11124793Y507238D01* +X11132769Y513080D01* +X11139627Y520192D01* +X11145164Y528421D01* +X11149228Y537464D01* +X11151768Y547014D01* +X11152581Y556920D01* +X11151768Y566775D01* +X11149228Y576326D01* +X11145164Y585368D01* +X11139627Y593598D01* +X11132769Y600710D01* +X11124793Y606552D01* +X11119713Y609193D01* +X11116716Y611428D01* +X11114786Y614629D01* +X11114125Y618236D01* +X11114125Y653491D01* +X11100714Y645972D01* +X11081004Y632815D01* +X11062462Y618032D01* +X11045190Y601726D01* +X11029289Y584098D01* +X11014862Y565302D01* +X11002010Y545338D01* +X10997590Y537006D01* +X11032744Y537006D01* +X11036249Y536397D01* +X11039348Y534568D01* +X11041634Y531774D01* +X11045850Y524256D01* +X11052048Y516534D01* +X11059515Y509930D01* +X11067948Y504799D01* +X11077143Y501040D01* +X11086795Y498957D01* +G37* +G36* +X1470304Y506425D02* +G01* +X1479956Y507288D01* +X1489405Y509828D01* +X1498193Y513994D01* +X1506169Y519531D01* +X1513078Y526389D01* +X1518666Y534365D01* +X1522780Y543255D01* +X1525320Y552653D01* +X1526133Y562356D01* +X1525778Y566877D01* +X1526235Y570941D01* +X1527302Y572719D01* +X1525625Y574141D01* +X1523746Y577799D01* +X1522780Y581456D01* +X1518666Y590296D01* +X1513078Y598220D01* +X1506169Y605078D01* +X1498193Y610717D01* +X1489405Y614781D01* +X1479956Y617321D01* +X1469898Y618185D01* +X1466392Y619150D01* +X1463751Y620471D01* +X1460906Y622452D01* +X1444650Y638708D01* +X1442415Y642061D01* +X1441653Y645922D01* +X1441653Y899160D01* +X1440942Y905510D01* +X1439062Y910945D01* +X1435963Y915924D01* +X1431848Y919987D01* +X1426972Y923036D01* +X1421485Y924966D01* +X1415186Y925728D01* +X1316329Y925728D01* +X1310030Y924966D01* +X1304544Y923036D01* +X1299667Y919987D01* +X1295552Y915924D01* +X1292453Y910945D01* +X1290574Y905510D01* +X1289862Y899160D01* +X1289862Y580390D01* +X1290574Y574040D01* +X1292453Y568553D01* +X1295552Y563626D01* +X1299667Y559562D01* +X1304544Y556514D01* +X1310030Y554583D01* +X1316329Y553821D01* +X1407058Y553821D01* +X1411274Y552907D01* +X1414729Y550316D01* +X1416812Y546506D01* +X1417726Y543356D01* +X1421892Y534365D01* +X1427480Y526389D01* +X1434388Y519531D01* +X1442364Y513994D01* +X1451152Y509828D01* +X1460601Y507288D01* +G37* +G36* +X3498291Y512470D02* +G01* +X3507943Y513283D01* +X3517392Y515874D01* +X3526180Y519988D01* +X3534156Y525526D01* +X3541064Y532384D01* +X3546652Y540410D01* +X3550767Y549249D01* +X3553307Y558596D01* +X3554120Y568350D01* +X3553307Y578053D01* +X3550767Y587400D01* +X3546652Y596239D01* +X3541064Y604215D01* +X3534156Y611124D01* +X3526180Y616661D01* +X3517392Y620776D01* +X3507943Y623366D01* +X3497935Y624179D01* +X3494430Y625144D01* +X3491737Y626465D01* +X3488944Y628446D01* +X3475634Y641705D01* +X3473399Y645007D01* +X3472637Y648919D01* +X3472637Y899160D01* +X3471926Y905510D01* +X3470046Y910945D01* +X3466947Y915924D01* +X3462832Y919987D01* +X3457956Y923036D01* +X3452469Y924966D01* +X3446170Y925728D01* +X3347313Y925728D01* +X3341014Y924966D01* +X3335528Y923036D01* +X3330651Y919987D01* +X3326536Y915924D01* +X3323437Y910945D01* +X3321558Y905510D01* +X3320846Y899160D01* +X3320846Y580390D01* +X3321558Y574040D01* +X3323437Y568553D01* +X3326536Y563626D01* +X3330651Y559562D01* +X3335528Y556514D01* +X3341014Y554583D01* +X3347313Y553821D01* +X3437128Y553821D01* +X3440887Y553161D01* +X3444087Y551129D01* +X3446322Y547979D01* +X3449878Y540410D01* +X3455466Y532384D01* +X3462375Y525526D01* +X3470351Y519988D01* +X3479139Y515874D01* +X3488588Y513283D01* +G37* +G36* +X3233267Y522427D02* +G01* +X3242970Y523341D01* +X3252368Y525830D01* +X3261207Y529945D01* +X3269183Y535584D01* +X3276041Y542442D01* +X3281629Y550367D01* +X3285744Y559206D01* +X3288284Y568655D01* +X3289147Y578307D01* +X3288284Y588010D01* +X3285744Y597458D01* +X3281629Y606298D01* +X3276041Y614222D01* +X3269183Y621080D01* +X3261207Y626668D01* +X3252368Y630834D01* +X3242970Y633323D01* +X3232912Y634238D01* +X3229406Y635203D01* +X3226714Y636422D01* +X3223920Y638403D01* +X3221736Y640638D01* +X3219551Y643940D01* +X3218789Y647852D01* +X3218789Y899160D01* +X3218078Y905510D01* +X3216148Y910945D01* +X3213049Y915924D01* +X3208985Y919987D01* +X3204057Y923036D01* +X3198622Y924966D01* +X3192322Y925728D01* +X3093415Y925728D01* +X3087116Y924966D01* +X3081680Y923036D01* +X3076752Y919987D01* +X3072688Y915924D01* +X3069590Y910945D01* +X3067659Y905510D01* +X3066948Y899160D01* +X3066948Y580390D01* +X3067659Y574040D01* +X3069590Y568553D01* +X3072688Y563626D01* +X3076752Y559562D01* +X3081680Y556514D01* +X3087116Y554583D01* +X3093415Y553821D01* +X3177184Y553821D01* +X3180384Y553313D01* +X3183229Y551840D01* +X3185464Y549503D01* +X3190494Y542442D01* +X3197352Y535584D01* +X3205327Y529945D01* +X3214166Y525830D01* +X3223564Y523341D01* +G37* +G36* +X1904847Y553821D02* +G01* +X1922932Y553821D01* +X1929231Y554583D01* +X1934718Y556514D01* +X1939594Y559562D01* +X1943709Y563626D01* +X1946808Y568553D01* +X1948688Y574040D01* +X1949399Y580390D01* +X1949399Y653389D01* +X1904847Y653389D01* +G37* +G36* +X2920339Y553821D02* +G01* +X2938424Y553821D01* +X2944723Y554583D01* +X2950210Y556514D01* +X2955086Y559562D01* +X2959201Y563626D01* +X2962300Y568553D01* +X2964180Y574040D01* +X2964891Y580390D01* +X2964891Y653389D01* +X2920339Y653389D01* +G37* +G36* +X1062431Y553821D02* +G01* +X1080516Y553821D01* +X1080516Y653389D01* +X1035964Y653389D01* +X1035964Y580390D01* +X1036675Y574040D01* +X1038606Y568553D01* +X1041704Y563626D01* +X1045768Y559562D01* +X1050696Y556514D01* +X1056132Y554583D01* +G37* +G36* +X1143254Y553821D02* +G01* +X1161338Y553821D01* +X1167638Y554583D01* +X1173073Y556514D01* +X1178001Y559562D01* +X1182065Y563626D01* +X1185164Y568553D01* +X1187094Y574040D01* +X1187805Y580390D01* +X1187805Y653389D01* +X1143254Y653389D01* +G37* +G36* +X2839567Y553821D02* +G01* +X2857652Y553821D01* +X2857652Y653389D01* +X2813100Y653389D01* +X2813100Y580390D01* +X2813812Y574040D01* +X2815691Y568553D01* +X2818790Y563626D01* +X2822905Y559562D01* +X2827782Y556514D01* +X2833268Y554583D01* +G37* +G36* +X2077923Y553821D02* +G01* +X2176830Y553821D01* +X2183130Y554583D01* +X2188565Y556514D01* +X2193493Y559562D01* +X2197557Y563626D01* +X2200656Y568553D01* +X2202586Y574040D01* +X2203297Y580390D01* +X2203297Y899160D01* +X2202586Y905510D01* +X2200656Y910945D01* +X2197557Y915924D01* +X2193493Y919987D01* +X2188565Y923036D01* +X2183130Y924966D01* +X2176830Y925728D01* +X2077923Y925728D01* +X2071624Y924966D01* +X2066188Y923036D01* +X2061260Y919987D01* +X2057196Y915924D01* +X2054098Y910945D01* +X2052167Y905510D01* +X2051456Y899160D01* +X2051456Y580390D01* +X2052167Y574040D01* +X2054098Y568553D01* +X2057196Y563626D01* +X2061260Y559562D01* +X2066188Y556514D01* +X2071624Y554583D01* +G37* +G36* +X2331821Y553821D02* +G01* +X2430678Y553821D01* +X2436977Y554583D01* +X2442464Y556514D01* +X2447340Y559562D01* +X2451455Y563626D01* +X2454554Y568553D01* +X2456434Y574040D01* +X2457145Y580390D01* +X2457145Y899160D01* +X2456434Y905510D01* +X2454554Y910945D01* +X2451455Y915924D01* +X2447340Y919987D01* +X2442464Y923036D01* +X2436977Y924966D01* +X2430678Y925728D01* +X2331821Y925728D01* +X2325522Y924966D01* +X2320036Y923036D01* +X2315159Y919987D01* +X2311044Y915924D01* +X2307945Y910945D01* +X2306066Y905510D01* +X2305354Y899160D01* +X2305354Y580390D01* +X2306066Y574040D01* +X2307945Y568553D01* +X2311044Y563626D01* +X2315159Y559562D01* +X2320036Y556514D01* +X2325522Y554583D01* +G37* +G36* +X52781Y555701D02* +G01* +X62585Y557022D01* +X72034Y559917D01* +X80873Y564388D01* +X88849Y570230D01* +X95707Y577342D01* +X101244Y585571D01* +X105308Y594614D01* +X107848Y604164D01* +X108661Y614070D01* +X107848Y623925D01* +X105308Y633476D01* +X101244Y642518D01* +X95707Y650748D01* +X88849Y657860D01* +X80873Y663702D01* +X72034Y668172D01* +X62585Y671068D01* +X52781Y672388D01* +X42875Y671931D01* +X33223Y669899D01* +X24028Y666140D01* +X15595Y661009D01* +X8128Y654405D01* +X1930Y646684D01* +X-2895Y638098D01* +X-6197Y628802D01* +X-7873Y618998D01* +X-7873Y609092D01* +X-6197Y599287D01* +X-2895Y589991D01* +X1930Y581406D01* +X8128Y573684D01* +X15595Y567080D01* +X24028Y561949D01* +X33223Y558190D01* +X42875Y556107D01* +G37* +G36* +X11251641Y562051D02* +G01* +X11261445Y563372D01* +X11270894Y566267D01* +X11279733Y570738D01* +X11287709Y576580D01* +X11294567Y583692D01* +X11300104Y591921D01* +X11304168Y600964D01* +X11306708Y610514D01* +X11307521Y620420D01* +X11306708Y630275D01* +X11304168Y639826D01* +X11300104Y648868D01* +X11294567Y657098D01* +X11287709Y664210D01* +X11279733Y670052D01* +X11270894Y674522D01* +X11261445Y677418D01* +X11251641Y678738D01* +X11241735Y678281D01* +X11232083Y676249D01* +X11222888Y672490D01* +X11214455Y667359D01* +X11206988Y660755D01* +X11200790Y653034D01* +X11195964Y644448D01* +X11192662Y635152D01* +X11190986Y625348D01* +X11190986Y615442D01* +X11192662Y605637D01* +X11195964Y596341D01* +X11200790Y587756D01* +X11206988Y580034D01* +X11214455Y573430D01* +X11222888Y568299D01* +X11232083Y564540D01* +X11241735Y562457D01* +G37* +G36* +X10607395Y665022D02* +G01* +X10618927Y666394D01* +X10630154Y669442D01* +X10640771Y674217D01* +X10650474Y680516D01* +X10659160Y688187D01* +X10666577Y697230D01* +X10672521Y707136D01* +X10676839Y717905D01* +X10679480Y729234D01* +X10680395Y740816D01* +X10679480Y752449D01* +X10676839Y763727D01* +X10672521Y774496D01* +X10666577Y784453D01* +X10659160Y793496D01* +X10650474Y801217D01* +X10640771Y807516D01* +X10630154Y812241D01* +X10618927Y815340D01* +X10607395Y816660D01* +X10595813Y816203D01* +X10584383Y814019D01* +X10573461Y810107D01* +X10563250Y804570D01* +X10554004Y797458D01* +X10545978Y789127D01* +X10539272Y779576D01* +X10534142Y769162D01* +X10530636Y758088D01* +X10528858Y746607D01* +X10528858Y735025D01* +X10530636Y723595D01* +X10534142Y712470D01* +X10539272Y702106D01* +X10545978Y692556D01* +X10554004Y684174D01* +X10563250Y677164D01* +X10573461Y671576D01* +X10584383Y667664D01* +X10595813Y665480D01* +G37* +G36* +X8807704Y747064D02* +G01* +X8818321Y747064D01* +X8818321Y816610D01* +X8781237Y816610D01* +X8781237Y773531D01* +X8781948Y767181D01* +X8783878Y761746D01* +X8786926Y756869D01* +X8791041Y752805D01* +X8795918Y749655D01* +X8801404Y747776D01* +G37* +G36* +X9569704Y747064D02* +G01* +X9638588Y747064D01* +X9644888Y747776D01* +X9650374Y749655D01* +X9655251Y752805D01* +X9659366Y756869D01* +X9662414Y761746D01* +X9664344Y767181D01* +X9665055Y773531D01* +X9665055Y972362D01* +X9664344Y978712D01* +X9662414Y984148D01* +X9659366Y989076D01* +X9655251Y993190D01* +X9649815Y996645D01* +X9647275Y998829D01* +X9645599Y1001826D01* +X9645040Y1005179D01* +X9645040Y1029106D01* +X9645497Y1032205D01* +X9646869Y1034948D01* +X9652508Y1043076D01* +X9656622Y1051864D01* +X9659162Y1061262D01* +X9660026Y1070965D01* +X9659162Y1080668D01* +X9656622Y1090066D01* +X9652508Y1098854D01* +X9646920Y1106830D01* +X9640062Y1113790D01* +X9632086Y1119327D01* +X9623247Y1123442D01* +X9613849Y1126032D01* +X9604146Y1126794D01* +X9594443Y1126032D01* +X9585045Y1123442D01* +X9576206Y1119327D01* +X9568230Y1113790D01* +X9561372Y1106830D01* +X9555784Y1098854D01* +X9551670Y1090066D01* +X9549130Y1080668D01* +X9548266Y1070965D01* +X9549130Y1061262D01* +X9551670Y1051864D01* +X9555784Y1043076D01* +X9561372Y1034948D01* +X9562744Y1032256D01* +X9563252Y1029157D01* +X9563252Y1005179D01* +X9562642Y1001826D01* +X9561017Y998829D01* +X9558477Y996645D01* +X9553041Y993190D01* +X9548926Y989076D01* +X9545878Y984148D01* +X9543948Y978712D01* +X9543237Y972362D01* +X9543237Y773531D01* +X9543948Y767181D01* +X9545878Y761746D01* +X9548926Y756869D01* +X9553041Y752805D01* +X9557918Y749655D01* +X9563404Y747776D01* +G37* +G36* +X2920339Y826160D02* +G01* +X2964891Y826160D01* +X2964891Y899160D01* +X2964180Y905510D01* +X2962300Y910945D01* +X2959201Y915924D01* +X2955086Y919987D01* +X2950210Y923036D01* +X2944723Y924966D01* +X2938424Y925728D01* +X2920339Y925728D01* +G37* +G36* +X1904847Y826160D02* +G01* +X1949399Y826160D01* +X1949399Y899160D01* +X1948688Y905510D01* +X1946808Y910945D01* +X1943709Y915924D01* +X1939594Y919987D01* +X1934718Y923036D01* +X1929231Y924966D01* +X1922932Y925728D01* +X1904847Y925728D01* +G37* +G36* +X1143254Y826160D02* +G01* +X1187805Y826160D01* +X1187805Y899160D01* +X1187094Y905510D01* +X1185164Y910945D01* +X1182065Y915924D01* +X1178001Y919987D01* +X1173073Y923036D01* +X1167638Y924966D01* +X1161338Y925728D01* +X1143254Y925728D01* +G37* +G36* +X2813100Y826160D02* +G01* +X2857652Y826160D01* +X2857652Y925728D01* +X2839567Y925728D01* +X2833268Y924966D01* +X2827782Y923036D01* +X2822905Y919987D01* +X2818790Y915924D01* +X2815691Y910945D01* +X2813812Y905510D01* +X2813100Y899160D01* +G37* +G36* +X1035964Y826160D02* +G01* +X1080516Y826160D01* +X1080516Y925728D01* +X1062431Y925728D01* +X1056132Y924966D01* +X1050696Y923036D01* +X1045768Y919987D01* +X1041704Y915924D01* +X1038606Y910945D01* +X1036675Y905510D01* +X1035964Y899160D01* +G37* +G36* +X8781237Y929284D02* +G01* +X8818321Y929284D01* +X8818321Y998829D01* +X8807704Y998829D01* +X8801404Y998169D01* +X8795918Y996238D01* +X8791041Y993190D01* +X8786926Y989076D01* +X8783878Y984148D01* +X8781948Y978712D01* +X8781237Y972362D01* +G37* +G36* +X11372138Y982573D02* +G01* +X11376609Y982573D01* +X11390833Y983487D01* +X11394694Y983996D01* +X11408918Y986688D01* +X11412677Y987755D01* +X11426494Y992327D01* +X11430050Y993800D01* +X11443106Y1000150D01* +X11446510Y1002080D01* +X11458600Y1010107D01* +X11461699Y1012444D01* +X11472672Y1022045D01* +X11475415Y1024737D01* +X11485067Y1035659D01* +X11487454Y1038707D01* +X11495582Y1050747D01* +X11497513Y1054049D01* +X11504015Y1067054D01* +X11505539Y1070660D01* +X11510264Y1084376D01* +X11511280Y1088136D01* +X11514175Y1102360D01* +X11514734Y1106271D01* +X11515750Y1121359D01* +X11515750Y1125321D01* +X11514785Y1139850D01* +X11514277Y1143711D01* +X11511483Y1157935D01* +X11510467Y1161745D01* +X11505793Y1175512D01* +X11504320Y1179017D01* +X11497868Y1192072D01* +X11495938Y1195476D01* +X11487861Y1207566D01* +X11485524Y1210665D01* +X11475923Y1221536D01* +X11473180Y1224330D01* +X11462258Y1233932D01* +X11459210Y1236218D01* +X11447119Y1244346D01* +X11443766Y1246327D01* +X11430711Y1252677D01* +X11427155Y1254201D01* +X11413388Y1258925D01* +X11409629Y1259941D01* +X11395405Y1262786D01* +X11391544Y1263294D01* +X11377015Y1264259D01* +X11373154Y1264259D01* +X11358626Y1263345D01* +X11354816Y1262837D01* +X11340541Y1259992D01* +X11336782Y1259027D01* +X11323015Y1254302D01* +X11319408Y1252829D01* +X11306403Y1246428D01* +X11303000Y1244498D01* +X11290909Y1236472D01* +X11287861Y1234084D01* +X11276888Y1224534D01* +X11274145Y1221841D01* +X11264544Y1210868D01* +X11262156Y1207770D01* +X11254079Y1195730D01* +X11252149Y1192428D01* +X11245646Y1179372D01* +X11244173Y1175816D01* +X11239500Y1161999D01* +X11238484Y1158341D01* +X11235588Y1144066D01* +X11235080Y1140206D01* +X11234115Y1125677D01* +X11234064Y1121816D01* +X11234978Y1107287D01* +X11235486Y1103426D01* +X11238280Y1089202D01* +X11239296Y1085494D01* +X11243919Y1071676D01* +X11245392Y1068070D01* +X11251793Y1055014D01* +X11253724Y1051712D01* +X11261750Y1039571D01* +X11264087Y1036421D01* +X11273637Y1025550D01* +X11276380Y1022756D01* +X11287302Y1013155D01* +X11290350Y1010818D01* +X11302390Y1002639D01* +X11305743Y1000658D01* +X11318798Y994257D01* +X11322354Y992733D01* +X11336121Y988009D01* +X11339830Y986993D01* +X11354104Y984097D01* +X11357914Y983538D01* +G37* +G36* +X3840937Y983538D02* +G01* +X3844798Y983538D01* +X3859326Y984503D01* +X3863187Y984961D01* +X3877411Y987755D01* +X3881170Y988720D01* +X3894988Y993292D01* +X3898544Y994765D01* +X3911600Y1001166D01* +X3915003Y1003096D01* +X3927094Y1011174D01* +X3930192Y1013460D01* +X3941165Y1023010D01* +X3943908Y1025702D01* +X3953560Y1036624D01* +X3955948Y1039672D01* +X3964076Y1051763D01* +X3966006Y1055065D01* +X3972509Y1068070D01* +X3974033Y1071626D01* +X3978757Y1085443D01* +X3979773Y1089152D01* +X3982669Y1103376D01* +X3983228Y1107287D01* +X3984244Y1122273D01* +X3984142Y1130096D01* +X3984447Y1132840D01* +X3984447Y1451610D01* +X3983736Y1457960D01* +X3981856Y1463395D01* +X3978757Y1468374D01* +X3974642Y1472438D01* +X3969765Y1475486D01* +X3964279Y1477416D01* +X3957980Y1478178D01* +X3859123Y1478178D01* +X3852824Y1477416D01* +X3847337Y1475486D01* +X3842461Y1472438D01* +X3838346Y1468374D01* +X3835247Y1463395D01* +X3833368Y1457960D01* +X3832656Y1451610D01* +X3832656Y1273962D01* +X3832047Y1270558D01* +X3830320Y1267460D01* +X3827678Y1265224D01* +X3824427Y1263954D01* +X3809034Y1260957D01* +X3805275Y1259992D01* +X3791508Y1255318D01* +X3787952Y1253845D01* +X3774897Y1247444D01* +X3771544Y1245514D01* +X3759403Y1237488D01* +X3756355Y1235100D01* +X3747414Y1227277D01* +X3744112Y1225346D01* +X3740302Y1224838D01* +X3736543Y1225753D01* +X3733393Y1227937D01* +X3731310Y1231188D01* +X3730599Y1234998D01* +X3730599Y1451610D01* +X3729888Y1457960D01* +X3727958Y1463395D01* +X3724859Y1468374D01* +X3720795Y1472438D01* +X3715867Y1475486D01* +X3710432Y1477416D01* +X3704132Y1478178D01* +X3701287Y1478178D01* +X3696919Y1479143D01* +X3693363Y1481886D01* +X3691382Y1485950D01* +X3689908Y1492707D01* +X3689197Y1502257D01* +X3689197Y1533042D01* +X3689959Y1536903D01* +X3692499Y1541475D01* +X3695954Y1545234D01* +X3701643Y1553413D01* +X3705758Y1562252D01* +X3708298Y1571650D01* +X3709162Y1581353D01* +X3708298Y1591056D01* +X3705758Y1600454D01* +X3701643Y1609242D01* +X3696055Y1617218D01* +X3689197Y1624076D01* +X3681222Y1629714D01* +X3672382Y1633778D01* +X3662984Y1636318D01* +X3653282Y1637182D01* +X3643579Y1636318D01* +X3634181Y1633778D01* +X3625342Y1629714D01* +X3617366Y1624076D01* +X3610508Y1617218D01* +X3604920Y1609242D01* +X3600805Y1600454D01* +X3598265Y1591056D01* +X3597401Y1581353D01* +X3598265Y1571650D01* +X3600805Y1562252D01* +X3604920Y1553413D01* +X3610508Y1545386D01* +X3613556Y1541983D01* +X3615791Y1538478D01* +X3616960Y1535887D01* +X3617366Y1533042D01* +X3617366Y1495399D01* +X3616604Y1487271D01* +X3615588Y1483715D01* +X3613353Y1480769D01* +X3610152Y1478838D01* +X3598926Y1477416D01* +X3593490Y1475486D01* +X3588562Y1472438D01* +X3584498Y1468374D01* +X3581400Y1463395D01* +X3579469Y1457960D01* +X3578758Y1451610D01* +X3578758Y1132840D01* +X3579469Y1126490D01* +X3581400Y1121003D01* +X3584498Y1116076D01* +X3588562Y1112012D01* +X3593490Y1108964D01* +X3598926Y1107033D01* +X3605225Y1106271D01* +X3695242Y1106271D01* +X3698697Y1105712D01* +X3701745Y1104036D01* +X3703980Y1101344D01* +X3705250Y1098143D01* +X3706774Y1090168D01* +X3707790Y1086459D01* +X3712413Y1072642D01* +X3713886Y1069086D01* +X3720287Y1056030D01* +X3722217Y1052626D01* +X3730244Y1040587D01* +X3732580Y1037437D01* +X3742131Y1026515D01* +X3744874Y1023721D01* +X3755796Y1014171D01* +X3758844Y1011783D01* +X3770884Y1003655D01* +X3774287Y1001674D01* +X3787292Y995222D01* +X3790848Y993749D01* +X3804615Y988974D01* +X3808323Y987958D01* +X3822598Y985062D01* +X3826459Y984554D01* +G37* +G36* +X349859Y1073404D02* +G01* +X370027Y1073404D01* +X370027Y1122578D01* +X323392Y1122578D01* +X323392Y1099820D01* +X324104Y1093520D01* +X326034Y1088034D01* +X329082Y1083157D01* +X333197Y1079093D01* +X338074Y1075994D01* +X343560Y1074064D01* +G37* +G36* +X436981Y1073404D02* +G01* +X457149Y1073404D01* +X463448Y1074064D01* +X468934Y1075994D01* +X473811Y1079093D01* +X477926Y1083157D01* +X480974Y1088034D01* +X482904Y1093520D01* +X483616Y1099820D01* +X483616Y1122578D01* +X436981Y1122578D01* +G37* +G36* +X5568442Y1078839D02* +G01* +X5641543Y1078839D01* +X5647842Y1079601D01* +X5653328Y1081532D01* +X5658205Y1084580D01* +X5662320Y1088644D01* +X5665368Y1093520D01* +X5667298Y1099007D01* +X5668010Y1105306D01* +X5668010Y1203401D01* +X5568442Y1203401D01* +G37* +G36* +X5322671Y1078839D02* +G01* +X5395772Y1078839D01* +X5395772Y1203401D01* +X5296204Y1203401D01* +X5296204Y1105306D01* +X5296916Y1099007D01* +X5298846Y1093520D01* +X5301894Y1088644D01* +X5306009Y1084580D01* +X5310886Y1081532D01* +X5316372Y1079601D01* +G37* +G36* +X808583Y1106271D02* +G01* +X907440Y1106271D01* +X913739Y1107033D01* +X919226Y1108964D01* +X924102Y1112012D01* +X928217Y1116076D01* +X931316Y1121003D01* +X933196Y1126490D01* +X933907Y1132840D01* +X933907Y1451610D01* +X933196Y1457960D01* +X931316Y1463395D01* +X928217Y1468374D01* +X924102Y1472438D01* +X919226Y1475486D01* +X913739Y1477416D01* +X907440Y1478178D01* +X808583Y1478178D01* +X802284Y1477416D01* +X796798Y1475486D01* +X791921Y1472438D01* +X787806Y1468374D01* +X784707Y1463395D01* +X782828Y1457960D01* +X782116Y1451610D01* +X782116Y1132840D01* +X782828Y1126490D01* +X784707Y1121003D01* +X787806Y1116076D01* +X791921Y1112012D01* +X796798Y1108964D01* +X802284Y1107033D01* +G37* +G36* +X3347313Y1106271D02* +G01* +X3446170Y1106271D01* +X3452469Y1107033D01* +X3457956Y1108964D01* +X3462832Y1112012D01* +X3466947Y1116076D01* +X3470046Y1121003D01* +X3471926Y1126490D01* +X3472637Y1132840D01* +X3472637Y1451610D01* +X3471926Y1457960D01* +X3470046Y1463395D01* +X3466947Y1468374D01* +X3462832Y1472438D01* +X3457956Y1475486D01* +X3453282Y1477162D01* +X3449675Y1479296D01* +X3447287Y1482750D01* +X3446475Y1486966D01* +X3447440Y1491030D01* +X3450742Y1498244D01* +X3453282Y1507642D01* +X3454146Y1517345D01* +X3453282Y1527048D01* +X3450742Y1536446D01* +X3446627Y1545234D01* +X3441039Y1553210D01* +X3434181Y1560068D01* +X3426206Y1565706D01* +X3417366Y1569770D01* +X3407968Y1572310D01* +X3398265Y1573174D01* +X3388563Y1572310D01* +X3379165Y1569770D01* +X3370326Y1565706D01* +X3362350Y1560068D01* +X3355492Y1553210D01* +X3349904Y1545234D01* +X3345789Y1536446D01* +X3343249Y1527048D01* +X3342386Y1517345D01* +X3343249Y1507642D01* +X3345789Y1498244D01* +X3348786Y1491742D01* +X3349701Y1488084D01* +X3349244Y1484376D01* +X3347465Y1481124D01* +X3344570Y1478686D01* +X3335528Y1475486D01* +X3330651Y1472438D01* +X3326536Y1468374D01* +X3323437Y1463395D01* +X3321558Y1457960D01* +X3320846Y1451610D01* +X3320846Y1132840D01* +X3321558Y1126490D01* +X3323437Y1121003D01* +X3326536Y1116076D01* +X3330651Y1112012D01* +X3335528Y1108964D01* +X3341014Y1107033D01* +G37* +G36* +X3093415Y1106271D02* +G01* +X3192322Y1106271D01* +X3198622Y1107033D01* +X3204057Y1108964D01* +X3208985Y1112012D01* +X3213049Y1116076D01* +X3216148Y1121003D01* +X3218078Y1126490D01* +X3218789Y1132840D01* +X3218789Y1451610D01* +X3218078Y1457960D01* +X3216148Y1463395D01* +X3213049Y1468374D01* +X3208985Y1472438D01* +X3204057Y1475486D01* +X3198622Y1477416D01* +X3193897Y1477924D01* +X3189935Y1479296D01* +X3186785Y1482090D01* +X3185109Y1485849D01* +X3185058Y1490065D01* +X3186684Y1493926D01* +X3192627Y1502359D01* +X3196742Y1511198D01* +X3199282Y1520647D01* +X3200146Y1530299D01* +X3199282Y1540002D01* +X3196742Y1549450D01* +X3192627Y1558290D01* +X3187039Y1566265D01* +X3180181Y1573072D01* +X3172206Y1578660D01* +X3163366Y1582826D01* +X3153968Y1585315D01* +X3144266Y1586230D01* +X3134563Y1585315D01* +X3125165Y1582826D01* +X3116326Y1578660D01* +X3108350Y1573072D01* +X3101492Y1566265D01* +X3095904Y1558290D01* +X3091789Y1549450D01* +X3089249Y1540002D01* +X3088386Y1530299D01* +X3089249Y1520647D01* +X3091789Y1511198D01* +X3095904Y1502359D01* +X3101695Y1494078D01* +X3103321Y1490218D01* +X3103270Y1486103D01* +X3101543Y1482242D01* +X3098393Y1479448D01* +X3094431Y1478229D01* +X3087065Y1477365D01* +X3081680Y1475486D01* +X3076752Y1472438D01* +X3072688Y1468374D01* +X3069590Y1463395D01* +X3067659Y1457960D01* +X3066948Y1451610D01* +X3066948Y1132840D01* +X3067659Y1126490D01* +X3069590Y1121003D01* +X3072688Y1116076D01* +X3076752Y1112012D01* +X3081680Y1108964D01* +X3087116Y1107033D01* +G37* +G36* +X1062431Y1106271D02* +G01* +X1161338Y1106271D01* +X1167638Y1107033D01* +X1173073Y1108964D01* +X1178001Y1112012D01* +X1182065Y1116076D01* +X1185164Y1121003D01* +X1187094Y1126490D01* +X1187805Y1132840D01* +X1187805Y1370888D01* +X1188567Y1374749D01* +X1191920Y1379169D01* +X1194714Y1381150D01* +X1197406Y1382471D01* +X1200912Y1383436D01* +X1210970Y1384249D01* +X1220368Y1386840D01* +X1229207Y1390904D01* +X1237183Y1396492D01* +X1244041Y1403451D01* +X1249629Y1411427D01* +X1253744Y1420215D01* +X1256284Y1429613D01* +X1257147Y1439265D01* +X1256284Y1449019D01* +X1253744Y1458417D01* +X1249273Y1468069D01* +X1248359Y1471879D01* +X1248918Y1475740D01* +X1250899Y1479143D01* +X1254760Y1481836D01* +X1257452Y1482750D01* +X1257452Y1533042D01* +X1209294Y1533042D01* +X1212545Y1526438D01* +X1220165Y1515059D01* +X1224686Y1509928D01* +X1226769Y1506169D01* +X1227124Y1501851D01* +X1225702Y1497888D01* +X1222705Y1494790D01* +X1218742Y1493164D01* +X1214424Y1493418D01* +X1210970Y1494383D01* +X1201267Y1495145D01* +X1191564Y1494383D01* +X1182166Y1491843D01* +X1173327Y1487678D01* +X1165352Y1482140D01* +X1161034Y1478889D01* +X1157173Y1478178D01* +X1062431Y1478178D01* +X1056132Y1477416D01* +X1050696Y1475486D01* +X1045768Y1472438D01* +X1041704Y1468374D01* +X1038606Y1463395D01* +X1036675Y1457960D01* +X1035964Y1451610D01* +X1035964Y1132840D01* +X1036675Y1126490D01* +X1038606Y1121003D01* +X1041704Y1116076D01* +X1045768Y1112012D01* +X1050696Y1108964D01* +X1056132Y1107033D01* +G37* +G36* +X2331821Y1106271D02* +G01* +X2430678Y1106271D01* +X2436977Y1107033D01* +X2442464Y1108964D01* +X2447340Y1112012D01* +X2451455Y1116076D01* +X2454554Y1121003D01* +X2456434Y1126490D01* +X2457145Y1132840D01* +X2457145Y1451610D01* +X2456434Y1457960D01* +X2454554Y1463395D01* +X2451455Y1468374D01* +X2447340Y1472438D01* +X2442464Y1475486D01* +X2437028Y1477365D01* +X2429408Y1478229D01* +X2426055Y1479143D01* +X2423210Y1481124D01* +X2421229Y1483918D01* +X2420315Y1487271D01* +X2419858Y1492300D01* +X2419858Y1963775D01* +X2420620Y1967687D01* +X2422855Y1970938D01* +X2424023Y1972157D01* +X2429611Y1980133D01* +X2433726Y1988921D01* +X2436266Y1998421D01* +X2437130Y2008022D01* +X2436266Y2017725D01* +X2433726Y2027224D01* +X2429611Y2036013D01* +X2424023Y2043988D01* +X2417165Y2050846D01* +X2409190Y2056485D01* +X2400350Y2060600D01* +X2390952Y2063089D01* +X2381250Y2063953D01* +X2371547Y2063089D01* +X2362149Y2060600D01* +X2353310Y2056485D01* +X2345334Y2050846D01* +X2338476Y2043988D01* +X2332888Y2036013D01* +X2328773Y2027224D01* +X2326233Y2017725D01* +X2325370Y2008022D01* +X2326233Y1998421D01* +X2328773Y1988921D01* +X2332888Y1980133D01* +X2338476Y1972157D01* +X2339695Y1970938D01* +X2341880Y1967687D01* +X2342642Y1963775D01* +X2342642Y1492300D01* +X2342184Y1487271D01* +X2341270Y1483918D01* +X2339289Y1481124D01* +X2336444Y1479143D01* +X2333142Y1478229D01* +X2325471Y1477365D01* +X2320036Y1475486D01* +X2315159Y1472438D01* +X2311044Y1468374D01* +X2307945Y1463395D01* +X2306066Y1457960D01* +X2305354Y1451610D01* +X2305354Y1132840D01* +X2306066Y1126490D01* +X2307945Y1121003D01* +X2311044Y1116076D01* +X2315159Y1112012D01* +X2320036Y1108964D01* +X2325522Y1107033D01* +G37* +G36* +X2077923Y1106271D02* +G01* +X2176830Y1106271D01* +X2183130Y1107033D01* +X2188565Y1108964D01* +X2193493Y1112012D01* +X2197557Y1116076D01* +X2200656Y1121003D01* +X2202586Y1126490D01* +X2203297Y1132840D01* +X2203297Y1451610D01* +X2202586Y1457960D01* +X2200656Y1463395D01* +X2197557Y1468374D01* +X2193493Y1472438D01* +X2188565Y1475486D01* +X2185111Y1476756D01* +X2181555Y1478838D01* +X2179116Y1482242D01* +X2178304Y1486306D01* +X2178304Y1792884D01* +X2178710Y1795780D01* +X2180894Y1799843D01* +X2184958Y1809038D01* +X2187397Y1818792D01* +X2188260Y1828850D01* +X2187397Y1838858D01* +X2184958Y1848612D01* +X2180894Y1857857D01* +X2175408Y1866239D01* +X2168601Y1873605D01* +X2160676Y1879854D01* +X2151837Y1884629D01* +X2142337Y1887829D01* +X2132380Y1889556D01* +X2122373Y1889556D01* +X2112416Y1887829D01* +X2102916Y1884629D01* +X2096262Y1880971D01* +X2093874Y1880057D01* +X2091385Y1879803D01* +X1412798Y1879803D01* +X1408938Y1880514D01* +X1405636Y1882749D01* +X1225651Y2062683D01* +X1222248Y2065883D01* +X1218692Y2068525D01* +X1214983Y2070912D01* +X1211021Y2072944D01* +X1206906Y2074722D01* +X1202690Y2076043D01* +X1198372Y2077008D01* +X1193952Y2077567D01* +X1189278Y2077720D01* +X1156563Y2077720D01* +X1152702Y2078532D01* +X1149400Y2080717D01* +X1147216Y2084019D01* +X1146403Y2087930D01* +X1146403Y2103221D01* +X1145692Y2109571D01* +X1143812Y2115007D01* +X1140714Y2119985D01* +X1136650Y2124049D01* +X1131722Y2127097D01* +X1126286Y2129028D01* +X1119936Y2129790D01* +X1031087Y2129790D01* +X1024737Y2129028D01* +X1019302Y2127097D01* +X1014374Y2124049D01* +X1010310Y2119985D01* +X1007211Y2115007D01* +X1005332Y2109571D01* +X1004620Y2103221D01* +X1004620Y2087930D01* +X1003808Y2084019D01* +X1001623Y2080717D01* +X998321Y2078532D01* +X994460Y2077720D01* +X937412Y2077720D01* +X933196Y2078634D01* +X929741Y2081225D01* +X927658Y2084984D01* +X927353Y2089302D01* +X929538Y2094484D01* +X931468Y2099970D01* +X932180Y2106218D01* +X932180Y2205177D01* +X931468Y2211476D01* +X929538Y2216912D01* +X926439Y2221788D01* +X922375Y2225852D01* +X917448Y2229002D01* +X912012Y2230932D01* +X905662Y2231593D01* +X586841Y2231593D01* +X580491Y2230932D01* +X575056Y2229002D01* +X570128Y2225852D01* +X566064Y2221788D01* +X562965Y2216912D01* +X561035Y2211476D01* +X560324Y2205177D01* +X560324Y2106218D01* +X561035Y2099970D01* +X562965Y2094484D01* +X565150Y2089302D01* +X564845Y2084984D01* +X562762Y2081225D01* +X559308Y2078634D01* +X555091Y2077720D01* +X543814Y2077720D01* +X539902Y2078532D01* +X536600Y2080717D01* +X425805Y2191512D01* +X422401Y2194712D01* +X418846Y2197354D01* +X415086Y2199792D01* +X411175Y2201773D01* +X407060Y2203551D01* +X402844Y2204821D01* +X398475Y2205786D01* +X394157Y2206345D01* +X387553Y2206650D01* +X383641Y2207564D01* +X380390Y2209952D01* +X378307Y2213406D01* +X377088Y2216912D01* +X373989Y2221788D01* +X369925Y2225852D01* +X364998Y2229002D01* +X359562Y2230932D01* +X353212Y2231593D01* +X34391Y2231593D01* +X28041Y2230932D01* +X22606Y2229002D01* +X17678Y2225852D01* +X13614Y2221788D01* +X10515Y2216912D01* +X9296Y2213406D01* +X7162Y2209850D01* +X3759Y2207463D01* +X-304Y2206650D01* +X-44196Y2206650D01* +X-47802Y2207260D01* +X-50952Y2209139D01* +X-53187Y2212035D01* +X-56184Y2221026D01* +X-59283Y2225903D01* +X-63347Y2230069D01* +X-68275Y2233117D01* +X-73710Y2234996D01* +X-80060Y2235758D01* +X-168910Y2235758D01* +X-175260Y2234996D01* +X-180695Y2233117D01* +X-185623Y2230069D01* +X-189687Y2225903D01* +X-192786Y2221026D01* +X-194665Y2215540D01* +X-195376Y2209241D01* +X-195376Y2100376D01* +X-194665Y2094128D01* +X-192786Y2088591D01* +X-189687Y2083714D01* +X-185623Y2079650D01* +X-176784Y2074265D01* +X-174396Y2070862D01* +X-173532Y2066848D01* +X-174396Y2062734D01* +X-176784Y2059432D01* +X-185623Y2054047D01* +X-189687Y2049932D01* +X-192786Y2045004D01* +X-194665Y2039569D01* +X-195376Y2033219D01* +X-195376Y2012696D01* +X-153314Y2012696D01* +X-153314Y2063800D01* +X-152552Y2067610D01* +X-150368Y2070912D01* +X-147066Y2073198D01* +X-143154Y2073910D01* +X-105816Y2073910D01* +X-101904Y2073198D01* +X-98602Y2070912D01* +X-96418Y2067610D01* +X-95656Y2063800D01* +X-95656Y2012696D01* +X-53593Y2012696D01* +X-53593Y2033219D01* +X-54305Y2039569D01* +X-56184Y2045004D01* +X-59283Y2049932D01* +X-63347Y2054047D01* +X-72186Y2059432D01* +X-74574Y2062734D01* +X-75438Y2066848D01* +X-74574Y2070862D01* +X-72186Y2074265D01* +X-63347Y2079650D01* +X-59283Y2083714D01* +X-56184Y2088591D01* +X-54305Y2094128D01* +X-53035Y2099259D01* +X-50749Y2102154D01* +X-47650Y2104085D01* +X-43992Y2104745D01* +X-304Y2104745D01* +X3759Y2103983D01* +X7162Y2101545D01* +X9296Y2097938D01* +X10515Y2094484D01* +X13614Y2089556D01* +X17678Y2085492D01* +X22606Y2082444D01* +X28041Y2080514D01* +X34391Y2079752D01* +X353212Y2079752D01* +X359562Y2080514D01* +X364998Y2082444D01* +X369925Y2085492D01* +X371703Y2087321D01* +X375005Y2089454D01* +X378866Y2090267D01* +X382778Y2089454D01* +X386080Y2087321D01* +X482346Y1991055D01* +X485800Y1987854D01* +X489305Y1985162D01* +X493064Y1982774D01* +X496976Y1980692D01* +X501091Y1979015D01* +X505358Y1977643D01* +X509676Y1976678D01* +X514096Y1976120D01* +X518718Y1975967D01* +X553161Y1975967D01* +X556920Y1975205D01* +X560171Y1973122D01* +X562406Y1970024D01* +X563321Y1966264D01* +X562762Y1962404D01* +X561035Y1957527D01* +X560324Y1951228D01* +X560324Y1852422D01* +X561035Y1846122D01* +X562965Y1840636D01* +X566064Y1835759D01* +X570128Y1831593D01* +X575056Y1828546D01* +X580491Y1826615D01* +X586841Y1825955D01* +X905662Y1825955D01* +X912012Y1826615D01* +X917448Y1828546D01* +X922375Y1831593D01* +X926439Y1835759D01* +X929538Y1840636D01* +X931468Y1846122D01* +X932180Y1852422D01* +X932180Y1951228D01* +X931468Y1957527D01* +X929741Y1962404D01* +X929182Y1966264D01* +X930097Y1970024D01* +X932332Y1973122D01* +X935583Y1975205D01* +X939342Y1975967D01* +X1007871Y1975967D01* +X1010716Y1975561D01* +X1013358Y1974342D01* +X1023213Y1968246D01* +X1025601Y1964893D01* +X1026464Y1960880D01* +X1025601Y1956765D01* +X1023213Y1953412D01* +X1014374Y1948078D01* +X1010310Y1943912D01* +X1007211Y1939036D01* +X1005332Y1933600D01* +X1004620Y1927250D01* +X1004620Y1862836D01* +X1003858Y1858975D01* +X1002741Y1856384D01* +X1000506Y1852980D01* +X931824Y1784299D01* +X926439Y1777746D01* +X922629Y1770634D01* +X920292Y1763014D01* +X919480Y1754479D01* +X919480Y1692351D01* +X918870Y1688846D01* +X917041Y1685848D01* +X914044Y1682242D01* +X910590Y1679600D01* +X906322Y1678686D01* +X868934Y1678686D01* +X864869Y1679549D01* +X861466Y1681988D01* +X859332Y1685493D01* +X857402Y1690979D01* +X854303Y1695907D01* +X850239Y1700022D01* +X845312Y1703070D01* +X839876Y1705000D01* +X833526Y1705660D01* +X724712Y1705660D01* +X718362Y1705000D01* +X712927Y1703070D01* +X707999Y1700022D01* +X703935Y1695907D01* +X698550Y1687068D01* +X695198Y1684680D01* +X691134Y1683867D01* +X687070Y1684680D01* +X683666Y1687068D01* +X678332Y1695907D01* +X674217Y1700022D01* +X669340Y1703070D01* +X663854Y1705000D01* +X657555Y1705660D01* +X636981Y1705660D01* +X636981Y1663598D01* +X688035Y1663598D01* +X691946Y1662887D01* +X695248Y1660652D01* +X697433Y1657400D01* +X698195Y1653438D01* +X698195Y1634236D01* +X697280Y1620469D01* +X696163Y1616557D01* +X693572Y1611426D01* +X691286Y1608582D01* +X688136Y1606651D01* +X684530Y1605940D01* +X636981Y1605940D01* +X636981Y1563878D01* +X653846Y1563878D01* +X657758Y1563065D01* +X661060Y1560880D01* +X663244Y1557578D01* +X664006Y1553718D01* +X663244Y1549806D01* +X661060Y1546555D01* +X606348Y1491894D01* +X601878Y1488592D01* +X598220Y1487119D01* +X592734Y1486154D01* +X539089Y1486154D01* +X532790Y1485493D01* +X527304Y1483563D01* +X522427Y1480464D01* +X518312Y1476400D01* +X515264Y1471472D01* +X513334Y1466037D01* +X512622Y1459738D01* +X512622Y1342440D01* +X513334Y1336141D01* +X515264Y1330655D01* +X518312Y1325778D01* +X522427Y1321612D01* +X527304Y1318615D01* +X532790Y1316634D01* +X539089Y1315974D01* +X646379Y1315974D01* +X652678Y1316634D01* +X658164Y1318615D01* +X663041Y1321612D01* +X667156Y1325778D01* +X670204Y1330655D01* +X672134Y1336141D01* +X672846Y1342440D01* +X672846Y1406194D01* +X674065Y1420672D01* +X677418Y1434084D01* +X682853Y1446784D01* +X689254Y1457299D01* +X698703Y1468475D01* +X791108Y1560880D01* +X794410Y1563065D01* +X798322Y1563878D01* +X833526Y1563878D01* +X839876Y1564640D01* +X845312Y1566468D01* +X850239Y1569618D01* +X854303Y1573631D01* +X857402Y1578559D01* +X859332Y1583994D01* +X859739Y1587855D01* +X860806Y1591360D01* +X863092Y1594256D01* +X866241Y1596186D01* +X869848Y1596898D01* +X906322Y1596898D01* +X909675Y1596288D01* +X912621Y1594662D01* +X915212Y1591665D01* +X919276Y1587601D01* +X924204Y1584502D01* +X929640Y1582572D01* +X935990Y1581912D01* +X984808Y1581912D01* +X991158Y1582572D01* +X996594Y1584502D01* +X1000709Y1587093D01* +X1004214Y1588414D01* +X1008024Y1588414D01* +X1011529Y1587093D01* +X1015644Y1584502D01* +X1021080Y1582572D01* +X1027430Y1581912D01* +X1032967Y1581912D01* +X1032967Y1616456D01* +X1021486Y1616456D01* +X1017574Y1617167D01* +X1014272Y1619453D01* +X1012088Y1622755D01* +X1011326Y1626565D01* +X1011326Y1648968D01* +X1012088Y1652828D01* +X1014272Y1656130D01* +X1017574Y1658416D01* +X1021486Y1659128D01* +X1032967Y1659128D01* +X1032967Y1693722D01* +X1027430Y1693722D01* +X1021080Y1692960D01* +X1014831Y1690827D01* +X1011021Y1690268D01* +X1007262Y1691132D01* +X1004112Y1693316D01* +X1002030Y1696618D01* +X1001318Y1700428D01* +X1001318Y1733854D01* +X1002080Y1737715D01* +X1004265Y1741068D01* +X1040790Y1777593D01* +X1047394Y1783080D01* +X1055827Y1787753D01* +X1057656Y1788515D01* +X1064971Y1790801D01* +X1075486Y1791919D01* +X1119936Y1791919D01* +X1126286Y1792630D01* +X1131722Y1794510D01* +X1136650Y1797659D01* +X1140714Y1801723D01* +X1143812Y1806600D01* +X1145692Y1812086D01* +X1146403Y1818386D01* +X1146403Y1927250D01* +X1145692Y1933600D01* +X1143812Y1939036D01* +X1140714Y1943912D01* +X1136650Y1948078D01* +X1127810Y1953412D01* +X1125423Y1956765D01* +X1124559Y1960880D01* +X1125423Y1964893D01* +X1127810Y1968246D01* +X1137666Y1974342D01* +X1140307Y1975561D01* +X1143152Y1975967D01* +X1164234Y1975967D01* +X1168095Y1975154D01* +X1171397Y1972970D01* +X1351381Y1792986D01* +X1354785Y1789887D01* +X1358341Y1787143D01* +X1362049Y1784756D01* +X1366012Y1782673D01* +X1370126Y1781048D01* +X1374343Y1779727D01* +X1378661Y1778762D01* +X1383080Y1778152D01* +X1387754Y1777898D01* +X2066340Y1777898D01* +X2070201Y1777187D01* +X2073503Y1774952D01* +X2075688Y1771700D01* +X2076500Y1767738D01* +X2076500Y1486306D01* +X2075637Y1482242D01* +X2073249Y1478838D01* +X2069693Y1476756D01* +X2066188Y1475486D01* +X2061260Y1472438D01* +X2057196Y1468374D01* +X2054098Y1463395D01* +X2052167Y1457960D01* +X2051456Y1451610D01* +X2051456Y1132840D01* +X2052167Y1126490D01* +X2054098Y1121003D01* +X2057196Y1116076D01* +X2061260Y1112012D01* +X2066188Y1108964D01* +X2071624Y1107033D01* +G37* +G36* +X436981Y1194460D02* +G01* +X483616Y1194460D01* +X483616Y1217117D01* +X482904Y1223416D01* +X480974Y1228902D01* +X477926Y1233779D01* +X473811Y1237945D01* +X468934Y1240942D01* +X463448Y1242872D01* +X457149Y1243584D01* +X436981Y1243584D01* +G37* +G36* +X323392Y1194460D02* +G01* +X370027Y1194460D01* +X370027Y1243584D01* +X349859Y1243584D01* +X343560Y1242872D01* +X338074Y1240942D01* +X333197Y1237945D01* +X329082Y1233779D01* +X326034Y1228902D01* +X324104Y1223416D01* +X323392Y1217117D01* +G37* +G36* +X10135971Y1197000D02* +G01* +X10146588Y1197000D01* +X10152888Y1197813D01* +X10158374Y1199642D01* +X10163251Y1202791D01* +X10167366Y1206804D01* +X10170414Y1211732D01* +X10172344Y1217168D01* +X10173055Y1223518D01* +X10173055Y1266647D01* +X10135971Y1266647D01* +G37* +G36* +X10077704Y1197000D02* +G01* +X10088321Y1197000D01* +X10088321Y1266647D01* +X10051237Y1266647D01* +X10051237Y1223518D01* +X10051034Y1218387D01* +X10048798Y1214374D01* +X10052354Y1212697D01* +X10055047Y1209852D01* +X10056926Y1206804D01* +X10061041Y1202791D01* +X10065918Y1199642D01* +X10071404Y1197813D01* +G37* +G36* +X5063490Y1218285D02* +G01* +X5086553Y1218285D01* +X5092903Y1218946D01* +X5098338Y1220927D01* +X5103266Y1223924D01* +X5107330Y1228090D01* +X5110429Y1232966D01* +X5112359Y1238453D01* +X5113070Y1244752D01* +X5113070Y1275943D01* +X5063490Y1275943D01* +G37* +G36* +X4967732Y1218285D02* +G01* +X4990795Y1218285D01* +X4990795Y1275943D01* +X4941214Y1275943D01* +X4941214Y1244752D01* +X4941925Y1238453D01* +X4943856Y1232966D01* +X4946954Y1228090D01* +X4951018Y1223924D01* +X4955946Y1220927D01* +X4961382Y1218946D01* +G37* +G36* +X4941214Y1364843D02* +G01* +X4990795Y1364843D01* +X4990795Y1422501D01* +X4967732Y1422501D01* +X4961382Y1421739D01* +X4955946Y1419809D01* +X4951018Y1416812D01* +X4946954Y1412697D01* +X4943856Y1407820D01* +X4941925Y1402283D01* +X4941214Y1395984D01* +G37* +G36* +X5063490Y1364843D02* +G01* +X5113070Y1364843D01* +X5113070Y1395984D01* +X5112359Y1402283D01* +X5110429Y1407820D01* +X5107330Y1412697D01* +X5103266Y1416812D01* +X5098338Y1419809D01* +X5092903Y1421739D01* +X5086553Y1422501D01* +X5063490Y1422501D01* +G37* +G36* +X10135971Y1379270D02* +G01* +X10173055Y1379270D01* +X10173055Y1422349D01* +X10172344Y1428699D01* +X10170414Y1434185D01* +X10167366Y1439113D01* +X10163251Y1443177D01* +X10158374Y1446225D01* +X10152888Y1448104D01* +X10146588Y1448866D01* +X10135971Y1448866D01* +G37* +G36* +X10051237Y1379270D02* +G01* +X10088321Y1379270D01* +X10088321Y1448866D01* +X10077704Y1448866D01* +X10071404Y1448104D01* +X10065918Y1446225D01* +X10061041Y1443177D01* +X10056926Y1439113D01* +X10053878Y1434185D01* +X10051948Y1428699D01* +X10051237Y1422349D01* +G37* +G36* +X5296204Y1426108D02* +G01* +X5395772Y1426108D01* +X5395772Y1550670D01* +X5322671Y1550670D01* +X5316372Y1550009D01* +X5310886Y1548079D01* +X5306009Y1544980D01* +X5301894Y1540865D01* +X5298846Y1535988D01* +X5296916Y1530553D01* +X5296204Y1524254D01* +G37* +G36* +X5568442Y1426108D02* +G01* +X5668010Y1426108D01* +X5668010Y1524254D01* +X5667298Y1530553D01* +X5665368Y1535988D01* +X5662320Y1540865D01* +X5658205Y1544980D01* +X5653328Y1548079D01* +X5647842Y1550009D01* +X5641543Y1550670D01* +X5568442Y1550670D01* +G37* +G36* +X548690Y1563878D02* +G01* +X569264Y1563878D01* +X569264Y1605940D01* +X522224Y1605940D01* +X522224Y1590344D01* +X522935Y1583994D01* +X524814Y1578559D01* +X527913Y1573631D01* +X532028Y1569618D01* +X536905Y1566468D01* +X542391Y1564640D01* +G37* +G36* +X1070711Y1581912D02* +G01* +X1076248Y1581912D01* +X1082598Y1582572D01* +X1088034Y1584502D01* +X1092962Y1587601D01* +X1097026Y1591665D01* +X1100124Y1596542D01* +X1102055Y1602028D01* +X1102766Y1608328D01* +X1102766Y1616456D01* +X1070711Y1616456D01* +G37* +G36* +X1209294Y1624482D02* +G01* +X1257452Y1624482D01* +X1257452Y1672691D01* +X1250848Y1669389D01* +X1239469Y1661820D01* +X1229207Y1652727D01* +X1220165Y1642465D01* +X1212545Y1631137D01* +G37* +G36* +X1348892Y1624482D02* +G01* +X1397050Y1624482D01* +X1393799Y1631137D01* +X1386179Y1642465D01* +X1377137Y1652727D01* +X1366875Y1661820D01* +X1355496Y1669389D01* +X1348892Y1672691D01* +G37* +G36* +X1070711Y1659128D02* +G01* +X1102766Y1659128D01* +X1102766Y1667256D01* +X1102055Y1673555D01* +X1100124Y1679041D01* +X1097026Y1683918D01* +X1092962Y1687982D01* +X1088034Y1691030D01* +X1082598Y1692960D01* +X1076248Y1693722D01* +X1070711Y1693722D01* +G37* +G36* +X522224Y1663598D02* +G01* +X569264Y1663598D01* +X569264Y1705660D01* +X548690Y1705660D01* +X542391Y1705000D01* +X536905Y1703070D01* +X532028Y1700022D01* +X527913Y1695907D01* +X524814Y1690979D01* +X522935Y1685543D01* +X522224Y1679193D01* +G37* +G36* +X8126984Y1773021D02* +G01* +X8132572Y1773021D01* +X8132572Y1807565D01* +X8100517Y1807565D01* +X8100517Y1799488D01* +X8101228Y1793239D01* +X8103158Y1787702D01* +X8106206Y1782825D01* +X8110321Y1778762D01* +X8115198Y1775714D01* +X8120684Y1773783D01* +G37* +G36* +X34391Y1825955D02* +G01* +X353212Y1825955D01* +X359562Y1826615D01* +X364998Y1828546D01* +X369925Y1831593D01* +X374192Y1835912D01* +X377291Y1837994D01* +X380949Y1838807D01* +X396087Y1836115D01* +X406146Y1836115D01* +X416051Y1837791D01* +X425551Y1841093D01* +X434390Y1845818D01* +X442366Y1852015D01* +X449173Y1859381D01* +X454659Y1867814D01* +X458673Y1877009D01* +X461162Y1886762D01* +X461975Y1896821D01* +X461162Y1906778D01* +X458673Y1916531D01* +X454659Y1925777D01* +X449173Y1934159D01* +X442366Y1941575D01* +X434390Y1947773D01* +X425551Y1952548D01* +X416051Y1955850D01* +X406146Y1957476D01* +X396087Y1957476D01* +X388416Y1956155D01* +X384860Y1956206D01* +X381558Y1957476D01* +X378866Y1959762D01* +X373989Y1967890D01* +X369925Y1972056D01* +X364998Y1975104D01* +X359562Y1977034D01* +X353212Y1977694D01* +X34391Y1977694D01* +X28041Y1977034D01* +X22606Y1975104D01* +X17678Y1972056D01* +X13614Y1967890D01* +X10515Y1963013D01* +X8585Y1957527D01* +X7873Y1951228D01* +X7873Y1852422D01* +X8585Y1846122D01* +X10515Y1840636D01* +X13614Y1835759D01* +X17678Y1831593D01* +X22606Y1828546D01* +X28041Y1826615D01* +G37* +G36* +X5419191Y1828495D02* +G01* +X5492242Y1828495D01* +X5492242Y1872996D01* +X5392674Y1872996D01* +X5392674Y1854962D01* +X5393385Y1848612D01* +X5395315Y1843176D01* +X5398414Y1838299D01* +X5402478Y1834134D01* +X5407406Y1831035D01* +X5412841Y1829155D01* +G37* +G36* +X5664962Y1828495D02* +G01* +X5738012Y1828495D01* +X5744362Y1829155D01* +X5749798Y1831035D01* +X5754725Y1834134D01* +X5758789Y1838299D01* +X5761888Y1843176D01* +X5763818Y1848612D01* +X5764530Y1854962D01* +X5764530Y1872996D01* +X5664962Y1872996D01* +G37* +G36* +X8100517Y1850288D02* +G01* +X8132572Y1850288D01* +X8132572Y1884832D01* +X8126984Y1884832D01* +X8120684Y1884172D01* +X8115198Y1882241D01* +X8110321Y1879193D01* +X8106206Y1875028D01* +X8103158Y1870151D01* +X8101228Y1864715D01* +X8100517Y1858365D01* +G37* +G36* +X-95656Y1897938D02* +G01* +X-80060Y1897938D01* +X-73710Y1898599D01* +X-68275Y1900529D01* +X-63347Y1903679D01* +X-59283Y1907692D01* +X-56184Y1912620D01* +X-54305Y1918055D01* +X-53593Y1924405D01* +X-53593Y1944979D01* +X-95656Y1944979D01* +G37* +G36* +X-168910Y1897938D02* +G01* +X-153314Y1897938D01* +X-153314Y1944979D01* +X-195376Y1944979D01* +X-195376Y1924405D01* +X-194665Y1918055D01* +X-192786Y1912620D01* +X-189687Y1907692D01* +X-185623Y1903679D01* +X-180695Y1900529D01* +X-175260Y1898599D01* +G37* +G36* +X8609838Y2141372D02* +G01* +X8615426Y2141372D01* +X8621725Y2142134D01* +X8627211Y2144064D01* +X8632088Y2147112D01* +X8636203Y2151176D01* +X8639251Y2156155D01* +X8641181Y2161590D01* +X8641892Y2167940D01* +X8641892Y2175967D01* +X8609838Y2175967D01* +G37* +G36* +X7285685Y2164130D02* +G01* +X7293762Y2164130D01* +X7293762Y2196236D01* +X7259167Y2196236D01* +X7259167Y2190597D01* +X7259878Y2184298D01* +X7261809Y2178812D01* +X7264908Y2173935D01* +X7268972Y2169871D01* +X7273899Y2166772D01* +X7279335Y2164842D01* +G37* +G36* +X7336434Y2164130D02* +G01* +X7344511Y2164130D01* +X7350861Y2164842D01* +X7356297Y2166772D01* +X7361224Y2169871D01* +X7365288Y2173935D01* +X7368387Y2178812D01* +X7370318Y2184298D01* +X7371029Y2190597D01* +X7371029Y2196236D01* +X7336434Y2196236D01* +G37* +G36* +X7190435Y2166112D02* +G01* +X7198512Y2166112D01* +X7204862Y2166874D01* +X7210298Y2168753D01* +X7215225Y2171903D01* +X7219289Y2175916D01* +X7222388Y2180844D01* +X7224318Y2186279D01* +X7225030Y2192629D01* +X7225030Y2198217D01* +X7190435Y2198217D01* +G37* +G36* +X8609838Y2218690D02* +G01* +X8641892Y2218690D01* +X8641892Y2226716D01* +X8641181Y2233066D01* +X8639251Y2238502D01* +X8636203Y2243429D01* +X8632088Y2247544D01* +X8627211Y2250592D01* +X8621725Y2252573D01* +X8615426Y2253234D01* +X8609838Y2253234D01* +G37* +G36* +X8476640Y2282901D02* +G01* +X8492591Y2282901D01* +X8492591Y2334209D01* +X8450173Y2334209D01* +X8450173Y2309368D01* +X8450884Y2303068D01* +X8452764Y2297582D01* +X8455863Y2292705D01* +X8459927Y2288641D01* +X8464854Y2285593D01* +X8470290Y2283663D01* +G37* +G36* +X8551011Y2282901D02* +G01* +X8566912Y2282901D01* +X8573262Y2283663D01* +X8578697Y2285593D01* +X8583625Y2288641D01* +X8587689Y2292705D01* +X8590788Y2297582D01* +X8592667Y2303068D01* +X8593429Y2309368D01* +X8593429Y2334209D01* +X8551011Y2334209D01* +G37* +G36* +X8450173Y2410409D02* +G01* +X8492591Y2410409D01* +X8492591Y2461717D01* +X8476640Y2461717D01* +X8470290Y2461056D01* +X8464854Y2459126D01* +X8459927Y2456078D01* +X8455863Y2451912D01* +X8452764Y2447036D01* +X8450884Y2441600D01* +X8450173Y2435250D01* +G37* +G36* +X8551011Y2410409D02* +G01* +X8593429Y2410409D01* +X8593429Y2435250D01* +X8592667Y2441600D01* +X8590788Y2447036D01* +X8587689Y2451912D01* +X8583625Y2456078D01* +X8578697Y2459126D01* +X8573262Y2461056D01* +X8566912Y2461717D01* +X8551011Y2461717D01* +G37* +G36* +X8787739Y2513787D02* +G01* +X8887104Y2513787D01* +X8902598Y2514752D01* +X8917533Y2517444D01* +X8932062Y2522016D01* +X8945930Y2528214D01* +X8958935Y2536088D01* +X8970924Y2545486D01* +X8981643Y2556256D01* +X8991041Y2568143D01* +X8998915Y2581198D01* +X9005112Y2595016D01* +X9009634Y2609596D01* +X9012377Y2624480D01* +X9013291Y2639720D01* +X9012377Y2654909D01* +X9009634Y2669794D01* +X9005112Y2684373D01* +X8998915Y2698191D01* +X8991041Y2711196D01* +X8981643Y2723134D01* +X8970924Y2733903D01* +X8958935Y2743301D01* +X8945930Y2751175D01* +X8932062Y2757424D01* +X8917533Y2761945D01* +X8902598Y2764637D01* +X8887104Y2765552D01* +X8787739Y2765552D01* +X8772245Y2764637D01* +X8757310Y2761945D01* +X8742781Y2757424D01* +X8728913Y2751175D01* +X8715908Y2743301D01* +X8703919Y2733903D01* +X8693200Y2723134D01* +X8683802Y2711196D01* +X8675928Y2698191D01* +X8669731Y2684373D01* +X8665210Y2669794D01* +X8662466Y2654909D01* +X8661552Y2639720D01* +X8662466Y2624480D01* +X8665210Y2609596D01* +X8669731Y2595016D01* +X8675928Y2581198D01* +X8683802Y2568143D01* +X8693200Y2556256D01* +X8703919Y2545486D01* +X8715908Y2536088D01* +X8728913Y2528214D01* +X8742781Y2522016D01* +X8757310Y2517444D01* +X8772245Y2514752D01* +G37* +G36* +X8556752Y2749905D02* +G01* +X8566150Y2749905D01* +X8566150Y2776982D01* +X8517940Y2776982D01* +X8518499Y2775204D01* +X8522258Y2768092D01* +X8527338Y2761945D01* +X8533536Y2756814D01* +X8540597Y2753106D01* +X8548268Y2750769D01* +G37* +G36* +X8641334Y2749905D02* +G01* +X8650732Y2749905D01* +X8659215Y2750769D01* +X8666886Y2753106D01* +X8673947Y2756814D01* +X8680145Y2761945D01* +X8685225Y2768092D01* +X8688984Y2775204D01* +X8689543Y2776982D01* +X8641334Y2776982D01* +G37* +G36* +X8517940Y2804668D02* +G01* +X8566150Y2804668D01* +X8566150Y2827172D01* +X8517940Y2827172D01* +X8518499Y2825445D01* +X8520988Y2820720D01* +X8522055Y2817622D01* +X8522055Y2814269D01* +X8520988Y2811170D01* +X8518499Y2806446D01* +G37* +G36* +X8641334Y2804668D02* +G01* +X8689543Y2804668D01* +X8688984Y2806446D01* +X8686495Y2811170D01* +X8685428Y2814269D01* +X8685428Y2817622D01* +X8686495Y2820720D01* +X8688984Y2825445D01* +X8689543Y2827172D01* +X8641334Y2827172D01* +G37* +G36* +X8641334Y2854858D02* +G01* +X8689543Y2854858D01* +X8688984Y2856687D01* +X8686495Y2861310D01* +X8685428Y2864510D01* +X8685428Y2867812D01* +X8686495Y2870962D01* +X8688984Y2875635D01* +X8689543Y2877362D01* +X8641334Y2877362D01* +G37* +G36* +X8517940Y2854858D02* +G01* +X8566150Y2854858D01* +X8566150Y2877362D01* +X8517940Y2877362D01* +X8518499Y2875635D01* +X8520988Y2870962D01* +X8522055Y2867812D01* +X8522055Y2864510D01* +X8520988Y2861310D01* +X8518499Y2856687D01* +G37* +G36* +X8517940Y2905150D02* +G01* +X8566150Y2905150D01* +X8566150Y2927604D01* +X8517940Y2927604D01* +X8518499Y2925826D01* +X8520988Y2921203D01* +X8522055Y2918002D01* +X8522055Y2914751D01* +X8520988Y2911551D01* +X8518499Y2906928D01* +G37* +G36* +X8641334Y2905150D02* +G01* +X8689543Y2905150D01* +X8688984Y2906928D01* +X8686495Y2911551D01* +X8685428Y2914751D01* +X8685428Y2918002D01* +X8686495Y2921203D01* +X8688984Y2925826D01* +X8689543Y2927604D01* +X8641334Y2927604D01* +G37* +G36* +X34391Y3349142D02* +G01* +X107442Y3349142D01* +X107442Y3393694D01* +X7873Y3393694D01* +X7873Y3375609D01* +X8585Y3369310D01* +X10515Y3363823D01* +X13614Y3358946D01* +X17678Y3354882D01* +X22606Y3351733D01* +X28041Y3349853D01* +G37* +G36* +X280162Y3349142D02* +G01* +X353212Y3349142D01* +X359562Y3349853D01* +X364998Y3351733D01* +X369925Y3354882D01* +X373989Y3358946D01* +X377088Y3363823D01* +X379018Y3369310D01* +X379730Y3375609D01* +X379730Y3393694D01* +X280162Y3393694D01* +G37* +G36* +X7873Y3456432D02* +G01* +X107442Y3456432D01* +X107442Y3500983D01* +X34391Y3500983D01* +X28041Y3500221D01* +X22606Y3498342D01* +X17678Y3495243D01* +X13614Y3491179D01* +X10515Y3486302D01* +X8585Y3480765D01* +X7873Y3474516D01* +G37* +G36* +X280162Y3456432D02* +G01* +X379730Y3456432D01* +X379730Y3474516D01* +X379018Y3480765D01* +X377088Y3486302D01* +X373989Y3491179D01* +X369925Y3495243D01* +X364998Y3498342D01* +X359562Y3500221D01* +X353212Y3500983D01* +X280162Y3500983D01* +G37* +G36* +X280162Y3603040D02* +G01* +X353212Y3603040D01* +X359562Y3603701D01* +X364998Y3605631D01* +X369925Y3608730D01* +X373989Y3612845D01* +X377088Y3617772D01* +X379018Y3623157D01* +X379730Y3629507D01* +X379730Y3647592D01* +X280162Y3647592D01* +G37* +G36* +X34391Y3603040D02* +G01* +X107442Y3603040D01* +X107442Y3647592D01* +X7873Y3647592D01* +X7873Y3629507D01* +X8585Y3623157D01* +X10515Y3617772D01* +X13614Y3612845D01* +X17678Y3608730D01* +X22606Y3605631D01* +X28041Y3603701D01* +G37* +G36* +X280162Y3710279D02* +G01* +X379730Y3710279D01* +X379730Y3728364D01* +X379018Y3734663D01* +X377088Y3740099D01* +X373989Y3745026D01* +X369925Y3749141D01* +X364998Y3752189D01* +X359562Y3754120D01* +X353212Y3754882D01* +X280162Y3754882D01* +G37* +G36* +X7873Y3710279D02* +G01* +X107442Y3710279D01* +X107442Y3754882D01* +X34391Y3754882D01* +X28041Y3754120D01* +X22606Y3752189D01* +X17678Y3749141D01* +X13614Y3745026D01* +X10515Y3740099D01* +X8585Y3734663D01* +X7873Y3728364D01* +G37* +G36* +X280162Y4110736D02* +G01* +X353212Y4110736D01* +X359562Y4111498D01* +X364998Y4113428D01* +X369925Y4116527D01* +X373989Y4120540D01* +X377088Y4125468D01* +X379018Y4130903D01* +X379730Y4137202D01* +X379730Y4155287D01* +X280162Y4155287D01* +G37* +G36* +X34391Y4110736D02* +G01* +X107442Y4110736D01* +X107442Y4155287D01* +X7873Y4155287D01* +X7873Y4137202D01* +X8585Y4130903D01* +X10515Y4125468D01* +X13614Y4120540D01* +X17678Y4116527D01* +X22606Y4113428D01* +X28041Y4111498D01* +G37* +G36* +X-98755Y4153001D02* +G01* +X-83159Y4153001D01* +X-76809Y4153662D01* +X-71374Y4155592D01* +X-66446Y4158691D01* +X-62382Y4162806D01* +X-59283Y4167733D01* +X-57404Y4173169D01* +X-56692Y4179519D01* +X-56692Y4200042D01* +X-98755Y4200042D01* +G37* +G36* +X7873Y4218076D02* +G01* +X107442Y4218076D01* +X107442Y4262577D01* +X34391Y4262577D01* +X28041Y4261916D01* +X22606Y4259986D01* +X17678Y4256836D01* +X13614Y4252823D01* +X10515Y4247896D01* +X8585Y4242460D01* +X7873Y4236161D01* +G37* +G36* +X280162Y4218076D02* +G01* +X379730Y4218076D01* +X379730Y4236161D01* +X379018Y4242460D01* +X377088Y4247896D01* +X373989Y4252823D01* +X369925Y4256836D01* +X364998Y4259986D01* +X359562Y4261916D01* +X353212Y4262577D01* +X280162Y4262577D01* +G37* +G36* +X-173583Y4611319D02* +G01* +X-168046Y4611319D01* +X-168046Y4645914D01* +X-200101Y4645914D01* +X-200101Y4637786D01* +X-199390Y4631436D01* +X-197459Y4626000D01* +X-194360Y4621123D01* +X-190296Y4617059D01* +X-185369Y4613910D01* +X-179933Y4611979D01* +G37* +G36* +X301955Y4660239D02* +G01* +X310032Y4660239D01* +X310032Y4692345D01* +X275488Y4692345D01* +X275488Y4686757D01* +X276199Y4680407D01* +X278130Y4674971D01* +X281178Y4670044D01* +X285292Y4666030D01* +X290169Y4662932D01* +X295656Y4661001D01* +G37* +G36* +X352755Y4660239D02* +G01* +X360832Y4660239D01* +X367131Y4661001D01* +X372618Y4662932D01* +X377494Y4666030D01* +X381609Y4670044D01* +X384657Y4674971D01* +X385470Y4677257D01* +X387604Y4680813D01* +X391007Y4683201D01* +X395071Y4684115D01* +X399135Y4683201D01* +X402539Y4680813D01* +X405130Y4675936D01* +X408178Y4671060D01* +X412292Y4666996D01* +X417169Y4663948D01* +X422656Y4662017D01* +X428955Y4661255D01* +X437032Y4661255D01* +X437032Y4693361D01* +X401828Y4693361D01* +X397459Y4692345D01* +X352755Y4692345D01* +G37* +G36* +X497484Y4660798D02* +G01* +X497738Y4661560D01* +X500938Y4664710D01* +X504494Y4666996D01* +X508609Y4671060D01* +X511657Y4675936D01* +X513588Y4681474D01* +X514299Y4687722D01* +X514299Y4693361D01* +X479755Y4693361D01* +X479755Y4661255D01* +X487832Y4661255D01* +X492302Y4661763D01* +X496265Y4661458D01* +G37* +G36* +X7268870Y4791151D02* +G01* +X7300925Y4791151D01* +X7300925Y4825796D01* +X7295388Y4825796D01* +X7289038Y4825085D01* +X7283602Y4823155D01* +X7278674Y4820005D01* +X7274610Y4815992D01* +X7271512Y4811064D01* +X7269581Y4805629D01* +X7268870Y4799279D01* +G37* +G36* +X7166102Y4890922D02* +G01* +X7186675Y4890922D01* +X7186675Y4933035D01* +X7139584Y4933035D01* +X7139584Y4917440D01* +X7140295Y4911090D01* +X7142225Y4905603D01* +X7145324Y4900676D01* +X7149388Y4896612D01* +X7154316Y4893564D01* +X7159752Y4891684D01* +G37* +G36* +X7139584Y4990693D02* +G01* +X7186675Y4990693D01* +X7186675Y5032756D01* +X7166102Y5032756D01* +X7159752Y5031994D01* +X7154316Y5030114D01* +X7149388Y5027015D01* +X7145324Y5023002D01* +X7142225Y5018074D01* +X7140295Y5012588D01* +X7139584Y5006238D01* +G37* +G36* +X10882680Y5290921D02* +G01* +X10959744Y5290921D01* +X10959744Y5343042D01* +X10909147Y5343042D01* +X10902848Y5342280D01* +X10897362Y5340400D01* +X10892485Y5337251D01* +X10888370Y5333238D01* +X10885271Y5328310D01* +X10883392Y5322874D01* +X10882680Y5316524D01* +G37* +G36* +X11087404Y5290921D02* +G01* +X11164468Y5290921D01* +X11164468Y5316524D01* +X11163757Y5322874D01* +X11161877Y5328310D01* +X11158778Y5333238D01* +X11154664Y5337251D01* +X11149787Y5340400D01* +X11144300Y5342280D01* +X11138001Y5343042D01* +X11087404Y5343042D01* +G37* +G36* +X828497Y5359196D02* +G01* +X830884Y5362244D01* +X835304Y5364632D01* +X840232Y5367680D01* +X844296Y5371846D01* +X847394Y5376722D01* +X849325Y5382158D01* +X850036Y5388457D01* +X850036Y5396585D01* +X817981Y5396585D01* +X817981Y5362041D01* +X821639Y5362041D01* +X825652Y5361178D01* +G37* +G36* +X935990Y5366410D02* +G01* +X959053Y5366410D01* +X959053Y5424068D01* +X909472Y5424068D01* +X909472Y5392877D01* +X910183Y5386527D01* +X912114Y5381142D01* +X915212Y5376214D01* +X919276Y5372150D01* +X924204Y5369001D01* +X929640Y5367121D01* +G37* +G36* +X1031748Y5366410D02* +G01* +X1054811Y5366410D01* +X1061161Y5367121D01* +X1066596Y5369001D01* +X1071524Y5372150D01* +X1075588Y5376214D01* +X1078687Y5381142D01* +X1080617Y5386527D01* +X1081328Y5392877D01* +X1081328Y5424068D01* +X1031748Y5424068D01* +G37* +G36* +X11044377Y5443474D02* +G01* +X11055299Y5443474D01* +X11060176Y5443778D01* +X11070996Y5445607D01* +X11075720Y5446725D01* +X11086084Y5450230D01* +X11090554Y5452160D01* +X11100206Y5457342D01* +X11104321Y5459984D01* +X11112957Y5466638D01* +X11116614Y5469991D01* +X11124031Y5477967D01* +X11127079Y5481828D01* +X11133074Y5490972D01* +X11135410Y5495290D01* +X11139881Y5505246D01* +X11141506Y5509818D01* +X11144199Y5520385D01* +X11145062Y5525312D01* +X11146028Y5536539D01* +X11146028Y5541518D01* +X11145113Y5552440D01* +X11144300Y5557316D01* +X11141659Y5567832D01* +X11140033Y5572506D01* +X11135664Y5582462D01* +X11133328Y5586780D01* +X11127384Y5595975D01* +X11124387Y5599836D01* +X11116970Y5607862D01* +X11113363Y5611215D01* +X11104778Y5617921D01* +X11100663Y5620562D01* +X11091062Y5625846D01* +X11086592Y5627827D01* +X11076228Y5631332D01* +X11071504Y5632551D01* +X11060734Y5634329D01* +X11055858Y5634736D01* +X11044936Y5634736D01* +X11040008Y5634380D01* +X11029238Y5632653D01* +X11024514Y5631383D01* +X11014151Y5627878D01* +X11009680Y5625896D01* +X11000079Y5620715D01* +X10995964Y5618073D01* +X10987328Y5611368D01* +X10983722Y5608116D01* +X10976305Y5600039D01* +X10973257Y5596178D01* +X10967262Y5587085D01* +X10964926Y5582767D01* +X10960506Y5572709D01* +X10958931Y5568137D01* +X10956188Y5557520D01* +X10955375Y5552694D01* +X10954461Y5541873D01* +X10954461Y5536946D01* +X10955324Y5526074D01* +X10956086Y5521248D01* +X10958779Y5510580D01* +X10960354Y5506008D01* +X10964672Y5495950D01* +X10967008Y5491581D01* +X10972952Y5482437D01* +X10975949Y5478576D01* +X10983315Y5470550D01* +X10986922Y5467146D01* +X10995507Y5460441D01* +X10999622Y5457799D01* +X11009172Y5452516D01* +X11013694Y5450535D01* +X11024006Y5446979D01* +X11028730Y5445709D01* +X11039500Y5443880D01* +G37* +G36* +X5705703Y5508955D02* +G01* +X5798820Y5508955D01* +X5798820Y5558485D01* +X5679236Y5558485D01* +X5679236Y5535472D01* +X5679948Y5529122D01* +X5681878Y5523687D01* +X5684926Y5518759D01* +X5689041Y5514644D01* +X5693918Y5511596D01* +X5699404Y5509615D01* +G37* +G36* +X6011468Y5508955D02* +G01* +X6104585Y5508955D01* +X6110884Y5509615D01* +X6116370Y5511596D01* +X6121247Y5514644D01* +X6125362Y5518759D01* +X6128410Y5523687D01* +X6130340Y5529122D01* +X6131052Y5535472D01* +X6131052Y5558485D01* +X6011468Y5558485D01* +G37* +G36* +X1031748Y5512968D02* +G01* +X1081328Y5512968D01* +X1081328Y5544159D01* +X1080617Y5550509D01* +X1078687Y5555945D01* +X1075588Y5560872D01* +X1071524Y5564886D01* +X1066596Y5568035D01* +X1061161Y5569864D01* +X1054811Y5570626D01* +X1031748Y5570626D01* +G37* +G36* +X909472Y5512968D02* +G01* +X959053Y5512968D01* +X959053Y5570626D01* +X935990Y5570626D01* +X929640Y5569864D01* +X924204Y5568035D01* +X919276Y5564886D01* +X915212Y5560872D01* +X912114Y5555945D01* +X910183Y5550509D01* +X909472Y5544159D01* +G37* +G36* +X6011468Y5631230D02* +G01* +X6131052Y5631230D01* +X6131052Y5654243D01* +X6130340Y5660593D01* +X6128410Y5666028D01* +X6125362Y5670956D01* +X6121247Y5675071D01* +X6116370Y5678119D01* +X6110884Y5680100D01* +X6104585Y5680760D01* +X6011468Y5680760D01* +G37* +G36* +X5679236Y5631230D02* +G01* +X5798820Y5631230D01* +X5798820Y5680760D01* +X5705703Y5680760D01* +X5699404Y5680100D01* +X5693918Y5678119D01* +X5689041Y5675071D01* +X5684926Y5670956D01* +X5681878Y5666028D01* +X5679948Y5660593D01* +X5679236Y5654243D01* +G37* +G36* +X5464149Y5713933D02* +G01* +X6534810Y5713933D01* +X6548323Y5714796D01* +X6561277Y5717387D01* +X6573723Y5721604D01* +X6586321Y5727903D01* +X6590842Y5728919D01* +X6649770Y5728919D01* +X6662369Y5729884D01* +X6674358Y5732424D01* +X6685838Y5736742D01* +X6696557Y5742635D01* +X6706362Y5749950D01* +X6715048Y5758637D01* +X6722364Y5768441D01* +X6728256Y5779211D01* +X6732524Y5790641D01* +X6735165Y5802630D01* +X6736029Y5814872D01* +X6735165Y5827115D01* +X6732524Y5839002D01* +X6728256Y5850534D01* +X6722364Y5861304D01* +X6715048Y5871057D01* +X6706362Y5879795D01* +X6696557Y5887110D01* +X6685838Y5893003D01* +X6674358Y5897270D01* +X6662369Y5899861D01* +X6649770Y5900775D01* +X6590842Y5900775D01* +X6586321Y5901842D01* +X6573723Y5908090D01* +X6570522Y5909157D01* +X6567017Y5911189D01* +X6564579Y5914491D01* +X6563614Y5918403D01* +X6564274Y5922365D01* +X6566458Y5925820D01* +X6569811Y5928156D01* +X6573774Y5928918D01* +X6649770Y5928918D01* +X6662369Y5929833D01* +X6674358Y5932474D01* +X6685838Y5936691D01* +X6696557Y5942584D01* +X6706362Y5949899D01* +X6715048Y5958586D01* +X6722364Y5968390D01* +X6728256Y5979160D01* +X6732524Y5990691D01* +X6735165Y6002578D01* +X6736029Y6014821D01* +X6735165Y6027064D01* +X6732524Y6039053D01* +X6728256Y6050483D01* +X6722364Y6061252D01* +X6715048Y6071057D01* +X6706362Y6079744D01* +X6696557Y6087059D01* +X6681419Y6095441D01* +X6679133Y6098794D01* +X6678320Y6102807D01* +X6678320Y6478320D01* +X6677558Y6484620D01* +X6675678Y6490106D01* +X6672580Y6494983D01* +X6668516Y6499148D01* +X6663588Y6502196D01* +X6658152Y6504127D01* +X6651802Y6504787D01* +X6222898Y6504787D01* +X6219037Y6505600D01* +X6215735Y6507835D01* +X6202273Y6521246D01* +X6200089Y6524548D01* +X6199327Y6528460D01* +X6199327Y6533489D01* +X6200241Y6537756D01* +X6202781Y6541211D01* +X6206540Y6543243D01* +X6210808Y6543598D01* +X6215684Y6541617D01* +X6221171Y6539738D01* +X6227470Y6538976D01* +X6294831Y6538976D01* +X6301130Y6539738D01* +X6306616Y6541617D01* +X6311493Y6544665D01* +X6315608Y6548729D01* +X6318707Y6553657D01* +X6320586Y6559143D01* +X6321298Y6565493D01* +X6321298Y6584289D01* +X6320586Y6590639D01* +X6319723Y6594906D01* +X6320586Y6599174D01* +X6321298Y6605422D01* +X6321298Y6608825D01* +X6322060Y6612686D01* +X6324295Y6615988D01* +X6327597Y6618274D01* +X6331458Y6618986D01* +X6342329Y6618986D01* +X6346190Y6618274D01* +X6349492Y6615988D01* +X6356502Y6609029D01* +X6362750Y6603949D01* +X6369405Y6600545D01* +X6376771Y6598564D01* +X6382664Y6598107D01* +X6397904Y6598107D01* +X6401816Y6597396D01* +X6405118Y6595109D01* +X6409029Y6591198D01* +X6417005Y6585661D01* +X6425844Y6581495D01* +X6435242Y6578955D01* +X6444945Y6578193D01* +X6454648Y6578955D01* +X6464046Y6581495D01* +X6472885Y6585661D01* +X6480860Y6591198D01* +X6487718Y6598107D01* +X6493306Y6606133D01* +X6497421Y6614922D01* +X6499961Y6624320D01* +X6500825Y6634022D01* +X6500622Y6636207D01* +X6501130Y6640423D01* +X6503314Y6644030D01* +X6506768Y6646468D01* +X6510934Y6647281D01* +X6515049Y6646316D01* +X6521297Y6643420D01* +X6530695Y6640880D01* +X6540398Y6640017D01* +X6550101Y6640880D01* +X6559499Y6643420D01* +X6568338Y6647586D01* +X6576314Y6653123D01* +X6583172Y6659981D01* +X6588759Y6667957D01* +X6592874Y6676847D01* +X6595414Y6686245D01* +X6596278Y6695948D01* +X6595414Y6705650D01* +X6592874Y6715048D01* +X6588759Y6723888D01* +X6583172Y6731812D01* +X6576314Y6738670D01* +X6568338Y6744309D01* +X6559499Y6748373D01* +X6550101Y6750913D01* +X6540398Y6751777D01* +X6530695Y6750913D01* +X6521297Y6748373D01* +X6512458Y6744309D01* +X6504482Y6738670D01* +X6501536Y6735978D01* +X6497878Y6733235D01* +X6493865Y6731406D01* +X6489700Y6730796D01* +X6331458Y6730796D01* +X6327597Y6731609D01* +X6324295Y6733794D01* +X6322060Y6737146D01* +X6321298Y6741007D01* +X6321298Y6744360D01* +X6320586Y6750710D01* +X6318707Y6756146D01* +X6315608Y6761073D01* +X6311493Y6765086D01* +X6306616Y6768236D01* +X6301130Y6770065D01* +X6294831Y6770827D01* +X6284620Y6770827D01* +X6284620Y6741007D01* +X6283858Y6737146D01* +X6281674Y6733794D01* +X6278372Y6731609D01* +X6274460Y6730796D01* +X6247841Y6730796D01* +X6243929Y6731609D01* +X6240627Y6733794D01* +X6238443Y6737096D01* +X6237681Y6741007D01* +X6237681Y6770827D01* +X6227470Y6770827D01* +X6221171Y6770065D01* +X6210808Y6766255D01* +X6206540Y6766509D01* +X6202781Y6768592D01* +X6200241Y6772097D01* +X6199327Y6776262D01* +X6199327Y6801510D01* +X6198311Y6814108D01* +X6198311Y6908292D01* +X6197600Y6914642D01* +X6195669Y6920128D01* +X6193586Y6923379D01* +X6192164Y6927494D01* +X6192469Y6931710D01* +X6194552Y6935470D01* +X6198006Y6938060D01* +X6202222Y6938975D01* +X6218580Y6938975D01* +X6218580Y6988556D01* +X6160922Y6988556D01* +X6160922Y6965442D01* +X6161633Y6959193D01* +X6163513Y6953656D01* +X6165596Y6950405D01* +X6167069Y6946290D01* +X6166713Y6942074D01* +X6164630Y6938314D01* +X6161227Y6935724D01* +X6157010Y6934809D01* +X6140399Y6934809D01* +X6136182Y6935724D01* +X6132779Y6938314D01* +X6130696Y6942074D01* +X6130340Y6946290D01* +X6131814Y6950405D01* +X6133896Y6953656D01* +X6135776Y6959193D01* +X6136538Y6965442D01* +X6136538Y7084364D01* +X6135776Y7090664D01* +X6133896Y7096150D01* +X6130798Y7101027D01* +X6126734Y7105091D01* +X6121806Y7108190D01* +X6116370Y7110120D01* +X6110020Y7110831D01* +X5958789Y7110831D01* +X5952439Y7110120D01* +X5947003Y7108190D01* +X5942076Y7105091D01* +X5938012Y7101027D01* +X5934913Y7096150D01* +X5933033Y7090664D01* +X5932322Y7084364D01* +X5932322Y6965442D01* +X5932678Y6962140D01* +X5932271Y6957923D01* +X5930138Y6954164D01* +X5926734Y6951675D01* +X5922568Y6950862D01* +X5708802Y6950862D01* +X5698083Y6949998D01* +X5688025Y6947611D01* +X5678474Y6943648D01* +X5669686Y6938213D01* +X5661507Y6931202D01* +X5512054Y6781850D01* +X5505094Y6773672D01* +X5499709Y6764832D01* +X5495747Y6755231D01* +X5493308Y6745224D01* +X5492546Y6734962D01* +X5493308Y6724599D01* +X5495747Y6714591D01* +X5499709Y6704990D01* +X5504992Y6696405D01* +X5506110Y6693814D01* +X5506466Y6691071D01* +X5506466Y6675170D01* +X5507177Y6668871D01* +X5509107Y6663385D01* +X5511698Y6659321D01* +X5513070Y6655765D01* +X5513070Y6652056D01* +X5511698Y6648551D01* +X5509107Y6644386D01* +X5507177Y6638950D01* +X5506466Y6632600D01* +X5506466Y6620967D01* +X5505704Y6617055D01* +X5503519Y6613855D01* +X5500217Y6611569D01* +X5496306Y6610807D01* +X5351221Y6610807D01* +X5347309Y6611569D01* +X5344007Y6613855D01* +X5341823Y6617055D01* +X5341061Y6620967D01* +X5341061Y7038340D01* +X5341772Y7042099D01* +X5345379Y7051040D01* +X5348986Y7064806D01* +X5350814Y7078878D01* +X5350814Y7093102D01* +X5348986Y7107174D01* +X5345379Y7120940D01* +X5340045Y7134098D01* +X5333085Y7146493D01* +X5324602Y7157821D01* +X5314696Y7168032D01* +X5303570Y7176871D01* +X5291429Y7184237D01* +X5278424Y7189978D01* +X5264810Y7194042D01* +X5250789Y7196328D01* +X5236616Y7196785D01* +X5222443Y7195413D01* +X5208574Y7192314D01* +X5195265Y7187387D01* +X5182666Y7180783D01* +X5171033Y7172706D01* +X5160467Y7163104D01* +X5151272Y7152335D01* +X5143550Y7140397D01* +X5137353Y7127544D01* +X5132882Y7114133D01* +X5130190Y7100112D01* +X5129276Y7085939D01* +X5130190Y7071766D01* +X5132882Y7057847D01* +X5137353Y7044385D01* +X5138978Y7040422D01* +X5139232Y7038136D01* +X5139232Y6038900D01* +X5140096Y6025388D01* +X5142687Y6012383D01* +X5146954Y5999937D01* +X5152745Y5988100D01* +X5160111Y5977077D01* +X5169001Y5966917D01* +X5392216Y5743702D01* +X5402427Y5734812D01* +X5413400Y5727496D01* +X5425236Y5721604D01* +X5437733Y5717387D01* +X5450636Y5714796D01* +G37* +G36* +X9392310Y6005880D02* +G01* +X9397898Y6005880D01* +X9397898Y6040475D01* +X9365843Y6040475D01* +X9365843Y6032347D01* +X9366554Y6025997D01* +X9368485Y6020562D01* +X9371533Y6015685D01* +X9375648Y6011621D01* +X9380524Y6008471D01* +X9386011Y6006541D01* +G37* +G36* +X4391152Y6043523D02* +G01* +X4400854Y6044387D01* +X4410252Y6046927D01* +X4419092Y6050991D01* +X4427067Y6056630D01* +X4433925Y6063538D01* +X4439513Y6071463D01* +X4443628Y6080252D01* +X4446168Y6089751D01* +X4447032Y6099352D01* +X4446168Y6109055D01* +X4443628Y6118555D01* +X4439513Y6127343D01* +X4438700Y6128512D01* +X4437024Y6132576D01* +X4437227Y6136944D01* +X4439259Y6140856D01* +X4442714Y6143599D01* +X4447032Y6144514D01* +X4485386Y6144514D01* +X4490008Y6144666D01* +X4494428Y6145276D01* +X4498746Y6146241D01* +X4503013Y6147562D01* +X4507077Y6149238D01* +X4511040Y6151372D01* +X4514799Y6153759D01* +X4518304Y6156401D01* +X4521758Y6159601D01* +X4815586Y6453378D01* +X4818481Y6455410D01* +X4824933Y6458508D01* +X4832908Y6464096D01* +X4839817Y6470904D01* +X4845405Y6478879D01* +X4849520Y6487718D01* +X4852060Y6497167D01* +X4852873Y6506870D01* +X4852060Y6516522D01* +X4849520Y6525971D01* +X4845405Y6534759D01* +X4838954Y6543802D01* +X4837531Y6546646D01* +X4837023Y6549694D01* +X4837023Y7140143D01* +X4837531Y7143191D01* +X4838903Y7145985D01* +X4844491Y7154062D01* +X4848606Y7162850D01* +X4851146Y7172299D01* +X4852009Y7181951D01* +X4851146Y7191603D01* +X4848606Y7201103D01* +X4844491Y7209891D01* +X4838903Y7217816D01* +X4832045Y7224725D01* +X4824069Y7230364D01* +X4815230Y7234428D01* +X4805832Y7236968D01* +X4796129Y7237831D01* +X4786426Y7236968D01* +X4777028Y7234428D01* +X4768189Y7230364D01* +X4760214Y7224725D01* +X4753356Y7217816D01* +X4747768Y7209891D01* +X4743653Y7201103D01* +X4741113Y7191603D01* +X4740249Y7181951D01* +X4741113Y7172299D01* +X4743653Y7162850D01* +X4747768Y7154062D01* +X4753406Y7145985D01* +X4754778Y7143140D01* +X4755235Y7140143D01* +X4755235Y6918401D01* +X4754422Y6914438D01* +X4752136Y6911086D01* +X4748733Y6908952D01* +X4744720Y6908241D01* +X4730851Y6912000D01* +X4721148Y6912864D01* +X4711446Y6912000D01* +X4702048Y6909460D01* +X4693208Y6905294D01* +X4685233Y6899757D01* +X4684014Y6898538D01* +X4680712Y6896353D01* +X4676851Y6895541D01* +X4422394Y6895541D01* +X4419041Y6896150D01* +X4416094Y6897827D01* +X4413808Y6900316D01* +X4412081Y6903110D01* +X4407966Y6907123D01* +X4403090Y6910222D01* +X4399889Y6911390D01* +X4396333Y6913473D01* +X4393946Y6916877D01* +X4393082Y6920941D01* +X4393946Y6925056D01* +X4396333Y6928408D01* +X4399889Y6930593D01* +X4403090Y6931659D01* +X4407966Y6934758D01* +X4412081Y6938873D01* +X4413808Y6941616D01* +X4416094Y6944156D01* +X4419041Y6945782D01* +X4422394Y6946341D01* +X4424781Y6946341D01* +X4428693Y6945630D01* +X4431995Y6943344D01* +X4433214Y6942175D01* +X4441190Y6936536D01* +X4450029Y6932472D01* +X4459427Y6929932D01* +X4469130Y6929120D01* +X4478832Y6929932D01* +X4488230Y6932472D01* +X4497070Y6936536D01* +X4505045Y6942175D01* +X4511903Y6949084D01* +X4517491Y6957009D01* +X4521606Y6965797D01* +X4524146Y6975297D01* +X4525010Y6984898D01* +X4524146Y6994601D01* +X4521606Y7004100D01* +X4517491Y7012838D01* +X4511903Y7020864D01* +X4505045Y7027773D01* +X4497070Y7033310D01* +X4488230Y7037476D01* +X4478832Y7039965D01* +X4469130Y7040829D01* +X4459427Y7039965D01* +X4450029Y7037476D01* +X4441190Y7033310D01* +X4433214Y7027773D01* +X4431995Y7026503D01* +X4428744Y7024370D01* +X4424832Y7023557D01* +X4422394Y7023557D01* +X4419041Y7024166D01* +X4416044Y7025792D01* +X4413808Y7028281D01* +X4412081Y7031075D01* +X4407966Y7035139D01* +X4403090Y7038187D01* +X4397603Y7040118D01* +X4391304Y7040880D01* +X4342434Y7040880D01* +X4336135Y7040118D01* +X4330649Y7038187D01* +X4326534Y7035647D01* +X4323029Y7034275D01* +X4319270Y7034275D01* +X4315764Y7035647D01* +X4311650Y7038187D01* +X4306163Y7040118D01* +X4299864Y7040880D01* +X4250994Y7040880D01* +X4244695Y7040118D01* +X4239209Y7038187D01* +X4234332Y7035139D01* +X4230217Y7031075D01* +X4228490Y7028281D01* +X4226255Y7025792D01* +X4223258Y7024166D01* +X4219905Y7023557D01* +X4141470Y7023557D01* +X4137558Y7024370D01* +X4134256Y7026503D01* +X4133037Y7027773D01* +X4125061Y7033310D01* +X4116273Y7037476D01* +X4106824Y7039965D01* +X4097172Y7040829D01* +X4087469Y7039965D01* +X4078020Y7037476D01* +X4069232Y7033310D01* +X4061256Y7027773D01* +X4051554Y7018172D01* +X4047947Y7016699D01* +X4044086Y7016800D01* +X4040530Y7018172D01* +X4037736Y7020915D01* +X4034942Y7024827D01* +X4028033Y7031736D01* +X4020058Y7037374D01* +X4011269Y7041438D01* +X4001820Y7043978D01* +X3997045Y7044385D01* +X3993235Y7045452D01* +X3990187Y7047890D01* +X3988257Y7051294D01* +X3987749Y7055205D01* +X3988815Y7059015D01* +X3991152Y7062114D01* +X3996182Y7064705D01* +X4001058Y7067803D01* +X4005173Y7071817D01* +X4008221Y7076744D01* +X4010151Y7082180D01* +X4010863Y7088530D01* +X4010863Y7092238D01* +X4011625Y7096099D01* +X4013809Y7099401D01* +X4017111Y7101535D01* +X4021023Y7102398D01* +X4076192Y7102398D01* +X4080052Y7101535D01* +X4083354Y7099401D01* +X4085539Y7096099D01* +X4086351Y7092238D01* +X4086351Y7086498D01* +X4087063Y7080199D01* +X4088942Y7074712D01* +X4092041Y7069836D01* +X4096105Y7065772D01* +X4101033Y7062622D01* +X4106468Y7060793D01* +X4112818Y7060031D01* +X4201668Y7060031D01* +X4208018Y7060793D01* +X4213453Y7062622D01* +X4218381Y7065772D01* +X4222445Y7069836D01* +X4225544Y7074712D01* +X4227423Y7080199D01* +X4228134Y7086498D01* +X4228134Y7195362D01* +X4227423Y7201662D01* +X4225544Y7207148D01* +X4222445Y7212025D01* +X4218381Y7216190D01* +X4209542Y7221524D01* +X4207154Y7224928D01* +X4206290Y7228992D01* +X4207154Y7233005D01* +X4209542Y7236358D01* +X4218381Y7241743D01* +X4222445Y7245807D01* +X4225544Y7250785D01* +X4227423Y7256221D01* +X4228134Y7262571D01* +X4228134Y7268159D01* +X4228947Y7272070D01* +X4231132Y7275423D01* +X4234434Y7277557D01* +X4238294Y7278370D01* +X4274007Y7278370D01* +X4278426Y7277353D01* +X4281525Y7275728D01* +X4290263Y7269581D01* +X4299051Y7265517D01* +X4308500Y7262926D01* +X4318203Y7262114D01* +X4327855Y7262926D01* +X4337304Y7265517D01* +X4346092Y7269581D01* +X4354068Y7275220D01* +X4360976Y7282078D01* +X4366564Y7290053D01* +X4370679Y7298893D01* +X4373219Y7308240D01* +X4374032Y7317943D01* +X4373219Y7327696D01* +X4370679Y7337044D01* +X4366564Y7345883D01* +X4360976Y7353909D01* +X4354068Y7360767D01* +X4346092Y7366304D01* +X4337304Y7370470D01* +X4327855Y7373010D01* +X4318203Y7373874D01* +X4308500Y7373010D01* +X4299051Y7370470D01* +X4290263Y7366304D01* +X4282186Y7360716D01* +X4279798Y7358430D01* +X4276547Y7356348D01* +X4272737Y7355535D01* +X4238294Y7355535D01* +X4234434Y7356348D01* +X4231132Y7358532D01* +X4228947Y7361885D01* +X4228134Y7365746D01* +X4228134Y7371334D01* +X4227423Y7377684D01* +X4225544Y7383170D01* +X4222445Y7388098D01* +X4218381Y7392162D01* +X4213453Y7395209D01* +X4208018Y7397140D01* +X4201668Y7397902D01* +X4112818Y7397902D01* +X4106468Y7397140D01* +X4101033Y7395209D01* +X4096105Y7392162D01* +X4092041Y7388098D01* +X4088942Y7383170D01* +X4087063Y7377684D01* +X4086351Y7371334D01* +X4086351Y7262571D01* +X4087063Y7256221D01* +X4088942Y7250785D01* +X4092041Y7245807D01* +X4096105Y7241743D01* +X4104944Y7236358D01* +X4107332Y7233005D01* +X4108196Y7228992D01* +X4107332Y7224928D01* +X4104944Y7221524D01* +X4096105Y7216190D01* +X4092041Y7212025D01* +X4088942Y7207148D01* +X4087063Y7201662D01* +X4086351Y7195362D01* +X4086351Y7189774D01* +X4085539Y7185863D01* +X4083354Y7182561D01* +X4080052Y7180325D01* +X4076192Y7179614D01* +X4022750Y7179614D01* +X4020007Y7179767D01* +X4016451Y7180783D01* +X4013504Y7183120D01* +X4011523Y7186218D01* +X4010863Y7189927D01* +X4010863Y7197344D01* +X4010151Y7203694D01* +X4008221Y7209129D01* +X4005173Y7214057D01* +X4001058Y7218172D01* +X3992270Y7223556D01* +X3989832Y7226909D01* +X3989019Y7230973D01* +X3989832Y7234986D01* +X3992270Y7238390D01* +X4001058Y7243724D01* +X4005173Y7247890D01* +X4008221Y7252766D01* +X4010151Y7258253D01* +X4010863Y7264552D01* +X4010863Y7285126D01* +X3968800Y7285126D01* +X3968800Y7234021D01* +X3968038Y7230109D01* +X3965803Y7226858D01* +X3962501Y7224623D01* +X3958640Y7223912D01* +X3921251Y7223912D01* +X3917391Y7224623D01* +X3914089Y7226858D01* +X3911854Y7230109D01* +X3911092Y7234021D01* +X3911092Y7285126D01* +X3869029Y7285126D01* +X3869029Y7264552D01* +X3869740Y7258253D01* +X3871671Y7252766D01* +X3874719Y7247890D01* +X3878834Y7243724D01* +X3887622Y7238390D01* +X3890060Y7234986D01* +X3890873Y7230973D01* +X3890060Y7226909D01* +X3887622Y7223556D01* +X3878834Y7218172D01* +X3874719Y7214057D01* +X3871671Y7209129D01* +X3869740Y7203694D01* +X3869029Y7197344D01* +X3869029Y7088530D01* +X3869740Y7082180D01* +X3871671Y7076744D01* +X3873754Y7073493D01* +X3875024Y7070293D01* +X3875227Y7066889D01* +X3874262Y7063638D01* +X3872331Y7060895D01* +X3778961Y6967575D01* +X3775710Y6965340D01* +X3771798Y6964578D01* +X3731920Y6964578D01* +X3728059Y6965340D01* +X3724757Y6967575D01* +X3722573Y6970826D01* +X3721760Y6974687D01* +X3722573Y6978599D01* +X3724757Y6981901D01* +X3750970Y7008164D01* +X3756101Y7014413D01* +X3759657Y7021017D01* +X3761841Y7028281D01* +X3762654Y7036257D01* +X3762654Y7052309D01* +X3763314Y7055967D01* +X3765245Y7059066D01* +X3768140Y7061352D01* +X3771646Y7062419D01* +X3774795Y7062774D01* +X3780282Y7064705D01* +X3785158Y7067803D01* +X3789273Y7071817D01* +X3792321Y7076744D01* +X3794251Y7082180D01* +X3794963Y7088530D01* +X3794963Y7197344D01* +X3794251Y7203694D01* +X3792321Y7209129D01* +X3789273Y7214057D01* +X3785158Y7218172D01* +X3776370Y7223556D01* +X3773932Y7226909D01* +X3773119Y7230973D01* +X3773932Y7234986D01* +X3776370Y7238390D01* +X3785158Y7243724D01* +X3789273Y7247890D01* +X3792321Y7252766D01* +X3794251Y7258253D01* +X3794963Y7264552D01* +X3794963Y7373416D01* +X3794251Y7379665D01* +X3792321Y7385202D01* +X3789273Y7390079D01* +X3785158Y7394143D01* +X3780282Y7397242D01* +X3774795Y7399121D01* +X3768496Y7399883D01* +X3679596Y7399883D01* +X3673297Y7399121D01* +X3667810Y7397242D01* +X3662934Y7394143D01* +X3658819Y7390079D01* +X3655771Y7385202D01* +X3653840Y7379665D01* +X3653129Y7373416D01* +X3653129Y7362545D01* +X3652469Y7358989D01* +X3650640Y7355941D01* +X3647744Y7353604D01* +X3642868Y7351064D01* +X3636670Y7345883D01* +X3610813Y7320025D01* +X3603751Y7314184D01* +X3602075Y7313066D01* +X3594862Y7309205D01* +X3593033Y7308494D01* +X3583228Y7305700D01* +X3564432Y7304024D01* +X3555034Y7301433D01* +X3546195Y7297369D01* +X3538220Y7291730D01* +X3531362Y7284821D01* +X3525774Y7276896D01* +X3521659Y7268108D01* +X3519119Y7258659D01* +X3518255Y7248956D01* +X3519119Y7239253D01* +X3521659Y7229856D01* +X3525774Y7221067D01* +X3531362Y7213041D01* +X3538220Y7206132D01* +X3546195Y7200595D01* +X3555034Y7196429D01* +X3564432Y7193889D01* +X3574135Y7193076D01* +X3583838Y7193889D01* +X3593236Y7196429D01* +X3602075Y7200595D01* +X3610051Y7206132D01* +X3616909Y7213041D01* +X3625138Y7225182D01* +X3646119Y7246162D01* +X3649421Y7248398D01* +X3653332Y7249159D01* +X3657193Y7248398D01* +X3660495Y7246162D01* +X3662934Y7243724D01* +X3671722Y7238390D01* +X3674160Y7234986D01* +X3674973Y7230973D01* +X3674160Y7226909D01* +X3671722Y7223556D01* +X3662934Y7218172D01* +X3658819Y7214057D01* +X3655771Y7209129D01* +X3653840Y7203694D01* +X3653129Y7197344D01* +X3653129Y7088530D01* +X3653840Y7082180D01* +X3655771Y7076744D01* +X3658819Y7071817D01* +X3662934Y7067803D01* +X3667810Y7064705D01* +X3677513Y7061250D01* +X3680612Y7057999D01* +X3682085Y7053732D01* +X3681526Y7049262D01* +X3679139Y7045502D01* +X3651199Y7017512D01* +X3647897Y7015378D01* +X3643985Y7014565D01* +X3624732Y7014565D01* +X3615029Y7015886D01* +X3515664Y7015886D01* +X3511804Y7016597D01* +X3508501Y7018883D01* +X3506266Y7022185D01* +X3505504Y7025995D01* +X3505504Y7044588D01* +X3478936Y7044588D01* +X3478936Y7011670D01* +X3478123Y7007656D01* +X3475736Y7004303D01* +X3472281Y7002170D01* +X3468217Y7001509D01* +X3462121Y7001865D01* +X3458514Y7002830D01* +X3455415Y7004913D01* +X3453384Y7008063D01* +X3452571Y7011670D01* +X3453129Y7015429D01* +X3454806Y7020255D01* +X3455517Y7026503D01* +X3455517Y7125411D01* +X3454806Y7131710D01* +X3452825Y7137349D01* +X3452266Y7140702D01* +X3452266Y7151827D01* +X3447897Y7153097D01* +X3444494Y7156043D01* +X3442715Y7160158D01* +X3442868Y7164628D01* +X3445154Y7173214D01* +X3446018Y7182916D01* +X3445154Y7192568D01* +X3442614Y7202017D01* +X3438499Y7210856D01* +X3432911Y7218781D01* +X3426053Y7225639D01* +X3418078Y7231278D01* +X3409238Y7235393D01* +X3399840Y7237882D01* +X3390137Y7238796D01* +X3380435Y7237882D01* +X3371037Y7235393D01* +X3362198Y7231278D01* +X3354222Y7225639D01* +X3353003Y7224522D01* +X3349701Y7222236D01* +X3345840Y7221524D01* +X3342894Y7221524D01* +X3334867Y7220712D01* +X3327654Y7218476D01* +X3320999Y7214920D01* +X3314750Y7209891D01* +X3288639Y7183729D01* +X3283559Y7177582D01* +X3280003Y7170877D01* +X3277768Y7163612D01* +X3277006Y7155637D01* +X3277006Y7135114D01* +X3275685Y7125462D01* +X3274364Y7121448D01* +X3271570Y7118299D01* +X3267710Y7116622D01* +X3263493Y7116622D01* +X3259683Y7118299D01* +X3256838Y7121448D01* +X3255517Y7125462D01* +X3254197Y7135164D01* +X3254197Y7210298D01* +X3254908Y7213853D01* +X3256788Y7217003D01* +X3259734Y7219289D01* +X3263239Y7220356D01* +X3266897Y7220762D01* +X3272332Y7222693D01* +X3277260Y7225741D01* +X3281324Y7229856D01* +X3284423Y7234783D01* +X3286353Y7240219D01* +X3287064Y7246569D01* +X3287064Y7257186D01* +X3288029Y7261453D01* +X3290722Y7264958D01* +X3293160Y7266940D01* +X3305759Y7274915D01* +X3316274Y7279843D01* +X3320135Y7280808D01* +X3324098Y7280249D01* +X3331006Y7277709D01* +X3337255Y7276947D01* +X3386124Y7276947D01* +X3392424Y7277709D01* +X3397910Y7279640D01* +X3402025Y7282230D01* +X3405530Y7283602D01* +X3409289Y7283602D01* +X3412794Y7282230D01* +X3416909Y7279640D01* +X3422396Y7277709D01* +X3428695Y7276947D01* +X3434283Y7276947D01* +X3434283Y7311593D01* +X3422751Y7311593D01* +X3418890Y7312355D01* +X3415588Y7314488D01* +X3413353Y7317841D01* +X3412591Y7321753D01* +X3412591Y7344105D01* +X3413353Y7348016D01* +X3415588Y7351268D01* +X3418890Y7353503D01* +X3422751Y7354214D01* +X3434283Y7354214D01* +X3434283Y7388809D01* +X3428695Y7388809D01* +X3422396Y7388148D01* +X3416909Y7386218D01* +X3412794Y7383576D01* +X3409289Y7382256D01* +X3405530Y7382256D01* +X3402025Y7383576D01* +X3397910Y7386218D01* +X3392424Y7388148D01* +X3386124Y7388809D01* +X3337255Y7388809D01* +X3330956Y7388148D01* +X3325469Y7386218D01* +X3320592Y7383068D01* +X3316478Y7379004D01* +X3310991Y7369809D01* +X3307638Y7367371D01* +X3303574Y7366609D01* +X3262579Y7366609D01* +X3257651Y7366253D01* +X3255010Y7366558D01* +X3241649Y7365695D01* +X3228289Y7363155D01* +X3222853Y7361885D01* +X3151733Y7361885D01* +X3145383Y7361174D01* +X3139948Y7359294D01* +X3135020Y7356144D01* +X3130956Y7352131D01* +X3125571Y7343292D01* +X3122218Y7340853D01* +X3118154Y7339990D01* +X3114090Y7340853D01* +X3110687Y7343292D01* +X3105353Y7352131D01* +X3101238Y7356144D01* +X3096361Y7359294D01* +X3090875Y7361174D01* +X3084576Y7361885D01* +X3064002Y7361885D01* +X3064002Y7319822D01* +X3115056Y7319822D01* +X3118967Y7319009D01* +X3122269Y7316876D01* +X3124454Y7313523D01* +X3125216Y7309612D01* +X3125216Y7272324D01* +X3124454Y7268413D01* +X3122269Y7265111D01* +X3118967Y7262875D01* +X3115056Y7262164D01* +X3064002Y7262164D01* +X3064002Y7220102D01* +X3084576Y7220102D01* +X3090875Y7220762D01* +X3096361Y7222693D01* +X3101238Y7225741D01* +X3105353Y7229856D01* +X3110687Y7238695D01* +X3114090Y7241082D01* +X3118154Y7241895D01* +X3122218Y7241082D01* +X3125571Y7238695D01* +X3130956Y7229856D01* +X3135020Y7225741D01* +X3139948Y7222693D01* +X3145383Y7220762D01* +X3151733Y7220102D01* +X3166821Y7220102D01* +X3170732Y7219238D01* +X3174034Y7217105D01* +X3176219Y7213803D01* +X3176981Y7209942D01* +X3176981Y7162038D01* +X3176219Y7158177D01* +X3174034Y7154824D01* +X3170732Y7152640D01* +X3166821Y7151827D01* +X3152190Y7151827D01* +X3145840Y7151166D01* +X3140405Y7149287D01* +X3135477Y7146137D01* +X3131413Y7142073D01* +X3128314Y7137196D01* +X3126435Y7131812D01* +X3125622Y7123785D01* +X3124606Y7120128D01* +X3122371Y7117181D01* +X3119170Y7115251D01* +X3115513Y7114590D01* +X3047644Y7114590D01* +X3043732Y7115302D01* +X3040430Y7117588D01* +X2950667Y7207351D01* +X2948381Y7210856D01* +X2947670Y7214971D01* +X2948736Y7219086D01* +X2951378Y7222337D01* +X2955086Y7224268D01* +X2959303Y7224572D01* +X2963926Y7222693D01* +X2969412Y7220762D01* +X2975711Y7220102D01* +X2996285Y7220102D01* +X2996285Y7262164D01* +X2939084Y7262164D01* +X2935173Y7262875D01* +X2931871Y7265111D01* +X2929686Y7268413D01* +X2928924Y7272324D01* +X2928924Y7290866D01* +X2906471Y7290866D01* +X2906471Y7279335D01* +X2905709Y7275423D01* +X2903524Y7272121D01* +X2900222Y7269937D01* +X2896311Y7269124D01* +X2873959Y7269124D01* +X2870047Y7269937D01* +X2866745Y7272121D01* +X2864561Y7275423D01* +X2863799Y7279335D01* +X2863799Y7290866D01* +X2779471Y7290866D01* +X2779471Y7279335D01* +X2778709Y7275423D01* +X2776524Y7272121D01* +X2773222Y7269937D01* +X2769311Y7269124D01* +X2746959Y7269124D01* +X2743047Y7269937D01* +X2739745Y7272121D01* +X2737561Y7275423D01* +X2736799Y7279335D01* +X2736799Y7290866D01* +X2700223Y7290866D01* +X2696311Y7291578D01* +X2693009Y7293864D01* +X2690825Y7297064D01* +X2690063Y7300975D01* +X2690063Y7318400D01* +X2690825Y7322312D01* +X2693009Y7325563D01* +X2696311Y7327747D01* +X2700223Y7328560D01* +X2736799Y7328560D01* +X2736799Y7360564D01* +X2728722Y7360564D01* +X2722372Y7359903D01* +X2716936Y7357973D01* +X2712008Y7354925D01* +X2707944Y7350759D01* +X2702814Y7342174D01* +X2699816Y7339838D01* +X2696210Y7338720D01* +X2692450Y7338923D01* +X2689047Y7340549D01* +X2686507Y7343343D01* +X2684322Y7346746D01* +X2680258Y7350912D01* +X2675331Y7353960D01* +X2669895Y7355890D01* +X2663545Y7356551D01* +X2604719Y7356551D01* +X2598369Y7355890D01* +X2592933Y7353960D01* +X2588006Y7350912D01* +X2584399Y7347254D01* +X2581097Y7345070D01* +X2577236Y7344308D01* +X2562047Y7344308D01* +X2558186Y7345070D01* +X2554884Y7347254D01* +X2552242Y7349845D01* +X2547366Y7352995D01* +X2541879Y7354925D01* +X2535580Y7355586D01* +X2476703Y7355586D01* +X2470404Y7354925D01* +X2464917Y7352995D01* +X2460040Y7349845D01* +X2457399Y7347254D01* +X2454097Y7345070D01* +X2450236Y7344308D01* +X2434082Y7344308D01* +X2430170Y7345070D01* +X2426868Y7347254D01* +X2424277Y7349845D01* +X2419350Y7352995D01* +X2413914Y7354925D01* +X2407564Y7355586D01* +X2348738Y7355586D01* +X2342388Y7354925D01* +X2336952Y7352995D01* +X2332024Y7349845D01* +X2328418Y7346238D01* +X2325116Y7344105D01* +X2321204Y7343292D01* +X2313381Y7343292D01* +X2305354Y7342479D01* +X2298090Y7340346D01* +X2291435Y7336790D01* +X2285187Y7331608D01* +X2238197Y7284618D01* +X2235555Y7281367D01* +X2232355Y7278827D01* +X2228392Y7277760D01* +X2224278Y7278319D01* +X2220772Y7280402D01* +X2218385Y7283805D01* +X2217572Y7287818D01* +X2217572Y7293965D01* +X2216708Y7302398D01* +X2214372Y7310120D01* +X2210612Y7317130D01* +X2205228Y7323785D01* +X2144420Y7384491D01* +X2137816Y7389926D01* +X2130755Y7393686D01* +X2123135Y7396073D01* +X2114651Y7396886D01* +X1310690Y7396886D01* +X1306830Y7397597D01* +X1303528Y7399883D01* +X1301343Y7403185D01* +X1300530Y7406995D01* +X1300530Y7415428D01* +X1299819Y7421676D01* +X1297940Y7427214D01* +X1294841Y7432090D01* +X1290777Y7436154D01* +X1285849Y7439202D01* +X1280414Y7441133D01* +X1274064Y7441895D01* +X1205230Y7441895D01* +X1198880Y7441133D01* +X1193444Y7439202D01* +X1188618Y7436154D01* +X1183436Y7430871D01* +X1180084Y7428636D01* +X1176172Y7427823D01* +X1172210Y7428636D01* +X1168857Y7430871D01* +X1163675Y7436154D01* +X1158849Y7439202D01* +X1153414Y7441133D01* +X1147064Y7441895D01* +X1078230Y7441895D01* +X1071880Y7441133D01* +X1066444Y7439202D01* +X1061516Y7436154D01* +X1057452Y7432090D01* +X1054354Y7427214D01* +X1052474Y7421676D01* +X1051763Y7415428D01* +X1051763Y7256475D01* +X1052474Y7250175D01* +X1054354Y7244689D01* +X1057452Y7239812D01* +X1061516Y7235748D01* +X1066952Y7232345D01* +X1069492Y7230008D01* +X1071168Y7227062D01* +X1071727Y7223709D01* +X1071727Y7206996D01* +X1072540Y7198512D01* +X1074877Y7190841D01* +X1078687Y7183729D01* +X1084072Y7177227D01* +X1119835Y7141413D01* +X1126439Y7136028D01* +X1133500Y7132218D01* +X1141171Y7129881D01* +X1149654Y7129018D01* +X1303629Y7129018D01* +X1312113Y7129881D01* +X1319784Y7132218D01* +X1326845Y7136028D01* +X1333398Y7141413D01* +X1419098Y7227062D01* +X1422908Y7229500D01* +X1427378Y7230008D01* +X1431594Y7228535D01* +X1434846Y7225436D01* +X1436370Y7221220D01* +X1435252Y7210399D01* +X1435252Y7154773D01* +X1492300Y7154773D01* +X1492300Y7227925D01* +X1493062Y7231786D01* +X1495247Y7235037D01* +X1498549Y7237323D01* +X1502460Y7238085D01* +X1569821Y7238085D01* +X1573733Y7237323D01* +X1577035Y7235037D01* +X1579219Y7231786D01* +X1579981Y7227925D01* +X1579981Y7154773D01* +X1637030Y7154773D01* +X1637030Y7210399D01* +X1636318Y7216749D01* +X1632762Y7226553D01* +X1633118Y7230821D01* +X1635201Y7234529D01* +X1638655Y7237171D01* +X1642821Y7238085D01* +X1699006Y7238085D01* +X1702866Y7237323D01* +X1706168Y7235037D01* +X1749755Y7191451D01* +X1751787Y7188555D01* +X1752701Y7185152D01* +X1752396Y7181646D01* +X1750923Y7178497D01* +X1746859Y7172706D01* +X1742693Y7163714D01* +X1740154Y7154265D01* +X1739290Y7144003D01* +X1739290Y7002729D01* +X1740154Y6992467D01* +X1742693Y6982968D01* +X1746859Y6974027D01* +X1752498Y6966051D01* +X1759407Y6959041D01* +X1767484Y6953453D01* +X1776374Y6949287D01* +X1785874Y6946747D01* +X1795678Y6945884D01* +X1805432Y6946747D01* +X1814931Y6949287D01* +X1823821Y6953453D01* +X1831898Y6959041D01* +X1838807Y6966051D01* +X1844446Y6974027D01* +X1848612Y6982968D01* +X1849323Y6985762D01* +X1851355Y6989622D01* +X1854860Y6992264D01* +X1859178Y6993229D01* +X1863445Y6992264D01* +X1866950Y6989622D01* +X1868982Y6985762D01* +X1869693Y6982968D01* +X1873859Y6974027D01* +X1879498Y6966051D01* +X1886407Y6959041D01* +X1894484Y6953453D01* +X1901088Y6950405D01* +X1901088Y7016191D01* +X1862226Y7016191D01* +X1858314Y7017003D01* +X1855012Y7019188D01* +X1852828Y7022439D01* +X1852066Y7026351D01* +X1852066Y7120381D01* +X1852828Y7124293D01* +X1855012Y7127494D01* +X1858314Y7129780D01* +X1862226Y7130491D01* +X1901088Y7130491D01* +X1901088Y7196328D01* +X1894484Y7193330D01* +X1886407Y7187641D01* +X1879498Y7180681D01* +X1873859Y7172706D01* +X1869693Y7163714D01* +X1868982Y7161022D01* +X1866950Y7157161D01* +X1863445Y7154418D01* +X1859178Y7153452D01* +X1854860Y7154418D01* +X1851355Y7157161D01* +X1849323Y7161022D01* +X1848612Y7163714D01* +X1844446Y7172706D01* +X1838401Y7181291D01* +X1837029Y7184085D01* +X1836572Y7187133D01* +X1836572Y7202982D01* +X1835708Y7211415D01* +X1833372Y7219137D01* +X1829612Y7226147D01* +X1824228Y7232751D01* +X1759254Y7297724D01* +X1757019Y7300975D01* +X1756257Y7304887D01* +X1757019Y7308748D01* +X1759254Y7312050D01* +X1762556Y7314285D01* +X1766417Y7315047D01* +X1900682Y7315047D01* +X1904441Y7314336D01* +X1907692Y7312202D01* +X1909927Y7309103D01* +X1910842Y7305344D01* +X1910283Y7301585D01* +X1908200Y7295743D01* +X1907489Y7289393D01* +X1907489Y7281265D01* +X1939543Y7281265D01* +X1939543Y7304887D01* +X1940356Y7308748D01* +X1942541Y7312050D01* +X1945843Y7314285D01* +X1949704Y7315047D01* +X1967128Y7315047D01* +X1970989Y7314285D01* +X1974291Y7312050D01* +X1976475Y7308748D01* +X1977288Y7304887D01* +X1977288Y7281265D01* +X1988769Y7281265D01* +X1992680Y7280503D01* +X1995982Y7278370D01* +X1998167Y7275017D01* +X1998929Y7271105D01* +X1998929Y7248753D01* +X1998167Y7244842D01* +X1995982Y7241590D01* +X1992680Y7239355D01* +X1988769Y7238644D01* +X1977288Y7238644D01* +X1977288Y7204049D01* +X1982825Y7204049D01* +X1987651Y7204608D01* +X1991868Y7204151D01* +X1995576Y7202068D01* +X1998065Y7198664D01* +X1998929Y7194448D01* +X1998929Y7170877D01* +X1998014Y7166508D01* +X1996693Y7163714D01* +X1995982Y7161022D01* +X1993950Y7157161D01* +X1990445Y7154418D01* +X1986178Y7153452D01* +X1981860Y7154418D01* +X1978355Y7157161D01* +X1976323Y7161022D01* +X1975612Y7163714D01* +X1971446Y7172706D01* +X1965807Y7180681D01* +X1962810Y7183678D01* +X1949704Y7183678D01* +X1945843Y7184542D01* +X1944268Y7185558D01* +X1944268Y7130491D01* +X1983130Y7130491D01* +X1986991Y7129780D01* +X1990293Y7127494D01* +X1992477Y7124293D01* +X1993290Y7120381D01* +X1993290Y7026351D01* +X1992477Y7022439D01* +X1990293Y7019188D01* +X1986991Y7017003D01* +X1983130Y7016191D01* +X1944268Y7016191D01* +X1944268Y6948220D01* +X1943455Y6944359D01* +X1941271Y6941108D01* +X1476197Y6475984D01* +X1473504Y6474053D01* +X1470253Y6473088D01* +X1467205Y6472783D01* +X1457045Y6469837D01* +X1447444Y6465265D01* +X1438706Y6459220D01* +X1431086Y6451854D01* +X1424736Y6443472D01* +X1419809Y6434074D01* +X1416405Y6424015D01* +X1414729Y6413550D01* +X1414729Y6402933D01* +X1416405Y6392418D01* +X1419809Y6382410D01* +X1424736Y6373012D01* +X1431086Y6364528D01* +X1438706Y6357162D01* +X1447444Y6351168D01* +X1457045Y6346647D01* +X1467205Y6343700D01* +X1477721Y6342430D01* +X1488338Y6342837D01* +X1498701Y6344920D01* +X1508607Y6348730D01* +X1517802Y6354013D01* +X1526032Y6360668D01* +X1533042Y6368643D01* +X1538732Y6377635D01* +X1542897Y6387388D01* +X1546352Y6401257D01* +X1548384Y6404152D01* +X1721916Y6577787D01* +X1725015Y6579870D01* +X1728724Y6580733D01* +X1732432Y6580174D01* +X1735734Y6578295D01* +X1738071Y6575348D01* +X1739188Y6571691D01* +X1774088Y6571691D01* +X1774088Y6625691D01* +X1774850Y6629603D01* +X1777034Y6632905D01* +X2085492Y6941312D01* +X2088845Y6944918D01* +X2093823Y6952081D01* +X2097684Y6960311D01* +X2099970Y6968845D01* +X2100732Y6977481D01* +X2101646Y6980885D01* +X2103323Y6985762D01* +X2105355Y6989622D01* +X2108860Y6992264D01* +X2113178Y6993229D01* +X2117445Y6992264D01* +X2120950Y6989622D01* +X2122982Y6985762D01* +X2123694Y6982968D01* +X2127859Y6974027D01* +X2133904Y6965442D01* +X2135276Y6962698D01* +X2135733Y6959650D01* +X2135733Y6837934D01* +X2136546Y6829450D01* +X2138883Y6821779D01* +X2142642Y6814769D01* +X2148078Y6808165D01* +X2300478Y6655714D01* +X2302459Y6653022D01* +X2303424Y6649669D01* +X2303221Y6646265D01* +X2301900Y6643166D01* +X2299868Y6639915D01* +X2297938Y6634429D01* +X2297226Y6628130D01* +X2297226Y6579260D01* +X2297938Y6572961D01* +X2300122Y6566662D01* +X2300681Y6562852D01* +X2299766Y6559143D01* +X2297531Y6555943D01* +X2294331Y6553911D01* +X2290521Y6553149D01* +X2243226Y6553149D01* +X2239314Y6553962D01* +X2236012Y6556095D01* +X2233828Y6559397D01* +X2233066Y6563309D01* +X2233066Y6585203D01* +X2232152Y6595465D01* +X2229612Y6604914D01* +X2225446Y6613906D01* +X2219807Y6621881D01* +X2212898Y6628841D01* +X2204821Y6634530D01* +X2195931Y6638594D01* +X2186432Y6641185D01* +X2176678Y6641998D01* +X2166874Y6641185D01* +X2157374Y6638594D01* +X2148484Y6634530D01* +X2140407Y6628841D01* +X2133498Y6621881D01* +X2127859Y6613906D01* +X2123694Y6604914D01* +X2122982Y6602222D01* +X2120950Y6598361D01* +X2117445Y6595618D01* +X2113178Y6594652D01* +X2108860Y6595618D01* +X2105355Y6598361D01* +X2103323Y6602222D01* +X2102612Y6604914D01* +X2098446Y6613906D01* +X2092807Y6621881D01* +X2085898Y6628841D01* +X2077821Y6634530D01* +X2068931Y6638594D01* +X2059432Y6641185D01* +X2049678Y6641998D01* +X2039874Y6641185D01* +X2030374Y6638594D01* +X2021484Y6634530D01* +X2013407Y6628841D01* +X2006498Y6621881D01* +X2000859Y6613906D01* +X1996693Y6604914D01* +X1995982Y6602222D01* +X1993950Y6598361D01* +X1990445Y6595618D01* +X1986178Y6594652D01* +X1981860Y6595618D01* +X1978355Y6598361D01* +X1976323Y6602222D01* +X1975612Y6604914D01* +X1971446Y6613906D01* +X1965807Y6621881D01* +X1958898Y6628841D01* +X1950821Y6634530D01* +X1941931Y6638594D01* +X1932432Y6641185D01* +X1922678Y6641998D01* +X1912874Y6641185D01* +X1903374Y6638594D01* +X1894484Y6634530D01* +X1886407Y6628841D01* +X1879498Y6621881D01* +X1873859Y6613906D01* +X1869693Y6604914D01* +X1868982Y6602222D01* +X1866950Y6598361D01* +X1863445Y6595618D01* +X1859178Y6594652D01* +X1854860Y6595618D01* +X1851355Y6598361D01* +X1849323Y6602222D01* +X1848612Y6604914D01* +X1844446Y6613906D01* +X1838807Y6621881D01* +X1831898Y6628841D01* +X1823821Y6634530D01* +X1817268Y6637528D01* +X1817268Y6571691D01* +X1856130Y6571691D01* +X1859991Y6570980D01* +X1863293Y6568694D01* +X1865477Y6565493D01* +X1866290Y6561581D01* +X1866290Y6467551D01* +X1865477Y6463639D01* +X1863293Y6460388D01* +X1859991Y6458204D01* +X1856130Y6457391D01* +X1817268Y6457391D01* +X1817268Y6391605D01* +X1823821Y6394653D01* +X1831898Y6400241D01* +X1838807Y6407251D01* +X1844446Y6415227D01* +X1848612Y6424168D01* +X1849323Y6426962D01* +X1851355Y6430822D01* +X1854860Y6433464D01* +X1859178Y6434429D01* +X1863445Y6433464D01* +X1866950Y6430822D01* +X1868982Y6426962D01* +X1870760Y6421882D01* +X1871725Y6417614D01* +X1871725Y6312154D01* +X1872488Y6302857D01* +X1872488Y6281521D01* +X1873199Y6275171D01* +X1875129Y6269736D01* +X1878228Y6264808D01* +X1882292Y6260795D01* +X1887220Y6257645D01* +X1892655Y6255715D01* +X1899005Y6255004D01* +X1947824Y6255004D01* +X1954174Y6255715D01* +X1959610Y6257645D01* +X1963724Y6260287D01* +X1967230Y6261658D01* +X1971039Y6261658D01* +X1974545Y6260287D01* +X1978660Y6257645D01* +X1984095Y6255715D01* +X1990445Y6255004D01* +X1995982Y6255004D01* +X1995982Y6289649D01* +X1984502Y6289649D01* +X1980590Y6290360D01* +X1977288Y6292596D01* +X1975104Y6295898D01* +X1974342Y6299809D01* +X1974342Y6322110D01* +X1975104Y6326022D01* +X1977288Y6329324D01* +X1980590Y6331559D01* +X1984502Y6332270D01* +X1995982Y6332270D01* +X1995982Y6366865D01* +X1990445Y6366865D01* +X1984857Y6366256D01* +X1980641Y6366662D01* +X1976932Y6368796D01* +X1974443Y6372199D01* +X1973529Y6376314D01* +X1973529Y6417513D01* +X1974494Y6421780D01* +X1976323Y6426962D01* +X1978355Y6430822D01* +X1981860Y6433464D01* +X1986178Y6434429D01* +X1990445Y6433464D01* +X1993950Y6430822D01* +X1995982Y6426962D01* +X1996693Y6424168D01* +X2000859Y6415227D01* +X2006498Y6407251D01* +X2013407Y6400241D01* +X2021484Y6394653D01* +X2030374Y6390487D01* +X2039874Y6387947D01* +X2049678Y6387084D01* +X2059432Y6387947D01* +X2068931Y6390487D01* +X2077821Y6394653D01* +X2085898Y6400241D01* +X2092807Y6407251D01* +X2098446Y6415227D01* +X2102612Y6424168D01* +X2103323Y6426962D01* +X2105355Y6430822D01* +X2108860Y6433464D01* +X2113178Y6434429D01* +X2117445Y6433464D01* +X2120950Y6430822D01* +X2122982Y6426962D01* +X2123694Y6424168D01* +X2127859Y6415227D01* +X2133498Y6407251D01* +X2140407Y6400241D01* +X2148484Y6394653D01* +X2157374Y6390487D01* +X2166874Y6387947D01* +X2176678Y6387084D01* +X2186432Y6387947D01* +X2195931Y6390487D01* +X2204821Y6394653D01* +X2212898Y6400241D01* +X2219807Y6407251D01* +X2225446Y6415227D01* +X2229612Y6424168D01* +X2232152Y6433667D01* +X2233066Y6443929D01* +X2233066Y6461150D01* +X2233828Y6465062D01* +X2236012Y6468364D01* +X2239314Y6470548D01* +X2243226Y6471361D01* +X2298496Y6471361D01* +X2302408Y6470548D01* +X2305659Y6468364D01* +X2307031Y6466992D01* +X2311908Y6463995D01* +X2317394Y6462064D01* +X2323693Y6461302D01* +X2382570Y6461302D01* +X2388870Y6462064D01* +X2394356Y6463995D01* +X2399233Y6466992D01* +X2400604Y6468364D01* +X2403856Y6470548D01* +X2407767Y6471361D01* +X2425547Y6471361D01* +X2428341Y6470904D01* +X2430983Y6469786D01* +X2436977Y6465976D01* +X2442413Y6464046D01* +X2448712Y6463284D01* +X2507589Y6463284D01* +X2513888Y6464046D01* +X2519375Y6465976D01* +X2524252Y6469024D01* +X2528366Y6473088D01* +X2531414Y6478066D01* +X2533345Y6483502D01* +X2534056Y6489852D01* +X2534056Y6538671D01* +X2533345Y6545021D01* +X2531414Y6550456D01* +X2528874Y6554520D01* +X2527503Y6558025D01* +X2527503Y6561836D01* +X2528874Y6565341D01* +X2531414Y6569506D01* +X2533345Y6574942D01* +X2534056Y6581292D01* +X2534056Y6630111D01* +X2533345Y6636461D01* +X2531414Y6641896D01* +X2528366Y6646773D01* +X2526030Y6649161D01* +X2523845Y6652463D01* +X2523032Y6656324D01* +X2523032Y6677101D01* +X2523642Y6680453D01* +X2525268Y6683451D01* +X2528265Y6685991D01* +X2532329Y6690156D01* +X2535428Y6695033D01* +X2537358Y6700520D01* +X2538069Y6706819D01* +X2538069Y6755688D01* +X2537358Y6761988D01* +X2535428Y6767423D01* +X2532837Y6771538D01* +X2531465Y6775094D01* +X2531465Y6778802D01* +X2532837Y6782358D01* +X2535428Y6786473D01* +X2537358Y6791909D01* +X2538069Y6798208D01* +X2538069Y6847078D01* +X2537358Y6853377D01* +X2535428Y6858863D01* +X2532329Y6863740D01* +X2528265Y6867906D01* +X2523337Y6870953D01* +X2517902Y6872884D01* +X2511552Y6873544D01* +X2452725Y6873544D01* +X2446375Y6872884D01* +X2440940Y6870953D01* +X2436012Y6867906D01* +X2432405Y6864248D01* +X2429103Y6862064D01* +X2425242Y6861251D01* +X2362708Y6861251D01* +X2358796Y6862064D01* +X2355545Y6864248D01* +X2354021Y6865721D01* +X2346045Y6871360D01* +X2337257Y6875424D01* +X2327808Y6877964D01* +X2318156Y6878777D01* +X2308453Y6877964D01* +X2299004Y6875424D01* +X2290216Y6871360D01* +X2282240Y6865721D01* +X2275332Y6858812D01* +X2269744Y6850888D01* +X2265629Y6842099D01* +X2262073Y6828790D01* +X2259736Y6825742D01* +X2256434Y6823760D01* +X2252675Y6823151D01* +X2248966Y6824065D01* +X2245766Y6826148D01* +X2220518Y6851446D01* +X2218334Y6854748D01* +X2217572Y6858660D01* +X2217572Y6959549D01* +X2218029Y6962648D01* +X2219401Y6965391D01* +X2225446Y6974027D01* +X2229612Y6982968D01* +X2232152Y6992467D01* +X2233066Y7002729D01* +X2233066Y7116673D01* +X2233726Y7120381D01* +X2235657Y7123531D01* +X2238603Y7125766D01* +X2242159Y7126833D01* +X2245817Y7126478D01* +X2255469Y7123938D01* +X2265172Y7123074D01* +X2274824Y7123938D01* +X2284272Y7126427D01* +X2293061Y7130542D01* +X2301036Y7136180D01* +X2307945Y7143038D01* +X2313533Y7151014D01* +X2317648Y7159802D01* +X2319680Y7164679D01* +X2322423Y7167321D01* +X2325979Y7168642D01* +X2329738Y7168642D01* +X2333244Y7167321D01* +X2336952Y7164984D01* +X2342388Y7163053D01* +X2348738Y7162292D01* +X2356815Y7162292D01* +X2356815Y7194346D01* +X2325827Y7194346D01* +X2322068Y7195159D01* +X2318867Y7197191D01* +X2316632Y7200239D01* +X2313533Y7206894D01* +X2305812Y7218222D01* +X2305100Y7222083D01* +X2305913Y7225944D01* +X2308098Y7229144D01* +X2311400Y7231380D01* +X2315260Y7232091D01* +X2356815Y7232091D01* +X2356815Y7243622D01* +X2357577Y7247534D01* +X2359761Y7250836D01* +X2363063Y7252970D01* +X2366975Y7253782D01* +X2389327Y7253782D01* +X2393238Y7252970D01* +X2396540Y7250836D01* +X2398725Y7247534D01* +X2399487Y7243622D01* +X2399487Y7232091D01* +X2440076Y7232091D01* +X2443937Y7231329D01* +X2447239Y7229094D01* +X2449474Y7225792D01* +X2450236Y7221981D01* +X2450236Y7204557D01* +X2449474Y7200696D01* +X2447239Y7197344D01* +X2443937Y7195210D01* +X2440076Y7194346D01* +X2399487Y7194346D01* +X2399487Y7162292D01* +X2407564Y7162292D01* +X2413914Y7163053D01* +X2419350Y7164984D01* +X2424277Y7168032D01* +X2428341Y7172147D01* +X2431440Y7177074D01* +X2432558Y7180224D01* +X2434691Y7183780D01* +X2438095Y7186168D01* +X2442159Y7187031D01* +X2446223Y7186168D01* +X2449576Y7183780D01* +X2451760Y7180224D01* +X2452878Y7177074D01* +X2455926Y7172147D01* +X2460040Y7168032D01* +X2462784Y7166356D01* +X2465324Y7164070D01* +X2466949Y7161072D01* +X2467508Y7157720D01* +X2467508Y7046417D01* +X2468321Y7038441D01* +X2470505Y7031177D01* +X2474061Y7024522D01* +X2479192Y7018324D01* +X2548483Y6949033D01* +X2554732Y6943852D01* +X2561386Y6940346D01* +X2568600Y6938162D01* +X2576626Y6937400D01* +X2584348Y6937400D01* +X2588615Y6936435D01* +X2592070Y6933844D01* +X2594102Y6930034D01* +X2594406Y6925665D01* +X2592832Y6921652D01* +X2589784Y6918553D01* +X2584297Y6915200D01* +X2580233Y6911035D01* +X2577134Y6906158D01* +X2575204Y6900722D01* +X2574493Y6894423D01* +X2574493Y6886295D01* +X2606548Y6886295D01* +X2606548Y6927189D01* +X2607360Y6931050D01* +X2609545Y6934403D01* +X2612847Y6936536D01* +X2616708Y6937400D01* +X2634132Y6937400D01* +X2637993Y6936536D01* +X2641295Y6934403D01* +X2643479Y6931050D01* +X2644292Y6927189D01* +X2644292Y6886295D01* +X2655773Y6886295D01* +X2659684Y6885584D01* +X2662986Y6883298D01* +X2665171Y6880047D01* +X2665933Y6876186D01* +X2665933Y6853783D01* +X2665171Y6849922D01* +X2662986Y6846570D01* +X2659684Y6844385D01* +X2655773Y6843623D01* +X2644292Y6843623D01* +X2644292Y6809028D01* +X2649829Y6809028D01* +X2656179Y6809790D01* +X2661615Y6811721D01* +X2665730Y6814261D01* +X2669235Y6815632D01* +X2673045Y6815632D01* +X2676550Y6814261D01* +X2680665Y6811721D01* +X2686100Y6809790D01* +X2692450Y6809028D01* +X2741269Y6809028D01* +X2747619Y6809790D01* +X2753055Y6811721D01* +X2757982Y6814769D01* +X2762046Y6818833D01* +X2763774Y6821627D01* +X2766060Y6824116D01* +X2769057Y6825742D01* +X2772410Y6826402D01* +X2902915Y6826402D01* +X2906826Y6825538D01* +X2910128Y6823405D01* +X2934512Y6799021D01* +X2940710Y6793890D01* +X2947365Y6790385D01* +X2954629Y6788099D01* +X2962656Y6787388D01* +X3006496Y6787388D01* +X3016148Y6786016D01* +X3020110Y6784695D01* +X3023260Y6781952D01* +X3024936Y6778091D01* +X3024936Y6773824D01* +X3023260Y6770014D01* +X3020110Y6767220D01* +X3016148Y6765899D01* +X3009849Y6765137D01* +X3004159Y6763156D01* +X3000806Y6762597D01* +X2983331Y6762597D01* +X2979521Y6761886D01* +X2894431Y6761886D01* +X2890520Y6762597D01* +X2885998Y6765188D01* +X2882239Y6768693D01* +X2874060Y6774332D01* +X2865272Y6778498D01* +X2855823Y6781038D01* +X2846171Y6781850D01* +X2836468Y6781038D01* +X2827020Y6778498D01* +X2818231Y6774332D01* +X2810256Y6768795D01* +X2803347Y6761886D01* +X2797759Y6753859D01* +X2793644Y6745071D01* +X2791104Y6735673D01* +X2790291Y6725920D01* +X2791104Y6716268D01* +X2793644Y6706870D01* +X2797759Y6698081D01* +X2803347Y6690106D01* +X2810256Y6683197D01* +X2818231Y6677558D01* +X2827020Y6673494D01* +X2836468Y6670903D01* +X2846171Y6670141D01* +X2852013Y6670649D01* +X2855874Y6670243D01* +X2859278Y6668363D01* +X2861767Y6665417D01* +X2862986Y6661759D01* +X2862732Y6657898D01* +X2862122Y6655612D01* +X2861259Y6645909D01* +X2862122Y6636308D01* +X2864662Y6626809D01* +X2868777Y6618020D01* +X2874365Y6610096D01* +X2881223Y6603187D01* +X2889199Y6597548D01* +X2898038Y6593484D01* +X2907436Y6590944D01* +X2917139Y6590080D01* +X2926842Y6590944D01* +X2936240Y6593484D01* +X2945079Y6597548D01* +X2953054Y6603187D01* +X2958642Y6608775D01* +X2960522Y6610248D01* +X2962706Y6611213D01* +X2968701Y6613194D01* +X2975305Y6617004D01* +X2979826Y6620865D01* +X2994863Y6635953D01* +X2998012Y6638036D01* +X3001670Y6638899D01* +X3005429Y6638340D01* +X3009849Y6636715D01* +X3016148Y6636003D01* +X3115513Y6636003D01* +X3119424Y6635242D01* +X3122726Y6633057D01* +X3124911Y6629755D01* +X3125673Y6625844D01* +X3125673Y6526530D01* +X3126994Y6516827D01* +X3126994Y6453174D01* +X3126435Y6449822D01* +X3124809Y6446824D01* +X3122269Y6444538D01* +X3118002Y6441897D01* +X3113938Y6437782D01* +X3110839Y6432854D01* +X3108909Y6427419D01* +X3108198Y6421069D01* +X3108198Y6372250D01* +X3108909Y6365900D01* +X3110839Y6360515D01* +X3113430Y6356400D01* +X3114802Y6352844D01* +X3114802Y6349085D01* +X3113430Y6345529D01* +X3110839Y6341465D01* +X3108909Y6336030D01* +X3108198Y6329680D01* +X3108198Y6280861D01* +X3108909Y6274511D01* +X3110839Y6269075D01* +X3113938Y6264148D01* +X3118002Y6260033D01* +X3122930Y6256985D01* +X3128365Y6255004D01* +X3134715Y6254343D01* +X3156254Y6254343D01* +X3160115Y6253530D01* +X3163417Y6251397D01* +X3342335Y6072428D01* +X3348532Y6067399D01* +X3355187Y6063742D01* +X3362451Y6061557D01* +X3370478Y6060795D01* +X4346854Y6060795D01* +X4350715Y6060033D01* +X4354017Y6057798D01* +X4355236Y6056630D01* +X4363212Y6050991D01* +X4372051Y6046927D01* +X4381449Y6044387D01* +G37* +G36* +X9365843Y6083096D02* +G01* +X9397898Y6083096D01* +X9397898Y6117742D01* +X9392310Y6117742D01* +X9386011Y6116980D01* +X9380524Y6115100D01* +X9375648Y6111951D01* +X9371533Y6107938D01* +X9368485Y6103010D01* +X9366554Y6097574D01* +X9365843Y6091224D01* +G37* +G36* +X-273761Y6152743D02* +G01* +X-225704Y6152743D01* +X-225704Y6234836D01* +X-300228Y6234836D01* +X-300228Y6179261D01* +X-299516Y6172911D01* +X-297637Y6167475D01* +X-294538Y6162548D01* +X-290474Y6158433D01* +X-285546Y6155385D01* +X-280111Y6153404D01* +G37* +G36* +X-102971Y6152743D02* +G01* +X-54914Y6152743D01* +X-48564Y6153404D01* +X-43129Y6155385D01* +X-38201Y6158433D01* +X-34137Y6162548D01* +X-31038Y6167475D01* +X-29159Y6172911D01* +X-28448Y6179261D01* +X-28448Y6234836D01* +X-102971Y6234836D01* +G37* +G36* +X1057757Y6189522D02* +G01* +X1092301Y6189522D01* +X1092301Y6195009D01* +X1091590Y6201359D01* +X1089660Y6206794D01* +X1086612Y6211722D01* +X1082497Y6215837D01* +X1077620Y6218885D01* +X1072134Y6220815D01* +X1065834Y6221526D01* +X1057757Y6221526D01* +G37* +G36* +X980490Y6189522D02* +G01* +X1015034Y6189522D01* +X1015034Y6221526D01* +X1006957Y6221526D01* +X1000658Y6220815D01* +X995171Y6218885D01* +X990295Y6215837D01* +X986180Y6211722D01* +X983132Y6206794D01* +X981202Y6201359D01* +X980490Y6195009D01* +G37* +G36* +X1202740Y6194450D02* +G01* +X1237335Y6194450D01* +X1237335Y6200038D01* +X1236624Y6206337D01* +X1234694Y6211874D01* +X1231595Y6216751D01* +X1227531Y6220815D01* +X1222603Y6223863D01* +X1217168Y6225794D01* +X1210818Y6226556D01* +X1202740Y6226556D01* +G37* +G36* +X1125474Y6194450D02* +G01* +X1160068Y6194450D01* +X1160068Y6226556D01* +X1151991Y6226556D01* +X1145641Y6225794D01* +X1140206Y6223863D01* +X1135278Y6220815D01* +X1131214Y6216751D01* +X1128115Y6211874D01* +X1126185Y6206337D01* +X1125474Y6200038D01* +G37* +G36* +X11377117Y6225590D02* +G01* +X11391341Y6226505D01* +X11395151Y6226962D01* +X11409426Y6229705D01* +X11413185Y6230670D01* +X11426952Y6235344D01* +X11430558Y6236817D01* +X11443614Y6243218D01* +X11447018Y6245148D01* +X11459108Y6253073D01* +X11462207Y6255512D01* +X11473180Y6264960D01* +X11475923Y6267704D01* +X11485575Y6278575D01* +X11487962Y6281724D01* +X11496090Y6293713D01* +X11498021Y6297066D01* +X11504523Y6310122D01* +X11505996Y6313627D01* +X11510772Y6327394D01* +X11511788Y6331204D01* +X11514683Y6345377D01* +X11515191Y6349288D01* +X11516258Y6364427D01* +X11516258Y6368338D01* +X11515293Y6382867D01* +X11514785Y6386728D01* +X11511940Y6401003D01* +X11510975Y6404660D01* +X11506301Y6418478D01* +X11504777Y6422085D01* +X11498376Y6435140D01* +X11496446Y6438493D01* +X11488369Y6450533D01* +X11485981Y6453632D01* +X11476431Y6464554D01* +X11473688Y6467348D01* +X11462766Y6476847D01* +X11459667Y6479235D01* +X11447627Y6487363D01* +X11444224Y6489293D01* +X11431219Y6495745D01* +X11427612Y6497218D01* +X11413896Y6501892D01* +X11410137Y6502857D01* +X11395862Y6505752D01* +X11392052Y6506260D01* +X11377523Y6507226D01* +X11373662Y6507226D01* +X11359134Y6506260D01* +X11355273Y6505803D01* +X11341049Y6503009D01* +X11337290Y6501993D01* +X11323523Y6497320D01* +X11319916Y6495846D01* +X11306860Y6489496D01* +X11303508Y6487515D01* +X11291417Y6479438D01* +X11288318Y6477152D01* +X11277396Y6467500D01* +X11274653Y6464757D01* +X11265052Y6453886D01* +X11262664Y6450838D01* +X11254587Y6438747D01* +X11252606Y6435394D01* +X11246154Y6422390D01* +X11244681Y6418783D01* +X11239957Y6405016D01* +X11238941Y6401257D01* +X11236096Y6387033D01* +X11235588Y6383172D01* +X11234572Y6368745D01* +X11234572Y6364833D01* +X11235486Y6350304D01* +X11235994Y6346444D01* +X11238788Y6332169D01* +X11239804Y6328410D01* +X11244427Y6314643D01* +X11245900Y6311087D01* +X11252301Y6298031D01* +X11254232Y6294628D01* +X11262258Y6282537D01* +X11264595Y6279438D01* +X11274145Y6268516D01* +X11276888Y6265773D01* +X11287760Y6256121D01* +X11290858Y6253734D01* +X11302898Y6245656D01* +X11306251Y6243726D01* +X11319256Y6237274D01* +X11322862Y6235750D01* +X11336578Y6231026D01* +X11340338Y6230010D01* +X11354612Y6227114D01* +X11358422Y6226606D01* +X11372646Y6225641D01* +G37* +G36* +X11046917Y6246114D02* +G01* +X11057839Y6246114D01* +X11062716Y6246418D01* +X11073536Y6248196D01* +X11078260Y6249365D01* +X11088624Y6252921D01* +X11093094Y6254851D01* +X11102746Y6259982D01* +X11106861Y6262674D01* +X11115497Y6269278D01* +X11119154Y6272580D01* +X11126571Y6280607D01* +X11129619Y6284468D01* +X11135614Y6293612D01* +X11137950Y6297930D01* +X11142421Y6307836D01* +X11144046Y6312509D01* +X11146739Y6323025D01* +X11147602Y6327952D01* +X11148568Y6339179D01* +X11148568Y6344208D01* +X11147653Y6355080D01* +X11146840Y6359956D01* +X11144199Y6370472D01* +X11142573Y6375146D01* +X11138204Y6385102D01* +X11135868Y6389420D01* +X11129924Y6398615D01* +X11126927Y6402476D01* +X11119510Y6410502D01* +X11115903Y6413804D01* +X11107318Y6420561D01* +X11103203Y6423202D01* +X11093602Y6428435D01* +X11089132Y6430416D01* +X11078768Y6433972D01* +X11074044Y6435191D01* +X11063274Y6437020D01* +X11058398Y6437376D01* +X11047476Y6437376D01* +X11042548Y6437071D01* +X11031778Y6435242D01* +X11027054Y6434074D01* +X11016691Y6430518D01* +X11012220Y6428536D01* +X11002619Y6423406D01* +X10998504Y6420662D01* +X10989868Y6414058D01* +X10986262Y6410756D01* +X10978845Y6402679D01* +X10975797Y6398818D01* +X10969802Y6389725D01* +X10967466Y6385407D01* +X10963046Y6375349D01* +X10961471Y6370777D01* +X10958728Y6360160D01* +X10957915Y6355334D01* +X10957001Y6344462D01* +X10957001Y6339535D01* +X10957864Y6328714D01* +X10958626Y6323888D01* +X10961319Y6313220D01* +X10962894Y6308648D01* +X10967212Y6298590D01* +X10969548Y6294221D01* +X10975492Y6285128D01* +X10978489Y6281267D01* +X10985855Y6273139D01* +X10989462Y6269786D01* +X10998047Y6263132D01* +X11002162Y6260388D01* +X11011712Y6255156D01* +X11016234Y6253175D01* +X11026546Y6249619D01* +X11031270Y6248349D01* +X11042040Y6246571D01* +G37* +G36* +X1150975Y6253276D02* +G01* +X1159052Y6253276D01* +X1159052Y6285331D01* +X1124458Y6285331D01* +X1124458Y6279794D01* +X1125169Y6273495D01* +X1127099Y6268008D01* +X1130198Y6263132D01* +X1134262Y6258966D01* +X1139190Y6255969D01* +X1144625Y6254038D01* +G37* +G36* +X1201724Y6253276D02* +G01* +X1209802Y6253276D01* +X1216152Y6254038D01* +X1221587Y6255969D01* +X1226515Y6258966D01* +X1230579Y6263132D01* +X1233678Y6268008D01* +X1235608Y6273495D01* +X1236319Y6279794D01* +X1236319Y6285331D01* +X1201724Y6285331D01* +G37* +G36* +X2033727Y6255004D02* +G01* +X2039264Y6255004D01* +X2045614Y6255715D01* +X2051050Y6257645D01* +X2055977Y6260795D01* +X2060041Y6264808D01* +X2063140Y6269736D01* +X2065070Y6275171D01* +X2065782Y6281521D01* +X2065782Y6289649D01* +X2033727Y6289649D01* +G37* +G36* +X1006957Y6257290D02* +G01* +X1015034Y6257290D01* +X1015034Y6289294D01* +X980490Y6289294D01* +X980490Y6283807D01* +X981202Y6277457D01* +X983132Y6272022D01* +X986180Y6267094D01* +X990295Y6262979D01* +X995171Y6259880D01* +X1000658Y6257950D01* +G37* +G36* +X1057757Y6257290D02* +G01* +X1065834Y6257290D01* +X1072134Y6257950D01* +X1077620Y6259880D01* +X1082497Y6262979D01* +X1086612Y6267094D01* +X1089660Y6272022D01* +X1091590Y6277457D01* +X1092301Y6283807D01* +X1092301Y6289294D01* +X1057757Y6289294D01* +G37* +G36* +X9248546Y6315608D02* +G01* +X9295638Y6315608D01* +X9295638Y6357670D01* +X9275064Y6357670D01* +X9268714Y6357010D01* +X9263278Y6355080D01* +X9258350Y6352032D01* +X9254286Y6347866D01* +X9251188Y6342989D01* +X9249257Y6337554D01* +X9248546Y6331204D01* +G37* +G36* +X2033727Y6332270D02* +G01* +X2065782Y6332270D01* +X2065782Y6340398D01* +X2065070Y6346748D01* +X2063140Y6352184D01* +X2060041Y6357112D01* +X2055977Y6361125D01* +X2051050Y6364274D01* +X2045614Y6366205D01* +X2039264Y6366865D01* +X2033727Y6366865D01* +G37* +G36* +X-102971Y6372453D02* +G01* +X-28448Y6372453D01* +X-28448Y6428028D01* +X-29159Y6434378D01* +X-31038Y6439814D01* +X-34137Y6444742D01* +X-38201Y6448856D01* +X-43129Y6451904D01* +X-48564Y6453835D01* +X-54914Y6454597D01* +X-102971Y6454597D01* +G37* +G36* +X-300228Y6372453D02* +G01* +X-225704Y6372453D01* +X-225704Y6454597D01* +X-273761Y6454597D01* +X-280111Y6453835D01* +X-285546Y6451904D01* +X-290474Y6448856D01* +X-294538Y6444742D01* +X-297637Y6439814D01* +X-299516Y6434378D01* +X-300228Y6428028D01* +G37* +G36* +X1774088Y6391605D02* +G01* +X1774088Y6457391D01* +X1739290Y6457391D01* +X1739290Y6443929D01* +X1740154Y6433667D01* +X1742693Y6424168D01* +X1746859Y6415227D01* +X1752498Y6407251D01* +X1759407Y6400241D01* +X1767484Y6394653D01* +G37* +G36* +X9986467Y6606794D02* +G01* +X10015778Y6606794D01* +X10015778Y6670141D01* +X9959949Y6670141D01* +X9959949Y6633260D01* +X9960660Y6626910D01* +X9962591Y6621475D01* +X9965690Y6616547D01* +X9969754Y6612534D01* +X9974681Y6609435D01* +X9980117Y6607556D01* +G37* +G36* +X10100970Y6606794D02* +G01* +X10130282Y6606794D01* +X10136632Y6607556D01* +X10142067Y6609435D01* +X10146995Y6612534D01* +X10151059Y6616547D01* +X10154158Y6621475D01* +X10156088Y6626910D01* +X10156799Y6633260D01* +X10156799Y6670141D01* +X10100970Y6670141D01* +G37* +G36* +X7490155Y6634276D02* +G01* +X7503769Y6635191D01* +X7517231Y6637934D01* +X7530185Y6642303D01* +X7542428Y6648297D01* +X7553807Y6655968D01* +X7564120Y6664959D01* +X7573111Y6675221D01* +X7580731Y6686651D01* +X7586776Y6698945D01* +X7591196Y6711848D01* +X7593838Y6725310D01* +X7594752Y6738975D01* +X7593838Y6752640D01* +X7591196Y6766001D01* +X7586776Y6779006D01* +X7580731Y6791299D01* +X7573111Y6802628D01* +X7564120Y6812889D01* +X7553807Y6821982D01* +X7542428Y6829552D01* +X7530185Y6835648D01* +X7517231Y6840016D01* +X7503769Y6842658D01* +X7490155Y6843623D01* +X7476490Y6842658D01* +X7463028Y6840016D01* +X7450074Y6835648D01* +X7437831Y6829552D01* +X7426452Y6821982D01* +X7416139Y6812889D01* +X7407148Y6802628D01* +X7399528Y6791299D01* +X7393482Y6779006D01* +X7389063Y6766001D01* +X7386421Y6752640D01* +X7385507Y6738975D01* +X7386421Y6725310D01* +X7389063Y6711848D01* +X7393482Y6698945D01* +X7399528Y6686651D01* +X7407148Y6675221D01* +X7416139Y6664959D01* +X7426452Y6655968D01* +X7437831Y6648297D01* +X7450074Y6642303D01* +X7463028Y6637934D01* +X7476490Y6635191D01* +G37* +G36* +X7236155Y6634276D02* +G01* +X7249769Y6635191D01* +X7263231Y6637934D01* +X7276185Y6642303D01* +X7288428Y6648297D01* +X7299807Y6655968D01* +X7310120Y6664959D01* +X7319111Y6675221D01* +X7326731Y6686651D01* +X7332776Y6698945D01* +X7337196Y6711848D01* +X7339838Y6725310D01* +X7340752Y6738975D01* +X7339838Y6752640D01* +X7337196Y6766001D01* +X7332776Y6779006D01* +X7326731Y6791299D01* +X7319111Y6802628D01* +X7310120Y6812889D01* +X7299807Y6821982D01* +X7288428Y6829552D01* +X7276185Y6835648D01* +X7263231Y6840016D01* +X7249769Y6842658D01* +X7236155Y6843623D01* +X7222490Y6842658D01* +X7209028Y6840016D01* +X7196074Y6835648D01* +X7183831Y6829552D01* +X7172452Y6821982D01* +X7162139Y6812889D01* +X7153148Y6802628D01* +X7145528Y6791299D01* +X7139482Y6779006D01* +X7135063Y6766001D01* +X7132421Y6752640D01* +X7131507Y6738975D01* +X7132421Y6725310D01* +X7135063Y6711848D01* +X7139482Y6698945D01* +X7145528Y6686651D01* +X7153148Y6675221D01* +X7162139Y6664959D01* +X7172452Y6655968D01* +X7183831Y6648297D01* +X7196074Y6642303D01* +X7209028Y6637934D01* +X7222490Y6635191D01* +G37* +G36* +X8043875Y6645097D02* +G01* +X8050428Y6648297D01* +X8061807Y6655968D01* +X8072120Y6664959D01* +X8081111Y6675221D01* +X8088731Y6686651D01* +X8091982Y6693204D01* +X8043875Y6693204D01* +G37* +G36* +X7952435Y6645097D02* +G01* +X7952435Y6693204D01* +X7904276Y6693204D01* +X7907528Y6686651D01* +X7915148Y6675221D01* +X7924139Y6664959D01* +X7934452Y6655968D01* +X7945831Y6648297D01* +G37* +G36* +X6936384Y6645097D02* +G01* +X6936384Y6693204D01* +X6888276Y6693204D01* +X6891528Y6686651D01* +X6899097Y6675221D01* +X6908139Y6664959D01* +X6918452Y6655968D01* +X6929831Y6648297D01* +G37* +G36* +X7027875Y6645097D02* +G01* +X7034428Y6648297D01* +X7045807Y6655968D01* +X7056120Y6664959D01* +X7065162Y6675221D01* +X7072731Y6686651D01* +X7075982Y6693204D01* +X7027875Y6693204D01* +G37* +G36* +X11082324Y6719468D02* +G01* +X11132921Y6719468D01* +X11139220Y6720128D01* +X11144707Y6722059D01* +X11149584Y6725208D01* +X11153698Y6729272D01* +X11156797Y6734200D01* +X11158677Y6739585D01* +X11159388Y6745935D01* +X11159388Y6771487D01* +X11082324Y6771487D01* +G37* +G36* +X10904067Y6719468D02* +G01* +X10954664Y6719468D01* +X10954664Y6771487D01* +X10877600Y6771487D01* +X10877600Y6745935D01* +X10878312Y6739585D01* +X10880191Y6734200D01* +X10883290Y6729272D01* +X10887405Y6725208D01* +X10892282Y6722059D01* +X10897768Y6720128D01* +G37* +G36* +X10100970Y6770319D02* +G01* +X10156799Y6770319D01* +X10156799Y6807098D01* +X10156088Y6813448D01* +X10154158Y6818884D01* +X10151059Y6823862D01* +X10146995Y6827926D01* +X10142067Y6830974D01* +X10136632Y6832853D01* +X10130282Y6833565D01* +X10100970Y6833565D01* +G37* +G36* +X9959949Y6770319D02* +G01* +X10015778Y6770319D01* +X10015778Y6833565D01* +X9986467Y6833565D01* +X9980117Y6832853D01* +X9974681Y6830974D01* +X9969754Y6827926D01* +X9965690Y6823862D01* +X9962591Y6818884D01* +X9960660Y6813448D01* +X9959949Y6807098D01* +G37* +G36* +X7904276Y6784644D02* +G01* +X7952435Y6784644D01* +X7952435Y6832853D01* +X7945831Y6829552D01* +X7934452Y6821982D01* +X7924139Y6812889D01* +X7915148Y6802628D01* +X7907528Y6791299D01* +G37* +G36* +X8043875Y6784644D02* +G01* +X8091982Y6784644D01* +X8088731Y6791299D01* +X8081111Y6802628D01* +X8072120Y6812889D01* +X8061807Y6821982D01* +X8050428Y6829552D01* +X8043875Y6832853D01* +G37* +G36* +X7027875Y6784644D02* +G01* +X7075982Y6784644D01* +X7072731Y6791299D01* +X7065162Y6802628D01* +X7056120Y6812889D01* +X7045807Y6821982D01* +X7034428Y6829552D01* +X7027875Y6832853D01* +G37* +G36* +X6888276Y6784644D02* +G01* +X6936384Y6784644D01* +X6936384Y6832853D01* +X6929831Y6829552D01* +X6918452Y6821982D01* +X6908139Y6812889D01* +X6899097Y6802628D01* +X6891528Y6791299D01* +G37* +G36* +X10679074Y6801002D02* +G01* +X10690606Y6802272D01* +X10701782Y6805422D01* +X10712399Y6810095D01* +X10722152Y6816445D01* +X10730839Y6824167D01* +X10738205Y6833158D01* +X10744149Y6843115D01* +X10748518Y6853885D01* +X10751159Y6865162D01* +X10752023Y6876796D01* +X10751159Y6888429D01* +X10748518Y6899706D01* +X10744149Y6910476D01* +X10738205Y6920433D01* +X10730839Y6929424D01* +X10722152Y6937095D01* +X10712399Y6943445D01* +X10701782Y6948170D01* +X10690606Y6951268D01* +X10679074Y6952589D01* +X10667441Y6952132D01* +X10656062Y6949998D01* +X10645089Y6946036D01* +X10634929Y6940448D01* +X10625683Y6933488D01* +X10617606Y6925106D01* +X10610951Y6915556D01* +X10605770Y6905193D01* +X10602264Y6894068D01* +X10600486Y6882638D01* +X10600486Y6870953D01* +X10602264Y6859524D01* +X10605770Y6848449D01* +X10610951Y6838035D01* +X10617606Y6828485D01* +X10625683Y6820153D01* +X10634929Y6813143D01* +X10645089Y6807555D01* +X10656062Y6803593D01* +X10667441Y6801459D01* +G37* +G36* +X2601010Y6809028D02* +G01* +X2606548Y6809028D01* +X2606548Y6843623D01* +X2574493Y6843623D01* +X2574493Y6835495D01* +X2575204Y6829247D01* +X2577134Y6823709D01* +X2580233Y6818833D01* +X2584297Y6814769D01* +X2589225Y6811721D01* +X2594660Y6809790D01* +G37* +G36* +X38811Y6810451D02* +G01* +X48615Y6811772D01* +X58064Y6814667D01* +X66903Y6819138D01* +X74879Y6824980D01* +X81737Y6832092D01* +X87274Y6840321D01* +X91338Y6849364D01* +X93878Y6858914D01* +X94691Y6868820D01* +X93878Y6878675D01* +X91338Y6888225D01* +X87274Y6897268D01* +X81737Y6905498D01* +X74879Y6912609D01* +X66903Y6918452D01* +X58064Y6922922D01* +X48615Y6925818D01* +X38811Y6927138D01* +X28905Y6926681D01* +X19253Y6924649D01* +X10058Y6920890D01* +X1625Y6915759D01* +X-5842Y6909155D01* +X-12039Y6901434D01* +X-16865Y6892848D01* +X-20167Y6883552D01* +X-21844Y6873748D01* +X-21844Y6863842D01* +X-20167Y6854037D01* +X-16865Y6844741D01* +X-12039Y6836156D01* +X-5842Y6828434D01* +X1625Y6821830D01* +X10058Y6816699D01* +X19253Y6812940D01* +X28905Y6810908D01* +G37* +G36* +X178968Y6830466D02* +G01* +X182118Y6832041D01* +X202387Y6844538D01* +X221488Y6858558D01* +X239420Y6874052D01* +X256032Y6891020D01* +X271221Y6909257D01* +X284835Y6928662D01* +X295656Y6947153D01* +X256794Y6947153D01* +X252984Y6947814D01* +X249783Y6949948D01* +X247548Y6953046D01* +X243484Y6961987D01* +X237947Y6970217D01* +X231089Y6977430D01* +X223113Y6983272D01* +X214274Y6987743D01* +X204825Y6990638D01* +X195021Y6991908D01* +X185115Y6991502D01* +X175463Y6989368D01* +X166268Y6985711D01* +X157835Y6980478D01* +X150368Y6973976D01* +X144170Y6966203D01* +X139344Y6957568D01* +X136042Y6948271D01* +X134366Y6938467D01* +X134366Y6928612D01* +X136042Y6918858D01* +X139344Y6909562D01* +X144170Y6900875D01* +X150368Y6893153D01* +X157835Y6886600D01* +X166268Y6881418D01* +X172618Y6878878D01* +X175971Y6876745D01* +X178206Y6873392D01* +X178968Y6869480D01* +G37* +G36* +X-98704Y6830568D02* +G01* +X-98704Y6873443D01* +X-98044Y6877151D01* +X-96113Y6880250D01* +X-93116Y6882587D01* +X-88036Y6885127D01* +X-80060Y6891020D01* +X-73202Y6898182D01* +X-67665Y6906412D01* +X-63601Y6915403D01* +X-61061Y6925005D01* +X-60248Y6934860D01* +X-61061Y6944715D01* +X-63601Y6954316D01* +X-67665Y6963308D01* +X-73202Y6971538D01* +X-80060Y6978700D01* +X-88036Y6984492D01* +X-96875Y6989013D01* +X-106324Y6991908D01* +X-116128Y6993128D01* +X-126034Y6992721D01* +X-135686Y6990638D01* +X-144881Y6986930D01* +X-153314Y6981799D01* +X-160782Y6975195D01* +X-166979Y6967524D01* +X-171805Y6958888D01* +X-173583Y6953910D01* +X-175717Y6950303D01* +X-179120Y6947966D01* +X-183134Y6947153D01* +X-215239Y6947153D01* +X-210820Y6938822D01* +X-197967Y6918858D01* +X-183540Y6899960D01* +X-167640Y6882333D01* +X-150368Y6866077D01* +X-131826Y6851345D01* +X-112115Y6838137D01* +G37* +G36* +X11247831Y6833362D02* +G01* +X11257635Y6834631D01* +X11267084Y6837476D01* +X11275923Y6841998D01* +X11283899Y6847840D01* +X11290757Y6854952D01* +X11296294Y6863181D01* +X11300358Y6872224D01* +X11302898Y6881774D01* +X11303711Y6891629D01* +X11302898Y6901535D01* +X11300358Y6911086D01* +X11296294Y6920128D01* +X11290757Y6928307D01* +X11283899Y6935470D01* +X11275923Y6941312D01* +X11267084Y6945782D01* +X11257635Y6948678D01* +X11247831Y6949998D01* +X11237925Y6949592D01* +X11228273Y6947509D01* +X11219078Y6943750D01* +X11210645Y6938568D01* +X11203178Y6932015D01* +X11196980Y6924294D01* +X11192154Y6915708D01* +X11188852Y6906412D01* +X11187176Y6896557D01* +X11187176Y6886702D01* +X11188852Y6876897D01* +X11192154Y6867601D01* +X11196980Y6858965D01* +X11203178Y6851294D01* +X11210645Y6844690D01* +X11219078Y6839559D01* +X11228273Y6835800D01* +X11237925Y6833768D01* +G37* +G36* +X10877600Y6849262D02* +G01* +X10954664Y6849262D01* +X10954664Y6901281D01* +X10904067Y6901281D01* +X10897768Y6900621D01* +X10892282Y6898690D01* +X10887405Y6895541D01* +X10883290Y6891477D01* +X10880191Y6886600D01* +X10878312Y6881164D01* +X10877600Y6874814D01* +G37* +G36* +X11082324Y6849262D02* +G01* +X11110315Y6849262D01* +X11110315Y6896353D01* +X11110976Y6899960D01* +X11112906Y6903161D01* +X11115903Y6905447D01* +X11120983Y6908038D01* +X11128959Y6913880D01* +X11135817Y6920992D01* +X11141354Y6929221D01* +X11145418Y6938264D01* +X11147958Y6947814D01* +X11148771Y6957720D01* +X11147958Y6967575D01* +X11145418Y6977125D01* +X11141354Y6986168D01* +X11135817Y6994398D01* +X11128959Y7001509D01* +X11120983Y7007352D01* +X11112144Y7011822D01* +X11102695Y7014718D01* +X11092891Y7016038D01* +X11082985Y7015581D01* +X11073333Y7013549D01* +X11064138Y7009790D01* +X11055705Y7004659D01* +X11048238Y6998055D01* +X11042040Y6990334D01* +X11037214Y6981748D01* +X11035436Y6976770D01* +X11033302Y6973163D01* +X11029899Y6970775D01* +X11025886Y6970014D01* +X10993780Y6970014D01* +X10998200Y6961682D01* +X11011052Y6941718D01* +X11025479Y6922820D01* +X11026597Y6921652D01* +X11039957Y6921652D01* +X11044326Y6920636D01* +X11055705Y6910730D01* +X11064138Y6905599D01* +X11073333Y6901840D01* +X11077498Y6900367D01* +X11080089Y6898131D01* +X11081766Y6895084D01* +X11082324Y6891680D01* +G37* +G36* +X11387988Y6853377D02* +G01* +X11391138Y6854901D01* +X11411407Y6867398D01* +X11430508Y6881368D01* +X11448440Y6896912D01* +X11465052Y6913930D01* +X11480241Y6932117D01* +X11493855Y6951573D01* +X11504676Y6970014D01* +X11465814Y6970014D01* +X11462004Y6970674D01* +X11458803Y6972757D01* +X11456568Y6975957D01* +X11452504Y6984847D01* +X11446967Y6993077D01* +X11440109Y7000290D01* +X11432133Y7006132D01* +X11423294Y7010603D01* +X11413845Y7013498D01* +X11404041Y7014718D01* +X11394135Y7014362D01* +X11384483Y7012228D01* +X11375288Y7008571D01* +X11366855Y7003338D01* +X11359388Y6996836D01* +X11353190Y6989114D01* +X11348364Y6980428D01* +X11345062Y6971131D01* +X11343386Y6961327D01* +X11343386Y6951522D01* +X11345062Y6941718D01* +X11348364Y6932422D01* +X11353190Y6923735D01* +X11359388Y6916013D01* +X11366855Y6909511D01* +X11375288Y6904278D01* +X11381638Y6901738D01* +X11384991Y6899605D01* +X11387226Y6896252D01* +X11387988Y6892340D01* +G37* +G36* +X7236155Y6888276D02* +G01* +X7249769Y6889191D01* +X7263231Y6891934D01* +X7276185Y6896303D01* +X7288428Y6902297D01* +X7299807Y6909968D01* +X7310120Y6918959D01* +X7319111Y6929221D01* +X7326731Y6940651D01* +X7332776Y6952945D01* +X7337196Y6965848D01* +X7339838Y6979310D01* +X7340752Y6992975D01* +X7339838Y7006640D01* +X7337196Y7020001D01* +X7332776Y7033006D01* +X7326731Y7045299D01* +X7319111Y7056628D01* +X7310120Y7066889D01* +X7299807Y7075982D01* +X7288428Y7083552D01* +X7276185Y7089648D01* +X7263231Y7094016D01* +X7249769Y7096658D01* +X7236155Y7097623D01* +X7222490Y7096658D01* +X7209028Y7094016D01* +X7196074Y7089648D01* +X7183831Y7083552D01* +X7172452Y7075982D01* +X7162139Y7066889D01* +X7153148Y7056628D01* +X7145528Y7045299D01* +X7139482Y7033006D01* +X7135063Y7020001D01* +X7132421Y7006640D01* +X7131507Y6992975D01* +X7132421Y6979310D01* +X7135063Y6965848D01* +X7139482Y6952945D01* +X7145528Y6940651D01* +X7153148Y6929221D01* +X7162139Y6918959D01* +X7172452Y6909968D01* +X7183831Y6902297D01* +X7196074Y6896303D01* +X7209028Y6891934D01* +X7222490Y6889191D01* +G37* +G36* +X7490155Y6888276D02* +G01* +X7503769Y6889191D01* +X7517231Y6891934D01* +X7530185Y6896303D01* +X7542428Y6902297D01* +X7553807Y6909968D01* +X7564120Y6918959D01* +X7573111Y6929221D01* +X7580731Y6940651D01* +X7586776Y6952945D01* +X7591196Y6965848D01* +X7593838Y6979310D01* +X7594752Y6992975D01* +X7593838Y7006640D01* +X7591196Y7020001D01* +X7586776Y7033006D01* +X7580731Y7045299D01* +X7573111Y7056628D01* +X7564120Y7066889D01* +X7553807Y7075982D01* +X7542428Y7083552D01* +X7530185Y7089648D01* +X7517231Y7094016D01* +X7503769Y7096658D01* +X7490155Y7097623D01* +X7476490Y7096658D01* +X7463028Y7094016D01* +X7450074Y7089648D01* +X7437831Y7083552D01* +X7426452Y7075982D01* +X7416139Y7066889D01* +X7407148Y7056628D01* +X7399528Y7045299D01* +X7393482Y7033006D01* +X7389063Y7020001D01* +X7386421Y7006640D01* +X7385507Y6992975D01* +X7386421Y6979310D01* +X7389063Y6965848D01* +X7393482Y6952945D01* +X7399528Y6940651D01* +X7407148Y6929221D01* +X7416139Y6918959D01* +X7426452Y6909968D01* +X7437831Y6902297D01* +X7450074Y6896303D01* +X7463028Y6891934D01* +X7476490Y6889191D01* +G37* +G36* +X7744155Y6888276D02* +G01* +X7757769Y6889191D01* +X7771231Y6891883D01* +X7784185Y6896303D01* +X7796428Y6902297D01* +X7807807Y6909968D01* +X7818120Y6918959D01* +X7827162Y6929221D01* +X7834731Y6940651D01* +X7840776Y6952945D01* +X7845196Y6965848D01* +X7847888Y6979310D01* +X7848752Y6992975D01* +X7847888Y7006640D01* +X7845196Y7020001D01* +X7840776Y7033006D01* +X7834731Y7045299D01* +X7827162Y7056628D01* +X7818120Y7066889D01* +X7807807Y7075982D01* +X7796428Y7083552D01* +X7784185Y7089648D01* +X7771231Y7094067D01* +X7757769Y7096658D01* +X7744155Y7097623D01* +X7730490Y7096658D01* +X7717028Y7094067D01* +X7704074Y7089648D01* +X7691831Y7083552D01* +X7680452Y7075982D01* +X7670139Y7066889D01* +X7661097Y7056628D01* +X7653528Y7045299D01* +X7647482Y7033006D01* +X7643063Y7020001D01* +X7640370Y7006640D01* +X7639507Y6992975D01* +X7640370Y6979310D01* +X7643063Y6965848D01* +X7647482Y6952945D01* +X7653528Y6940651D01* +X7661097Y6929221D01* +X7670139Y6918959D01* +X7680452Y6909968D01* +X7691831Y6902297D01* +X7704074Y6896303D01* +X7717028Y6891883D01* +X7730490Y6889191D01* +G37* +G36* +X7919974Y6888276D02* +G01* +X8076285Y6888276D01* +X8082635Y6889038D01* +X8088071Y6890969D01* +X8092998Y6893966D01* +X8097062Y6898131D01* +X8100161Y6903008D01* +X8102041Y6908495D01* +X8102803Y6914794D01* +X8102803Y7071156D01* +X8102041Y7077456D01* +X8100161Y7082942D01* +X8097062Y7087819D01* +X8092998Y7091883D01* +X8088071Y7094981D01* +X8082635Y7096912D01* +X8076285Y7097623D01* +X7919974Y7097623D01* +X7913624Y7096912D01* +X7908188Y7094981D01* +X7903260Y7091883D01* +X7899196Y7087819D01* +X7896098Y7082942D01* +X7894218Y7077456D01* +X7893507Y7071156D01* +X7893507Y6914794D01* +X7894218Y6908495D01* +X7896098Y6903008D01* +X7899196Y6898131D01* +X7903260Y6893966D01* +X7908188Y6890969D01* +X7913624Y6889038D01* +G37* +G36* +X1579981Y6935012D02* +G01* +X1610563Y6935012D01* +X1616913Y6935774D01* +X1622348Y6937705D01* +X1627276Y6940803D01* +X1631340Y6944817D01* +X1634439Y6949744D01* +X1636318Y6955180D01* +X1637030Y6961530D01* +X1637030Y7017105D01* +X1579981Y7017105D01* +G37* +G36* +X859993Y6935012D02* +G01* +X890574Y6935012D01* +X896924Y6935774D01* +X902360Y6937705D01* +X907287Y6940803D01* +X911352Y6944817D01* +X914450Y6949744D01* +X916330Y6955180D01* +X917041Y6961530D01* +X917041Y7017105D01* +X859993Y7017105D01* +G37* +G36* +X1461719Y6935012D02* +G01* +X1492300Y6935012D01* +X1492300Y7017105D01* +X1435252Y7017105D01* +X1435252Y6961530D01* +X1435963Y6955180D01* +X1437843Y6949744D01* +X1440942Y6944817D01* +X1445006Y6940803D01* +X1449933Y6937705D01* +X1455369Y6935774D01* +G37* +G36* +X741730Y6935012D02* +G01* +X772312Y6935012D01* +X772312Y7017105D01* +X715264Y7017105D01* +X715264Y6961530D01* +X715975Y6955180D01* +X717854Y6949744D01* +X720953Y6944817D01* +X725017Y6940803D01* +X729945Y6937705D01* +X735380Y6935774D01* +G37* +G36* +X6307480Y6938975D02* +G01* +X6338620Y6938975D01* +X6344970Y6939737D01* +X6350406Y6941667D01* +X6355334Y6944715D01* +X6359398Y6948779D01* +X6362496Y6953656D01* +X6364376Y6959193D01* +X6365138Y6965442D01* +X6365138Y6988556D01* +X6307480Y6988556D01* +G37* +G36* +X5494172Y6980072D02* +G01* +X5507990Y6980936D01* +X5521553Y6983730D01* +X5534660Y6988149D01* +X5547106Y6994245D01* +X5558586Y7001916D01* +X5569000Y7011111D01* +X5578144Y7021474D01* +X5585866Y7033056D01* +X5591962Y7045401D01* +X5596432Y7058558D01* +X5599125Y7072172D01* +X5600039Y7085939D01* +X5599125Y7099757D01* +X5596432Y7113320D01* +X5591962Y7126478D01* +X5585866Y7138924D01* +X5578144Y7150404D01* +X5569000Y7160818D01* +X5558586Y7169962D01* +X5547106Y7177684D01* +X5534660Y7183780D01* +X5521553Y7188250D01* +X5507990Y7190943D01* +X5494172Y7191857D01* +X5480304Y7190943D01* +X5466740Y7188250D01* +X5453634Y7183780D01* +X5441188Y7177684D01* +X5429707Y7169962D01* +X5419293Y7160818D01* +X5410149Y7150404D01* +X5402427Y7138924D01* +X5396331Y7126478D01* +X5391861Y7113320D01* +X5389168Y7099757D01* +X5388254Y7085939D01* +X5389168Y7072172D01* +X5391861Y7058558D01* +X5396331Y7045401D01* +X5402427Y7033056D01* +X5410149Y7021474D01* +X5419293Y7011111D01* +X5429707Y7001916D01* +X5441188Y6994245D01* +X5453634Y6988149D01* +X5466740Y6983730D01* +X5480304Y6980936D01* +G37* +G36* +X606044Y7018121D02* +G01* +X617575Y7019493D01* +X628802Y7022541D01* +X639419Y7027265D01* +X649122Y7033615D01* +X657809Y7041388D01* +X665226Y7050278D01* +X671169Y7060336D01* +X675487Y7071106D01* +X678129Y7082383D01* +X679043Y7093915D01* +X678129Y7105548D01* +X675487Y7116825D01* +X671169Y7127595D01* +X665226Y7137653D01* +X657809Y7146544D01* +X649122Y7154265D01* +X639419Y7160615D01* +X628802Y7165390D01* +X617575Y7168438D01* +X606044Y7169810D01* +X594461Y7169353D01* +X583031Y7167118D01* +X572109Y7163155D01* +X561898Y7157669D01* +X552653Y7150658D01* +X544626Y7142225D01* +X537921Y7132777D01* +X532790Y7122363D01* +X529285Y7111288D01* +X527507Y7099757D01* +X527507Y7088174D01* +X529285Y7076643D01* +X532790Y7065568D01* +X537921Y7055154D01* +X544626Y7045706D01* +X552653Y7037324D01* +X561898Y7030262D01* +X572109Y7024776D01* +X583031Y7020814D01* +X594461Y7018578D01* +G37* +G36* +X-187248Y7023862D02* +G01* +X-177444Y7025131D01* +X-167995Y7027976D01* +X-159156Y7032498D01* +X-151180Y7038340D01* +X-144322Y7045452D01* +X-138785Y7053681D01* +X-134721Y7062724D01* +X-132181Y7072274D01* +X-131368Y7082129D01* +X-132181Y7092035D01* +X-134721Y7101586D01* +X-138785Y7110628D01* +X-144322Y7118807D01* +X-151180Y7125970D01* +X-159156Y7131812D01* +X-167995Y7136282D01* +X-177444Y7139178D01* +X-187248Y7140498D01* +X-197154Y7140092D01* +X-206806Y7138009D01* +X-216001Y7134250D01* +X-224434Y7129068D01* +X-231902Y7122515D01* +X-238099Y7114794D01* +X-242925Y7106208D01* +X-246227Y7096912D01* +X-247904Y7087057D01* +X-247904Y7077202D01* +X-246227Y7067397D01* +X-242925Y7058101D01* +X-238099Y7049465D01* +X-231902Y7041794D01* +X-224434Y7035190D01* +X-216001Y7030059D01* +X-206806Y7026300D01* +X-197154Y7024268D01* +G37* +G36* +X258521Y7028891D02* +G01* +X268325Y7030212D01* +X277774Y7033107D01* +X286613Y7037527D01* +X294589Y7043420D01* +X301447Y7050582D01* +X306984Y7058812D01* +X311048Y7067803D01* +X313588Y7077405D01* +X314401Y7087260D01* +X313588Y7097115D01* +X311048Y7106716D01* +X306984Y7115708D01* +X301447Y7123938D01* +X294589Y7131100D01* +X286613Y7136892D01* +X277774Y7141413D01* +X268325Y7144308D01* +X258521Y7145528D01* +X248615Y7145121D01* +X238963Y7143038D01* +X229768Y7139330D01* +X221335Y7134199D01* +X213867Y7127595D01* +X207670Y7119924D01* +X202844Y7111288D01* +X199542Y7101992D01* +X197866Y7092188D01* +X197866Y7082332D01* +X199542Y7072528D01* +X202844Y7063231D01* +X207670Y7054596D01* +X213867Y7046823D01* +X221335Y7040321D01* +X229768Y7035088D01* +X238963Y7031380D01* +X248615Y7029297D01* +G37* +G36* +X11021771Y7046722D02* +G01* +X11031575Y7047941D01* +X11041024Y7050836D01* +X11049863Y7055307D01* +X11057839Y7061149D01* +X11064697Y7068312D01* +X11070234Y7076592D01* +X11074298Y7085533D01* +X11076838Y7095185D01* +X11077651Y7104989D01* +X11076838Y7114844D01* +X11074298Y7124496D01* +X11070234Y7133437D01* +X11064697Y7141667D01* +X11057839Y7148880D01* +X11049863Y7154722D01* +X11041024Y7159193D01* +X11031575Y7162088D01* +X11021771Y7163358D01* +X11011865Y7162952D01* +X11002213Y7160818D01* +X10993018Y7157161D01* +X10984585Y7151928D01* +X10977118Y7145426D01* +X10970920Y7137653D01* +X10966094Y7129018D01* +X10962792Y7119721D01* +X10961116Y7109917D01* +X10961116Y7100062D01* +X10962792Y7090308D01* +X10966094Y7081012D01* +X10970920Y7072325D01* +X10977118Y7064603D01* +X10984585Y7058050D01* +X10993018Y7052868D01* +X11002213Y7049211D01* +X11011865Y7047128D01* +G37* +G36* +X11467541Y7051751D02* +G01* +X11477345Y7053072D01* +X11486794Y7055967D01* +X11495633Y7060438D01* +X11503609Y7066280D01* +X11510467Y7073392D01* +X11516004Y7081621D01* +X11520068Y7090664D01* +X11522608Y7100214D01* +X11523421Y7110120D01* +X11522608Y7119975D01* +X11520068Y7129525D01* +X11516004Y7138568D01* +X11510467Y7146798D01* +X11503609Y7153909D01* +X11495633Y7159752D01* +X11486794Y7164222D01* +X11477345Y7167118D01* +X11467541Y7168438D01* +X11457635Y7167981D01* +X11447983Y7165949D01* +X11438788Y7162190D01* +X11430355Y7157059D01* +X11422888Y7150455D01* +X11416690Y7142734D01* +X11411864Y7134148D01* +X11408562Y7124852D01* +X11406886Y7115048D01* +X11406886Y7105142D01* +X11408562Y7095337D01* +X11411864Y7086041D01* +X11416690Y7077456D01* +X11422888Y7069734D01* +X11430355Y7063130D01* +X11438788Y7057999D01* +X11447983Y7054240D01* +X11457635Y7052208D01* +G37* +G36* +X6307480Y7061301D02* +G01* +X6365138Y7061301D01* +X6365138Y7084364D01* +X6364376Y7090664D01* +X6362496Y7096150D01* +X6359398Y7101027D01* +X6355334Y7105091D01* +X6350406Y7108190D01* +X6344970Y7110120D01* +X6338620Y7110831D01* +X6307480Y7110831D01* +G37* +G36* +X6160922Y7061301D02* +G01* +X6218580Y7061301D01* +X6218580Y7110831D01* +X6187389Y7110831D01* +X6181039Y7110120D01* +X6175603Y7108190D01* +X6170676Y7105091D01* +X6166612Y7101027D01* +X6163513Y7096150D01* +X6161633Y7090664D01* +X6160922Y7084364D01* +G37* +G36* +X3478936Y7107326D02* +G01* +X3505504Y7107326D01* +X3505504Y7125411D01* +X3504793Y7131710D01* +X3502863Y7137196D01* +X3499815Y7142073D01* +X3495700Y7146137D01* +X3490823Y7149287D01* +X3485337Y7151166D01* +X3478936Y7151827D01* +G37* +G36* +X859993Y7154773D02* +G01* +X917041Y7154773D01* +X917041Y7210399D01* +X916330Y7216749D01* +X914450Y7222185D01* +X911352Y7227062D01* +X907287Y7231125D01* +X902360Y7234275D01* +X896924Y7236206D01* +X890574Y7236866D01* +X859993Y7236866D01* +G37* +G36* +X715264Y7154773D02* +G01* +X772312Y7154773D01* +X772312Y7236866D01* +X741730Y7236866D01* +X735380Y7236206D01* +X729945Y7234275D01* +X725017Y7231125D01* +X720953Y7227062D01* +X717854Y7222185D01* +X715975Y7216749D01* +X715264Y7210399D01* +G37* +G36* +X196291Y7185101D02* +G01* +X206095Y7186422D01* +X215544Y7189317D01* +X224383Y7193788D01* +X232359Y7199630D01* +X239217Y7206742D01* +X244754Y7214971D01* +X246532Y7218832D01* +X248716Y7222032D01* +X251967Y7224115D01* +X255778Y7224775D01* +X295656Y7224775D01* +X284835Y7243216D01* +X271221Y7262672D01* +X256032Y7280859D01* +X239420Y7297877D01* +X221488Y7313422D01* +X202387Y7327392D01* +X182118Y7339888D01* +X178968Y7341412D01* +X178968Y7307072D01* +X178206Y7303160D01* +X175971Y7299807D01* +X172618Y7297572D01* +X167538Y7295540D01* +X159105Y7290409D01* +X151638Y7283805D01* +X145440Y7276084D01* +X140614Y7267498D01* +X137312Y7258202D01* +X135636Y7248398D01* +X135636Y7238492D01* +X137312Y7228687D01* +X140614Y7219391D01* +X145440Y7210806D01* +X151638Y7203084D01* +X159105Y7196480D01* +X167538Y7191349D01* +X176733Y7187590D01* +X186385Y7185558D01* +G37* +G36* +X-116128Y7186422D02* +G01* +X-106324Y7187641D01* +X-96875Y7190536D01* +X-88036Y7195007D01* +X-80060Y7200849D01* +X-73202Y7208012D01* +X-67665Y7216292D01* +X-63601Y7225233D01* +X-61061Y7234885D01* +X-60248Y7244689D01* +X-61061Y7254544D01* +X-63601Y7264196D01* +X-67665Y7273137D01* +X-73202Y7281367D01* +X-80060Y7288580D01* +X-88036Y7294422D01* +X-93116Y7296962D01* +X-96113Y7299299D01* +X-98044Y7302398D01* +X-98704Y7306106D01* +X-98704Y7341362D01* +X-112115Y7333843D01* +X-131826Y7320635D01* +X-150368Y7305802D01* +X-167640Y7289596D01* +X-183540Y7271969D01* +X-197967Y7253071D01* +X-210820Y7233107D01* +X-215239Y7224775D01* +X-180086Y7224775D01* +X-176580Y7224166D01* +X-173482Y7222337D01* +X-171196Y7219645D01* +X-166979Y7212025D01* +X-160782Y7204303D01* +X-153314Y7197750D01* +X-144881Y7192568D01* +X-135686Y7188911D01* +X-126034Y7186828D01* +G37* +G36* +X11405311Y7208012D02* +G01* +X11415115Y7209281D01* +X11424564Y7212126D01* +X11433403Y7216648D01* +X11441379Y7222490D01* +X11448237Y7229602D01* +X11453774Y7237831D01* +X11455552Y7241743D01* +X11457736Y7244842D01* +X11460988Y7246975D01* +X11464798Y7247636D01* +X11504676Y7247636D01* +X11493855Y7266127D01* +X11480241Y7285532D01* +X11465052Y7303770D01* +X11448440Y7320737D01* +X11430508Y7336281D01* +X11411407Y7350252D01* +X11391138Y7362748D01* +X11387988Y7364323D01* +X11387988Y7329931D01* +X11387226Y7326020D01* +X11384991Y7322667D01* +X11381638Y7320432D01* +X11376558Y7318400D01* +X11368125Y7313218D01* +X11360658Y7306665D01* +X11354460Y7298944D01* +X11349634Y7290358D01* +X11346332Y7281062D01* +X11344656Y7271207D01* +X11344656Y7261352D01* +X11346332Y7251547D01* +X11349634Y7242251D01* +X11354460Y7233615D01* +X11360658Y7225944D01* +X11368125Y7219340D01* +X11376558Y7214209D01* +X11385753Y7210450D01* +X11395405Y7208418D01* +G37* +G36* +X11092891Y7209281D02* +G01* +X11102695Y7210501D01* +X11112144Y7213396D01* +X11120983Y7217867D01* +X11128959Y7223709D01* +X11135817Y7230922D01* +X11141354Y7239152D01* +X11145418Y7248093D01* +X11147958Y7257745D01* +X11148771Y7267600D01* +X11147958Y7277404D01* +X11145418Y7287056D01* +X11141354Y7295997D01* +X11135817Y7304227D01* +X11128959Y7311440D01* +X11120983Y7317282D01* +X11115903Y7319873D01* +X11112906Y7322159D01* +X11110976Y7325258D01* +X11110315Y7328966D01* +X11110315Y7364222D01* +X11096904Y7356652D01* +X11077194Y7343444D01* +X11058652Y7328662D01* +X11041380Y7312456D01* +X11025479Y7294829D01* +X11011052Y7275931D01* +X10998200Y7255967D01* +X10993780Y7247636D01* +X11028934Y7247636D01* +X11032439Y7247077D01* +X11035538Y7245197D01* +X11037824Y7242505D01* +X11042040Y7234885D01* +X11048238Y7227163D01* +X11055705Y7220661D01* +X11064138Y7215428D01* +X11073333Y7211771D01* +X11082985Y7209637D01* +G37* +G36* +X1939543Y7218375D02* +G01* +X1939543Y7238644D01* +X1907489Y7238644D01* +X1907489Y7230516D01* +X1908200Y7224166D01* +X1909724Y7220000D01* +X1910334Y7220203D01* +X1921764Y7221169D01* +X1923542Y7221169D01* +X1934972Y7220203D01* +X1938578Y7219188D01* +G37* +G36* +X38811Y7249922D02* +G01* +X48615Y7251141D01* +X58064Y7254036D01* +X66903Y7258507D01* +X74879Y7264349D01* +X81737Y7271512D01* +X87274Y7279792D01* +X91338Y7288733D01* +X93878Y7298385D01* +X94691Y7308189D01* +X93878Y7318044D01* +X91338Y7327696D01* +X87274Y7336637D01* +X81737Y7344867D01* +X74879Y7352080D01* +X66903Y7357922D01* +X58064Y7362393D01* +X48615Y7365288D01* +X38811Y7366558D01* +X28905Y7366152D01* +X19253Y7364018D01* +X10058Y7360361D01* +X1625Y7355128D01* +X-5842Y7348626D01* +X-12039Y7340853D01* +X-16865Y7332218D01* +X-20167Y7322921D01* +X-21844Y7313117D01* +X-21844Y7303262D01* +X-20167Y7293508D01* +X-16865Y7284212D01* +X-12039Y7275525D01* +X-5842Y7267803D01* +X1625Y7261250D01* +X10058Y7256068D01* +X19253Y7252411D01* +X28905Y7250328D01* +G37* +G36* +X11247831Y7272781D02* +G01* +X11257635Y7274001D01* +X11267084Y7276896D01* +X11275923Y7281367D01* +X11283899Y7287209D01* +X11290757Y7294422D01* +X11296294Y7302652D01* +X11300358Y7311593D01* +X11302898Y7321245D01* +X11303711Y7331100D01* +X11302898Y7340904D01* +X11300358Y7350556D01* +X11296294Y7359497D01* +X11290757Y7367727D01* +X11283899Y7374940D01* +X11275923Y7380782D01* +X11267084Y7385253D01* +X11257635Y7388148D01* +X11247831Y7389368D01* +X11237925Y7389012D01* +X11228273Y7386878D01* +X11219078Y7383221D01* +X11210645Y7377988D01* +X11203178Y7371486D01* +X11196980Y7363764D01* +X11192154Y7355078D01* +X11188852Y7345781D01* +X11187176Y7335977D01* +X11187176Y7326172D01* +X11188852Y7316368D01* +X11192154Y7307072D01* +X11196980Y7298385D01* +X11203178Y7290663D01* +X11210645Y7284161D01* +X11219078Y7278928D01* +X11228273Y7275271D01* +X11237925Y7273137D01* +G37* +G36* +X3471976Y7276947D02* +G01* +X3477564Y7276947D01* +X3483864Y7277709D01* +X3489350Y7279640D01* +X3494227Y7282738D01* +X3498342Y7286752D01* +X3501390Y7291679D01* +X3503320Y7297115D01* +X3504031Y7303465D01* +X3504031Y7311593D01* +X3471976Y7311593D01* +G37* +G36* +X2961284Y7319822D02* +G01* +X2996285Y7319822D01* +X2996285Y7361885D01* +X2975711Y7361885D01* +X2969412Y7361174D01* +X2963926Y7359294D01* +X2959049Y7356144D01* +X2954934Y7352131D01* +X2953359Y7349540D01* +X2950514Y7346594D01* +X2946755Y7344968D01* +X2942691Y7344968D01* +X2938932Y7346594D01* +X2935325Y7350759D01* +X2931261Y7354925D01* +X2926334Y7357973D01* +X2920898Y7359903D01* +X2914548Y7360564D01* +X2906471Y7360564D01* +X2906471Y7328560D01* +X2951226Y7328560D01* +X2954731Y7327849D01* +X2957880Y7326071D01* +X2960116Y7323277D01* +G37* +G36* +X2779471Y7328560D02* +G01* +X2863799Y7328560D01* +X2863799Y7360564D01* +X2855722Y7360564D01* +X2849372Y7359903D01* +X2843936Y7357973D01* +X2839008Y7354925D01* +X2834944Y7350759D01* +X2831846Y7345883D01* +X2831236Y7344156D01* +X2829102Y7340549D01* +X2825699Y7338110D01* +X2821635Y7337348D01* +X2817571Y7338110D01* +X2814167Y7340549D01* +X2812034Y7344156D01* +X2811424Y7345883D01* +X2808325Y7350759D01* +X2804261Y7354925D01* +X2799334Y7357973D01* +X2793898Y7359903D01* +X2787548Y7360564D01* +X2779471Y7360564D01* +G37* +G36* +X3869029Y7352792D02* +G01* +X3911092Y7352792D01* +X3911092Y7399883D01* +X3895496Y7399883D01* +X3889197Y7399121D01* +X3883710Y7397242D01* +X3878834Y7394143D01* +X3874719Y7390079D01* +X3871671Y7385202D01* +X3869740Y7379665D01* +X3869029Y7373416D01* +G37* +G36* +X3968800Y7352792D02* +G01* +X4010863Y7352792D01* +X4010863Y7373416D01* +X4010151Y7379665D01* +X4008221Y7385202D01* +X4005173Y7390079D01* +X4001058Y7394143D01* +X3996182Y7397242D01* +X3990695Y7399121D01* +X3984396Y7399883D01* +X3968800Y7399883D01* +G37* +G36* +X3471976Y7354214D02* +G01* +X3504031Y7354214D01* +X3504031Y7362342D01* +X3503320Y7368692D01* +X3501390Y7374077D01* +X3498342Y7379004D01* +X3494227Y7383068D01* +X3489350Y7386218D01* +X3483864Y7388148D01* +X3477564Y7388809D01* +X3471976Y7388809D01* +G37* + +%LPD*% +G36* +X3262731Y7001865D02* +G01* +X3258921Y7002576D01* +X3255670Y7004710D01* +X3253486Y7007809D01* +X3252571Y7011619D01* +X3253130Y7015429D01* +X3254806Y7020255D01* +X3255517Y7026452D01* +X3256838Y7030516D01* +X3259683Y7033615D01* +X3263493Y7035292D01* +X3267710Y7035292D01* +X3271570Y7033615D01* +X3274364Y7030516D01* +X3275685Y7026452D01* +X3276396Y7020255D01* +X3278124Y7015429D01* +X3278682Y7011619D01* +X3277768Y7007809D01* +X3275533Y7004710D01* +X3272282Y7002576D01* +X3268522Y7001865D01* +G37* + +%LPD*% +G36* +X3129991Y6762953D02* +G01* +X3126181Y6763512D01* +X3121355Y6765137D01* +X3115056Y6765899D01* +X3111093Y6767220D01* +X3107944Y6770014D01* +X3106267Y6773824D01* +X3106267Y6778091D01* +X3107944Y6781952D01* +X3111093Y6784695D01* +X3115056Y6786016D01* +X3121355Y6786778D01* +X3126181Y6788454D01* +X3129991Y6789013D01* +X3133750Y6788099D01* +X3136900Y6785914D01* +X3138982Y6782612D01* +X3139694Y6778853D01* +X3139694Y6773113D01* +X3138982Y6769303D01* +X3136900Y6766001D01* +X3133750Y6763816D01* +G37* + +%LPD*% +G36* +X3313480Y6616598D02* +G01* +X3309670Y6618325D01* +X3306826Y6621424D01* +X3305505Y6625386D01* +X3304794Y6631686D01* +X3303117Y6636512D01* +X3302558Y6640372D01* +X3303422Y6644131D01* +X3305657Y6647230D01* +X3308908Y6649313D01* +X3312718Y6650075D01* +X3318510Y6650075D01* +X3322269Y6649313D01* +X3325520Y6647230D01* +X3327755Y6644131D01* +X3328670Y6640372D01* +X3328111Y6636512D01* +X3326384Y6631686D01* +X3325672Y6625386D01* +X3324351Y6621424D01* +X3321558Y6618325D01* +X3317697Y6616598D01* +G37* + +%LPD*% +G36* +X3323640Y6434277D02* +G01* +X3319729Y6435090D01* +X3316427Y6437223D01* +X3307181Y6446469D01* +X3304997Y6449822D01* +X3304235Y6453733D01* +X3304235Y6516827D01* +X3305505Y6526530D01* +X3306826Y6530492D01* +X3309670Y6533591D01* +X3313480Y6535318D01* +X3317697Y6535318D01* +X3321558Y6533591D01* +X3324351Y6530492D01* +X3325672Y6526530D01* +X3326993Y6516776D01* +X3326993Y6497726D01* +X3327806Y6489649D01* +X3329990Y6482486D01* +X3333546Y6475780D01* +X3338677Y6469532D01* +X3356610Y6451650D01* +X3358794Y6448348D01* +X3359556Y6444488D01* +X3358794Y6440576D01* +X3356610Y6437223D01* +X3353308Y6435090D01* +X3349396Y6434277D01* +G37* + +%LPD*% +G36* +X3946855Y6246317D02* +G01* +X3942943Y6247130D01* +X3939590Y6249314D01* +X3937406Y6252667D01* +X3936695Y6256578D01* +X3937558Y6260490D01* +X3939844Y6263792D01* +X3944010Y6267805D01* +X3953560Y6278575D01* +X3955948Y6281724D01* +X3964076Y6293713D01* +X3966006Y6297066D01* +X3972509Y6310122D01* +X3974033Y6313627D01* +X3978757Y6327394D01* +X3979773Y6331204D01* +X3982669Y6345377D01* +X3983228Y6349288D01* +X3984244Y6364427D01* +X3984244Y6368338D01* +X3983278Y6382867D01* +X3982770Y6386728D01* +X3979976Y6401003D01* +X3978960Y6404660D01* +X3974287Y6418478D01* +X3972814Y6422085D01* +X3966362Y6435140D01* +X3964432Y6438493D01* +X3956354Y6450533D01* +X3954018Y6453632D01* +X3944416Y6464554D01* +X3941673Y6467348D01* +X3930751Y6476847D01* +X3927703Y6479235D01* +X3915613Y6487363D01* +X3912260Y6489293D01* +X3899204Y6495745D01* +X3895648Y6497218D01* +X3881882Y6501892D01* +X3878122Y6502857D01* +X3863898Y6505752D01* +X3860037Y6506260D01* +X3845509Y6507226D01* +X3841648Y6507226D01* +X3827170Y6506260D01* +X3823309Y6505803D01* +X3809034Y6503009D01* +X3805275Y6501993D01* +X3791508Y6497320D01* +X3787952Y6495846D01* +X3774897Y6489496D01* +X3771544Y6487515D01* +X3759403Y6479438D01* +X3756355Y6477152D01* +X3745382Y6467500D01* +X3742639Y6464757D01* +X3733037Y6453886D01* +X3730650Y6450838D01* +X3722573Y6438747D01* +X3720642Y6435394D01* +X3714191Y6422390D01* +X3712667Y6418783D01* +X3707993Y6405016D01* +X3706977Y6401257D01* +X3704082Y6387033D01* +X3703574Y6383172D01* +X3702608Y6368745D01* +X3702558Y6364833D01* +X3703472Y6350304D01* +X3703980Y6346444D01* +X3706774Y6332169D01* +X3707790Y6328410D01* +X3712413Y6314643D01* +X3713886Y6311087D01* +X3717645Y6303365D01* +X3718661Y6299454D01* +X3718051Y6295491D01* +X3715969Y6292037D01* +X3712667Y6289700D01* +X3708704Y6288786D01* +X3704691Y6289548D01* +X3701338Y6291732D01* +X3561587Y6431483D01* +X3558133Y6434683D01* +X3554628Y6437325D01* +X3550869Y6439712D01* +X3546906Y6441795D01* +X3542842Y6443522D01* +X3538575Y6444894D01* +X3534257Y6445808D01* +X3529837Y6446418D01* +X3525215Y6446570D01* +X3475024Y6446570D01* +X3471164Y6447383D01* +X3467862Y6449517D01* +X3432962Y6484518D01* +X3430574Y6488125D01* +X3430015Y6492494D01* +X3431286Y6496710D01* +X3434232Y6499910D01* +X3438245Y6501688D01* +X3442614Y6501536D01* +X3445408Y6500774D01* +X3452164Y6500063D01* +X3479037Y6500063D01* +X3485337Y6500723D01* +X3490823Y6502654D01* +X3495700Y6505752D01* +X3499815Y6509867D01* +X3502863Y6514795D01* +X3504793Y6520180D01* +X3505555Y6528155D01* +X3506571Y6531762D01* +X3508857Y6534759D01* +X3512007Y6536690D01* +X3515664Y6537350D01* +X4122623Y6537350D01* +X4130649Y6538163D01* +X4137914Y6540296D01* +X4144568Y6543852D01* +X4150817Y6549034D01* +X4163161Y6561328D01* +X4166463Y6563614D01* +X4170324Y6564325D01* +X4220870Y6564325D01* +X4224223Y6563766D01* +X4227220Y6562140D01* +X4229506Y6559600D01* +X4231233Y6556857D01* +X4235297Y6552793D01* +X4240225Y6549644D01* +X4245660Y6547713D01* +X4252010Y6547053D01* +X4300829Y6547053D01* +X4307179Y6547713D01* +X4312615Y6549644D01* +X4316730Y6552285D01* +X4320235Y6553606D01* +X4324045Y6553606D01* +X4327550Y6552285D01* +X4331665Y6549644D01* +X4337100Y6547713D01* +X4343450Y6547053D01* +X4392269Y6547053D01* +X4398619Y6547713D01* +X4404055Y6549644D01* +X4408982Y6552793D01* +X4413046Y6556857D01* +X4414774Y6559600D01* +X4417060Y6562140D01* +X4420057Y6563766D01* +X4423410Y6564325D01* +X4595723Y6564325D01* +X4599482Y6563664D01* +X4602734Y6561581D01* +X4605121Y6559245D01* +X4613198Y6553555D01* +X4622038Y6549491D01* +X4631436Y6546951D01* +X4641138Y6546138D01* +X4650841Y6546951D01* +X4660239Y6549491D01* +X4669078Y6553555D01* +X4677054Y6559194D01* +X4683912Y6566103D01* +X4689500Y6574028D01* +X4693615Y6582816D01* +X4696155Y6592265D01* +X4697018Y6601917D01* +X4696155Y6611620D01* +X4693615Y6621068D01* +X4689500Y6629857D01* +X4683912Y6637883D01* +X4677054Y6644792D01* +X4669078Y6650329D01* +X4660239Y6654495D01* +X4650841Y6657035D01* +X4641138Y6657848D01* +X4631436Y6657035D01* +X4622038Y6654495D01* +X4613198Y6650329D01* +X4601718Y6642353D01* +X4597806Y6641541D01* +X4423410Y6641541D01* +X4420057Y6642150D01* +X4417060Y6643827D01* +X4414774Y6646316D01* +X4413046Y6649110D01* +X4408982Y6653123D01* +X4404055Y6656222D01* +X4400397Y6657492D01* +X4396841Y6659676D01* +X4394403Y6663029D01* +X4393590Y6667144D01* +X4394403Y6671208D01* +X4396841Y6674612D01* +X4400397Y6676694D01* +X4403090Y6677659D01* +X4407966Y6680758D01* +X4412081Y6684873D01* +X4413808Y6687616D01* +X4416094Y6690156D01* +X4419041Y6691782D01* +X4422394Y6692341D01* +X4510938Y6692341D01* +X4515459Y6691274D01* +X4518507Y6689699D01* +X4527194Y6683552D01* +X4536033Y6679488D01* +X4545431Y6676948D01* +X4555134Y6676085D01* +X4564837Y6676948D01* +X4574235Y6679488D01* +X4583074Y6683552D01* +X4591050Y6689191D01* +X4597908Y6696100D01* +X4603496Y6704025D01* +X4607610Y6712813D01* +X4610150Y6722313D01* +X4611014Y6731914D01* +X4610150Y6741617D01* +X4607610Y6751116D01* +X4603496Y6759905D01* +X4597908Y6767880D01* +X4591050Y6774738D01* +X4583074Y6780326D01* +X4574235Y6784492D01* +X4564837Y6786981D01* +X4555134Y6787845D01* +X4545431Y6786981D01* +X4536033Y6784492D01* +X4527194Y6780326D01* +X4519117Y6774738D01* +X4516729Y6772351D01* +X4513478Y6770319D01* +X4509719Y6769557D01* +X4422394Y6769557D01* +X4419041Y6770166D01* +X4416044Y6771792D01* +X4413808Y6774281D01* +X4412081Y6777075D01* +X4407966Y6781139D01* +X4399178Y6786473D01* +X4396740Y6789877D01* +X4395927Y6793941D01* +X4396740Y6798056D01* +X4399178Y6801408D01* +X4407966Y6806793D01* +X4412081Y6810857D01* +X4413808Y6813600D01* +X4416094Y6816140D01* +X4419041Y6817766D01* +X4422394Y6818325D01* +X4676851Y6818325D01* +X4680712Y6817614D01* +X4684014Y6815328D01* +X4685233Y6814210D01* +X4693208Y6808571D01* +X4702048Y6804507D01* +X4711446Y6801967D01* +X4721148Y6801103D01* +X4730851Y6801967D01* +X4744720Y6805625D01* +X4748733Y6805015D01* +X4752136Y6802780D01* +X4754422Y6799478D01* +X4755235Y6795465D01* +X4755235Y6547408D01* +X4754778Y6544309D01* +X4753406Y6541617D01* +X4748631Y6534810D01* +X4745634Y6528257D01* +X4743602Y6525412D01* +X4561586Y6343446D01* +X4557979Y6341008D01* +X4555693Y6337554D01* +X4542383Y6324244D01* +X4539081Y6321958D01* +X4535220Y6321247D01* +X4531309Y6321958D01* +X4528007Y6324244D01* +X4525822Y6327495D01* +X4525060Y6331356D01* +X4525060Y6338163D01* +X4525873Y6342278D01* +X4528312Y6345580D01* +X4531868Y6347764D01* +X4537354Y6349695D01* +X4543094Y6353302D01* +X4545076Y6354064D01* +X4545787Y6355994D01* +X4549444Y6361785D01* +X4551324Y6367221D01* +X4552035Y6373571D01* +X4552035Y6462420D01* +X4551324Y6468770D01* +X4549444Y6474206D01* +X4546346Y6479133D01* +X4542231Y6483146D01* +X4537354Y6486245D01* +X4531868Y6488125D01* +X4525568Y6488887D01* +X4416704Y6488887D01* +X4410405Y6488125D01* +X4404918Y6486245D01* +X4400042Y6483146D01* +X4395927Y6479133D01* +X4390593Y6470294D01* +X4387189Y6467906D01* +X4383125Y6466992D01* +X4379061Y6467906D01* +X4375708Y6470294D01* +X4370324Y6479133D01* +X4366260Y6483146D01* +X4361332Y6486245D01* +X4355896Y6488125D01* +X4349546Y6488887D01* +X4328972Y6488887D01* +X4328972Y6446824D01* +X4380077Y6446824D01* +X4383938Y6446012D01* +X4387240Y6443878D01* +X4389475Y6440576D01* +X4390237Y6436664D01* +X4390237Y6399276D01* +X4389475Y6395364D01* +X4387240Y6392113D01* +X4383938Y6389878D01* +X4380077Y6389166D01* +X4328972Y6389166D01* +X4328972Y6347053D01* +X4349546Y6347053D01* +X4355896Y6347815D01* +X4361332Y6349695D01* +X4366260Y6352743D01* +X4370324Y6356807D01* +X4375708Y6365697D01* +X4379061Y6368034D01* +X4383125Y6368897D01* +X4387189Y6368034D01* +X4390593Y6365697D01* +X4395927Y6356807D01* +X4400042Y6352743D01* +X4404918Y6349695D01* +X4414723Y6346647D01* +X4417669Y6344361D01* +X4419549Y6341160D01* +X4420209Y6337554D01* +X4420209Y6256477D01* +X4419447Y6252565D01* +X4417263Y6249263D01* +X4413961Y6247130D01* +X4410049Y6246317D01* +X4017670Y6246317D01* +X4013403Y6247231D01* +X4012031Y6247892D01* +X4002582Y6250482D01* +X3992930Y6251244D01* +X3983228Y6250482D01* +X3973779Y6247892D01* +X3972407Y6247231D01* +X3968140Y6246317D01* +G37* + +%LPC*% +G36* +X4240733Y6347053D02* +G01* +X4261307Y6347053D01* +X4261307Y6389166D01* +X4214215Y6389166D01* +X4214215Y6373571D01* +X4214926Y6367221D01* +X4216857Y6361785D01* +X4219956Y6356807D01* +X4224020Y6352743D01* +X4228947Y6349695D01* +X4234383Y6347815D01* +G37* +G36* +X4214215Y6446824D02* +G01* +X4261307Y6446824D01* +X4261307Y6488887D01* +X4240733Y6488887D01* +X4234383Y6488125D01* +X4228947Y6486245D01* +X4224020Y6483146D01* +X4219956Y6479133D01* +X4216857Y6474206D01* +X4214926Y6468770D01* +X4214215Y6462420D01* +G37* + +%LPD*% +G36* +X3390188Y6138062D02* +G01* +X3386277Y6138773D01* +X3382975Y6141008D01* +X3223006Y6300927D01* +X3220821Y6304280D01* +X3220059Y6308191D01* +X3220059Y6329680D01* +X3219348Y6336030D01* +X3217418Y6341465D01* +X3214827Y6345529D01* +X3213455Y6349085D01* +X3213455Y6352844D01* +X3214827Y6356400D01* +X3217418Y6360515D01* +X3219348Y6365900D01* +X3220059Y6372250D01* +X3220059Y6400088D01* +X3220872Y6404152D01* +X3223260Y6407505D01* +X3226765Y6409740D01* +X3230880Y6410299D01* +X3234842Y6409182D01* +X3238652Y6405880D01* +X3275787Y6368745D01* +X3281984Y6363614D01* +X3288639Y6360007D01* +X3295904Y6357874D01* +X3303930Y6357112D01* +X3389731Y6357112D01* +X3392779Y6356604D01* +X3395573Y6355232D01* +X3400704Y6351676D01* +X3407054Y6348679D01* +X3410051Y6346494D01* +X3412134Y6343446D01* +X3412896Y6339738D01* +X3411931Y6335014D01* +X3411220Y6328664D01* +X3411220Y6323076D01* +X3445814Y6323076D01* +X3445814Y6334607D01* +X3446576Y6338519D01* +X3448761Y6341821D01* +X3452063Y6343954D01* +X3455974Y6344818D01* +X3478326Y6344818D01* +X3482238Y6343954D01* +X3485540Y6341821D01* +X3487724Y6338519D01* +X3488486Y6334607D01* +X3488486Y6323076D01* +X3521811Y6323076D01* +X3525723Y6322314D01* +X3529025Y6320078D01* +X3689553Y6159601D01* +X3693210Y6156248D01* +X3695903Y6153048D01* +X3697122Y6149035D01* +X3696665Y6144920D01* +X3694531Y6141313D01* +X3691128Y6138875D01* +X3687013Y6138062D01* +G37* + +%LPC*% +G36* +X3437737Y6253276D02* +G01* +X3445814Y6253276D01* +X3445814Y6285331D01* +X3411220Y6285331D01* +X3411220Y6279845D01* +X3411931Y6273495D01* +X3413861Y6268059D01* +X3416960Y6263132D01* +X3421024Y6259017D01* +X3425951Y6255969D01* +X3431387Y6254038D01* +G37* +G36* +X3488486Y6253276D02* +G01* +X3496564Y6253276D01* +X3502914Y6254038D01* +X3508349Y6255969D01* +X3513277Y6259017D01* +X3517341Y6263132D01* +X3520440Y6268059D01* +X3522370Y6273495D01* +X3523081Y6279845D01* +X3523081Y6285331D01* +X3488486Y6285331D01* +G37* + +%LPD*% +G36* +X5509818Y5915710D02* +G01* +X5505958Y5916523D01* +X5502656Y5918758D01* +X5344007Y6077356D01* +X5341823Y6080607D01* +X5341061Y6084519D01* +X5341061Y6442862D01* +X5341823Y6446774D01* +X5344007Y6450025D01* +X5347309Y6452260D01* +X5351221Y6452971D01* +X6045809Y6452971D01* +X6052159Y6453784D01* +X6057595Y6455664D01* +X6062522Y6458712D01* +X6064097Y6460286D01* +X6067094Y6462420D01* +X6070650Y6463233D01* +X6074257Y6462826D01* +X6077508Y6461150D01* +X6087059Y6450025D01* +X6166510Y6370624D01* +X6168694Y6367322D01* +X6169507Y6363462D01* +X6169507Y6139434D01* +X6170218Y6133185D01* +X6172098Y6127648D01* +X6175197Y6122771D01* +X6179261Y6118707D01* +X6184188Y6115659D01* +X6189624Y6113729D01* +X6195974Y6112967D01* +X6315202Y6112967D01* +X6319621Y6111951D01* +X6323126Y6109157D01* +X6325108Y6105093D01* +X6330391Y6073800D01* +X6333286Y6044184D01* +X6334201Y6015329D01* +X6335115Y6002578D01* +X6337757Y5990691D01* +X6342024Y5979160D01* +X6347917Y5968390D01* +X6355232Y5958586D01* +X6363919Y5949899D01* +X6373723Y5942584D01* +X6384442Y5936691D01* +X6387896Y5935472D01* +X6391351Y5933287D01* +X6393637Y5930087D01* +X6394551Y5926175D01* +X6393840Y5922213D01* +X6391605Y5918809D01* +X6388303Y5916523D01* +X6384391Y5915710D01* +G37* + +%LPC*% +G36* +X5705703Y6148933D02* +G01* +X5798820Y6148933D01* +X5798820Y6198463D01* +X5679236Y6198463D01* +X5679236Y6175400D01* +X5679948Y6169050D01* +X5681878Y6163665D01* +X5684926Y6158738D01* +X5689041Y6154674D01* +X5693918Y6151524D01* +X5699404Y6149594D01* +G37* +G36* +X6011468Y6148933D02* +G01* +X6104585Y6148933D01* +X6110884Y6149594D01* +X6116370Y6151524D01* +X6121247Y6154674D01* +X6125362Y6158738D01* +X6128410Y6163665D01* +X6130340Y6169050D01* +X6131052Y6175400D01* +X6131052Y6198463D01* +X6011468Y6198463D01* +G37* +G36* +X6011468Y6271158D02* +G01* +X6131052Y6271158D01* +X6131052Y6294221D01* +X6130340Y6300571D01* +X6128410Y6306007D01* +X6125362Y6310985D01* +X6121247Y6315049D01* +X6116370Y6318097D01* +X6110884Y6320028D01* +X6104585Y6320790D01* +X6011468Y6320790D01* +G37* +G36* +X5679236Y6271158D02* +G01* +X5798820Y6271158D01* +X5798820Y6320790D01* +X5705703Y6320790D01* +X5699404Y6320028D01* +X5693918Y6318097D01* +X5689041Y6315049D01* +X5684926Y6310985D01* +X5681878Y6306007D01* +X5679948Y6300571D01* +X5679236Y6294221D01* +G37* + +%LPD*% +D10* +X3565631Y6975962D02* +G01* +X3664224Y6975962D01* +X3724061Y7035800D01* +X3724061Y7142962D01* +X3574163Y7248961D02* +G01* +X3594323Y7248961D01* +X3664323Y7318961D01* +X3724061Y7318961D01* +X3565631Y6925960D02* +G01* +X3792021Y6925960D01* +X3939961Y7073900D01* +X3939961Y7142962D01* +X3941963Y7140961D01* +X4157263Y7140961D01* +X4157263Y7316960D02* +G01* +X4317199Y7316960D01* +X4318200Y7317960D01* +D11* +X5240162Y7085962D02* +G01* +X5240162Y6038537D01* +X5463849Y5814849D01* +X6535163Y5814849D01* +D12* +X995420Y5239913D02* +G01* +X1554116Y5239913D01* +X1643164Y5328960D01* +X1918162Y5603961D01* +X2354132Y5603961D01* +X4563996Y5603961D01* +X4986162Y6026127D01* +X4986162Y7085962D01* +D13* +X8148429Y4447847D02* +G01* +X8225429Y4370847D01* +X8239813Y4370847D01* +X5026182Y1904362D02* +G01* +X5026182Y1549941D01* +X5026182Y1904359D01* +X4950668Y1828845D01* +X4813132Y1828845D01* +X5012128Y1828845D01* +D10* +X7096483Y5696960D02* +G01* +X7998162Y5696960D01* +D14* +X6885431Y5711908D02* +G01* +X6845432Y5751908D01* +X6885431Y5711908D01* +X6885431Y5627908D01* +D15* +X8591014Y2197326D02* +G01* +X8591014Y2234912D01* +X8628428Y2272327D01* +D13* +X4471161Y6199637D02* +G01* +X4471161Y6417960D01* +X3426162Y6395681D02* +G01* +X3525443Y6395681D01* +X3678163Y6242961D01* +X3725710Y6195413D01* +X3945938Y6195413D01* +X4485614Y6195413D01* +X4797049Y6506847D01* +X4533163Y6242961D01* +X4551443Y6261242D01* +D10* +X3322441Y6146962D02* +G01* +X3164161Y6305242D01* +X3369990Y6099413D01* +X4391162Y6099413D01* +D14* +X332422Y5279913D02* +G01* +X332422Y5216913D01* +X367421Y5181914D01* +X-93837Y4023680D02* +G01* +X-177345Y4023680D01* +X-238579Y4084914D01* +X-238579Y4371914D01* +X-169941Y4440549D01* +X-106616Y4440549D01* +D16* +X6034420Y6893913D02* +G01* +X6034420Y7024913D01* +X5558421Y6734914D02* +G01* +X5708421Y6884913D01* +X6050422Y6884913D01* +X6133421Y6801914D01* +X6133421Y6496913D01* +X6535163Y6095171D01* +X6535163Y6014849D01* +D14* +X5934425Y6694919D02* +G01* +X6017679Y6694919D01* +X5946411Y6574904D02* +G01* +X6017679Y6574904D01* +X6261163Y6654914D02* +G01* +X6361422Y6654914D01* +X6382298Y6634035D01* +X6444962Y6634035D01* +X6361422Y6654914D02* +G01* +X6376700Y6639633D01* +X6261163Y6694919D02* +G01* +X6539425Y6694919D01* +D17* +X746282Y4440549D02* +G01* +X816058Y4440549D01* +X948420Y4572914D01* +D13* +X1480421Y6408219D02* +G01* +X1696163Y6623961D01* +X2049663Y6977461D01* +X948420Y4572914D02* +G01* +X982421Y4606914D01* +X1477421Y4606914D01* +D14* +X457420Y4553846D02* +G01* +X514489Y4610912D01* +X828420Y4610912D01* +X926353Y4708847D01* +X1017188Y4708847D01* +X2502077Y4708847D01* +X2656133Y4554791D01* +X2951132Y4554791D01* +X3410188Y5013845D01* +X6855533Y5013845D01* +X7264793Y4604585D01* +X7264793Y4301825D01* +X80421Y5416913D02* +G01* +X307421Y5416913D01* +X382422Y5341914D01* +X382422Y5279913D01* +X382422Y5341914D01* +X79420Y5336913D02* +G01* +X212420Y5336913D01* +X267421Y5281914D01* +X267421Y5214914D01* +X547420Y5064914D02* +G01* +X820419Y5064914D01* +X852421Y5032913D01* +X962700Y5032913D01* +X482422Y4999913D02* +G01* +X525421Y4999913D01* +X621421Y4999913D01* +X640420Y5018912D01* +X787420Y5018912D01* +X911420Y4894912D01* +X954702Y4894912D01* +X458421Y4803632D02* +G01* +X458421Y4880914D01* +X432422Y4906914D01* +X432422Y4999913D01* +X331421Y4802634D02* +G01* +X331421Y4846914D01* +X382422Y4897915D01* +X382422Y4999913D01* +D13* +X166420Y4748913D02* +G01* +X166420Y4786914D01* +X321421Y4941915D01* +X321421Y4958913D01* +D17* +X166420Y4440549D02* +G01* +X166420Y4748913D01* +X-106616Y4440549D02* +G01* +X193832Y4440549D01* +D10* +X547420Y5114914D02* +G01* +X864420Y5114914D01* +X935421Y5185912D01* +X698421Y5164914D02* +G01* +X698421Y5166913D01* +X837420Y5305915D01* +X547420Y5164914D02* +G01* +X828420Y5164914D01* +X903422Y5239913D01* +X995420Y5239913D01* +X-196578Y5411914D02* +G01* +X-124299Y5411914D01* +X-225671Y5411914D01* +X-269354Y5368229D01* +X-32859Y5218633D02* +G01* +X-32859Y5411914D01* +X67421Y5114914D02* +G01* +X267421Y5114914D01* +X-80578Y5164914D02* +G01* +X267421Y5164914D01* +X21422Y4742914D02* +G01* +X267421Y4988913D01* +X267421Y5064914D01* +X432422Y5279913D02* +G01* +X432422Y5429194D01* +X482422Y5279913D02* +G01* +X514421Y5279913D01* +X556420Y5321914D01* +X556420Y5426194D01* +X547420Y5214914D02* +G01* +X644420Y5214914D01* +X707702Y5278193D01* +X707702Y5417913D01* +X-93273Y3932803D02* +G01* +X193832Y3932803D01* +D14* +X7879430Y2227907D02* +G01* +X7879430Y2423909D01* +X7814792Y2488544D01* +X7814792Y2682826D01* +X7956430Y2308908D02* +G01* +X7956430Y2439908D01* +X7864792Y2531546D01* +X7864792Y2682826D01* +X8039430Y2398908D02* +G01* +X8039430Y2458907D01* +X7914792Y2583545D01* +X7914792Y2682826D01* +D13* +X6991375Y5923963D02* +G01* +X8637485Y5923963D01* +D15* +X4796162Y6493962D02* +G01* +X4796162Y7181961D01* +D10* +X8353534Y4524847D02* +G01* +X8420531Y4524847D01* +X8497498Y4447880D01* +X8603772Y4447880D01* +D13* +X-123619Y2155692D02* +G01* +X389684Y2155692D01* +X518533Y2026846D01* +X1189532Y2026846D01* +X1387533Y1828845D01* +X2127407Y1828845D01* +X2127407Y1292219D01* +D10* +X8447285Y4498093D02* +G01* +X8603769Y4498093D01* +D13* +X4474161Y6242961D02* +G01* +X4474161Y6429961D01* +D14* +X6938431Y5822909D02* +G01* +X7613431Y5822909D01* +X5026182Y4189216D02* +G01* +X5004534Y4189216D01* +X5109161Y4293847D01* +X5884532Y4293847D01* +X5989502Y4398815D01* +X6060533Y4469846D01* +X6779534Y4469846D01* +X6814792Y4434586D01* +X6814792Y4301825D01* +X5881430Y4489907D02* +G01* +X5944430Y4489907D01* +X5976368Y4521847D01* +X6802534Y4521847D01* +X6864791Y4459587D01* +X6864791Y4301825D01* +X6079723Y5136202D02* +G01* +X8594887Y5136202D01* +X8830149Y5371462D01* +X9999972Y5371462D01* +X6361369Y5551845D02* +G01* +X8416533Y5551845D01* +X9113532Y6248847D01* +X9195534Y6248847D01* +X5964491Y5265846D02* +G01* +X8524532Y5265846D01* +X8849857Y5591172D01* +X9999972Y5591172D01* +X6007493Y5406847D02* +G01* +X8465532Y5406847D01* +X9089278Y6030592D01* +X9200786Y6030592D01* +X5827491Y5331846D02* +G01* +X8489533Y5331846D01* +X8953649Y5795962D01* +X9419793Y5795962D01* +X6164430Y4256907D02* +G01* +X6341513Y4256907D01* +X6386431Y4301825D01* +X6711292Y4301825D01* +X4761532Y4092846D02* +G01* +X5849432Y4092846D01* +X6083663Y4327077D01* +X6176431Y4419846D01* +X6181430Y4424847D01* +X6751533Y4424847D01* +X6764792Y4411586D01* +X6764792Y4301825D01* +X6830430Y5201907D02* +G01* +X8564595Y5201907D01* +X8844003Y5481317D01* +X9999972Y5481317D01* +X8439533Y5479846D02* +G01* +X9098534Y6138847D01* +X9195534Y6138847D01* +X7216429Y5479907D02* +G01* +X8439594Y5479907D01* +D13* +X7396533Y4961846D02* +G01* +X7954368Y4961846D01* +D10* +X7514793Y3800586D02* +G01* +X7514793Y4525586D01* +X7417534Y4622845D01* +X7417534Y4988847D01* +D15* +X304307Y1262715D02* +G01* +X304307Y1302913D01* +D10* +X3265632Y7075962D02* +G01* +X3265632Y7186114D01* +X3316914Y7237397D01* +X3338629Y7237397D01* +X3315632Y7075962D02* +G01* +X3315632Y7156114D01* +X3342419Y7182901D01* +X3390155Y7182901D01* +X3465634Y7075962D02* +G01* +X3465634Y7192111D01* +X2903438Y6775960D02* +G01* +X3065632Y6775960D01* +D15* +X1848441Y6905914D02* +G01* +X1922663Y6980135D01* +X1922663Y7073361D01* +X1922663Y7224181D01* +X1958441Y7259960D01* +D14* +X3315632Y6575960D02* +G01* +X3315632Y6467492D01* +X3326163Y6456961D01* +D10* +X3467163Y6395681D02* +G01* +X3365634Y6497210D01* +X3365634Y6575960D01* +X3265632Y6575960D02* +G01* +X3265632Y6433492D01* +X3303442Y6395681D01* +X3426162Y6395681D01* +X2716883Y6864962D02* +G01* +X2923161Y6864962D01* +X2962163Y6825960D01* +X3065632Y6825960D01* +D14* +X2846163Y6725960D02* +G01* +X3065632Y6725960D01* +X2917162Y6645960D02* +G01* +X2954162Y6645960D01* +X2984162Y6675960D01* +X3065632Y6675960D01* +D10* +X3565631Y6875960D02* +G01* +X3879164Y6875960D01* +X3992163Y6988962D01* +X3165632Y6398150D02* +G01* +X3165632Y6575960D01* +D15* +X1795663Y7073361D02* +G01* +X1795663Y7203460D01* +X1720161Y7278961D01* +X1413162Y7278961D01* +X1304162Y7169960D01* +X1149162Y7169960D01* +X1112662Y7206460D01* +X1112662Y7335961D01* +X2353162Y6603682D02* +G01* +X2353162Y6660962D01* +X2176663Y6837461D01* +X2176663Y7294460D01* +X2115162Y7355961D01* +X1235163Y7355961D01* +D13* +X2049881Y6977679D02* +G01* +X2049881Y7259960D01* +D15* +X2178982Y6512242D02* +G01* +X2476164Y6512242D01* +X2482161Y6609679D02* +G01* +X2482161Y6731241D01* +D10* +X2318443Y6822681D02* +G01* +X2482161Y6822681D01* +D15* +X1922663Y6514561D02* +G01* +X2049663Y6514561D01* +D13* +X1922663Y6311739D02* +G01* +X1922663Y6514561D01* +X804882Y6395681D02* +G01* +X1102161Y6395681D01* +X1102210Y6395633D01* +X1180421Y6395633D01* +D10* +X2379162Y7305682D02* +G01* +X2634162Y7305682D01* +X2265161Y7178962D02* +G01* +X2265161Y7256960D01* +X2312883Y7304681D01* +X2378161Y7304681D01* +X962162Y6395681D02* +G01* +X962162Y6509961D01* +X957163Y5985962D02* +G01* +X957163Y6090239D01* +D13* +X167162Y5641969D02* +G01* +X167162Y5945962D01* +X324162Y6102962D01* +X789162Y6102962D01* +X810882Y6081240D01* +X1178468Y6081240D01* +D10* +X3215632Y7075962D02* +G01* +X3215632Y7281491D01* +X3262104Y7327960D01* +X3362441Y7327960D01* +X4367883Y6602961D02* +G01* +X4640163Y6602961D01* +X4366882Y6730961D02* +G01* +X4554161Y6730961D01* +X2381280Y1292219D02* +G01* +X2381280Y2008080D01* +X4721164Y4189961D02* +G01* +X5003789Y4189961D01* +X4366882Y6856961D02* +G01* +X4721164Y6856961D01* +X4366882Y6984961D02* +G01* +X4469163Y6984961D01* +X2885163Y7218240D02* +G01* +X3027443Y7075962D01* +X3165632Y7075962D01* +X2634162Y7214242D02* +G01* +X2881162Y7214242D01* +X3065632Y6975962D02* +G01* +X2576161Y6975962D01* +X2506162Y7045962D01* +X2506162Y7213241D01* +X3465634Y6575960D02* +G01* +X4123161Y6575960D01* +X4150161Y6602961D01* +X4276443Y6602961D01* +X3565631Y6725960D02* +G01* +X4042163Y6725960D01* +X4099163Y6782960D01* +X3565631Y6675960D02* +G01* +X4098162Y6675960D01* +X4153161Y6730961D01* +X4275442Y6730961D01* +X3565631Y6775960D02* +G01* +X3966164Y6775960D01* +X4047162Y6856961D01* +X4275442Y6856961D01* +X3565631Y6825960D02* +G01* +X3938163Y6825960D01* +X4097162Y6984961D01* +X4275442Y6984961D01* +D15* +X-171836Y5635711D02* +G01* +X-171836Y5810961D01* +X1745183Y1499791D02* +G01* +X1745183Y481792D01* +X1745183Y1499791D01* +X1666184Y1578790D01* +X1557182Y1578790D01* +X8521793Y2372326D02* +G01* +X8521793Y2523530D01* +X590133Y787511D02* +G01* +X590133Y1155893D01* +D14* +X196133Y1398511D02* +G01* +X400951Y1398511D01* +X6866293Y445325D02* +G01* +X6589293Y168325D01* +X958293Y168325D01* +X196133Y930488D01* +X196133Y1307071D01* +D13* +X198861Y1896790D02* +G01* +X401132Y1896790D01* +D15* +X8524732Y2480825D02* +G01* +X8598428Y2480825D01* +D14* +X7414793Y2509169D02* +G01* +X7414793Y2682826D01* +X7414793Y2832483D01* +X7164793Y2539484D02* +G01* +X7164793Y2682826D01* +X7164793Y2825168D01* +X6503794Y3092825D02* +G01* +X7037953Y3092825D01* +X7033409Y3042826D02* +G01* +X8124791Y3042826D01* +X6503794Y3792827D02* +G01* +X7282474Y3792827D01* +X7414793Y4151210D02* +G01* +X7414793Y4301825D01* +X7464793Y3858224D02* +G01* +X7464793Y4301825D01* +X7163612Y3742827D02* +G01* +X8124791Y3742827D01* +X8603772Y2941464D02* +G01* +X8748044Y2941464D01* +X8603772Y4146595D02* +G01* +X8764221Y4146595D01* +X8603772Y3995955D02* +G01* +X8781582Y3995955D01* +X8603772Y4548306D02* +G01* +X8746886Y4548306D01* +X7764792Y4301825D02* +G01* +X7764792Y4440105D01* +X7854533Y4529846D01* +X8239533Y4529846D01* +X8314212Y4455165D01* +X8392213Y4455165D01* +X8449716Y4397664D01* +X8603772Y4397664D01* +D10* +X590133Y696071D02* +G01* +X814341Y696071D01* +X858042Y739769D01* +X590133Y787511D02* +G01* +X590133Y1046789D01* +X2635153Y739769D02* +G01* +X2635153Y915812D01* +X2760134Y1040790D01* +X2760134Y1926841D01* +D13* +X558322Y6320152D02* +G01* +X788192Y6320152D01* +D10* +X788192Y6320149D02* +G01* +X807692Y6320149D01* +D13* +X193832Y1901819D02* +G01* +X350103Y1901819D01* +D15* +X598749Y1426354D02* +G01* +X810183Y1637792D01* +X960412Y1637792D01* +X960412Y1755020D01* +X1063183Y1857791D01* +D10* +X2889026Y1292219D02* +G01* +X2889026Y2224946D01* +X2632133Y1295242D02* +G01* +X2632133Y2152840D01* +D14* +X8124791Y3692827D02* +G01* +X8601928Y3692827D01* +X8124791Y3642827D02* +G01* +X8602139Y3642827D01* +X8124791Y3592827D02* +G01* +X8602352Y3592827D01* +X8125995Y3544028D02* +G01* +X8603772Y3544028D01* +X8124791Y3492827D02* +G01* +X8602781Y3492827D01* +X8124791Y3442827D02* +G01* +X8602995Y3442827D01* +X8124791Y3392825D02* +G01* +X8603208Y3392825D01* +X8124791Y3342825D02* +G01* +X8603421Y3342825D01* +X8124791Y3292825D02* +G01* +X8603637Y3292825D01* +X8124791Y3242825D02* +G01* +X8603691Y3242825D01* +X8124791Y3192825D02* +G01* +X8603477Y3192825D01* +X8356292Y3113046D02* +G01* +X8396013Y3113046D01* +X8425286Y3142320D01* +X8603772Y3142320D01* +X8401811Y2583525D02* +G01* +X8445294Y2627007D01* +X8445294Y3057326D01* +X8480071Y3092104D01* +X8603772Y3092104D01* +X8449858Y3041891D02* +G01* +X8603772Y3041891D01* +X8448941Y2991678D02* +G01* +X8603772Y2991678D01* +X8124791Y3842826D02* +G01* +X8287793Y3842826D01* +X8385736Y3744884D01* +X8603772Y3744884D01* +X8124791Y3892826D02* +G01* +X8300793Y3892826D01* +X8398520Y3795100D01* +X8603772Y3795100D01* +X8124791Y3942826D02* +G01* +X8316793Y3942826D01* +X8414306Y3845313D01* +X8603772Y3845313D01* +X8124791Y3992826D02* +G01* +X8329792Y3992826D01* +X8427092Y3895526D01* +X8603772Y3895526D01* +X8124791Y4042826D02* +G01* +X8356793Y4042826D01* +X8453879Y3945740D01* +X8603772Y3945740D01* +X8124791Y4092826D02* +G01* +X8386792Y4092826D01* +X8433450Y4046169D01* +X8603772Y4046169D01* +X7764792Y882827D02* +G01* +X7764792Y2682826D01* +X8585133Y1712960D02* +G01* +X8585133Y1029167D01* +X8240293Y684326D01* +X3911292Y684326D01* +X3908582Y687036D01* +X3908582Y739769D01* +X9350161Y1322961D02* +G01* +X9350161Y1561960D01* +X9268162Y1643961D01* +X8652134Y1643961D01* +X8652134Y1531325D01* +X8652134Y1004166D01* +X8263293Y615327D01* +X4249293Y615327D01* +X4161292Y527326D01* +X3818293Y527326D01* +X3654709Y690910D01* +X3654709Y739769D01* +X3498293Y568327D02* +G01* +X3396772Y669846D01* +X3396772Y739769D01* +X7667292Y1517327D02* +G01* +X7667292Y1919325D01* +X7714792Y1966826D01* +X7714792Y2682826D01* +X3398293Y1293741D02* +G01* +X3398293Y1517327D01* +X6866293Y762327D02* +G01* +X6866293Y1276327D01* +X7064794Y1474825D01* +X7064794Y2682826D01* +X249293Y877326D02* +G01* +X958293Y168325D01* +X3653292Y1293637D02* +G01* +X3653292Y1581327D01* +X3233293Y578327D02* +G01* +X3142899Y668718D01* +X3142899Y739769D01* +X1470294Y562325D02* +G01* +X1365788Y666831D01* +X1365788Y739769D01* +X3142899Y1292219D02* +G01* +X3142899Y1528932D01* +X1365788Y1292219D02* +G01* +X1365788Y1336822D01* +X1472293Y1443327D01* +X1111915Y1292219D02* +G01* +X1111915Y1349949D01* +X1201293Y1439326D01* +X1404843Y2143310D02* +G01* +X1557378Y2295847D01* +X3028533Y2295847D01* +X3320531Y2003846D01* +X5884532Y2003846D01* +X5884532Y2006846D01* +X6027531Y2149845D01* +X6027531Y3345827D01* +X6224534Y3542827D01* +X6503794Y3542827D01* +X746282Y2409565D02* +G01* +X1533812Y2409565D01* +X1578533Y2364846D01* +X3060532Y2364846D01* +X3366533Y2058845D01* +X5847532Y2058845D01* +X5973533Y2184847D01* +X5973533Y3366825D01* +X6199532Y3592827D01* +X6503794Y3592827D01* +X193832Y2409565D02* +G01* +X298112Y2513845D01* +X1530532Y2513845D01* +X1601533Y2442847D01* +X3083532Y2442847D01* +X3276533Y2249845D01* +X5794532Y2249845D01* +X5925532Y2380846D01* +X5925532Y3399825D01* +X6168532Y3642827D01* +X6503794Y3642827D01* +X193832Y2663438D02* +G01* +X293425Y2563845D01* +X2290533Y2563845D01* +X3050532Y3323846D01* +X5775533Y3323846D01* +X5817532Y3365845D01* +X5817532Y3446846D01* +X6113513Y3742827D01* +X6503794Y3742827D01* +X746282Y2663438D02* +G01* +X2279126Y2663438D01* +X2918932Y3303244D01* +X3140532Y3524846D01* +X5798532Y3524846D01* +X6166512Y3892826D01* +X6503794Y3892826D01* +X746282Y2917311D02* +G01* +X841750Y2821846D01* +X2335532Y2821846D01* +X3091533Y3577846D01* +X5768533Y3577846D01* +X6133513Y3942826D01* +X6503794Y3942826D01* +X164533Y2902846D02* +G01* +X269532Y3007847D01* +X2029533Y3007847D01* +X2065629Y3043943D01* +X2383477Y3361791D01* +X2739133Y3361791D01* +X3152188Y3774846D01* +X5882533Y3774846D01* +X6100511Y3992826D01* +X6503794Y3992826D01* +X193832Y3171184D02* +G01* +X302173Y3062846D01* +X1980531Y3062846D01* +X2350477Y3432792D01* +X2693078Y3432792D01* +X3090133Y3829847D01* +X5856533Y3829847D01* +X6069512Y4042826D01* +X6503794Y4042826D01* +X746282Y3171184D02* +G01* +X1995873Y3171184D01* +X2327478Y3502792D01* +X2641132Y3502792D01* +X3166188Y4027845D01* +X5975532Y4027845D01* +X6040513Y4092826D01* +X6503794Y4092826D01* +X5578632Y2919851D02* +G01* +X5647540Y2919851D01* +X5744532Y3016846D01* +X4764034Y3935343D02* +G01* +X5026182Y3935343D01* +X5578632Y2665978D02* +G01* +X5648665Y2665978D01* +X5744532Y2761846D01* +X6359532Y1580845D02* +G01* +X6359532Y3208845D01* +X6393512Y3242825D01* +X6503794Y3242825D01* +X6301531Y1653847D02* +G01* +X6301531Y3223826D01* +X6370533Y3292825D01* +X6503794Y3292825D01* +X6213533Y966845D02* +G01* +X6213533Y790846D01* +X6213533Y966845D01* +X6237533Y990846D01* +X6237533Y1501846D01* +X6237533Y3238827D01* +X6341531Y3342825D01* +X6503794Y3342825D01* +X6127013Y843325D02* +G01* +X6127013Y961326D01* +X6152532Y986845D01* +X6152532Y1455846D01* +X6184531Y1487845D01* +X6184531Y3263826D01* +X6313533Y3392825D01* +X6503794Y3392825D01* +X6067597Y1443327D02* +G01* +X6067597Y1490911D01* +X6127534Y1550845D01* +X6127534Y3285827D01* +X6284534Y3442827D01* +X6503794Y3442827D01* +X5974133Y1377792D02* +G01* +X5974133Y1487446D01* +X6001532Y1514845D01* +X6078532Y1591845D01* +X6078532Y3316825D01* +X6254534Y3492827D01* +X6503794Y3492827D01* +X3276554Y2985475D02* +G01* +X3556927Y3265845D01* +X5793531Y3265845D01* +X5872533Y3344847D01* +X5872533Y3427846D01* +X6137513Y3692827D01* +X6503794Y3692827D01* +X7114793Y4301825D02* +G01* +X7114793Y4432587D01* +X6979533Y4567847D01* +X4352132Y4567847D01* +X3884076Y4099791D01* +X3123133Y4099791D01* +X2670667Y3647328D01* +X2373012Y3647328D01* +X1654451Y3647328D01* +X746282Y4186676D02* +G01* +X1239365Y4186676D01* +X1280533Y4227845D01* +X2576532Y4227845D01* +X2882188Y4227845D01* +X3026133Y4371792D01* +X3702077Y4371792D01* +X4169133Y4838847D01* +X6716532Y4838847D01* +X746282Y3425057D02* +G01* +X1072746Y3425057D01* +X1455531Y3807846D01* +X2439532Y3807846D01* +X2734188Y3807846D01* +X3100133Y4173791D01* +X3833078Y4173791D01* +X4291131Y4631847D01* +X6919534Y4631847D01* +X746282Y3678930D02* +G01* +X1216619Y3678930D01* +X1404533Y3866845D01* +X2411531Y3866845D01* +X2700187Y3866845D01* +X3066133Y4232790D01* +X3787076Y4232790D01* +X4258132Y4703846D01* +X6849531Y4703846D01* +X7664792Y4301825D02* +G01* +X7664792Y4572586D01* +X7651534Y4585845D01* +X7651534Y4702845D01* +X7614793Y4301825D02* +G01* +X7614793Y4556587D01* +X7586532Y4584847D01* +X7586532Y4768847D01* +X7932849Y4768847D01* +X7952531Y4749162D01* +X8603772Y4749162D01* +X7564793Y4301825D02* +G01* +X7564793Y4545586D01* +X7515532Y4594847D01* +X7515532Y4838847D01* +X7944533Y4838847D01* +X7975533Y4807846D01* +X8672532Y4807846D01* +X8705291Y4775088D01* +X8705291Y4719604D01* +X8684635Y4698949D01* +X8603772Y4698949D01* +X746282Y3932803D02* +G01* +X2381491Y3932803D01* +X2674147Y3932803D01* +X3047133Y4305790D01* +X3743078Y4305790D01* +X4206133Y4768847D01* +X6774533Y4768847D01* +X7164793Y4301825D02* +G01* +X7164793Y4521586D01* +X6779531Y4906845D01* +X3466188Y4906845D01* +X2972465Y4413122D01* +X2633809Y4413122D01* +X2420246Y4413122D01* +X7214793Y4301825D02* +G01* +X7214793Y4560585D01* +X6818533Y4956845D01* +X3433188Y4956845D01* +X2968132Y4491791D01* +X2606133Y4491791D01* +X2507076Y4590846D01* +X2332532Y4590846D01* +X2136424Y4394738D01* +X1129070Y4394738D01* +X7364793Y4301825D02* +G01* +X7364793Y4586587D01* +X6885533Y5065847D01* +X2820532Y5065847D01* +X2513004Y5373375D01* +X2126091Y5373375D01* +X7713532Y4632845D02* +G01* +X7729423Y4648735D01* +X8603772Y4648735D01* +X7714792Y4301825D02* +G01* +X7714792Y4636587D01* +X7806532Y4586846D02* +G01* +X8160532Y4586846D01* +X8172206Y4598520D01* +X8603772Y4598520D01* +X7914792Y4301825D02* +G01* +X7961553Y4301825D01* +X8066570Y4196808D01* +X8603772Y4196808D01* +X7864792Y4301825D02* +G01* +X7864792Y4398106D01* +X7891533Y4424847D01* +X7977532Y4424847D01* +X8155355Y4247024D01* +X8603772Y4247024D01* +X7814792Y4301825D02* +G01* +X7814792Y4416107D01* +X7877533Y4478845D01* +X8003532Y4478845D01* +X8185142Y4297238D01* +X8603772Y4297238D01* +X8331253Y4377847D02* +G01* +X8361649Y4347451D01* +X8603772Y4347451D01* +X4792413Y3173724D02* +G01* +X5026182Y3173724D01* +X4789271Y2412105D02* +G01* +X5026182Y2412105D01* +X4787920Y2158232D02* +G01* +X5026182Y2158232D01* +X4789665Y2665978D02* +G01* +X5026182Y2665978D01* +X4789525Y2919851D02* +G01* +X5026182Y2919851D01* +X5578632Y2412105D02* +G01* +X5854793Y2412105D01* +X9511233Y5795962D02* +G01* +X9526153Y5810882D01* +X9999972Y5810882D01* +X9513458Y5920737D02* +G01* +X9999972Y5920737D01* +X9508202Y5925992D02* +G01* +X9508202Y6284071D01* +X9823279Y6030592D02* +G01* +X9999972Y6030592D01* +X9822134Y6140447D02* +G01* +X9999972Y6140447D01* +X9822533Y6248847D02* +G01* +X9998514Y6248847D01* +X5578632Y2158232D02* +G01* +X5835921Y2158232D01* +X8356292Y2908086D02* +G01* +X8356292Y3021606D01* +D10* +X7614793Y2183107D02* +G01* +X7614793Y2682826D01* +X6503794Y3142825D02* +G01* +X7069554Y3142825D01* +X7119553Y3092825D01* +X8220552Y3092825D01* +X8291771Y3021606D01* +X8356292Y3021606D01* +X7314793Y3842826D02* +G01* +X7314793Y4301825D01* +X6503794Y3842826D02* +G01* +X7314072Y3842826D01* +X7364074Y3792827D01* +X8124791Y3792827D01* +X8324014Y2191326D02* +G01* +X8493572Y2191326D01* +X8331293Y2198606D02* +G01* +X8331293Y2372326D01* +X8232574Y2191326D02* +G01* +X8124791Y2299106D01* +X8124791Y2892826D01* +D15* +X9112648Y5923963D02* +G01* +X9418792Y5923963D01* +X4538426Y505914D02* +G01* +X4538426Y418914D01* +X4565550Y391789D01* +X4988133Y391789D01* +X4741293Y535325D02* +G01* +X5098597Y535325D01* +X5242133Y391789D01* +X4345015Y295493D02* +G01* +X4908435Y295493D01* +X4398436Y409915D02* +G01* +X4512856Y295493D01* +X4278436Y560326D02* +G01* +X4428436Y560326D01* +D14* +X6964791Y2299792D02* +G01* +X6964791Y2682826D01* +D10* +X7314793Y2306850D02* +G01* +X7314793Y2444790D01* +X7314793Y2682826D01* +X7315133Y2306510D02* +G01* +X7171133Y2306510D01* +X7114793Y2362850D01* +X7114793Y2682826D01* +X5496133Y391789D02* +G01* +X5776132Y391789D01* +X5098597Y535325D02* +G01* +X5868596Y535325D01* +X5953132Y450791D01* +X5953132Y390791D01* +D15* +X691956Y1242913D02* +G01* +X691956Y1320792D01* +D13* +X8257133Y880790D02* +G01* +X8257133Y1295791D01* +D15* +X8240572Y2480825D02* +G01* +X8328428Y2480825D01* +D10* +X911420Y4894912D02* +G01* +X954702Y4894912D01* +D14* +X9604161Y1581962D02* +G01* +X9604161Y1322961D01* +X9604161Y1581962D01* +X9473163Y1712960D01* +D13* +X9587334Y1791792D02* +G01* +X9729162Y1649961D01* +X9729162Y1130960D01* +X9858161Y1001961D01* +X9858161Y872962D01* +X10112161Y543961D02* +G01* +X10112161Y872962D01* +X9096161Y659960D02* +G01* +X9096161Y872962D01* +X9986162Y659960D02* +G01* +X9986162Y1194960D01* +X9858161Y1322961D01* +X8963162Y545960D02* +G01* +X8963162Y1076962D01* +X8842161Y1197960D01* +X8842161Y1322961D01* +X8242881Y1828962D02* +G01* +X8416162Y1828962D01* +X9550163Y1828962D01* +X9729162Y1649961D01* +X9096161Y1322961D02* +G01* +X9096161Y1543961D01* +D15* +X9350161Y872962D02* +G01* +X9350161Y990960D01* +X9604161Y1244960D01* +X9604161Y1581962D01* +X9451162Y1734962D01* +X8585161Y1734962D01* +D14* +X8585133Y1597962D02* +G01* +X8585133Y1734931D01* +D15* +X8652134Y1643961D02* +G01* +X9268162Y1643961D01* +X9350161Y1561960D01* +X9350161Y1322961D01* +X9604161Y872962D02* +G01* +X9604161Y1070960D01* +D10* +X7848163Y5696960D02* +G01* +X8197161Y5696960D01* +D13* +X7744162Y5932962D02* +G01* +X7744162Y6197960D01* +X7744162Y6738960D01* +D10* +X7125431Y5613907D02* +G01* +X7744162Y5613907D01* +X7877108Y5613907D01* +X6885431Y5627908D02* +G01* +X6885431Y5711908D01* +X6812163Y5785175D01* +X6812163Y6822960D01* +X6982162Y6992960D01* +X-251434Y5112230D02* +G01* +X-269354Y5130149D01* +X-269354Y5214559D01* +X-270433Y4942900D02* +G01* +X-270433Y5036230D01* +X-57713Y4667229D02* +G01* +X-54262Y4667229D01* +X146474Y4867968D01* +X-261434Y4789230D02* +G01* +X-205432Y4789230D01* +X-158432Y4742230D01* +X-62433Y4742230D01* +X-15433Y4789230D01* +X116565Y4921229D01* +X116565Y4994511D01* +X734852Y5641969D02* +G01* +X794113Y5701230D01* +X923566Y5701230D01* +X556422Y5678375D02* +G01* +X556422Y5517634D01* +X556422Y5715375D01* +X513867Y5757931D01* +X390565Y5757931D01* +X326420Y5693785D01* +X326420Y5479912D01* +X326420Y5668086D01* +X429567Y5523778D02* +G01* +X429567Y5635231D01* +D13* +X-107734Y4807930D02* +G01* +X-81434Y4834229D01* +X-81434Y4966629D01* +D16* +G01* +X7879433Y2227910D03* +G01* +X7956420Y2308910D03* +G01* +X8039427Y2398903D03* +D17* +G01* +X972538Y372922D03* +G01* +X603171Y7093965D03* +G01* +X10676176Y6876795D03* +G01* +X10604522Y740841D03* +G01* +X6964804Y2299792D03* +G01* +X7614790Y2183104D03* +D19* +G01* +X3724069Y7318959D03* +G01* +X3724069Y7142962D03* +D20* +G01* +X10112169Y1322959D03* +G01* +X10112169Y872972D03* +G01* +X9858169Y1322959D03* +G01* +X9858169Y872972D03* +G01* +X9604169Y1322959D03* +G01* +X9604169Y872972D03* +G01* +X9350169Y1322959D03* +G01* +X9350169Y872972D03* +G01* +X9096169Y1322959D03* +G01* +X9096169Y872972D03* +G01* +X8842169Y1322959D03* +G01* +X8842169Y872972D03* +D21* +G01* +X6261173Y6574891D03* +G01* +X6261173Y6614896D03* +G01* +X6261173Y6654901D03* +G01* +X6261173Y6694906D03* +G01* +X6261173Y6734911D03* +G01* +X6017689Y6734911D03* +G01* +X6017689Y6694906D03* +G01* +X6017689Y6654901D03* +G01* +X6017689Y6614896D03* +G01* +X6017689Y6574891D03* +D22* +G01* +X6139431Y6654901D03* +D23* +G01* +X3315637Y6825970D03* +D24* +G01* +X3065625Y6675958D03* +G01* +X3065625Y6725970D03* +G01* +X3065625Y6775958D03* +G01* +X3065625Y6975957D03* +G01* +X3065625Y6925970D03* +G01* +X3065625Y6875957D03* +G01* +X3065625Y6825970D03* +G01* +X3565624Y6675958D03* +G01* +X3565624Y6725970D03* +G01* +X3565624Y6775958D03* +G01* +X3565624Y6975957D03* +G01* +X3565624Y6925970D03* +G01* +X3565624Y6875957D03* +G01* +X3565624Y6825970D03* +D25* +G01* +X3165624Y7075957D03* +G01* +X3215637Y7075957D03* +G01* +X3265624Y7075957D03* +G01* +X3465624Y7075957D03* +G01* +X3415637Y7075957D03* +G01* +X3365624Y7075957D03* +G01* +X3315637Y7075957D03* +G01* +X3165624Y6575958D03* +G01* +X3215637Y6575958D03* +G01* +X3265624Y6575958D03* +G01* +X3465624Y6575958D03* +G01* +X3415637Y6575958D03* +G01* +X3365624Y6575958D03* +G01* +X3315637Y6575958D03* +D26* +G01* +X116558Y5085943D03* +G01* +X116558Y4994503D03* +D27* +G01* +X10060937Y5250814D03* +D28* +G01* +X9999977Y5920739D03* +G01* +X9999977Y5810885D03* +G01* +X9999977Y5701029D03* +G01* +X9999977Y5591175D03* +G01* +X9999977Y5481320D03* +G01* +X9999977Y5371464D03* +G01* +X9999977Y6250304D03* +G01* +X9999977Y6140450D03* +G01* +X9999977Y6030595D03* +D29* +G01* +X10058397Y6720204D03* +D30* +G01* +X11018517Y6810375D03* +G01* +X11023597Y5252085D03* +D31* +G01* +X6503794Y3342817D03* +G01* +X6503794Y3392830D03* +G01* +X6503794Y3442817D03* +G01* +X6503794Y3492830D03* +G01* +X6503794Y3542817D03* +G01* +X6503794Y3592829D03* +G01* +X6503794Y3642817D03* +G01* +X6503794Y3692829D03* +G01* +X6503794Y3742817D03* +G01* +X6503794Y3792829D03* +G01* +X6503794Y3842816D03* +G01* +X6503794Y3892829D03* +G01* +X6503794Y3942816D03* +G01* +X6503794Y3992829D03* +G01* +X6503794Y4042816D03* +G01* +X6503794Y4092828D03* +D32* +G01* +X7514790Y4301820D03* +G01* +X7464803Y4301820D03* +G01* +X7414790Y4301820D03* +G01* +X7364803Y4301820D03* +G01* +X7314791Y4301820D03* +G01* +X7264803Y4301820D03* +G01* +X7214791Y4301820D03* +G01* +X7164804Y4301820D03* +G01* +X7114791Y4301820D03* +G01* +X7064804Y4301820D03* +G01* +X7014791Y4301820D03* +G01* +X6964804Y4301820D03* +G01* +X6914791Y4301820D03* +G01* +X6864804Y4301820D03* +G01* +X6814792Y4301820D03* +G01* +X6764804Y4301820D03* +G01* +X6714792Y2682824D03* +G01* +X6764804Y2682824D03* +G01* +X6814792Y2682824D03* +G01* +X6864804Y2682824D03* +G01* +X6914791Y2682824D03* +G01* +X6964804Y2682824D03* +G01* +X7014791Y2682824D03* +G01* +X7064804Y2682824D03* +G01* +X7114791Y2682824D03* +G01* +X7164804Y2682824D03* +G01* +X7214791Y2682824D03* +G01* +X7264803Y2682824D03* +G01* +X7314791Y2682824D03* +G01* +X7364803Y2682824D03* +G01* +X7414790Y2682824D03* +G01* +X7464803Y2682824D03* +D31* +G01* +X6503794Y2892831D03* +D32* +G01* +X7564803Y4301820D03* +G01* +X7614790Y4301820D03* +G01* +X7664803Y4301820D03* +G01* +X7714790Y4301820D03* +G01* +X7764802Y4301820D03* +G01* +X7814790Y4301820D03* +G01* +X7864802Y4301820D03* +G01* +X7914789Y4301820D03* +G01* +X6714792Y4301820D03* +D31* +G01* +X6503794Y2942818D03* +G01* +X6503794Y2992831D03* +G01* +X6503794Y3042818D03* +G01* +X6503794Y3092830D03* +G01* +X6503794Y3142818D03* +G01* +X6503794Y3192830D03* +G01* +X6503794Y3242818D03* +G01* +X6503794Y3292830D03* +D32* +G01* +X7864802Y2682824D03* +G01* +X7814790Y2682824D03* +G01* +X7764802Y2682824D03* +G01* +X7714790Y2682824D03* +G01* +X7664803Y2682824D03* +G01* +X7614790Y2682824D03* +G01* +X7564803Y2682824D03* +G01* +X7514790Y2682824D03* +G01* +X7914789Y2682824D03* +D31* +G01* +X8124797Y3142818D03* +G01* +X8124797Y3092830D03* +G01* +X8124797Y3042818D03* +G01* +X8124797Y2992831D03* +G01* +X8124797Y2942818D03* +G01* +X8124797Y2892831D03* +G01* +X8124797Y3192830D03* +G01* +X8124797Y3492830D03* +G01* +X8124797Y3442817D03* +G01* +X8124797Y3392830D03* +G01* +X8124797Y3342817D03* +G01* +X8124797Y3292830D03* +G01* +X8124797Y3242818D03* +G01* +X8124797Y3542817D03* +G01* +X8124797Y3842816D03* +G01* +X8124797Y3792829D03* +G01* +X8124797Y3742817D03* +G01* +X8124797Y3692829D03* +G01* +X8124797Y3642817D03* +G01* +X8124797Y3592829D03* +G01* +X8124797Y3892829D03* +G01* +X8124797Y4092828D03* +G01* +X8124797Y4042816D03* +G01* +X8124797Y3992829D03* +G01* +X8124797Y3942816D03* +D26* +G01* +X5791451Y6796633D03* +G01* +X5791451Y6705193D03* +D33* +G01* +X403527Y1401063D03* +G01* +X592757Y1158494D03* +G01* +X592757Y1401063D03* +G01* +X403527Y1158494D03* +D34* +G01* +X1795675Y6514566D03* +G01* +X1922675Y7073366D03* +G01* +X1795675Y7073366D03* +G01* +X2176675Y7073366D03* +G01* +X2176675Y6514566D03* +G01* +X1922675Y6514566D03* +G01* +X2049675Y6514566D03* +G01* +X2049675Y7073366D03* +D35* +G01* +X6034427Y7024903D03* +G01* +X6263027Y7024903D03* +D26* +G01* +X556435Y5517642D03* +G01* +X556409Y5426202D03* +G01* +X429435Y5432196D03* +G01* +X429435Y5523636D03* +G01* +X2758158Y7218248D03* +G01* +X2758158Y7309688D03* +D36* +G01* +X9419790Y5795949D03* +G01* +X9511230Y5795949D03* +G01* +X9510240Y5923965D03* +G01* +X9418800Y5923965D03* +G01* +X2716883Y6864959D03* +G01* +X2625443Y6864959D03* +D26* +G01* +X3164151Y6396685D03* +G01* +X3164151Y6305245D03* +D36* +G01* +X4275452Y6984949D03* +G01* +X4366892Y6984949D03* +G01* +X4366892Y6730949D03* +G01* +X4275452Y6730949D03* +G01* +X4367883Y6602958D03* +G01* +X4276443Y6602958D03* +D26* +G01* +X1036419Y6399631D03* +G01* +X1036419Y6308191D03* +G01* +X1036419Y6079185D03* +G01* +X1036419Y6170625D03* +G01* +X2634155Y7305675D03* +G01* +X2634155Y7214235D03* +G01* +X2378174Y7304684D03* +G01* +X2378174Y7213244D03* +G01* +X2478173Y6514236D03* +G01* +X2478173Y6605676D03* +G01* +X2353155Y6512229D03* +G01* +X2353155Y6603669D03* +D36* +G01* +X4275452Y6856958D03* +G01* +X4366892Y6856958D03* +G01* +X8331248Y4370857D03* +G01* +X8239808Y4370857D03* +D26* +G01* +X8356292Y3113049D03* +G01* +X8356292Y3021609D03* +D36* +G01* +X8499574Y2197328D03* +G01* +X8591014Y2197328D03* +G01* +X8324009Y2191334D03* +G01* +X8232569Y2191334D03* +D26* +G01* +X196136Y1307058D03* +G01* +X196136Y1398498D03* +D19* +G01* +X1075535Y1872843D03* +G01* +X1075535Y2048840D03* +D26* +G01* +X590141Y787501D03* +G01* +X590141Y696061D03* +G01* +X-93830Y3932250D03* +G01* +X-93830Y4023690D03* +D37* +G01* +X8331299Y2372334D03* +G01* +X8427819Y2595524D03* +G01* +X8521799Y2372334D03* +D38* +G01* +X6535163Y6014846D03* +D39* +G01* +X5905167Y5594857D03* +G01* +X5905167Y6234836D03* +D38* +G01* +X6535163Y5814847D03* +D40* +G01* +X1536164Y7085964D03* +G01* +X816175Y7085964D03* +D41* +G01* +X1239669Y7335951D03* +G01* +X1112669Y7335951D03* +D19* +G01* +X-124462Y1978837D03* +G01* +X-124462Y2154834D03* +D42* +G01* +X7396528Y4961839D03* +G01* +X7220531Y4961839D03* +D26* +G01* +X7169122Y2308504D03* +G01* +X7169122Y2217064D03* +D36* +G01* +X8242881Y1828952D03* +G01* +X8151441Y1828952D03* +G01* +X7319820Y4769840D03* +G01* +X7411260Y4769840D03* +D42* +G01* +X4295162Y6417970D03* +G01* +X4471159Y6417970D03* +D43* +G01* +X5027165Y1548968D03* +G01* +X5027165Y1320368D03* +D26* +G01* +X3467173Y6304229D03* +G01* +X3467173Y6395669D03* +D43* +G01* +X995423Y5468518D03* +G01* +X995423Y5239918D03* +G01* +X-81434Y4966639D03* +G01* +X-81434Y5195239D03* +D42* +G01* +X9329493Y6286779D03* +G01* +X9505490Y6286779D03* +D36* +G01* +X9508208Y6061786D03* +G01* +X9416768Y6061786D03* +D26* +G01* +X2885158Y7309688D03* +G01* +X2885158Y7218248D03* +D42* +G01* +X3030166Y7290968D03* +G01* +X3206163Y7290968D03* +D36* +G01* +X3361712Y7332903D03* +G01* +X3453152Y7332903D03* +D19* +G01* +X3939969Y7318959D03* +G01* +X3939969Y7142962D03* +G01* +X4157266Y7316952D03* +G01* +X4157266Y7140955D03* +D26* +G01* +X1180411Y6395643D03* +G01* +X1180411Y6304203D03* +G01* +X1181427Y6084188D03* +G01* +X1181427Y6175628D03* +G01* +X2506164Y7213244D03* +G01* +X2506164Y7304684D03* +G01* +X2482161Y6731228D03* +G01* +X2482161Y6822668D03* +D36* +G01* +X2014877Y6310960D03* +G01* +X1923437Y6310960D03* +G01* +X2049879Y7259954D03* +G01* +X1958439Y7259954D03* +G01* +X960422Y1637792D03* +G01* +X1051862Y1637792D03* +D42* +G01* +X779142Y1634794D03* +G01* +X603145Y1634794D03* +D44* +G01* +X-173205Y5634354D03* +G01* +X-164315Y6303645D03* +D45* +G01* +X167154Y5641975D03* +G01* +X558314Y6320154D03* +G01* +X734844Y5641975D03* +G01* +X788184Y6320154D03* +D46* +G01* +X193824Y1901825D03* +G01* +X746274Y1901825D03* +G01* +X193824Y2155697D03* +G01* +X746274Y2155697D03* +G01* +X193824Y2409570D03* +G01* +X746274Y2409570D03* +G01* +X193824Y2663444D03* +G01* +X746274Y2663444D03* +G01* +X193824Y2917317D03* +G01* +X746274Y2917317D03* +G01* +X193824Y3171189D03* +G01* +X193824Y3425062D03* +G01* +X193824Y3932809D03* +G01* +X193824Y3678936D03* +G01* +X193824Y4186681D03* +G01* +X193824Y4440554D03* +G01* +X746274Y3171189D03* +G01* +X746274Y3425062D03* +G01* +X746274Y3678936D03* +G01* +X746274Y3932809D03* +G01* +X746274Y4186681D03* +G01* +X746274Y4440554D03* +D47* +G01* +X3908574Y1292225D03* +G01* +X3908574Y739775D03* +G01* +X3654701Y739775D03* +G01* +X3654701Y1292225D03* +G01* +X3396764Y739775D03* +G01* +X3142891Y739775D03* +G01* +X2889018Y739775D03* +G01* +X2635145Y739775D03* +G01* +X2381272Y739775D03* +G01* +X2127399Y739775D03* +G01* +X3396764Y1292225D03* +G01* +X3142891Y1292225D03* +G01* +X2635145Y1292225D03* +G01* +X2889018Y1292225D03* +G01* +X2381272Y1292225D03* +G01* +X2127399Y1292225D03* +G01* +X1873526Y739775D03* +G01* +X1873526Y1292225D03* +G01* +X1619653Y739775D03* +G01* +X1619653Y1292225D03* +G01* +X1365780Y739775D03* +G01* +X1365780Y1292225D03* +G01* +X1111907Y739775D03* +G01* +X1111907Y1292225D03* +G01* +X858034Y739775D03* +G01* +X858034Y1292225D03* +D46* +G01* +X5026174Y1904364D03* +G01* +X5578624Y1904364D03* +G01* +X5026174Y2158237D03* +G01* +X5578624Y2158237D03* +G01* +X5026174Y2412111D03* +G01* +X5578624Y2412111D03* +G01* +X5026174Y2665984D03* +G01* +X5578624Y2665984D03* +G01* +X5026174Y2919856D03* +G01* +X5578624Y2919856D03* +G01* +X5026174Y3173729D03* +G01* +X5026174Y3427603D03* +G01* +X5026174Y3935348D03* +G01* +X5026174Y3681476D03* +G01* +X5026174Y4189221D03* +G01* +X5026174Y4443095D03* +G01* +X5578624Y3173729D03* +G01* +X5578624Y3427603D03* +G01* +X5578624Y3681476D03* +G01* +X5578624Y3935348D03* +G01* +X5578624Y4189221D03* +G01* +X5578624Y4443095D03* +D48* +G01* +X8603764Y2790825D03* +G01* +X8603764Y2841040D03* +G01* +X8603764Y2891256D03* +G01* +X8603764Y2941472D03* +G01* +X8603764Y2991688D03* +G01* +X8603764Y3041878D03* +G01* +X8603764Y3092094D03* +G01* +X8603764Y3142310D03* +G01* +X8603764Y3192526D03* +G01* +X8603764Y3242741D03* +G01* +X8603764Y3292957D03* +G01* +X8603764Y3343173D03* +G01* +X8603764Y3393389D03* +G01* +X8603764Y3443604D03* +G01* +X8603764Y3493820D03* +G01* +X8603764Y3544036D03* +G01* +X8603764Y3594252D03* +G01* +X8603764Y3644468D03* +G01* +X8603764Y3694658D03* +G01* +X8603764Y3744874D03* +G01* +X8603764Y3795090D03* +G01* +X8603764Y3845305D03* +G01* +X8603764Y3895521D03* +G01* +X8603764Y3945737D03* +G01* +X8603764Y3995953D03* +G01* +X8603764Y4046169D03* +G01* +X8603764Y4096385D03* +G01* +X8603764Y4146600D03* +G01* +X8603764Y4196816D03* +G01* +X8603764Y4247032D03* +G01* +X8603764Y4297248D03* +G01* +X8603764Y4347438D03* +G01* +X8603764Y4397654D03* +G01* +X8603764Y4447870D03* +G01* +X8603764Y4498086D03* +G01* +X8603764Y4548301D03* +G01* +X8603764Y4598517D03* +G01* +X8603764Y4648733D03* +G01* +X8603764Y4698949D03* +G01* +X8603764Y4749164D03* +D49* +G01* +X8831094Y4902835D03* +G01* +X8837444Y2639695D03* +D26* +G01* +X7315121Y2215057D03* +G01* +X7315146Y2306497D03* +D42* +G01* +X4538418Y505917D03* +G01* +X4714415Y505917D03* +G01* +X5986142Y357784D03* +G01* +X5810145Y357784D03* +D50* +G01* +X8362134Y1314780D03* +G01* +X5482130Y1314780D03* +D51* +G01* +X547418Y5064912D03* +G01* +X547418Y5114925D03* +G01* +X547418Y5164912D03* +G01* +X547418Y5214924D03* +D52* +G01* +X482419Y5279923D03* +G01* +X432432Y5279923D03* +G01* +X382419Y5279923D03* +G01* +X332432Y5279923D03* +D51* +G01* +X267434Y5214924D03* +G01* +X267434Y5164912D03* +G01* +X267434Y5114925D03* +G01* +X267434Y5064912D03* +D52* +G01* +X332432Y4999913D03* +G01* +X382419Y4999913D03* +G01* +X432432Y4999913D03* +G01* +X482419Y4999913D03* +D53* +G01* +X407413Y5139918D03* +D36* +G01* +X1054148Y5032908D03* +G01* +X962708Y5032908D03* +D26* +G01* +X331416Y4802631D03* +G01* +X331416Y4711192D03* +D36* +G01* +X-149151Y4667224D03* +G01* +X-57711Y4667224D03* +G01* +X1046147Y4894910D03* +G01* +X954707Y4894910D03* +G01* +X799132Y5417921D03* +G01* +X707692Y5417921D03* +G01* +X-32870Y5411901D03* +G01* +X-124310Y5411901D03* +D19* +G01* +X-127561Y4233900D03* +G01* +X-127561Y4409922D03* +D26* +G01* +X458416Y4803622D03* +G01* +X458416Y4712182D03* +G01* +X5562419Y6699630D03* +G01* +X5562419Y6608190D03* +D54* +G01* +X-261444Y5368239D03* +G01* +X-261444Y5214569D03* +G01* +X-261444Y4789220D03* +G01* +X-261444Y4942890D03* +D10* +G75* +G01* +X441800Y5659996D02* +G03* +X429567Y5630463I29533J-29533D01* +G75* +G01* +X429567Y5630463D02* +G03* +X417334Y5659996I-41765J0D01* +G75* +G01* +X440659Y5658953D02* +G03* +X429567Y5635233I19817J-23720D01* +G75* +G01* +X429567Y5635233D02* +G03* +X418476Y5658953I-30908J0D01* +G75* +G01* +X-255452Y5027581D02* +G03* +X-261193Y4983975I49767J-28733D01* +G75* +G01* +X-266939Y5005421D02* +G03* +X-279084Y5021249I-25178J-6746D01* +G75* +G01* +X-258201Y5023998D02* +G03* +X-270434Y4994465I29533J-29533D01* +G75* +G01* +X-270434Y4994465D02* +G03* +X-282667Y5023998I-41766J0D01* +G75* +G01* +X-255452Y5027581D02* +G03* +X-261192Y4983976I49765J-28732D01* +G75* +G01* +X-266938Y5005420D02* +G03* +X-279084Y5021249I-25180J-6747D01* +G75* +G01* +X-269354Y5197258D02* +G03* +X-239202Y5124463I102947J0D01* +G75* +G01* +X-264587Y5123469D02* +G03* +X-261018Y5162256I-25650J21917D01* +D14* +G75* +G01* +X9325163Y1563963D02* +G03* +X9308902Y1603221I-55520J0D01* +G75* +G01* +X9316138Y1595985D02* +G03* +X9345163Y1583962I29026J29025D01* +D15* +G75* +G01* +X9330163Y1563963D02* +G03* +X9317438Y1594686I-43449J0D01* +G75* +G01* +X9324674Y1587449D02* +G03* +X9345163Y1578962I20490J20490D01* +D14* +G75* +G01* +X9359305Y1549820D02* +G03* +X9350162Y1527746I22074J-22074D01* +G75* +G01* +X9350162Y1503610D02* +G03* +X9331021Y1549820I-65351J-1D01* +D15* +G75* +G01* +X9350162Y1515681D02* +G03* +X9334556Y1553355I-53280J0D01* +D14* +G75* +G01* +X9345163Y1563962D02* +G03* +X9321745Y1590237I-31716J-4694D01* +G75* +G01* +X9317931Y1590941D02* +G03* +X9345163Y1563962I36732J9843D01* +D15* +G75* +G01* +X9614768Y1060354D02* +G03* +X9604162Y1034747I25607J-25606D01* +G75* +G01* +X9604162Y1034747D02* +G03* +X9593555Y1060354I-36213J1D01* +G75* +G01* +X9123255Y5934570D02* +G03* +X9148862Y5923963I25607J25606D01* +G75* +G01* +X9148862Y5923963D02* +G03* +X9123255Y5913357I0J-36213D01* +D10* +G75* +G01* +X7327026Y2432558D02* +G03* +X7314794Y2403025I29533J-29533D01* +G75* +G01* +X7314794Y2403025D02* +G03* +X7302561Y2432558I-41766J0D01* +G75* +G01* +X7302561Y2457024D02* +G03* +X7314794Y2486556I-29533J29532D01* +G75* +G01* +X7314794Y2486556D02* +G03* +X7327026Y2457024I41765J0D01* +D14* +G75* +G01* +X8342150Y2922229D02* +G03* +X8356293Y2956371I-34141J34142D01* +G75* +G01* +X8356293Y2956371D02* +G03* +X8370435Y2922229I48284J0D01* +G75* +G01* +X7230572Y5494050D02* +G03* +X7264714Y5479908I34142J34142D01* +G75* +G01* +X7264714Y5479908D02* +G03* +X7230572Y5465766I0J-48284D01* +G75* +G01* +X6020574Y5422051D02* +G03* +X6057279Y5406847I36706J36705D01* +G75* +G01* +X6052153Y5406847D02* +G03* +X6020574Y5393767I0J-44659D01* +G75* +G01* +X6373573Y5564050D02* +G03* +X6403036Y5551846I29464J29463D01* +G75* +G01* +X6412394Y5551846D02* +G03* +X6373573Y5535765I0J-54901D01* +G75* +G01* +X9181392Y6234705D02* +G03* +X9147250Y6248847I-34142J-34142D01* +G75* +G01* +X9147250Y6248847D02* +G03* +X9181392Y6262989I0J48284D01* +G75* +G01* +X9181392Y6124705D02* +G03* +X9147250Y6138847I-34142J-34142D01* +G75* +G01* +X9147250Y6138847D02* +G03* +X9181392Y6152989I0J48284D01* +G75* +G01* +X5821780Y2144091D02* +G03* +X5787638Y2158233I-34143J-34142D01* +G75* +G01* +X5787638Y2158233D02* +G03* +X5821780Y2172375I-1J48284D01* +G75* +G01* +X9186645Y6016450D02* +G03* +X9152503Y6030592I-34143J-34142D01* +G75* +G01* +X9152503Y6030592D02* +G03* +X9186645Y6044735I-1J48285D01* +G75* +G01* +X9836675Y6262989D02* +G03* +X9870817Y6248847I34142J34142D01* +G75* +G01* +X9870817Y6248847D02* +G03* +X9836675Y6234705I0J-48284D01* +G75* +G01* +X9836276Y6154590D02* +G03* +X9870418Y6140447I34143J34142D01* +G75* +G01* +X9870418Y6140447D02* +G03* +X9836276Y6126305I1J-48284D01* +G75* +G01* +X9837422Y6044735D02* +G03* +X9871564Y6030592I34142J34142D01* +G75* +G01* +X9871564Y6030592D02* +G03* +X9837422Y6016450I0J-48284D01* +G75* +G01* +X5840572Y5347050D02* +G03* +X5877277Y5331846I36705J36705D01* +G75* +G01* +X5872151Y5331846D02* +G03* +X5840572Y5318766I0J-44659D01* +G75* +G01* +X5976574Y5282051D02* +G03* +X6015695Y5265847I39121J39122D01* +G75* +G01* +X6005737Y5265847D02* +G03* +X5976574Y5253767I0J-41243D01* +G75* +G01* +X6844573Y5216050D02* +G03* +X6878715Y5201907I34142J34141D01* +G75* +G01* +X6878715Y5201907D02* +G03* +X6844573Y5187765I0J-48284D01* +G75* +G01* +X5841391Y2398705D02* +G03* +X5809039Y2412106I-32352J-32351D01* +G75* +G01* +X5805458Y2412106D02* +G03* +X5841391Y2426990I0J50816D01* +G75* +G01* +X6093574Y5150050D02* +G03* +X6127005Y5136203I33431J33431D01* +G75* +G01* +X6128427Y5136203D02* +G03* +X6093574Y5121766I0J-49291D01* +G75* +G01* +X4803808Y2680121D02* +G03* +X4837949Y2665979I34142J34142D01* +G75* +G01* +X4837949Y2665979D02* +G03* +X4803808Y2651837I1J-48284D01* +G75* +G01* +X4806986Y2675979D02* +G03* +X4820234Y2665813I18896J10909D01* +G75* +G01* +X4854926Y2656517D02* +G03* +X4799946Y2648823I-18412J-68717D01* +G75* +G01* +X4799946Y2683135D02* +G03* +X4854926Y2675441I36568J61023D01* +G75* +G01* +X4820234Y2666145D02* +G03* +X4806986Y2655979I5648J-21076D01* +G75* +G01* +X4799946Y2683135D02* +G03* +X4854926Y2675441I36568J61023D01* +G75* +G01* +X4820234Y2666145D02* +G03* +X4806986Y2655979I5648J-21076D01* +G75* +G01* +X4806986Y2675979D02* +G03* +X4820234Y2665813I18896J10909D01* +G75* +G01* +X4854926Y2656517D02* +G03* +X4799946Y2648823I-18412J-68717D01* +G75* +G01* +X4803668Y2933994D02* +G03* +X4837810Y2919852I34142J34142D01* +G75* +G01* +X4837810Y2919852D02* +G03* +X4803668Y2905710I0J-48284D01* +G75* +G01* +X4803414Y2426248D02* +G03* +X4837556Y2412106I34142J34142D01* +G75* +G01* +X4837556Y2412106D02* +G03* +X4803414Y2397964I0J-48284D01* +G75* +G01* +X4802063Y2172375D02* +G03* +X4836204Y2158233I34142J34142D01* +G75* +G01* +X4836204Y2158233D02* +G03* +X4802063Y2144091I1J-48284D01* +G75* +G01* +X4806556Y3187867D02* +G03* +X4840698Y3173725I34142J34142D01* +G75* +G01* +X4840698Y3173725D02* +G03* +X4806556Y3159583I0J-48284D01* +G75* +G01* +X4809734Y3183725D02* +G03* +X4824457Y3172427I20999J12124D01* +G75* +G01* +X4856117Y3163944D02* +G03* +X4802644Y3156540I-17965J-67047D01* +G75* +G01* +X4802644Y3190910D02* +G03* +X4856117Y3183506I35508J59643D01* +G75* +G01* +X4824457Y3175023D02* +G03* +X4809734Y3163725I6276J-23422D01* +G75* +G01* +X4802644Y3190910D02* +G03* +X4856117Y3183506I35508J59643D01* +G75* +G01* +X4824457Y3175023D02* +G03* +X4809734Y3163725I6276J-23422D01* +G75* +G01* +X4809734Y3183725D02* +G03* +X4824457Y3172427I20999J12124D01* +G75* +G01* +X4856117Y3163944D02* +G03* +X4802644Y3156540I-17965J-67047D01* +G75* +G01* +X457421Y4573847D02* +G03* +X491564Y4587988I1J48284D01* +G75* +G01* +X491564Y4587988D02* +G03* +X477421Y4553846I34141J-34143D01* +G75* +G01* +X457421Y4553847D02* +G03* +X484176Y4579047I-7014J34249D01* +G75* +G01* +X482619Y4580598D02* +G03* +X457421Y4553847I9047J-33764D01* +G75* +G01* +X6702390Y4824705D02* +G03* +X6668248Y4838847I-34142J-34142D01* +G75* +G01* +X6668248Y4838847D02* +G03* +X6702390Y4852990I0J48284D01* +G75* +G01* +X7529675Y4852990D02* +G03* +X7563816Y4838847I34142J34141D01* +G75* +G01* +X7563816Y4838847D02* +G03* +X7529675Y4824705I1J-48284D01* +G75* +G01* +X7529675Y4824705D02* +G03* +X7515532Y4790563I34141J-34142D01* +G75* +G01* +X7515532Y4790563D02* +G03* +X7501390Y4824705I-48284J0D01* +G75* +G01* +X6760391Y4754705D02* +G03* +X6726249Y4768847I-34142J-34142D01* +G75* +G01* +X6726249Y4768847D02* +G03* +X6760391Y4782990I0J48285D01* +G75* +G01* +X7600675Y4782990D02* +G03* +X7634817Y4768847I34142J34142D01* +G75* +G01* +X7634817Y4768847D02* +G03* +X7600675Y4754705I0J-48284D01* +G75* +G01* +X6835389Y4689704D02* +G03* +X6801248Y4703846I-34142J-34142D01* +G75* +G01* +X6801248Y4703846D02* +G03* +X6835389Y4717989I-1J48284D01* +G75* +G01* +X6905392Y4617705D02* +G03* +X6871250Y4631847I-34142J-34142D01* +G75* +G01* +X6871250Y4631847D02* +G03* +X6905392Y4645990I0J48285D01* +G75* +G01* +X4775674Y4106989D02* +G03* +X4809816Y4092847I34143J34142D01* +G75* +G01* +X4809816Y4092847D02* +G03* +X4775674Y4078705I1J-48284D01* +G75* +G01* +X5738525Y2742770D02* +G03* +X5719948Y2735542I-4784J-15191D01* +G75* +G01* +X5749709Y2742528D02* +G03* +X5703517Y2707084I19689J-73481D01* +G75* +G01* +X5747170Y2742021D02* +G03* +X5724218Y2726662I4122J-30990D01* +G75* +G01* +X5724218Y2726663D02* +G03* +X5726044Y2754219I-27078J15633D01* +G75* +G01* +X5744533Y2741846D02* +G03* +X5710391Y2727704I0J-48284D01* +G75* +G01* +X5710390Y2727704D02* +G03* +X5724533Y2761846I-34142J34142D01* +G75* +G01* +X5747171Y2742021D02* +G03* +X5724221Y2726663I4124J-30989D01* +G75* +G01* +X5724221Y2726663D02* +G03* +X5726045Y2754217I-27072J15630D01* +G75* +G01* +X5738526Y2742769D02* +G03* +X5719952Y2735542I-4783J-15189D01* +G75* +G01* +X5749709Y2742528D02* +G03* +X5703524Y2707089I19686J-73470D01* +G75* +G01* +X5744533Y2761846D02* +G03* +X5717781Y2736649I7012J-34244D01* +G75* +G01* +X5719335Y2735095D02* +G03* +X5744533Y2761846I-9047J33764D01* +G75* +G01* +X5895573Y4504049D02* +G03* +X5929715Y4489907I34142J34142D01* +G75* +G01* +X5929715Y4489907D02* +G03* +X5895573Y4475765I0J-48284D01* +G75* +G01* +X4775674Y3951988D02* +G03* +X4815857Y3935344I40183J40182D01* +G75* +G01* +X4803776Y3935344D02* +G03* +X4775674Y3923704I1J-39742D01* +G75* +G01* +X5738470Y2997788D02* +G03* +X5720050Y2990652I-4776J-15014D01* +G75* +G01* +X5749709Y2997529D02* +G03* +X5703588Y2962138I19660J-73368D01* +G75* +G01* +X5744533Y2996847D02* +G03* +X5710391Y2982704I1J-48284D01* +G75* +G01* +X5710391Y2982704D02* +G03* +X5724533Y3016846I-34143J34142D01* +G75* +G01* +X5738470Y2997788D02* +G03* +X5720055Y2990654I-4774J-15009D01* +G75* +G01* +X5749709Y2997528D02* +G03* +X5703595Y2962144I19656J-73356D01* +G75* +G01* +X5747303Y2997040D02* +G03* +X5724045Y2981362I4429J-31662D01* +G75* +G01* +X5724045Y2981363D02* +G03* +X5725993Y3009344I-27691J15986D01* +G75* +G01* +X5747305Y2997040D02* +G03* +X5724048Y2981362I4432J-31664D01* +G75* +G01* +X5724048Y2981363D02* +G03* +X5725994Y3009341I-27684J15983D01* +G75* +G01* +X5744533Y3016847D02* +G03* +X5717781Y2991649I7012J-34245D01* +G75* +G01* +X5719332Y2990092D02* +G03* +X5744533Y3016847I-9048J33769D01* +G75* +G01* +X6178572Y4271050D02* +G03* +X6212714Y4256908I34143J34142D01* +G75* +G01* +X6212714Y4256908D02* +G03* +X6178572Y4242766I1J-48284D01* +D15* +G75* +G01* +X-161230Y5800355D02* +G03* +X-171836Y5774748I25607J-25607D01* +G75* +G01* +X-171836Y5774748D02* +G03* +X-182443Y5800355I-36213J0D01* +G75* +G01* +X-164336Y5797971D02* +G03* +X-181206Y5775985I18104J-31357D01* +G75* +G01* +X-181208Y5775978D02* +G03* +X-184826Y5803461I-34984J9374D01* +G75* +G01* +X-158846Y5803461D02* +G03* +X-162464Y5775979I31366J-18108D01* +G75* +G01* +X-162466Y5775985D02* +G03* +X-179336Y5797971I-34974J-9372D01* +G75* +G01* +X-158846Y5803461D02* +G03* +X-162464Y5775977I31368J-18110D01* +G75* +G01* +X-162467Y5775986D02* +G03* +X-179336Y5797971I-34972J-9371D01* +G75* +G01* +X-164336Y5797971D02* +G03* +X-181210Y5775981I18107J-31363D01* +G75* +G01* +X-181209Y5775983D02* +G03* +X-184826Y5803461I-34978J9372D01* +D14* +G75* +G01* +X1196116Y1420008D02* +G03* +X1175064Y1417236I-7180J-26799D01* +G75* +G01* +X1160807Y1409006D02* +G03* +X1181376Y1441150I-20741J35925D01* +G75* +G01* +X1201293Y1419327D02* +G03* +X1167151Y1405184I0J-48285D01* +G75* +G01* +X1167151Y1405185D02* +G03* +X1181293Y1439327I-34142J34142D01* +G75* +G01* +X1196117Y1420008D02* +G03* +X1175058Y1417235I-7183J-26807D01* +G75* +G01* +X1160808Y1409008D02* +G03* +X1181376Y1441151I-20742J35926D01* +G75* +G01* +X1201293Y1439327D02* +G03* +X1174541Y1414129I7013J-34245D01* +G75* +G01* +X1176095Y1412575D02* +G03* +X1201293Y1439327I-9047J33764D01* +G75* +G01* +X5959991Y1391935D02* +G03* +X5974133Y1426077I-34142J34142D01* +G75* +G01* +X5974133Y1426077D02* +G03* +X5988276Y1391935I48284J0D01* +G75* +G01* +X1467117Y1424009D02* +G03* +X1446710Y1421322I-6961J-25977D01* +G75* +G01* +X1424415Y1408450D02* +G03* +X1452726Y1447463I-29589J51250D01* +G75* +G01* +X1462150Y1426090D02* +G03* +X1442579Y1426171I-9855J-16748D01* +G75* +G01* +X1442579Y1426171D02* +G03* +X1452294Y1443160I-9715J16827D01* +G75* +G01* +X1472293Y1423327D02* +G03* +X1438151Y1409185I0J-48284D01* +G75* +G01* +X1438151Y1409185D02* +G03* +X1452293Y1443327I-34142J34142D01* +G75* +G01* +X1462148Y1426091D02* +G03* +X1442580Y1426173I-9854J-16743D01* +G75* +G01* +X1442580Y1426173D02* +G03* +X1452294Y1443161I-9715J16826D01* +G75* +G01* +X1467117Y1424009D02* +G03* +X1446708Y1421322I-6961J-25979D01* +G75* +G01* +X1424417Y1408452D02* +G03* +X1452726Y1447463I-29588J51247D01* +G75* +G01* +X1472293Y1443327D02* +G03* +X1445538Y1418126I7014J-34249D01* +G75* +G01* +X1447092Y1416572D02* +G03* +X1472293Y1443327I-9048J33769D01* +G75* +G01* +X6053604Y1457616D02* +G03* +X6067598Y1490909I-32606J33293D01* +G75* +G01* +X6067598Y1490909D02* +G03* +X6081592Y1457616I46600J0D01* +G75* +G01* +X1450698Y566321D02* +G03* +X1439568Y591044I-22728J4635D01* +G75* +G01* +X1450976Y557149D02* +G03* +X1413355Y606177I-77993J-20898D01* +G75* +G01* +X1450976Y557149D02* +G03* +X1428477Y586471I-46644J-12498D01* +G75* +G01* +X1428483Y586467D02* +G03* +X1465118Y581644I24139J41811D01* +G75* +G01* +X1450294Y562326D02* +G03* +X1436152Y596467I-48284J-1D01* +G75* +G01* +X1436152Y596468D02* +G03* +X1470294Y582325I34142J34142D01* +G75* +G01* +X1450976Y557149D02* +G03* +X1420886Y596364I-62382J-16715D01* +G75* +G01* +X1440846Y584840D02* +G03* +X1465118Y581644I15993J27701D01* +G75* +G01* +X1470294Y562326D02* +G03* +X1445093Y589080I-34249J-7014D01* +G75* +G01* +X1443539Y587526D02* +G03* +X1470294Y562326I33769J9049D01* +G75* +G01* +X6112871Y857468D02* +G03* +X6127013Y891610I-34142J34142D01* +G75* +G01* +X6127013Y891610D02* +G03* +X6141156Y857468I48285J0D01* +G75* +G01* +X3213731Y574164D02* +G03* +X3183264Y616087I-62329J-13265D01* +G75* +G01* +X3211393Y599847D02* +G03* +X3228116Y597646I11019J19087D01* +G75* +G01* +X3213296Y577993D02* +G03* +X3202705Y595988I-21185J-354D01* +G75* +G01* +X3202705Y595988D02* +G03* +X3223585Y595813I10594J18350D01* +G75* +G01* +X3213293Y578327D02* +G03* +X3199151Y612469I-48284J0D01* +G75* +G01* +X3199150Y612469D02* +G03* +X3233293Y598327I34142J34143D01* +G75* +G01* +X3213975Y573151D02* +G03* +X3187232Y608002I-55441J-14855D01* +G75* +G01* +X3198392Y601559D02* +G03* +X3228117Y597646I19586J33924D01* +G75* +G01* +X3233293Y578328D02* +G03* +X3208095Y605079I-34245J-7013D01* +G75* +G01* +X3206541Y603525D02* +G03* +X3233293Y578328I33765J9047D01* +G75* +G01* +X6199391Y804989D02* +G03* +X6213533Y839131I-34142J34142D01* +G75* +G01* +X6213533Y839131D02* +G03* +X6227676Y804989I48285J0D01* +G75* +G01* +X6199391Y804989D02* +G03* +X6213533Y839131I-34142J34142D01* +G75* +G01* +X6213533Y839131D02* +G03* +X6227676Y804989I48285J0D01* +G75* +G01* +X3158436Y1516185D02* +G03* +X3142899Y1478676I37509J-37509D01* +G75* +G01* +X3142899Y1485410D02* +G03* +X3130152Y1516185I-43523J-1D01* +G75* +G01* +X3667434Y1567186D02* +G03* +X3653292Y1533044I34142J-34143D01* +G75* +G01* +X3653292Y1533044D02* +G03* +X3639150Y1567186I-48284J-1D01* +G75* +G01* +X6866293Y425326D02* +G03* +X6832151Y411183I0J-48285D01* +G75* +G01* +X6832151Y411184D02* +G03* +X6846293Y445325I-34142J34142D01* +G75* +G01* +X6866293Y445325D02* +G03* +X6839542Y420128I7013J-34244D01* +G75* +G01* +X6841096Y418574D02* +G03* +X6866293Y445325I-9047J33764D01* +G75* +G01* +X6852151Y776470D02* +G03* +X6866293Y810612I-34142J34142D01* +G75* +G01* +X6866293Y810612D02* +G03* +X6880435Y776470I48284J0D01* +G75* +G01* +X3408294Y1500007D02* +G03* +X3391918Y1478665I17573J-30439D01* +G75* +G01* +X3387109Y1460720D02* +G03* +X3380973Y1507327I-59328J15897D01* +G75* +G01* +X3408294Y1500007D02* +G03* +X3391919Y1478667I17572J-30436D01* +G75* +G01* +X3387110Y1460718D02* +G03* +X3380973Y1507327I-59331J15898D01* +G75* +G01* +X3415199Y1506639D02* +G03* +X3407957Y1459050I50710J-32062D01* +G75* +G01* +X3401645Y1482607D02* +G03* +X3388294Y1500007I-27679J-7417D01* +G75* +G01* +X3412436Y1503185D02* +G03* +X3398294Y1469043I34142J-34142D01* +G75* +G01* +X3398294Y1469043D02* +G03* +X3384152Y1503185I-48284J0D01* +G75* +G01* +X3415199Y1506641D02* +G03* +X3407959Y1459049I50717J-32062D01* +G75* +G01* +X3401648Y1482604D02* +G03* +X3388294Y1500007I-27684J-7418D01* +G75* +G01* +X7653150Y1531470D02* +G03* +X7667292Y1565612I-34142J34142D01* +G75* +G01* +X7667292Y1565612D02* +G03* +X7681434Y1531470I48284J0D01* +G75* +G01* +X3478952Y573416D02* +G03* +X3470080Y594696I-18368J4831D01* +G75* +G01* +X3478976Y563151D02* +G03* +X3442592Y610566I-75428J-20212D01* +G75* +G01* +X3478899Y563445D02* +G03* +X3457357Y591964I-44471J-11197D01* +G75* +G01* +X3457357Y591964D02* +G03* +X3492827Y587566I22932J39721D01* +G75* +G01* +X3478294Y568327D02* +G03* +X3464151Y602469I-48284J0D01* +G75* +G01* +X3464151Y602469D02* +G03* +X3498293Y588327I34142J34143D01* +G75* +G01* +X3478975Y563151D02* +G03* +X3450846Y599810I-58316J-15625D01* +G75* +G01* +X3465652Y591262D02* +G03* +X3493117Y587646I18097J31346D01* +G75* +G01* +X3498294Y568328D02* +G03* +X3473096Y595079I-34245J-7013D01* +G75* +G01* +X3471539Y593528D02* +G03* +X3498294Y568328I33769J9049D01* +G75* +G01* +X7750650Y896970D02* +G03* +X7764793Y931112I-34141J34142D01* +G75* +G01* +X7764793Y931112D02* +G03* +X7778935Y896970I48284J0D01* +D15* +G75* +G01* +X8595768Y1745569D02* +G03* +X8621375Y1734962I25607J25606D01* +G75* +G01* +X8621375Y1734962D02* +G03* +X8595768Y1724356I0J-36213D01* +D14* +G75* +G01* +X8599304Y1720820D02* +G03* +X8585134Y1686611I34210J-34210D01* +G75* +G01* +X8585134Y1686745D02* +G03* +X8571020Y1720820I-48189J0D01* +G75* +G01* +X8599304Y1720820D02* +G03* +X8585134Y1686611I34210J-34210D01* +G75* +G01* +X8585134Y1686745D02* +G03* +X8571020Y1720820I-48189J0D01* +D15* +G75* +G01* +X1734577Y492399D02* +G03* +X1745183Y518005I-25607J25606D01* +G75* +G01* +X1745183Y518005D02* +G03* +X1755790Y492399I36213J0D01* +G75* +G01* +X1734577Y492399D02* +G03* +X1745183Y518005I-25607J25606D01* +G75* +G01* +X1745183Y518005D02* +G03* +X1755790Y492399I36213J0D01* +D10* +G75* +G01* +X2644366Y2140608D02* +G03* +X2632133Y2111075I29533J-29533D01* +G75* +G01* +X2632133Y2111075D02* +G03* +X2619901Y2140608I-41765J0D01* +D13* +G75* +G01* +X8247134Y898111D02* +G03* +X8275427Y934983I-30362J52589D01* +G75* +G01* +X8242991Y894933D02* +G03* +X8257134Y929075I-34142J34142D01* +G75* +G01* +X8257134Y929075D02* +G03* +X8271276Y894933I48284J0D01* +G75* +G01* +X8247134Y898111D02* +G03* +X8275427Y934984I-30363J52590D01* +G75* +G01* +X361181Y1900850D02* +G03* +X396132Y1905451I11921J44490D01* +G75* +G01* +X394061Y1889720D02* +G03* +X364848Y1901820I-29213J-29213D01* +G75* +G01* +X394061Y1889720D02* +G03* +X364848Y1901820I-29213J-29213D01* +G75* +G01* +X361189Y1900851D02* +G03* +X396132Y1905451I11919J44480D01* +D10* +G75* +G01* +X2901259Y2212713D02* +G03* +X2889026Y2183180I29533J-29533D01* +G75* +G01* +X2889026Y2183180D02* +G03* +X2876794Y2212713I-41765J0D01* +G75* +G01* +X2393513Y1995848D02* +G03* +X2381280Y1966315I29533J-29533D01* +G75* +G01* +X2381280Y1966315D02* +G03* +X2369048Y1995848I-41765J0D01* +G75* +G01* +X2772367Y1914609D02* +G03* +X2760134Y1885076I29533J-29533D01* +G75* +G01* +X2760134Y1885076D02* +G03* +X2747901Y1914609I-41766J0D01* +G75* +G01* +X8365767Y4537080D02* +G03* +X8395300Y4524847I29533J29533D01* +G75* +G01* +X8395300Y4524847D02* +G03* +X8365767Y4512615I0J-41765D01* +G75* +G01* +X4099164Y6765661D02* +G03* +X4069631Y6753428I0J-41766D01* +G75* +G01* +X4069631Y6753428D02* +G03* +X4081864Y6782961I-29533J29533D01* +G75* +G01* +X4109395Y6997195D02* +G03* +X4138928Y6984962I29533J29533D01* +G75* +G01* +X4138928Y6984962D02* +G03* +X4109395Y6972729I0J-41766D01* +G75* +G01* +X4097162Y6967662D02* +G03* +X4067630Y6955429I1J-41766D01* +G75* +G01* +X4067630Y6955429D02* +G03* +X4079862Y6984961I-29533J29532D01* +G75* +G01* +X4456930Y6972729D02* +G03* +X4427397Y6984962I-29533J-29533D01* +G75* +G01* +X4427397Y6984962D02* +G03* +X4456930Y6997195I0J41766D01* +G75* +G01* +X4708931Y6844728D02* +G03* +X4679398Y6856961I-29533J-29533D01* +G75* +G01* +X4679398Y6856961D02* +G03* +X4708931Y6869194I0J41766D01* +G75* +G01* +X4733397Y4202194D02* +G03* +X4762930Y4189961I29533J29533D01* +G75* +G01* +X4762930Y4189961D02* +G03* +X4733397Y4177728I0J-41766D01* +G75* +G01* +X4628929Y6589727D02* +G03* +X4596980Y6602961I-31949J-31948D01* +G75* +G01* +X4601812Y6602961D02* +G03* +X4628929Y6614193I0J38349D01* +G75* +G01* +X4542929Y6719727D02* +G03* +X4515807Y6730962I-27122J-27123D01* +G75* +G01* +X4510987Y6730962D02* +G03* +X4542929Y6744193I0J45174D01* +G75* +G01* +X4378929Y6087181D02* +G03* +X4349396Y6099414I-29533J-29533D01* +G75* +G01* +X4349396Y6099414D02* +G03* +X4378929Y6111647I0J41765D01* +G75* +G01* +X944931Y5998195D02* +G03* +X957163Y6027728I-29533J29533D01* +G75* +G01* +X957163Y6027728D02* +G03* +X969396Y5998195I41766J0D01* +G75* +G01* +X3574164Y7266262D02* +G03* +X3638112Y7292750I0J90436D01* +G75* +G01* +X974395Y6497729D02* +G03* +X962162Y6468196I29533J-29533D01* +G75* +G01* +X962162Y6468196D02* +G03* +X949929Y6497729I-41766J0D01* +G75* +G01* +X2252929Y7191195D02* +G03* +X2265162Y7220728I-29533J29533D01* +G75* +G01* +X2265162Y7220728D02* +G03* +X2277395Y7191195I41766J0D01* +G75* +G01* +X914917Y5686248D02* +G03* +X883218Y5690422I-20887J-36177D01* +G75* +G01* +X883230Y5690425D02* +G03* +X908585Y5709881I-10808J40334D01* +G75* +G01* +X911334Y5688998D02* +G03* +X881801Y5701231I-29533J-29533D01* +G75* +G01* +X881801Y5701231D02* +G03* +X911334Y5713464I0J41765D01* +G75* +G01* +X2330397Y6835194D02* +G03* +X2360604Y6822681I30207J30207D01* +G75* +G01* +X2359255Y6822681D02* +G03* +X2330397Y6810728I0J-40811D01* +D15* +G75* +G01* +X4786443Y6517454D02* +G03* +X4796163Y6540921I-23467J23466D01* +G75* +G01* +X4796163Y6545201D02* +G03* +X4807656Y6517454I39239J0D01* +D10* +G75* +G01* +X3992164Y6971662D02* +G03* +X3962631Y6959429I0J-41765D01* +G75* +G01* +X3962631Y6959429D02* +G03* +X3974864Y6988962I-29533J29533D01* +G75* +G01* +X3377923Y7170669D02* +G03* +X3348390Y7182902I-29533J-29533D01* +G75* +G01* +X3348390Y7182902D02* +G03* +X3377923Y7195134I0J41765D01* +D14* +G75* +G01* +X2917162Y6645961D02* +G03* +X2963149Y6654947I16318J38655D01* +G75* +G01* +X2924940Y6664386D02* +G03* +X2984160Y6675959I21013J49780D01* +G75* +G01* +X2933895Y6656916D02* +G03* +X2954160Y6645961I20266J13267D01* +G75* +G01* +X2954160Y6645961D02* +G03* +X2933895Y6635006I1J-24222D01* +G75* +G01* +X2860306Y6740103D02* +G03* +X2894448Y6725961I34142J34142D01* +G75* +G01* +X2894448Y6725961D02* +G03* +X2860306Y6711818I0J-48284D01* +D15* +G75* +G01* +X4806769Y7171355D02* +G03* +X4796163Y7145749I25607J-25606D01* +G75* +G01* +X4796163Y7145749D02* +G03* +X4785556Y7171355I-36213J0D01* +D14* +G75* +G01* +X6526279Y6681773D02* +G03* +X6494541Y6694919I-31738J-31738D01* +G75* +G01* +X6489733Y6694919D02* +G03* +X6526279Y6710057I0J51684D01* +G75* +G01* +X6083663Y4307078D02* +G03* +X6049521Y4292936I0J-48284D01* +G75* +G01* +X6049521Y4292936D02* +G03* +X6063663Y4327078I-34142J34142D01* +G75* +G01* +X6083663Y4347078D02* +G03* +X6117805Y4361220I0J48284D01* +G75* +G01* +X6117805Y4361220D02* +G03* +X6103663Y4327078I34142J-34142D01* +G75* +G01* +X6083663Y4327078D02* +G03* +X6110418Y4352279I-7014J34249D01* +G75* +G01* +X6108864Y4353833D02* +G03* +X6083663Y4327078I9048J-33769D01* +G75* +G01* +X6083663Y4327078D02* +G03* +X6056912Y4301880I7013J-34245D01* +G75* +G01* +X6058466Y4300326D02* +G03* +X6083663Y4327078I-9047J33765D01* +D10* +G75* +G01* +X7106664Y5707141D02* +G03* +X7131242Y5696961I24578J24579D01* +G75* +G01* +X7141151Y5696961D02* +G03* +X7106664Y5682676I0J-48773D01* +G75* +G01* +X8184929Y5684728D02* +G03* +X8155396Y5696961I-29533J-29533D01* +G75* +G01* +X8155396Y5696961D02* +G03* +X8184929Y5709194I0J41766D01* +D14* +G75* +G01* +X5989503Y4418815D02* +G03* +X6023645Y4432957I0J48284D01* +G75* +G01* +X6023645Y4432957D02* +G03* +X6009503Y4398815I34142J-34142D01* +G75* +G01* +X5989503Y4398815D02* +G03* +X6016254Y4424013I-7013J34245D01* +G75* +G01* +X6014704Y4425570D02* +G03* +X5989503Y4398815I9048J-33769D01* +G75* +G01* +X5989503Y4378815D02* +G03* +X5955360Y4364674I-1J-48284D01* +G75* +G01* +X5955360Y4364674D02* +G03* +X5969503Y4398815I-34141J34142D01* +G75* +G01* +X5989503Y4398815D02* +G03* +X5962748Y4373614I7014J-34249D01* +G75* +G01* +X5964305Y4372064D02* +G03* +X5989503Y4398815I-9047J33764D01* +G75* +G01* +X6871290Y5642051D02* +G03* +X6885432Y5676193I-34142J34142D01* +G75* +G01* +X6885432Y5676193D02* +G03* +X6899574Y5642051I48284J0D01* +D10* +G75* +G01* +X6873199Y5640141D02* +G03* +X6885432Y5669674I-29533J29533D01* +G75* +G01* +X6885432Y5669674D02* +G03* +X6897665Y5640141I41766J0D01* +D14* +G75* +G01* +X6952574Y5837052D02* +G03* +X6986716Y5822909I34142J34141D01* +G75* +G01* +X6986716Y5822909D02* +G03* +X6952574Y5808767I0J-48284D01* +G75* +G01* +X7599289Y5808767D02* +G03* +X7565147Y5822909I-34142J-34142D01* +G75* +G01* +X7565147Y5822909D02* +G03* +X7599289Y5837052I0J48284D01* +G75* +G01* +X8666276Y1658104D02* +G03* +X8700418Y1643962I34142J34142D01* +G75* +G01* +X8700418Y1643962D02* +G03* +X8666276Y1629819I0J-48284D01* +D15* +G75* +G01* +X8662741Y1654568D02* +G03* +X8688347Y1643962I25606J25607D01* +G75* +G01* +X8688347Y1643962D02* +G03* +X8662741Y1633355I0J-36213D01* +D14* +G75* +G01* +X8666276Y1629819D02* +G03* +X8652134Y1595678I34142J-34142D01* +G75* +G01* +X8652134Y1595678D02* +G03* +X8637992Y1629819I-48284J-1D01* +D10* +G75* +G01* +X69104Y5164915D02* +G03* +X125189Y5188146I0J79316D01* +G75* +G01* +X149655Y5188146D02* +G03* +X205739Y5164915I56084J56085D01* +G75* +G01* +X122925Y5166472D02* +G03* +X97985Y5172443I-15620J-10171D01* +G75* +G01* +X176858Y5172443D02* +G03* +X151919Y5166472I-9320J-16142D01* +G75* +G01* +X-40Y5164915D02* +G03* +X88293Y5201503I0J124922D01* +G75* +G01* +X-61361Y5164915D02* +G03* +X70332Y5219464I0J186243D01* +G75* +G01* +X78088Y5190521D02* +G03* +X3102Y5180649I-25577J-95452D01* +G75* +G01* +X33951Y5170131D02* +G03* +X65855Y5211709I-34237J59300D01* +G75* +G01* +X314188Y5492146D02* +G03* +X326420Y5521679I-29533J29533D01* +G75* +G01* +X326420Y5521679D02* +G03* +X338653Y5492146I41766J0D01* +G75* +G01* +X314188Y5492146D02* +G03* +X326420Y5521679I-29533J29533D01* +G75* +G01* +X326420Y5521679D02* +G03* +X338653Y5492146I41766J0D01* +D13* +G75* +G01* +X1090860Y4606915D02* +G03* +X966098Y4555237I0J-176440D01* +G75* +G01* +X961204Y4594399D02* +G03* +X1033116Y4593927I36358J61108D01* +D10* +G75* +G01* +X4305968Y7305728D02* +G03* +X4278851Y7316960I-27117J-27117D01* +G75* +G01* +X4274019Y7316960D02* +G03* +X4305968Y7330194I0J45183D01* +D13* +G75* +G01* +X7782163Y6700960D02* +G03* +X7744163Y6609220I91740J-91740D01* +G75* +G01* +X7744163Y6609220D02* +G03* +X7706163Y6700960I-129740J0D01* +D10* +G75* +G01* +X6982163Y6952310D02* +G03* +X6912769Y6923567I0J-98137D01* +G75* +G01* +X6982163Y6926910D02* +G03* +X6869408Y6880206I0J-159458D01* +G75* +G01* +X6912769Y6923567D02* +G03* +X6941513Y6992960I-69394J69394D01* +G75* +G01* +X6869409Y6880206D02* +G03* +X6916113Y6992960I-112755J112754D01* +D14* +G75* +G01* +X3276555Y3050475D02* +G03* +X3387516Y3096437I0J156924D01* +G75* +G01* +X3276555Y3070475D02* +G03* +X3421659Y3130578I1J205208D01* +G75* +G01* +X3276555Y3090475D02* +G03* +X3455801Y3164720I1J253492D01* +G75* +G01* +X3387516Y3096437D02* +G03* +X3341554Y2985475I110962J-110963D01* +G75* +G01* +X3421659Y3130578D02* +G03* +X3361554Y2985475I145103J-145104D01* +G75* +G01* +X3455801Y3164721D02* +G03* +X3381554Y2985475I179245J-179247D01* +G75* +G01* +X1700414Y3693288D02* +G03* +X1811369Y3647328I110955J110955D01* +G75* +G01* +X1714556Y3707430D02* +G03* +X1859653Y3647328I145098J145097D01* +G75* +G01* +X1728698Y3721572D02* +G03* +X1907938Y3647328I179240J179240D01* +G75* +G01* +X1811381Y3647328D02* +G03* +X1700414Y3601364I0J-156932D01* +G75* +G01* +X1859666Y3647328D02* +G03* +X1714556Y3587222I0J-205216D01* +G75* +G01* +X1907950Y3647328D02* +G03* +X1728698Y3573080I0J-253500D01* +G75* +G01* +X1412664Y2207838D02* +G03* +X1499264Y2237733I12593J103901D01* +G75* +G01* +X1415071Y2227693D02* +G03* +X1528317Y2266786I16467J135871D01* +G75* +G01* +X1417477Y2247547D02* +G03* +X1557370Y2295839I20342J167841D01* +G75* +G01* +X1499264Y2237733D02* +G03* +X1469371Y2151132I74008J-74006D01* +G75* +G01* +X1528317Y2266786D02* +G03* +X1489226Y2153539I96779J-96777D01* +G75* +G01* +X1557370Y2295839D02* +G03* +X1509080Y2155946I119550J-119548D01* +G75* +G01* +X2471721Y4452814D02* +G03* +X2552446Y4413123I80725J62245D01* +G75* +G01* +X2487559Y4465026D02* +G03* +X2593122Y4413123I105563J81397D01* +G75* +G01* +X2503398Y4477239D02* +G03* +X2633799Y4413123I130401J100549D01* +G75* +G01* +X2552446Y4413123D02* +G03* +X2471721Y4373432I0J-101936D01* +G75* +G01* +X2593122Y4413123D02* +G03* +X2487559Y4361220I0J-133300D01* +G75* +G01* +X2633799Y4413123D02* +G03* +X2503398Y4349007I0J-164665D01* +G75* +G01* +X2172054Y5419337D02* +G03* +X2283016Y5373375I110962J110963D01* +G75* +G01* +X2186196Y5433479D02* +G03* +X2331300Y5373375I145105J145105D01* +G75* +G01* +X2200338Y5447621D02* +G03* +X2379585Y5373375I179246J179247D01* +G75* +G01* +X2283015Y5373375D02* +G03* +X2172054Y5327414I0J-156923D01* +G75* +G01* +X2331299Y5373375D02* +G03* +X2186196Y5313271I0J-205207D01* +G75* +G01* +X2379583Y5373375D02* +G03* +X2200338Y5299129I0J-253491D01* +G75* +G01* +X1175032Y4440700D02* +G03* +X1285994Y4394738I110962J110962D01* +G75* +G01* +X1189175Y4454842D02* +G03* +X1334278Y4394738I145103J145104D01* +G75* +G01* +X1203317Y4468984D02* +G03* +X1382563Y4394738I179245J179246D01* +G75* +G01* +X1285994Y4394738D02* +G03* +X1175032Y4348777I0J-156923D01* +G75* +G01* +X1334278Y4394738D02* +G03* +X1189175Y4334634I0J-205207D01* +G75* +G01* +X1382563Y4394738D02* +G03* +X1203317Y4320493I-1J-253492D01* +D15* +G75* +G01* +X4963385Y367041D02* +G03* +X4903636Y391790I-59749J-59748D01* +G75* +G01* +X4942171Y345828D02* +G03* +X4831210Y391790I-110961J-110962D01* +G75* +G01* +X4903636Y391790D02* +G03* +X4963385Y416539I0J84497D01* +G75* +G01* +X4831210Y391790D02* +G03* +X4942171Y437752I0J156923D01* +D10* +G75* +G01* +X5525761Y421417D02* +G03* +X5597289Y391790I71527J71528D01* +G75* +G01* +X5543721Y439378D02* +G03* +X5658609Y391790I114888J114888D01* +G75* +G01* +X5597289Y391790D02* +G03* +X5525761Y362162I-1J-101155D01* +G75* +G01* +X5658609Y391790D02* +G03* +X5543721Y344202I0J-162476D01* +D15* +G75* +G01* +X5202133Y391790D02* +G03* +X5173849Y460074I-96568J0D01* +G75* +G01* +X5172133Y391790D02* +G03* +X5122636Y511287I-168994J0D01* +G75* +G01* +X5173849Y460074D02* +G03* +X5242133Y431790I68284J68284D01* +G75* +G01* +X5122636Y511287D02* +G03* +X5242133Y461790I119498J119497D01* +G75* +G01* +X1612734Y1610045D02* +G03* +X1666180Y1578790I53446J30069D01* +G75* +G01* +X1666180Y1578790D02* +G03* +X1612734Y1547536I0J-61324D01* +D10* +G75* +G01* +X-270434Y5018464D02* +G03* +X-245666Y4958669I84562J0D01* +G75* +G01* +X-245666Y4804999D02* +G03* +X-207598Y4789231I38068J38069D01* +G75* +G01* +X-207598Y4789231D02* +G03* +X-245666Y4773463I0J-53837D01* +G75* +G01* +X-245666Y5198791D02* +G03* +X-269354Y5141602I57188J-57188D01* +G75* +G01* +X-269354Y5179842D02* +G03* +X-277203Y5198790I-26798J0D01* +G75* +G01* +X-249453Y5195751D02* +G03* +X-260995Y5166072I14467J-22710D01* +G75* +G01* +X-261435Y5390529D02* +G03* +X-236888Y5400698I-1J34716D01* +G75* +G01* +X-225673Y5411913D02* +G03* +X-239342Y5371265I34087J-34085D01* +G75* +G01* +X-262598Y5365356D02* +G03* +X-222112Y5370452I15687J38742D01* +G75* +G01* +X-253065Y5388899D02* +G03* +X-185554Y5397396I26159J64603D01* +G75* +G01* +X-258097Y5390278D02* +G03* +X-225689Y5398293I6528J43128D01* +G75* +G01* +X-216845Y5404811D02* +G03* +X-239265Y5365823I33182J-45021D01* +G75* +G01* +X-229877Y5411915D02* +G03* +X-283706Y5386012I0J-68885D01* +G75* +G01* +X-177091Y5411915D02* +G03* +X-263857Y5370164I0J-111033D01* +G75* +G01* +X-124306Y5411915D02* +G03* +X-244008Y5354314I0J-153182D01* +D14* +G75* +G01* +X447815Y4814239D02* +G03* +X458422Y4839846I-25606J25607D01* +G75* +G01* +X458422Y4839846D02* +G03* +X469028Y4814239I36213J0D01* +G75* +G01* +X-83851Y4448023D02* +G03* +X-164395Y4446096I-39261J-43211D01* +G75* +G01* +X-97300Y4433220D02* +G03* +X-179231Y4431260I-39937J-43955D01* +G75* +G01* +X-110750Y4418418D02* +G03* +X-194067Y4416425I-40613J-44699D01* +G75* +G01* +X-124199Y4403616D02* +G03* +X-208904Y4401589I-41289J-45444D01* +G75* +G01* +X-137648Y4388813D02* +G03* +X-223739Y4386753I-41966J-46187D01* +G75* +G01* +X-151098Y4374011D02* +G03* +X-238576Y4371918I-42641J-46931D01* +D10* +G75* +G01* +X-130450Y5396263D02* +G03* +X-165492Y5400876I-23090J-39994D01* +G75* +G01* +X-132997Y5403217D02* +G03* +X-153995Y5411915I-20998J-20997D01* +G75* +G01* +X-153995Y5411915D02* +G03* +X-132997Y5420612I0J29694D01* +G75* +G01* +X-132997Y5403217D02* +G03* +X-153995Y5411915I-20998J-20997D01* +G75* +G01* +X-153995Y5411915D02* +G03* +X-132997Y5420612I0J29694D01* +G75* +G01* +X-26643Y5396301D02* +G03* +X-42354Y5375557I17185J-29337D01* +G75* +G01* +X-40816Y5381448D02* +G03* +X-43473Y5400698I-24565J6417D01* +G75* +G01* +X-26643Y5396301D02* +G03* +X-42355Y5375557I17185J-29337D01* +G75* +G01* +X-40816Y5381448D02* +G03* +X-43473Y5400698I-24564J6417D01* +G75* +G01* +X-24163Y5398217D02* +G03* +X-32860Y5377220I20998J-20997D01* +G75* +G01* +X-32860Y5377220D02* +G03* +X-41557Y5398217I-29695J0D01* +G75* +G01* +X716400Y5404217D02* +G03* +X707702Y5383219I20997J-20998D01* +G75* +G01* +X707702Y5383219D02* +G03* +X699005Y5404217I-29694J0D01* +D14* +G75* +G01* +X944096Y4884309D02* +G03* +X918495Y4894913I-25601J-25601D01* +G75* +G01* +X918483Y4894913D02* +G03* +X944096Y4905522I0J36222D01* +D10* +G75* +G01* +X946005Y4886218D02* +G03* +X925014Y4894913I-20992J-20991D01* +G75* +G01* +X925001Y4894913D02* +G03* +X946005Y4903613I0J29703D01* +G75* +G01* +X-57714Y4684530D02* +G03* +X-22289Y4699203I0J50099D01* +D14* +G75* +G01* +X320815Y4813241D02* +G03* +X331422Y4838848I-25606J25607D01* +G75* +G01* +X331422Y4838848D02* +G03* +X342028Y4813241I36213J0D01* +G75* +G01* +X952094Y5022307D02* +G03* +X926488Y5032913I-25606J-25607D01* +G75* +G01* +X926488Y5032913D02* +G03* +X952094Y5043520I0J36214D01* +D13* +G75* +G01* +X8355130Y1278056D02* +G03* +X8257134Y1115513I85804J-162543D01* +G75* +G01* +X8378471Y1233839D02* +G03* +X8257134Y1032580I106242J-201259D01* +G75* +G01* +X8401813Y1189621D02* +G03* +X8257134Y949646I126680J-239975D01* +G75* +G01* +X8425155Y1145404D02* +G03* +X8257134Y866713I147117J-278691D01* +D10* +G75* +G01* +X5813215Y370874D02* +G03* +X5762718Y391790I-50497J-50497D01* +G75* +G01* +X5795254Y352913D02* +G03* +X5701397Y391790I-93857J-93857D01* +G75* +G01* +X5777294Y334953D02* +G03* +X5640076Y391790I-137218J-137218D01* +G75* +G01* +X5953133Y408074D02* +G03* +X5979427Y363854I50328J0D01* +G75* +G01* +X5953133Y450789D02* +G03* +X5991557Y386171I73545J0D01* +D15* +G75* +G01* +X4724425Y505915D02* +G03* +X4773170Y500595I28003J30607D01* +G75* +G01* +X4744676Y528049D02* +G03* +X4808632Y521069I36741J40158D01* +G75* +G01* +X4795429Y535325D02* +G03* +X4724425Y505915I0J-100414D01* +G75* +G01* +X4867855Y535325D02* +G03* +X4745639Y484701I1J-172840D01* +G75* +G01* +X4739419Y531899D02* +G03* +X4769442Y531903I15008J26010D01* +G75* +G01* +X4769442Y531903D02* +G03* +X4754425Y505904I15016J-26009D01* +G75* +G01* +X4559639Y484702D02* +G03* +X4538426Y433488I51214J-51213D01* +G75* +G01* +X4538426Y433488D02* +G03* +X4517213Y484702I-72426J1D01* +D10* +G75* +G01* +X7301437Y2297813D02* +G03* +X7280439Y2306510I-20998J-20997D01* +G75* +G01* +X7280439Y2306510D02* +G03* +X7301437Y2315208I0J29695D01* +G75* +G01* +X7306436Y2315208D02* +G03* +X7314794Y2335383I-20175J20176D01* +G75* +G01* +X7314794Y2337027D02* +G03* +X7323831Y2315208I30856J0D01* +G75* +G01* +X4889808Y4162842D02* +G03* +X4824336Y4189961I-65472J-65472D01* +G75* +G01* +X4827929Y4189961D02* +G03* +X4889808Y4215592I0J87509D01* +D14* +G75* +G01* +X4887899Y3907060D02* +G03* +X4819614Y3935344I-68285J-68284D01* +G75* +G01* +X4819614Y3935344D02* +G03* +X4887899Y3963628I0J96568D01* +G75* +G01* +X4887899Y3145441D02* +G03* +X4819614Y3173725I-68285J-68284D01* +G75* +G01* +X4819614Y3173725D02* +G03* +X4887899Y3202009I0J96568D01* +G75* +G01* +X5700250Y2972564D02* +G03* +X5688632Y2919852I35451J-35450D01* +G75* +G01* +X5722389Y2994703D02* +G03* +X5707409Y2926738I45710J-45708D01* +G75* +G01* +X5744529Y3016843D02* +G03* +X5726186Y2933625I55967J-55967D01* +G75* +G01* +X5702345Y2905293D02* +G03* +X5723682Y2961499I-47137J50048D01* +G75* +G01* +X4887900Y2891568D02* +G03* +X4819616Y2919852I-68284J-68284D01* +G75* +G01* +X4819616Y2919852D02* +G03* +X4887900Y2948136I0J96568D01* +G75* +G01* +X5700064Y2717378D02* +G03* +X5688632Y2665979I34686J-34686D01* +G75* +G01* +X5722297Y2739610D02* +G03* +X5707435Y2672793I45090J-45090D01* +G75* +G01* +X5744529Y2761843D02* +G03* +X5726239Y2679608I55495J-55494D01* +G75* +G01* +X5702949Y2652014D02* +G03* +X5723638Y2709850I-52806J51507D01* +G75* +G01* +X4887899Y2637695D02* +G03* +X4819614Y2665979I-68285J-68284D01* +G75* +G01* +X4819614Y2665979D02* +G03* +X4887899Y2694263I0J96568D01* +G75* +G01* +X5716916Y2440390D02* +G03* +X5785201Y2412106I68284J68284D01* +G75* +G01* +X5785201Y2412106D02* +G03* +X5716916Y2383822I-1J-96568D01* +G75* +G01* +X4887899Y2383822D02* +G03* +X4819614Y2412106I-68285J-68284D01* +G75* +G01* +X4819614Y2412106D02* +G03* +X4887899Y2440390I0J96568D01* +G75* +G01* +X5716916Y2186517D02* +G03* +X5785201Y2158233I68284J68284D01* +G75* +G01* +X5785201Y2158233D02* +G03* +X5716916Y2129949I-1J-96568D01* +G75* +G01* +X4887899Y2129949D02* +G03* +X4819614Y2158233I-68285J-68284D01* +G75* +G01* +X4819614Y2158233D02* +G03* +X4887899Y2186517I0J96568D01* +D13* +G75* +G01* +X5043860Y1886682D02* +G03* +X5026182Y1844005I42678J-42677D01* +G75* +G01* +X5026182Y1844005D02* +G03* +X5008505Y1886682I-60355J0D01* +G75* +G01* +X5043860Y1886682D02* +G03* +X5026182Y1844005I42678J-42677D01* +G75* +G01* +X5026182Y1844005D02* +G03* +X5008505Y1886682I-60355J0D01* +D10* +G75* +G01* +X785138Y696072D02* +G03* +X867589Y730224I0J116603D01* +G75* +G01* +X723817Y696072D02* +G03* +X849628Y748184I0J177923D01* +G75* +G01* +X662496Y696072D02* +G03* +X831667Y766145I0J239245D01* +D14* +G75* +G01* +X1111915Y1402220D02* +G03* +X1168422Y1406456I25792J34951D01* +G75* +G01* +X1123791Y1418312D02* +G03* +X1184857Y1422890I27873J37772D01* +G75* +G01* +X1135666Y1434405D02* +G03* +X1201291Y1439325I29954J40591D01* +G75* +G01* +X1354566Y1385665D02* +G03* +X1420945Y1391979I29369J43324D01* +G75* +G01* +X1365788Y1402220D02* +G03* +X1438060Y1409094I31976J47170D01* +G75* +G01* +X1377011Y1418774D02* +G03* +X1455175Y1426209I34583J51016D01* +G75* +G01* +X1388233Y1435329D02* +G03* +X1472290Y1443325I37191J54862D01* +G75* +G01* +X1418349Y614271D02* +G03* +X1365788Y629770I-40512J-40512D01* +G75* +G01* +X1444320Y588300D02* +G03* +X1369994Y610217I-57288J-57287D01* +G75* +G01* +X1470290Y562329D02* +G03* +X1374200Y590665I-74062J-74063D01* +G75* +G01* +X1384338Y637249D02* +G03* +X1433799Y595908I63358J25545D01* +G75* +G01* +X1410744Y600699D02* +G03* +X1387728Y596324I-6227J-29970D01* +D13* +G75* +G01* +X2109730Y1419897D02* +G03* +X2127407Y1462575I-42678J42678D01* +G75* +G01* +X2127407Y1462575D02* +G03* +X2145085Y1419897I60356J0D01* +D10* +G75* +G01* +X2354905Y1428595D02* +G03* +X2381280Y1492270I-63674J63675D01* +G75* +G01* +X2381280Y1492270D02* +G03* +X2407656Y1428595I90050J0D01* +G75* +G01* +X2862651Y1428595D02* +G03* +X2889026Y1492270I-63674J63675D01* +G75* +G01* +X2889026Y1492270D02* +G03* +X2915402Y1428595I90050J0D01* +G75* +G01* +X2608778Y1428595D02* +G03* +X2632133Y1484978I-56383J56384D01* +G75* +G01* +X2632133Y1499561D02* +G03* +X2661529Y1428595I100361J0D01* +D14* +G75* +G01* +X3114615Y1430504D02* +G03* +X3142899Y1498788I-68284J68284D01* +G75* +G01* +X3142899Y1498788D02* +G03* +X3171184Y1430504I96569J0D01* +G75* +G01* +X3382631Y1416362D02* +G03* +X3398294Y1454177I-37816J37815D01* +G75* +G01* +X3368488Y1430504D02* +G03* +X3398294Y1502461I-71957J71957D01* +G75* +G01* +X3398294Y1495115D02* +G03* +X3425057Y1430504I91374J0D01* +D10* +G75* +G01* +X2615896Y881714D02* +G03* +X2635153Y915810I-20555J34096D01* +G75* +G01* +X2635153Y915810D02* +G03* +X2654411Y881714I39813J0D01* +D14* +G75* +G01* +X3212291Y599329D02* +G03* +X3150688Y611349I-39726J-39727D01* +G75* +G01* +X3233290Y578330D02* +G03* +X3158476Y592928I-48245J-48247D01* +G75* +G01* +X3450598Y616022D02* +G03* +X3396772Y629770I-38503J-38505D01* +G75* +G01* +X3474444Y592177D02* +G03* +X3402400Y610578I-51536J-51538D01* +G75* +G01* +X3498290Y568331D02* +G03* +X3408028Y591386I-64568J-64569D01* +G75* +G01* +X3443025Y602807D02* +G03* +X3420233Y597373I-4837J-30230D01* +G75* +G01* +X3626425Y1430504D02* +G03* +X3653292Y1495366I-64862J64862D01* +G75* +G01* +X3653292Y1453925D02* +G03* +X3668851Y1416362I53123J0D01* +G75* +G01* +X3653292Y1502210D02* +G03* +X3682994Y1430504I101408J0D01* +G75* +G01* +X3722406Y623214D02* +G03* +X3653754Y649747I-64308J-64307D01* +G75* +G01* +X3754366Y591254D02* +G03* +X3654709Y629770I-93350J-93350D01* +G75* +G01* +X3786326Y559294D02* +G03* +X3655665Y609793I-122393J-122393D01* +G75* +G01* +X3818286Y527333D02* +G03* +X3656620Y589816I-151435J-151435D01* +G75* +G01* +X3943726Y684327D02* +G03* +X3880298Y658054I0J-89700D01* +G75* +G01* +X3992010Y684327D02* +G03* +X3894440Y643912I0J-137984D01* +G75* +G01* +X4040294Y684327D02* +G03* +X3908582Y629770I0J-186268D01* +G75* +G01* +X4088578Y684327D02* +G03* +X3922725Y615628I0J-234552D01* +G75* +G01* +X4136862Y684327D02* +G03* +X3936867Y601486I0J-282837D01* +G75* +G01* +X3908582Y629770D02* +G03* +X3964989Y621861I32312J25347D01* +G75* +G01* +X3924319Y642114D02* +G03* +X3981816Y634052I32936J25837D01* +G75* +G01* +X3940055Y654458D02* +G03* +X3998642Y646243I33561J26328D01* +G75* +G01* +X3918262Y647272D02* +G03* +X3975960Y648757I27584J49872D01* +G75* +G01* +X3927942Y664773D02* +G03* +X4004877Y666754I36781J66502D01* +G75* +G01* +X3960934Y639406D02* +G03* +X3947541Y620701I15882J-25520D01* +G75* +G01* +X3918978Y668395D02* +G03* +X3992079Y677978I25002J92893D01* +G75* +G01* +X3992078Y677977D02* +G03* +X3947231Y619462I48096J-83304D01* +D17* +G75* +G01* +X884724Y4509217D02* +G03* +X856282Y4440550I68667J-68666D01* +D14* +G75* +G01* +X884566Y4214961D02* +G03* +X952851Y4186677I68284J68284D01* +G75* +G01* +X952851Y4186677D02* +G03* +X884566Y4158393I-1J-96568D01* +G75* +G01* +X884565Y3961088D02* +G03* +X952849Y3932804I68284J68284D01* +G75* +G01* +X952849Y3932804D02* +G03* +X884565Y3904520I0J-96568D01* +G75* +G01* +X884566Y3707215D02* +G03* +X952851Y3678931I68284J68284D01* +G75* +G01* +X952851Y3678931D02* +G03* +X884566Y3650647I-1J-96568D01* +G75* +G01* +X884566Y3453342D02* +G03* +X952851Y3425058I68284J68284D01* +G75* +G01* +X952851Y3425058D02* +G03* +X884566Y3396774I-1J-96568D01* +G75* +G01* +X884566Y3199469D02* +G03* +X952851Y3171185I68284J68284D01* +G75* +G01* +X952851Y3171185D02* +G03* +X884566Y3142901I-1J-96568D01* +D17* +G75* +G01* +X166421Y4506728D02* +G03* +X193832Y4440550I93589J0D01* +D10* +G75* +G01* +X57458Y3906429D02* +G03* +X-6217Y3932804I-63675J-63675D01* +G75* +G01* +X-6217Y3932804D02* +G03* +X57458Y3959179I0J90050D01* +D14* +G75* +G01* +X884566Y2691723D02* +G03* +X952851Y2663439I68284J68284D01* +G75* +G01* +X952851Y2663439D02* +G03* +X884566Y2635155I-1J-96568D01* +G75* +G01* +X884566Y2437850D02* +G03* +X952851Y2409566I68284J68284D01* +G75* +G01* +X952851Y2409566D02* +G03* +X884566Y2381282I-1J-96568D01* +D13* +G75* +G01* +X66155Y2138015D02* +G03* +X23477Y2155693I-42678J-42677D01* +G75* +G01* +X23477Y2155693D02* +G03* +X66155Y2173371I0J60355D01* +G75* +G01* +X321510Y2173371D02* +G03* +X364187Y2155693I42677J42677D01* +G75* +G01* +X364187Y2155693D02* +G03* +X321510Y2138015I0J-60355D01* +G75* +G01* +X321510Y1919498D02* +G03* +X376329Y1896791I54819J54819D01* +G75* +G01* +X749302Y6281259D02* +G03* +X655405Y6320152I-93897J-93897D01* +G75* +G01* +X655417Y6320152D02* +G03* +X749302Y6359041I0J132773D01* +G75* +G01* +X873974Y6395682D02* +G03* +X791728Y6361614I0J-116314D01* +G75* +G01* +X994685Y6395682D02* +G03* +X827083Y6326259I0J-237025D01* +D10* +G75* +G01* +X782441Y5734557D02* +G03* +X862897Y5701231I80456J80456D01* +G75* +G01* +X864791Y5701231D02* +G03* +X765371Y5658259I0J-136496D01* +G75* +G01* +X923557Y5701231D02* +G03* +X783872Y5640856I0J-191778D01* +D13* +G75* +G01* +X597213Y6359041D02* +G03* +X691098Y6320152I93885J93884D01* +G75* +G01* +X691110Y6320152D02* +G03* +X597213Y6281259I0J-132790D01* +G75* +G01* +X128272Y5725861D02* +G03* +X167162Y5819751I-93891J93890D01* +G75* +G01* +X167162Y5819751D02* +G03* +X206053Y5725861I132782J0D01* +D15* +G75* +G01* +X-204100Y5706534D02* +G03* +X-171836Y5760643I-29241J54109D01* +G75* +G01* +X-218363Y5732927D02* +G03* +X-171836Y5810956I-42167J78029D01* +G75* +G01* +X-171836Y5810956D02* +G03* +X-125954Y5731769I91274J0D01* +G75* +G01* +X742226Y1569833D02* +G03* +X769132Y1634792I-64959J64959D01* +G75* +G01* +X691013Y1518620D02* +G03* +X739132Y1634791I-116173J116171D01* +G75* +G01* +X810345Y1656005D02* +G03* +X854317Y1637792I43971J43972D01* +G75* +G01* +X868801Y1637792D02* +G03* +X810345Y1613579I-1J-82668D01* +G75* +G01* +X769132Y1634792D02* +G03* +X723031Y1574713I49472J-85688D01* +G75* +G01* +X774601Y1605295D02* +G03* +X756826Y1588862I4135J-22303D01* +G75* +G01* +X756826Y1588863D02* +G03* +X749648Y1611981I-21911J5870D01* +G75* +G01* +X1943076Y7209025D02* +G03* +X1948782Y7252372I-49472J28562D01* +G75* +G01* +X1958442Y7244960D02* +G03* +X1932835Y7234354I0J-36213D01* +G75* +G01* +X1957206Y7245037D02* +G03* +X1919608Y7226329I-4693J-37706D01* +G75* +G01* +X1944299Y7269102D02* +G03* +X1922663Y7216867I52235J-52234D01* +G75* +G01* +X1965513Y7247889D02* +G03* +X1922663Y7144441I103448J-103448D01* +G75* +G01* +X1957833Y7274951D02* +G03* +X1922663Y7238694I1104J-36257D01* +G75* +G01* +X1958746Y7244965D02* +G03* +X1922663Y7207766I1133J-37199D01* +D10* +G75* +G01* +X2468464Y6813984D02* +G03* +X2447467Y6822681I-20997J-20997D01* +G75* +G01* +X2447467Y6822681D02* +G03* +X2468464Y6831379I0J29695D01* +G75* +G01* +X2492465Y7295984D02* +G03* +X2469051Y7305683I-23414J-23413D01* +G75* +G01* +X2473884Y7305683D02* +G03* +X2492465Y7313379I-1J26277D01* +G75* +G01* +X2519860Y7313379D02* +G03* +X2538441Y7305683I18581J18581D01* +G75* +G01* +X2543273Y7305683D02* +G03* +X2519860Y7295984I0J-33112D01* +G75* +G01* +X2514860Y7204544D02* +G03* +X2506162Y7183547I20997J-20997D01* +G75* +G01* +X2506162Y7183547D02* +G03* +X2497465Y7204544I-29695J0D01* +G75* +G01* +X4134424Y7118122D02* +G03* +X4079285Y7140961I-55139J-55140D01* +G75* +G01* +X4079285Y7140961D02* +G03* +X4134424Y7163801I0J77979D01* +G75* +G01* +X4180103Y7339800D02* +G03* +X4235242Y7316960I55139J55139D01* +G75* +G01* +X4235242Y7316960D02* +G03* +X4180103Y7294121I0J-77979D01* +G75* +G01* +X3962801Y7165802D02* +G03* +X4022772Y7140961I59971J59971D01* +G75* +G01* +X4013108Y7140961D02* +G03* +X3962801Y7120123I0J-71145D01* +G75* +G01* +X3957389Y7105767D02* +G03* +X3939962Y7073902I20419J-31865D01* +G75* +G01* +X3939962Y7073902D02* +G03* +X3922535Y7105767I-37847J0D01* +G75* +G01* +X3355563Y7317262D02* +G03* +X3333396Y7320180I-14606J-25298D01* +G75* +G01* +X3332737Y7320003D02* +G03* +X3351061Y7334064I-7811J29150D01* +G75* +G01* +X3353015Y7319217D02* +G03* +X3331905Y7327961I-21110J-21111D01* +G75* +G01* +X3332132Y7327961D02* +G03* +X3353015Y7336611I-1J29534D01* +G75* +G01* +X3255211Y7327961D02* +G03* +X3201847Y7302678I1J-68960D01* +G75* +G01* +X3308823Y7327961D02* +G03* +X3221503Y7286591I0J-112839D01* +G75* +G01* +X3362435Y7327961D02* +G03* +X3241159Y7270503I0J-156718D01* +G75* +G01* +X3239003Y7268121D02* +G03* +X3215632Y7211700I56421J-56421D01* +G75* +G01* +X3215632Y7214263D02* +G03* +X3193324Y7268121I-76166J1D01* +G75* +G01* +X3228124Y7320965D02* +G03* +X3262102Y7327959I11678J29295D01* +G75* +G01* +X3262102Y7327959D02* +G03* +X3248425Y7292530I33149J-33152D01* +G75* +G01* +X2902463Y7218241D02* +G03* +X2914696Y7188708I41766J0D01* +G75* +G01* +X2840817Y7214243D02* +G03* +X2871466Y7226938I-1J43344D01* +D14* +G75* +G01* +X9518810Y6046187D02* +G03* +X9508203Y6020581I25606J-25606D01* +G75* +G01* +X9508203Y6020581D02* +G03* +X9497596Y6046187I-36213J0D01* +G75* +G01* +X9497596Y6077400D02* +G03* +X9508203Y6103007I-25606J25607D01* +G75* +G01* +X9508203Y6103007D02* +G03* +X9518810Y6077400I36213J0D01* +G75* +G01* +X9530231Y6262043D02* +G03* +X9508203Y6208862I53181J-53181D01* +G75* +G01* +X9508203Y6195727D02* +G03* +X9480734Y6262043I-93785J0D01* +D10* +G75* +G01* +X-65949Y5194515D02* +G03* +X5512Y5164915I71461J71462D01* +G75* +G01* +X-47989Y5212476D02* +G03* +X66833Y5164915I114822J114822D01* +G75* +G01* +X-1319Y5164915D02* +G03* +X-47989Y5145584I0J-66001D01* +G75* +G01* +X-89880Y5277366D02* +G03* +X-83859Y5208905I42188J-30785D01* +G75* +G01* +X-72744Y5300850D02* +G03* +X-66269Y5227229I45368J-33105D01* +G75* +G01* +X-55609Y5324334D02* +G03* +X-48679Y5245552I48549J-35426D01* +G75* +G01* +X-88738Y5258162D02* +G03* +X-61317Y5274889I-6480J41464D01* +G75* +G01* +X-48099Y5293002D02* +G03* +X-45855Y5242596I32617J-23801D01* +G75* +G01* +X-63294Y5188933D02* +G03* +X-32860Y5252570I-51315J63637D01* +G75* +G01* +X-79238Y5208705D02* +G03* +X-32860Y5305681I-78199J96976D01* +G75* +G01* +X-95182Y5228478D02* +G03* +X-32860Y5358793I-105083J130315D01* +G75* +G01* +X-111126Y5248250D02* +G03* +X-32860Y5411904I-131967J163654D01* +D13* +G75* +G01* +X-56686Y4925681D02* +G03* +X-81435Y4865932I59748J-59749D01* +G75* +G01* +X-81435Y4865932D02* +G03* +X-106184Y4925681I-84497J0D01* +D10* +G75* +G01* +X995420Y5201813D02* +G03* +X920140Y5170633I-1J-106461D01* +G75* +G01* +X995420Y5176413D02* +G03* +X876779Y5127273I-3J-167782D01* +G75* +G01* +X930371Y5180863D02* +G03* +X948121Y5223714I-42852J42852D01* +G75* +G01* +X956951Y5212393D02* +G03* +X903427Y5239913I-53524J-38290D01* +G75* +G01* +X903427Y5239913D02* +G03* +X956951Y5267433I0J65811D01* +G75* +G01* +X3449864Y6395682D02* +G03* +X3437631Y6425215I-41766J0D01* +G75* +G01* +X3453466Y6386984D02* +G03* +X3432469Y6395682I-20997J-20997D01* +G75* +G01* +X3432469Y6395682D02* +G03* +X3453466Y6404379I0J29695D01* +G75* +G01* +X3453466Y6386984D02* +G03* +X3432469Y6395682I-20997J-20997D01* +G75* +G01* +X3432469Y6395682D02* +G03* +X3453466Y6404379I0J29695D01* +D13* +G75* +G01* +X5002414Y1589909D02* +G03* +X5026182Y1647291I-57381J57382D01* +G75* +G01* +X5026182Y1652025D02* +G03* +X5051912Y1589909I87845J0D01* +G75* +G01* +X5002414Y1589909D02* +G03* +X5026182Y1647291I-57381J57382D01* +G75* +G01* +X5026182Y1652025D02* +G03* +X5051912Y1589909I87845J0D01* +G75* +G01* +X4485304Y6403818D02* +G03* +X4471162Y6369676I34142J-34142D01* +G75* +G01* +X4471162Y6369676D02* +G03* +X4457020Y6403818I-48284J0D01* +G75* +G01* +X4474162Y6362434D02* +G03* +X4457020Y6403818I-58526J0D01* +D10* +G75* +G01* +X7417534Y4719986D02* +G03* +X7402555Y4756148I-51141J0D01* +G75* +G01* +X7402555Y4783543D02* +G03* +X7417534Y4819705I-36162J36162D01* +G75* +G01* +X7182830Y2317209D02* +G03* +X7208659Y2306510I25829J25830D01* +G75* +G01* +X7151832Y2308512D02* +G03* +X7139599Y2338045I-41765J0D01* +D13* +G75* +G01* +X7420676Y4975989D02* +G03* +X7454817Y4961847I34142J34142D01* +G75* +G01* +X7454817Y4961847D02* +G03* +X7420676Y4947705I1J-48284D01* +D10* +G75* +G01* +X7429373Y4939007D02* +G03* +X7417534Y4910426I28581J-28581D01* +G75* +G01* +X7417534Y4857310D02* +G03* +X7383694Y4939007I-115538J0D01* +D13* +G75* +G01* +X-110325Y2168989D02* +G03* +X-78225Y2155693I32100J32100D01* +G75* +G01* +X-74141Y2155693D02* +G03* +X-110325Y2140705I0J-51172D01* +D15* +G75* +G01* +X1126804Y7276820D02* +G03* +X1112662Y7242678I34142J-34142D01* +G75* +G01* +X1112662Y7242678D02* +G03* +X1098520Y7276820I-48284J0D01* +G75* +G01* +X1336231Y7355962D02* +G03* +X1253804Y7321820I-1J-116568D01* +G75* +G01* +X1252981Y7350882D02* +G03* +X1296399Y7346412I24799J27780D01* +D16* +G75* +G01* +X6560165Y6014850D02* +G03* +X6521047Y6109289I-133558J0D01* +G75* +G01* +X6480165Y6014850D02* +G03* +X6384478Y6245857I-326694J0D01* +G75* +G01* +X6400165Y6014850D02* +G03* +X6247910Y6382425I-519831J-1D01* +D15* +G75* +G01* +X8500072Y2411829D02* +G03* +X8521794Y2464272I-52443J52443D01* +G75* +G01* +X8521794Y2464272D02* +G03* +X8543516Y2411829I74165J0D01* +D14* +G75* +G01* +X8416698Y2624423D02* +G03* +X8445294Y2693460I-69037J69037D01* +G75* +G01* +X8402556Y2638565D02* +G03* +X8445294Y2741744I-103179J103179D01* +G75* +G01* +X8445294Y2657342D02* +G03* +X8453072Y2638565I26555J0D01* +D10* +G75* +G01* +X8354643Y2331198D02* +G03* +X8331294Y2274830I56368J-56368D01* +G75* +G01* +X8331294Y2274830D02* +G03* +X8307945Y2331198I-79717J0D01* +D14* +G75* +G01* +X-109444Y4013074D02* +G03* +X-135051Y4023680I-25607J-25607D01* +G75* +G01* +X-135051Y4023680D02* +G03* +X-109444Y4034287I0J36213D01* +D10* +G75* +G01* +X-80140Y3940938D02* +G03* +X-60504Y3932804I19636J19635D01* +G75* +G01* +X-57782Y3932804D02* +G03* +X-80140Y3923543I0J-31620D01* +G75* +G01* +X603831Y704769D02* +G03* +X624828Y696072I20997J20997D01* +G75* +G01* +X624828Y696072D02* +G03* +X603831Y687374I0J-29695D01* +G75* +G01* +X581436Y796209D02* +G03* +X590133Y817206I-20997J20998D01* +G75* +G01* +X590133Y817206D02* +G03* +X598831Y796209I29695J1D01* +D13* +G75* +G01* +X998280Y2026846D02* +G03* +X1061390Y2052988I0J89252D01* +G75* +G01* +X1089675Y2052988D02* +G03* +X1152785Y2026846I63110J63110D01* +D15* +G75* +G01* +X1075533Y1832846D02* +G03* +X1011866Y1806475I-1J-90037D01* +G75* +G01* +X1029478Y1824086D02* +G03* +X1045533Y1862846I-38760J38760D01* +D14* +G75* +G01* +X211740Y1409118D02* +G03* +X237347Y1398511I25607J25606D01* +G75* +G01* +X237347Y1398511D02* +G03* +X211740Y1387905I0J-36213D01* +G75* +G01* +X206740Y1296465D02* +G03* +X196134Y1270858I25607J-25607D01* +G75* +G01* +X196134Y1270858D02* +G03* +X185527Y1296465I-36213J0D01* +D10* +G75* +G01* +X8203041Y2220859D02* +G03* +X8232574Y2208627I29533J29534D01* +G75* +G01* +X8332712Y2200024D02* +G03* +X8353709Y2191327I20997J20997D01* +G75* +G01* +X8353709Y2191327D02* +G03* +X8332712Y2182629I0J-29695D01* +G75* +G01* +X8315317Y2205024D02* +G03* +X8331294Y2243596I-38572J38572D01* +D15* +G75* +G01* +X8628426Y2272325D02* +G03* +X8601008Y2202679I66334J-66334D01* +G75* +G01* +X8585712Y2210804D02* +G03* +X8611083Y2246404I-30287J48426D01* +D10* +G75* +G01* +X8490877Y2183629D02* +G03* +X8472292Y2191327I-18585J-18585D01* +G75* +G01* +X8467466Y2191327D02* +G03* +X8490877Y2201024I0J33107D01* +D14* +G75* +G01* +X8366899Y3011000D02* +G03* +X8356293Y2985394I25607J-25606D01* +G75* +G01* +X8356293Y2985394D02* +G03* +X8345686Y3011000I-36213J0D01* +D10* +G75* +G01* +X8342595Y3012909D02* +G03* +X8321598Y3021607I-20997J-20997D01* +G75* +G01* +X8321598Y3021607D02* +G03* +X8342595Y3030304I0J29694D01* +D14* +G75* +G01* +X8359839Y3108263D02* +G03* +X8401705Y3118738I12199J40141D01* +G75* +G01* +X8365654Y3127399D02* +G03* +X8425285Y3142319I17377J57174D01* +G75* +G01* +X8384673Y3126767D02* +G03* +X8357877Y3116698I-1244J-37380D01* +G75* +G01* +X8372215Y3123328D02* +G03* +X8396011Y3113047I23796J22398D01* +G75* +G01* +X8396011Y3113047D02* +G03* +X8372215Y3102766I0J-32680D01* +D13* +G75* +G01* +X8206723Y4389554D02* +G03* +X8239813Y4375847I33090J33090D01* +D14* +G75* +G01* +X8327718Y4362312D02* +G03* +X8363594Y4347451I35876J35876D01* +G75* +G01* +X8341860Y4376454D02* +G03* +X8411878Y4347451I70018J70018D01* +G75* +G01* +X8361649Y4347452D02* +G03* +X8337232Y4352090I-15615J-15615D01* +G75* +G01* +X8379004Y4355008D02* +G03* +X8339741Y4353479I-18419J-31903D01* +D10* +G75* +G01* +X4375580Y6865659D02* +G03* +X4396577Y6856961I20997J20997D01* +G75* +G01* +X4396577Y6856961D02* +G03* +X4375580Y6848264I0J-29694D01* +G75* +G01* +X4266745Y6848264D02* +G03* +X4245748Y6856961I-20998J-20997D01* +G75* +G01* +X4245748Y6856961D02* +G03* +X4266745Y6865659I-1J29695D01* +D15* +G75* +G01* +X2482162Y6632243D02* +G03* +X2490235Y6612753I27563J0D01* +G75* +G01* +X2444196Y6512242D02* +G03* +X2466093Y6521313I0J30967D01* +D10* +G75* +G01* +X2391859Y7313379D02* +G03* +X2410440Y7305683I18581J18581D01* +G75* +G01* +X2415272Y7305683D02* +G03* +X2391859Y7295984I0J-33112D01* +G75* +G01* +X2364464Y7295984D02* +G03* +X2343467Y7304682I-20997J-20997D01* +G75* +G01* +X2343467Y7304682D02* +G03* +X2364464Y7313379I0J29694D01* +G75* +G01* +X2647860Y7222940D02* +G03* +X2668858Y7214243I20998J20997D01* +G75* +G01* +X2668858Y7214243D02* +G03* +X2647860Y7205545I0J-29695D01* +G75* +G01* +X2620465Y7296985D02* +G03* +X2599468Y7305683I-20997J-20997D01* +G75* +G01* +X2599468Y7305683D02* +G03* +X2620465Y7314380I0J29694D01* +G75* +G01* +X4267746Y6594264D02* +G03* +X4246748Y6602961I-20998J-20997D01* +G75* +G01* +X4246748Y6602961D02* +G03* +X4267746Y6611659I0J29695D01* +G75* +G01* +X4376581Y6611659D02* +G03* +X4397578Y6602961I20997J20997D01* +G75* +G01* +X4397578Y6602961D02* +G03* +X4376581Y6594264I0J-29694D01* +G75* +G01* +X4266745Y6722264D02* +G03* +X4245748Y6730962I-20998J-20997D01* +G75* +G01* +X4245748Y6730962D02* +G03* +X4266745Y6739659I-1J29695D01* +G75* +G01* +X4375580Y6739659D02* +G03* +X4396577Y6730962I20997J20998D01* +G75* +G01* +X4396577Y6730962D02* +G03* +X4375580Y6722264I0J-29695D01* +G75* +G01* +X4375580Y6993659D02* +G03* +X4396577Y6984962I20997J20998D01* +G75* +G01* +X4396577Y6984962D02* +G03* +X4375580Y6976264I0J-29695D01* +G75* +G01* +X4266745Y6976264D02* +G03* +X4245748Y6984962I-20998J-20997D01* +G75* +G01* +X4245748Y6984962D02* +G03* +X4266745Y6993659I-1J29695D01* +G75* +G01* +X3181462Y6305243D02* +G03* +X3193695Y6275710I41765J0D01* +G75* +G01* +X3181462Y6305243D02* +G03* +X3193695Y6275710I41765J0D01* +G75* +G01* +X3155464Y6405380D02* +G03* +X3165632Y6429928I-24547J24548D01* +G75* +G01* +X3165632Y6422827D02* +G03* +X3172859Y6405380I24674J0D01* +G75* +G01* +X2725581Y6873660D02* +G03* +X2746578Y6864962I20997J20997D01* +G75* +G01* +X2746578Y6864962D02* +G03* +X2725581Y6856265I0J-29694D01* +D14* +G75* +G01* +X9520839Y5929570D02* +G03* +X9542162Y5920737I21323J21323D01* +G75* +G01* +X9550729Y5920737D02* +G03* +X9520839Y5908357I0J-42270D01* +G75* +G01* +X9499626Y5939570D02* +G03* +X9508203Y5960277I-20707J20707D01* +G75* +G01* +X9508203Y5970076D02* +G03* +X9520839Y5939570I43142J0D01* +G75* +G01* +X9571395Y5810882D02* +G03* +X9521840Y5790356I0J-70081D01* +G75* +G01* +X9523623Y5809417D02* +G03* +X9546012Y5804312I13947J9517D01* +G75* +G01* +X9409187Y5785356D02* +G03* +X9383580Y5795963I-25607J-25607D01* +G75* +G01* +X9383580Y5795963D02* +G03* +X9409187Y5806569I0J36213D01* +D10* +G75* +G01* +X2713817Y7214243D02* +G03* +X2744466Y7226938I-1J43344D01* +G75* +G01* +X2771861Y7226938D02* +G03* +X2802510Y7214243I30649J30649D01* +G75* +G01* +X420725Y5532331D02* +G03* +X429567Y5553678I-21347J21347D01* +G75* +G01* +X429567Y5552979D02* +G03* +X438120Y5532331I29201J0D01* +G75* +G01* +X443120Y5423496D02* +G03* +X432422Y5397670I25826J-25826D01* +G75* +G01* +X565117Y5417497D02* +G03* +X556420Y5396500I20998J-20997D01* +G75* +G01* +X556420Y5396500D02* +G03* +X547723Y5417497I-29695J0D01* +G75* +G01* +X547725Y5526332D02* +G03* +X556423Y5547329I-20997J20997D01* +G75* +G01* +X556423Y5547329D02* +G03* +X565120Y5526332I29694J0D01* +G75* +G01* +X547725Y5526332D02* +G03* +X556423Y5547329I-20997J20997D01* +G75* +G01* +X556423Y5547329D02* +G03* +X565120Y5526332I29694J0D01* +D13* +G75* +G01* +X2022786Y6950584D02* +G03* +X2044183Y7002242I-51658J51657D01* +D15* +G75* +G01* +X2038717Y6503615D02* +G03* +X2012291Y6514562I-26426J-26426D01* +G75* +G01* +X2012291Y6514562D02* +G03* +X2038717Y6525508I0J37372D01* +G75* +G01* +X1933609Y6525508D02* +G03* +X1960035Y6514562I26426J26426D01* +G75* +G01* +X1960035Y6514562D02* +G03* +X1933609Y6503615I0J-37373D01* +G75* +G01* +X2187609Y6525508D02* +G03* +X2219634Y6512242I32025J32024D01* +G75* +G01* +X2208437Y6512242D02* +G03* +X2187609Y6503616I-1J-29454D01* +G75* +G01* +X2187609Y6991295D02* +G03* +X2176663Y6964869I26426J-26426D01* +G75* +G01* +X2176663Y6964869D02* +G03* +X2165717Y6991295I-37372J0D01* +G75* +G01* +X2165717Y7155428D02* +G03* +X2176663Y7181854I-26426J26426D01* +G75* +G01* +X2176663Y7181854D02* +G03* +X2187609Y7155428I37372J0D01* +G75* +G01* +X1784717Y7155428D02* +G03* +X1795663Y7181854I-26426J26426D01* +G75* +G01* +X1795663Y7181854D02* +G03* +X1806609Y7155428I37372J0D01* +G75* +G01* +X1914923Y7157888D02* +G03* +X1932353Y7180603I-18705J32398D01* +G75* +G01* +X1932340Y7180551D02* +G03* +X1936069Y7152222I36061J-9662D01* +G75* +G01* +X1880606Y6938079D02* +G03* +X1907183Y7002242I-64163J64162D01* +G75* +G01* +X1911717Y7155428D02* +G03* +X1922663Y7181854I-26426J26426D01* +G75* +G01* +X1922663Y7181854D02* +G03* +X1933609Y7155428I37372J0D01* +G75* +G01* +X592747Y1445287D02* +G03* +X635312Y1462918I-1J60196D01* +G75* +G01* +X669777Y1497383D02* +G03* +X631957Y1406077I91307J-91305D01* +G75* +G01* +X620473Y1125781D02* +G03* +X590133Y1052536I73245J-73245D01* +G75* +G01* +X590133Y1065155D02* +G03* +X565021Y1125781I-85737J0D01* +D14* +G75* +G01* +X386398Y1378958D02* +G03* +X339191Y1398511I-47207J-47207D01* +G75* +G01* +X372256Y1364816D02* +G03* +X290907Y1398511I-81349J-81349D01* +G75* +G01* +X302662Y1398511D02* +G03* +X372256Y1427338I0J98420D01* +G75* +G01* +X9942295Y6012915D02* +G03* +X9899617Y6030592I-42678J-42678D01* +G75* +G01* +X9899617Y6030592D02* +G03* +X9942295Y6048270I0J60356D01* +G75* +G01* +X9942295Y6122770D02* +G03* +X9899617Y6140447I-42678J-42678D01* +G75* +G01* +X9899617Y6140447D02* +G03* +X9942295Y6158125I0J60356D01* +G75* +G01* +X9942295Y6232625D02* +G03* +X9903131Y6248847I-39164J-39164D01* +G75* +G01* +X9896104Y6248847D02* +G03* +X9942295Y6267980I0J65324D01* +G75* +G01* +X9942295Y5353785D02* +G03* +X9899617Y5371462I-42678J-42678D01* +G75* +G01* +X9899617Y5371462D02* +G03* +X9942295Y5389140I0J60356D01* +G75* +G01* +X9942295Y5463640D02* +G03* +X9899617Y5481317I-42678J-42678D01* +G75* +G01* +X9899617Y5481317D02* +G03* +X9942295Y5498995I0J60356D01* +G75* +G01* +X9942295Y5573495D02* +G03* +X9899617Y5591172I-42678J-42678D01* +G75* +G01* +X9899617Y5591172D02* +G03* +X9942295Y5608850I0J60356D01* +G75* +G01* +X9942295Y5793205D02* +G03* +X9899617Y5810882I-42678J-42678D01* +G75* +G01* +X9899617Y5810882D02* +G03* +X9942295Y5828560I0J60356D01* +G75* +G01* +X9942295Y5903060D02* +G03* +X9899617Y5920737I-42678J-42678D01* +G75* +G01* +X9899617Y5920737D02* +G03* +X9942295Y5938415I0J60356D01* +D10* +G75* +G01* +X125263Y4985814D02* +G03* +X116566Y4964817I20997J-20998D01* +G75* +G01* +X116566Y4964817D02* +G03* +X107868Y4985814I-29695J-1D01* +G75* +G01* +X124636Y5086834D02* +G03* +X94595Y5114915I-30041J-2028D01* +G75* +G01* +X99294Y5085123D02* +G03* +X67423Y5114915I-31871J-2152D01* +D16* +G75* +G01* +X6157099Y6632237D02* +G03* +X6133422Y6575075I57162J-57162D01* +G75* +G01* +X6133422Y6734754D02* +G03* +X6157099Y6677592I80839J0D01* +D15* +G75* +G01* +X9336019Y952105D02* +G03* +X9350162Y986246I-34141J34142D01* +G75* +G01* +X9350162Y986246D02* +G03* +X9364304Y952105I48284J1D01* +D14* +G75* +G01* +X9332484Y1405639D02* +G03* +X9350162Y1448317I-42678J42678D01* +G75* +G01* +X9350162Y1448317D02* +G03* +X9367839Y1405639I60355J0D01* +D15* +G75* +G01* +X9336019Y1402104D02* +G03* +X9350162Y1436246I-34141J34142D01* +G75* +G01* +X9350162Y1436246D02* +G03* +X9364304Y1402104I48284J0D01* +G75* +G01* +X9590019Y952105D02* +G03* +X9604162Y986246I-34141J34142D01* +G75* +G01* +X9604162Y986246D02* +G03* +X9618304Y952105I48284J1D01* +G75* +G01* +X9560826Y1201625D02* +G03* +X9584162Y1257962I-56336J56337D01* +D14* +G75* +G01* +X9586484Y1405639D02* +G03* +X9604162Y1448317I-42678J42678D01* +G75* +G01* +X9604162Y1448317D02* +G03* +X9621839Y1405639I60355J0D01* +G75* +G01* +X9586484Y1405639D02* +G03* +X9604162Y1448317I-42678J42678D01* +G75* +G01* +X9604162Y1448317D02* +G03* +X9621839Y1405639I60355J0D01* +D15* +G75* +G01* +X9590019Y1402104D02* +G03* +X9604162Y1436246I-34141J34142D01* +G75* +G01* +X9604162Y1436246D02* +G03* +X9618304Y1402104I48284J0D01* +D13* +G75* +G01* +X9900835Y1280288D02* +G03* +X9858150Y1297962I-42668J-42668D01* +G75* +G01* +X9986157Y1194967D02* +G03* +X9858164Y1247962I-127942J-127942D01* +G75* +G01* +X9866822Y1262962D02* +G03* +X9901508Y1236346I49472J28562D01* +D10* +G75* +G01* +X7588418Y2209482D02* +G03* +X7614793Y2273157I-63675J63675D01* +G75* +G01* +X7614793Y2273157D02* +G03* +X7641168Y2209482I90050J0D01* +D14* +G75* +G01* +X6936508Y2328076D02* +G03* +X6964792Y2396360I-68284J68284D01* +G75* +G01* +X6964792Y2396360D02* +G03* +X6993076Y2328076I96568J0D01* +G75* +G01* +X8021431Y2422909D02* +G03* +X8039430Y2458905I-26996J35996D01* +G75* +G01* +X8039430Y2458905D02* +G03* +X8057429Y2422909I44995J0D01* +G75* +G01* +X7935218Y2330121D02* +G03* +X7956431Y2381335I-51214J51213D01* +G75* +G01* +X7956431Y2381335D02* +G03* +X7977644Y2330121I72426J-1D01* +D10* +G75* +G01* +X3746901Y7110123D02* +G03* +X3724062Y7054984I55139J-55139D01* +G75* +G01* +X3724062Y7054984D02* +G03* +X3701222Y7110123I-77979J0D01* +G75* +G01* +X3697034Y7301276D02* +G03* +X3664325Y7318962I-32708J-21403D01* +G75* +G01* +X3664325Y7318962D02* +G03* +X3697034Y7336648I1J39089D01* +D15* +G75* +G01* +X1534180Y3752848D02* +G03* +X1767589Y3534191I120271J-105521D01* +G75* +G01* +X9350164Y986246D02* +G03* +X9364306Y952105I48283J0D01* +G75* +G01* +X9336020Y952105D02* +G03* +X9350162Y986246I-34141J34141D01* +G75* +G01* +X9350164Y1436246D02* +G03* +X9364306Y1402104I48283J0D01* +G75* +G01* +X9336020Y1402104D02* +G03* +X9350162Y1436246I-34141J34142D01* +D14* +G75* +G01* +X9350164Y1448318D02* +G03* +X9367841Y1405642I60353J0D01* +G75* +G01* +X9332485Y1405642D02* +G03* +X9350162Y1448318I-42676J42676D01* +D15* +G75* +G01* +X9604164Y986246D02* +G03* +X9618306Y952105I48283J0D01* +G75* +G01* +X9590020Y952105D02* +G03* +X9604162Y986246I-34141J34141D01* +G75* +G01* +X9604164Y1436246D02* +G03* +X9618306Y1402104I48283J0D01* +G75* +G01* +X9590020Y1402104D02* +G03* +X9604162Y1436246I-34141J34142D01* +D14* +G75* +G01* +X9604164Y1448318D02* +G03* +X9621841Y1405642I60353J0D01* +G75* +G01* +X9586485Y1405642D02* +G03* +X9604162Y1448318I-42676J42676D01* +G75* +G01* +X9604164Y1448318D02* +G03* +X9621841Y1405642I60353J0D01* +G75* +G01* +X9586485Y1405642D02* +G03* +X9604162Y1448318I-42676J42676D01* +D13* +G75* +G01* +X9986193Y1194928D02* +G03* +X9858162Y1247960I-128031J-128031D01* +G75* +G01* +X9900839Y1280283D02* +G03* +X9858162Y1297960I-42677J-42678D01* +D10* +G75* +G01* +X429567Y5552978D02* +G03* +X438120Y5532331I29200J0D01* +G75* +G01* +X420723Y5532331D02* +G03* +X429565Y5553677I-21346J21346D01* +G75* +G01* +X443120Y5423496D02* +G03* +X432422Y5397670I25825J-25826D01* +D14* +G75* +G01* +X-126127Y4404702D02* +G03* +X-232692Y4377797I-30743J-102727D01* +G75* +G01* +X-120394Y4423863D02* +G03* +X-208999Y4401493I-25562J-85413D01* +G75* +G01* +X-114659Y4443024D02* +G03* +X-185303Y4425188I-20380J-68100D01* +D15* +G75* +G01* +X691011Y1518624D02* +G03* +X739130Y1634792I-116168J116168D01* +G75* +G01* +X742227Y1569836D02* +G03* +X769132Y1634792I-64956J64956D01* +G75* +G01* +X868799Y1637789D02* +G03* +X810345Y1613577I0J-82666D01* +G75* +G01* +X810345Y1656005D02* +G03* +X854316Y1637792I43971J43971D01* +D14* +G75* +G01* +X331422Y4838847D02* +G03* +X342028Y4813241I36213J0D01* +G75* +G01* +X320815Y4813241D02* +G03* +X331422Y4838847I-25606J25606D01* +G75* +G01* +X458422Y4839848D02* +G03* +X469028Y4814242I36213J0D01* +G75* +G01* +X447815Y4814242D02* +G03* +X458422Y4839848I-25606J25606D01* +D10* +G75* +G01* +X116563Y4964816D02* +G03* +X107866Y4985812I-29692J0D01* +G75* +G01* +X125265Y4985812D02* +G03* +X116568Y4964816I20996J-20996D01* +G75* +G01* +X99295Y5085121D02* +G03* +X67424Y5114912I-31871J-2152D01* +G75* +G01* +X124636Y5086834D02* +G03* +X94595Y5114915I-30041J-2028D01* +G75* +G01* +X-153993Y5411917D02* +G03* +X-132997Y5420614I1J29693D01* +G75* +G01* +X-132997Y5403215D02* +G03* +X-153993Y5411912I-20995J-20996D01* +G75* +G01* +X-153993Y5411917D02* +G03* +X-132997Y5420614I1J29693D01* +G75* +G01* +X-132997Y5403215D02* +G03* +X-153993Y5411912I-20995J-20996D01* +G75* +G01* +X-32860Y5377218D02* +G03* +X-41557Y5398214I-29693J0D01* +G75* +G01* +X-24161Y5398214D02* +G03* +X-32857Y5377218I20996J-20996D01* +G75* +G01* +X-111126Y5248250D02* +G03* +X-32860Y5411904I-131967J163654D01* +G75* +G01* +X-95181Y5228479D02* +G03* +X-32860Y5358793I-105083J130314D01* +G75* +G01* +X-79238Y5208706D02* +G03* +X-32860Y5305682I-78199J96975D01* +G75* +G01* +X-63293Y5188935D02* +G03* +X-32860Y5252570I-51314J63635D01* +G75* +G01* +X-1321Y5164912D02* +G03* +X-47986Y5145583I0J-65994D01* +G75* +G01* +X-47988Y5212477D02* +G03* +X66838Y5164915I114825J114825D01* +G75* +G01* +X-65948Y5194516D02* +G03* +X5517Y5164915I71465J71465D01* +G75* +G01* +X707700Y5383220D02* +G03* +X699003Y5404216I-29693J0D01* +G75* +G01* +X716399Y5404216D02* +G03* +X707702Y5383220I20996J-20996D01* +G75* +G01* +X903425Y5239913D02* +G03* +X956951Y5267434I0J65814D01* +G75* +G01* +X956951Y5212392D02* +G03* +X903425Y5239913I-53526J-38293D01* +G75* +G01* +X925007Y4894915D02* +G03* +X946003Y4903612I0J29693D01* +G75* +G01* +X946003Y4886216D02* +G03* +X925007Y4894913I-20996J-20996D01* +D14* +G75* +G01* +X918489Y4894915D02* +G03* +X944096Y4905522I0J36213D01* +G75* +G01* +X944096Y4884306D02* +G03* +X918489Y4894913I-25607J-25606D01* +D10* +G75* +G01* +X-57714Y4684532D02* +G03* +X-22290Y4699205I0J50097D01* +D14* +G75* +G01* +X926488Y5032913D02* +G03* +X952094Y5043520I0J36213D01* +G75* +G01* +X952094Y5022307D02* +G03* +X926488Y5032913I-25606J-25606D01* +D15* +G75* +G01* +X4867859Y535325D02* +G03* +X4745640Y484700I0J-172844D01* +G75* +G01* +X4795434Y535325D02* +G03* +X4724427Y505913I-1J-100419D01* +G75* +G01* +X4538426Y433487D02* +G03* +X4517212Y484701I-72428J-1D01* +G75* +G01* +X4559641Y484700D02* +G03* +X4538429Y433489I51211J-51211D01* +D13* +G75* +G01* +X8425156Y1145404D02* +G03* +X8257134Y866711I147118J-278693D01* +G75* +G01* +X8401814Y1189622D02* +G03* +X8257134Y949645I126680J-239977D01* +G75* +G01* +X8378472Y1233839D02* +G03* +X8257134Y1032579I106243J-201260D01* +G75* +G01* +X8355131Y1278056D02* +G03* +X8257134Y1115512I85805J-162544D01* +D10* +G75* +G01* +X7151832Y2308512D02* +G03* +X7139600Y2338045I-41765J0D01* +G75* +G01* +X7182832Y2317210D02* +G03* +X7208657Y2306513I25825J25826D01* +G75* +G01* +X2543272Y7305683D02* +G03* +X2519860Y7295985I0J-33109D01* +G75* +G01* +X2519861Y7313380D02* +G03* +X2538443Y7305683I18582J18581D01* +G75* +G01* +X2473881Y7305683D02* +G03* +X2492463Y7313380I0J26278D01* +G75* +G01* +X2492464Y7295985D02* +G03* +X2469053Y7305683I-23411J-23411D01* +G75* +G01* +X2506160Y7183547D02* +G03* +X2497463Y7204543I-29693J0D01* +G75* +G01* +X2514861Y7204543D02* +G03* +X2506165Y7183547I20996J-20996D01* +D14* +G75* +G01* +X9899617Y6030595D02* +G03* +X9942293Y6048272I0J60353D01* +G75* +G01* +X9942293Y6012913D02* +G03* +X9899617Y6030590I-42676J-42676D01* +G75* +G01* +X9899617Y6140450D02* +G03* +X9942293Y6158127I0J60353D01* +G75* +G01* +X9942293Y6122768D02* +G03* +X9899617Y6140445I-42676J-42676D01* +G75* +G01* +X9896102Y6248847D02* +G03* +X9942294Y6267981I0J65326D01* +G75* +G01* +X9942294Y6232624D02* +G03* +X9903132Y6248844I-39161J-39162D01* +G75* +G01* +X9899617Y5371465D02* +G03* +X9942293Y5389142I0J60353D01* +G75* +G01* +X9942293Y5353783D02* +G03* +X9899617Y5371460I-42676J-42676D01* +G75* +G01* +X9899617Y5481320D02* +G03* +X9942293Y5498997I0J60353D01* +G75* +G01* +X9942293Y5463638D02* +G03* +X9899617Y5481315I-42676J-42676D01* +G75* +G01* +X9899617Y5591175D02* +G03* +X9942293Y5608852I0J60353D01* +G75* +G01* +X9942293Y5573493D02* +G03* +X9899617Y5591170I-42676J-42676D01* +G75* +G01* +X9899617Y5810885D02* +G03* +X9942293Y5828562I0J60353D01* +G75* +G01* +X9942293Y5793203D02* +G03* +X9899617Y5810880I-42676J-42676D01* +G75* +G01* +X9899617Y5920740D02* +G03* +X9942293Y5938417I0J60353D01* +G75* +G01* +X9942293Y5903058D02* +G03* +X9899617Y5920735I-42676J-42676D01* +D10* +G75* +G01* +X2447468Y6822684D02* +G03* +X2468464Y6831381I0J29692D01* +G75* +G01* +X2468464Y6813982D02* +G03* +X2447468Y6822679I-20996J-20996D01* +G75* +G01* +X4827928Y4189961D02* +G03* +X4889809Y4215593I0J87513D01* +G75* +G01* +X4889807Y4162843D02* +G03* +X4824339Y4189961I-65468J-65467D01* +D14* +G75* +G01* +X4819614Y3935344D02* +G03* +X4887899Y3963628I0J96568D01* +G75* +G01* +X4887899Y3907060D02* +G03* +X4819614Y3935344I-68285J-68284D01* +G75* +G01* +X4819614Y3173725D02* +G03* +X4887899Y3202009I0J96568D01* +G75* +G01* +X4887899Y3145441D02* +G03* +X4819614Y3173725I-68285J-68284D01* +G75* +G01* +X5744532Y3016842D02* +G03* +X5726189Y2933625I55967J-55966D01* +G75* +G01* +X5722393Y2994704D02* +G03* +X5707413Y2926740I45708J-45708D01* +G75* +G01* +X5700253Y2972564D02* +G03* +X5688634Y2919852I35451J-35450D01* +G75* +G01* +X4819614Y2919852D02* +G03* +X4887899Y2948136I0J96568D01* +G75* +G01* +X4887899Y2891568D02* +G03* +X4819614Y2919852I-68285J-68284D01* +G75* +G01* +X5744531Y2761842D02* +G03* +X5726242Y2679610I55493J-55492D01* +G75* +G01* +X5722299Y2739609D02* +G03* +X5707439Y2672795I45088J-45088D01* +G75* +G01* +X5700065Y2717376D02* +G03* +X5688634Y2665980I34684J-34684D01* +G75* +G01* +X4819614Y2665979D02* +G03* +X4887899Y2694263I0J96568D01* +G75* +G01* +X4887899Y2637695D02* +G03* +X4819614Y2665979I-68285J-68284D01* +G75* +G01* +X4819614Y2412106D02* +G03* +X4887899Y2440390I0J96568D01* +G75* +G01* +X4887899Y2383822D02* +G03* +X4819614Y2412106I-68285J-68284D01* +G75* +G01* +X5785201Y2158233D02* +G03* +X5716916Y2129949I-1J-96568D01* +G75* +G01* +X5716916Y2186517D02* +G03* +X5785201Y2158233I68284J68284D01* +G75* +G01* +X4819614Y2158233D02* +G03* +X4887899Y2186517I0J96568D01* +G75* +G01* +X4887899Y2129949D02* +G03* +X4819614Y2158233I-68285J-68284D01* +D13* +G75* +G01* +X5026180Y1844007D02* +G03* +X5008503Y1886683I-60353J0D01* +G75* +G01* +X5043862Y1886683D02* +G03* +X5026185Y1844007I42676J-42676D01* +G75* +G01* +X5026182Y1844007D02* +G03* +X5008506Y1886683I-60352J0D01* +G75* +G01* +X5043860Y1886682D02* +G03* +X5026182Y1844004I42678J-42677D01* +D17* +G75* +G01* +X166423Y4506730D02* +G03* +X193835Y4440552I93589J-1D01* +D10* +G75* +G01* +X-6215Y3932806D02* +G03* +X57458Y3959181I-1J90049D01* +G75* +G01* +X57458Y3906429D02* +G03* +X-6215Y3932804I-63674J-63673D01* +D13* +G75* +G01* +X364188Y2155693D02* +G03* +X321512Y2138016I0J-60353D01* +G75* +G01* +X321512Y2173372D02* +G03* +X364188Y2155695I42676J42676D01* +G75* +G01* +X23477Y2155695D02* +G03* +X66153Y2173372I0J60353D01* +G75* +G01* +X66153Y2138016D02* +G03* +X23477Y2155693I-42676J-42676D01* +G75* +G01* +X321512Y1919500D02* +G03* +X376331Y1896793I54820J54819D01* +G75* +G01* +X655411Y6320152D02* +G03* +X749300Y6359042I0J132779D01* +G75* +G01* +X749302Y6281259D02* +G03* +X655411Y6320150I-93891J-93890D01* +G75* +G01* +X691106Y6320150D02* +G03* +X597216Y6281259I0J-132781D01* +G75* +G01* +X597215Y6359042D02* +G03* +X691104Y6320152I93889J93889D01* +D15* +G75* +G01* +X-171836Y5810954D02* +G03* +X-125955Y5731773I91265J0D01* +G75* +G01* +X-218363Y5732929D02* +G03* +X-171839Y5810954I-42165J78024D01* +G75* +G01* +X-204100Y5706535D02* +G03* +X-171839Y5760641I-29240J54106D01* +D10* +G75* +G01* +X7402554Y4783545D02* +G03* +X7417532Y4819703I-36158J36158D01* +G75* +G01* +X7417532Y4719991D02* +G03* +X7402554Y4756149I-51136J0D01* +G75* +G01* +X3432467Y6395684D02* +G03* +X3453463Y6404381I0J29693D01* +G75* +G01* +X3453463Y6386983D02* +G03* +X3432467Y6395679I-20996J-20996D01* +G75* +G01* +X3432467Y6395684D02* +G03* +X3453463Y6404381I0J29693D01* +G75* +G01* +X3453463Y6386983D02* +G03* +X3432467Y6395679I-20996J-20996D01* +G75* +G01* +X3449861Y6395682D02* +G03* +X3437628Y6425214I-41765J0D01* +D13* +G75* +G01* +X1089675Y2052991D02* +G03* +X1152787Y2026849I63112J63111D01* +G75* +G01* +X998278Y2026849D02* +G03* +X1061390Y2052991I0J89253D01* +D10* +G75* +G01* +X8321599Y3021609D02* +G03* +X8342595Y3030306I0J29693D01* +G75* +G01* +X8342595Y3012908D02* +G03* +X8321599Y3021604I-20996J-20996D01* +D14* +G75* +G01* +X8356293Y2985394D02* +G03* +X8345686Y3011000I-36213J0D01* +G75* +G01* +X8366899Y3011000D02* +G03* +X8356293Y2985394I25606J-25606D01* +D10* +G75* +G01* +X556420Y5396499D02* +G03* +X547723Y5417495I-29693J0D01* +G75* +G01* +X565119Y5417495D02* +G03* +X556423Y5396499I20996J-20996D01* +G75* +G01* +X624827Y696069D02* +G03* +X603831Y687373I0J-29692D01* +G75* +G01* +X603831Y704768D02* +G03* +X624827Y696072I20996J20996D01* +D15* +G75* +G01* +X1958748Y7244964D02* +G03* +X1922666Y7207766I1134J-37198D01* +G75* +G01* +X1957834Y7274950D02* +G03* +X1922666Y7238693I1105J-36257D01* +G75* +G01* +X1965514Y7247889D02* +G03* +X1922663Y7144438I103451J-103451D01* +G75* +G01* +X1944303Y7269103D02* +G03* +X1922666Y7216866I52236J-52237D01* +G75* +G01* +X1958442Y7244961D02* +G03* +X1932835Y7234355I0J-36212D01* +G75* +G01* +X8521794Y2464272D02* +G03* +X8543516Y2411831I74163J0D01* +G75* +G01* +X8500070Y2411831D02* +G03* +X8521791Y2464272I-52441J52441D01* +G75* +G01* +X8628423Y2272322D02* +G03* +X8601006Y2202679I66332J-66332D01* +D10* +G75* +G01* +X4396577Y6856959D02* +G03* +X4375582Y6848262I0J-29693D01* +G75* +G01* +X4375582Y6865660D02* +G03* +X4396577Y6856964I20995J20996D01* +G75* +G01* +X3181464Y6305243D02* +G03* +X3193697Y6275710I41766J-1D01* +G75* +G01* +X3181464Y6305243D02* +G03* +X3193697Y6275710I41766J-1D01* +G75* +G01* +X3165632Y6422829D02* +G03* +X3172860Y6405381I24677J1D01* +G75* +G01* +X3155466Y6405379D02* +G03* +X3165632Y6429924I-24545J24545D01* +G75* +G01* +X4245747Y6856964D02* +G03* +X4266743Y6865660I0J29692D01* +G75* +G01* +X4266743Y6848262D02* +G03* +X4245747Y6856959I-20996J-20996D01* +G75* +G01* +X8203042Y2220859D02* +G03* +X8232574Y2208627I29532J29533D01* +G75* +G01* +X2668857Y7214240D02* +G03* +X2647861Y7205543I0J-29693D01* +G75* +G01* +X2647861Y7222939D02* +G03* +X2668857Y7214243I20996J20996D01* +G75* +G01* +X2771863Y7226939D02* +G03* +X2802514Y7214243I30651J30651D01* +G75* +G01* +X2713812Y7214243D02* +G03* +X2744464Y7226939I0J43347D01* +D14* +G75* +G01* +X9571396Y5810882D02* +G03* +X9521841Y5790356I0J-70081D01* +D10* +G75* +G01* +X2343467Y7304684D02* +G03* +X2364463Y7313381I1J29693D01* +G75* +G01* +X2364463Y7295983D02* +G03* +X2343467Y7304679I-20995J-20996D01* +G75* +G01* +X2415271Y7305683D02* +G03* +X2391859Y7295985I0J-33109D01* +G75* +G01* +X2391860Y7313380D02* +G03* +X2410442Y7305683I18582J18581D01* +G75* +G01* +X2599469Y7305683D02* +G03* +X2620465Y7314379I0J29692D01* +G75* +G01* +X2620465Y7296983D02* +G03* +X2599469Y7305680I-20996J-20996D01* +G75* +G01* +X590136Y817204D02* +G03* +X598833Y796208I29693J0D01* +G75* +G01* +X581434Y796208D02* +G03* +X590131Y817204I-20996J20996D01* +G75* +G01* +X8331291Y2274829D02* +G03* +X8307943Y2331196I-79715J0D01* +G75* +G01* +X8354642Y2331196D02* +G03* +X8331294Y2274829I56367J-56367D01* +G75* +G01* +X8315317Y2205025D02* +G03* +X8331294Y2243597I-38572J38572D01* +G75* +G01* +X8353707Y2191324D02* +G03* +X8332711Y2182627I0J-29693D01* +G75* +G01* +X8332711Y2200026D02* +G03* +X8353707Y2191329I20996J20996D01* +G75* +G01* +X8467463Y2191329D02* +G03* +X8490873Y2201026I0J33106D01* +G75* +G01* +X8490876Y2183629D02* +G03* +X8472292Y2191327I-18584J-18584D01* +D14* +G75* +G01* +X8396011Y3113044D02* +G03* +X8372216Y3102764I-1J-32677D01* +G75* +G01* +X8372216Y3123330D02* +G03* +X8396011Y3113049I23794J22396D01* +G75* +G01* +X8365655Y3127400D02* +G03* +X8425283Y3142319I17376J57171D01* +G75* +G01* +X8359839Y3108266D02* +G03* +X8401702Y3118740I12199J40138D01* +G75* +G01* +X8341861Y4376453D02* +G03* +X8411878Y4347451I70017J70018D01* +G75* +G01* +X8327718Y4362313D02* +G03* +X8363593Y4347454I35874J35875D01* +G75* +G01* +X9508203Y6103005D02* +G03* +X9518810Y6077399I36213J0D01* +G75* +G01* +X9497596Y6077399D02* +G03* +X9508203Y6103005I-25606J25606D01* +G75* +G01* +X9508203Y6020580D02* +G03* +X9497596Y6046186I-36213J0D01* +G75* +G01* +X9518810Y6046186D02* +G03* +X9508203Y6020580I25606J-25606D01* +G75* +G01* +X9508206Y5970077D02* +G03* +X9520842Y5939571I43141J0D01* +G75* +G01* +X9499624Y5939570D02* +G03* +X9508200Y5960275I-20705J20705D01* +G75* +G01* +X9550730Y5920737D02* +G03* +X9520838Y5908356I0J-42273D01* +G75* +G01* +X9520839Y5929569D02* +G03* +X9542160Y5920737I21321J21321D01* +D10* +G75* +G01* +X556423Y5547330D02* +G03* +X565119Y5526334I29692J-1D01* +G75* +G01* +X547723Y5526334D02* +G03* +X556420Y5547330I-20996J20995D01* +G75* +G01* +X556423Y5547330D02* +G03* +X565119Y5526334I29692J-1D01* +G75* +G01* +X547723Y5526334D02* +G03* +X556420Y5547330I-20996J20995D01* +G75* +G01* +X3332132Y7327964D02* +G03* +X3353015Y7336613I0J29532D01* +G75* +G01* +X3353014Y7319217D02* +G03* +X3331903Y7327961I-21111J-21111D01* +D14* +G75* +G01* +X237345Y1398511D02* +G03* +X211739Y1387905I0J-36212D01* +G75* +G01* +X211739Y1409118D02* +G03* +X237345Y1398511I25606J25606D01* +G75* +G01* +X196131Y1270859D02* +G03* +X185525Y1296465I-36213J-1D01* +G75* +G01* +X206740Y1296465D02* +G03* +X196134Y1270859I25606J-25607D01* +G75* +G01* +X9383580Y5795963D02* +G03* +X9409187Y5806569I0J36212D01* +G75* +G01* +X9409187Y5785356D02* +G03* +X9383580Y5795963I-25607J-25606D01* +G75* +G01* +X-135049Y4023683D02* +G03* +X-109443Y4034289I0J36212D01* +G75* +G01* +X-109443Y4013074D02* +G03* +X-135049Y4023680I-25606J-25607D01* +D10* +G75* +G01* +X-57780Y3932804D02* +G03* +X-80137Y3923543I0J-31618D01* +G75* +G01* +X-80137Y3940939D02* +G03* +X-60503Y3932806I19634J19635D01* +G75* +G01* +X4396577Y6984959D02* +G03* +X4375582Y6976263I0J-29692D01* +G75* +G01* +X4375582Y6993659D02* +G03* +X4396577Y6984962I20995J20995D01* +G75* +G01* +X4245747Y6984962D02* +G03* +X4266743Y6993659I0J29692D01* +G75* +G01* +X4266743Y6976263D02* +G03* +X4245747Y6984959I-20996J-20996D01* +G75* +G01* +X2746578Y6864960D02* +G03* +X2725582Y6856263I0J-29693D01* +G75* +G01* +X2725582Y6873661D02* +G03* +X2746578Y6864965I20996J20996D01* +D13* +G75* +G01* +X-74135Y2155693D02* +G03* +X-110324Y2140703I0J-51179D01* +G75* +G01* +X-110323Y2168989D02* +G03* +X-78229Y2155695I32093J32094D01* +G75* +G01* +X7454816Y4961844D02* +G03* +X7420675Y4947703I0J-48283D01* +G75* +G01* +X7420675Y4975989D02* +G03* +X7454816Y4961847I34141J34141D01* +G75* +G01* +X4471162Y6369677D02* +G03* +X4457020Y6403819I-48283J0D01* +G75* +G01* +X4485306Y6403819D02* +G03* +X4471165Y6369677I34141J-34142D01* +G75* +G01* +X4474162Y6362433D02* +G03* +X4457020Y6403818I-58527J1D01* +D10* +G75* +G01* +X3215632Y7214260D02* +G03* +X3193322Y7268122I-76172J0D01* +G75* +G01* +X3239003Y7268121D02* +G03* +X3215635Y7211705I56416J-56416D01* +G75* +G01* +X3262103Y7327957D02* +G03* +X3248426Y7292528I33153J-33153D01* +G75* +G01* +X3228125Y7320968D02* +G03* +X3262101Y7327962I11678J29292D01* +G75* +G01* +X7280438Y2306513D02* +G03* +X7301433Y2315210I0J29693D01* +G75* +G01* +X7301433Y2297814D02* +G03* +X7280438Y2306510I-20995J-20996D01* +G75* +G01* +X7314794Y2337026D02* +G03* +X7323830Y2315209I30853J0D01* +G75* +G01* +X7306436Y2315208D02* +G03* +X7314794Y2335385I-20177J20177D01* +G75* +G01* +X4245747Y6730962D02* +G03* +X4266743Y6739659I0J29692D01* +G75* +G01* +X4266743Y6722263D02* +G03* +X4245747Y6730959I-20996J-20996D01* +G75* +G01* +X4396577Y6730959D02* +G03* +X4375582Y6722263I0J-29692D01* +G75* +G01* +X4375582Y6739659D02* +G03* +X4396577Y6730962I20995J20995D01* +G75* +G01* +X4246748Y6602964D02* +G03* +X4267744Y6611660I0J29692D01* +G75* +G01* +X4267744Y6594262D02* +G03* +X4246748Y6602959I-20996J-20996D01* +G75* +G01* +X4397578Y6602959D02* +G03* +X4376582Y6594262I0J-29693D01* +G75* +G01* +X4376582Y6611660D02* +G03* +X4397578Y6602964I20996J20996D01* +D14* +G75* +G01* +X1135668Y1434407D02* +G03* +X1201291Y1439326I29953J40589D01* +G75* +G01* +X1123792Y1418314D02* +G03* +X1184855Y1422892I27872J37769D01* +G75* +G01* +X1111917Y1402222D02* +G03* +X1168423Y1406458I25792J34951D01* +G75* +G01* +X1388235Y1435331D02* +G03* +X1472289Y1443326I37190J54859D01* +G75* +G01* +X1377012Y1418775D02* +G03* +X1455174Y1426209I34583J51014D01* +G75* +G01* +X1365788Y1402222D02* +G03* +X1438059Y1409096I31976J47168D01* +G75* +G01* +X1354568Y1385666D02* +G03* +X1420946Y1391979I29369J43323D01* +G75* +G01* +X1457249Y575369D02* +G03* +X1366929Y609802I-83591J-83592D01* +G75* +G01* +X1425681Y606937D02* +G03* +X1365789Y629770I-55430J-55429D01* +D13* +G75* +G01* +X2127410Y1462575D02* +G03* +X2145087Y1419899I60353J0D01* +G75* +G01* +X2109728Y1419899D02* +G03* +X2127405Y1462575I-42676J42676D01* +D10* +G75* +G01* +X2381283Y1492270D02* +G03* +X2407658Y1428597I90048J1D01* +G75* +G01* +X2354906Y1428597D02* +G03* +X2381280Y1492270I-63674J63674D01* +G75* +G01* +X2889029Y1492270D02* +G03* +X2915404Y1428597I90048J1D01* +G75* +G01* +X2862652Y1428597D02* +G03* +X2889026Y1492270I-63674J63674D01* +G75* +G01* +X2632133Y1499563D02* +G03* +X2661529Y1428595I100363J0D01* +G75* +G01* +X2608779Y1428596D02* +G03* +X2632133Y1484978I-56381J56382D01* +D14* +G75* +G01* +X3142899Y1498788D02* +G03* +X3171184Y1430504I96569J0D01* +G75* +G01* +X3114615Y1430504D02* +G03* +X3142899Y1498788I-68284J68284D01* +G75* +G01* +X3398294Y1495120D02* +G03* +X3425058Y1430505I91379J0D01* +G75* +G01* +X3368490Y1430505D02* +G03* +X3398294Y1502458I-71954J71953D01* +G75* +G01* +X3382630Y1416365D02* +G03* +X3398291Y1454175I-37811J37810D01* +D10* +G75* +G01* +X2635156Y915810D02* +G03* +X2654412Y881718I39807J0D01* +G75* +G01* +X2615897Y881718D02* +G03* +X2635153Y915810I-20550J34092D01* +D14* +G75* +G01* +X3225996Y585622D02* +G03* +X3146613Y610119I-62873J-62872D01* +G75* +G01* +X3199230Y612388D02* +G03* +X3142901Y629770I-44614J-44614D01* +G75* +G01* +X3488615Y578004D02* +G03* +X3398833Y609877I-78370J-78371D01* +G75* +G01* +X3458905Y607712D02* +G03* +X3396775Y629769I-54233J-54233D01* +G75* +G01* +X4136860Y684327D02* +G03* +X3936868Y601487I0J-282832D01* +G75* +G01* +X4088574Y684324D02* +G03* +X3922725Y615627I1J-234546D01* +G75* +G01* +X4040292Y684327D02* +G03* +X3908583Y629772I-1J-186263D01* +G75* +G01* +X3992006Y684324D02* +G03* +X3894441Y643912I0J-137978D01* +G75* +G01* +X3943723Y684327D02* +G03* +X3880299Y658056I0J-89695D01* +D13* +G75* +G01* +X5026185Y1652024D02* +G03* +X5051913Y1589911I87841J-1D01* +G75* +G01* +X5002412Y1589912D02* +G03* +X5026180Y1647294I-57383J57382D01* +G75* +G01* +X5026185Y1652024D02* +G03* +X5051913Y1589911I87841J-1D01* +G75* +G01* +X5002414Y1589912D02* +G03* +X5026182Y1647294I-57382J57382D01* +D15* +G75* +G01* +X1112662Y7242678D02* +G03* +X1098521Y7276819I-48283J0D01* +G75* +G01* +X1126806Y7276819D02* +G03* +X1112665Y7242678I34142J-34141D01* +G75* +G01* +X1336231Y7355962D02* +G03* +X1253804Y7321820I-1J-116568D01* +D13* +G75* +G01* +X2022785Y6950585D02* +G03* +X2044182Y7002242I-51656J51657D01* +D15* +G75* +G01* +X2012292Y6514562D02* +G03* +X2038718Y6525507I0J37371D01* +G75* +G01* +X2038715Y6503613D02* +G03* +X2012290Y6514559I-26425J-26425D01* +G75* +G01* +X1960037Y6514559D02* +G03* +X1933611Y6503613I0J-37371D01* +G75* +G01* +X1933609Y6525507D02* +G03* +X1960034Y6514562I26425J26426D01* +G75* +G01* +X2208433Y6512240D02* +G03* +X2187608Y6503614I0J-29451D01* +G75* +G01* +X2187610Y6525508D02* +G03* +X2219635Y6512242I32025J32025D01* +G75* +G01* +X2176663Y7181853D02* +G03* +X2187609Y7155427I37371J-1D01* +G75* +G01* +X2165715Y7155427D02* +G03* +X2176661Y7181853I-26425J26425D01* +G75* +G01* +X2176661Y6964868D02* +G03* +X2165715Y6991293I-37371J0D01* +G75* +G01* +X2187609Y6991293D02* +G03* +X2176663Y6964868I26425J-26425D01* +G75* +G01* +X1795663Y7181853D02* +G03* +X1806609Y7155427I37371J-1D01* +G75* +G01* +X1784715Y7155427D02* +G03* +X1795661Y7181853I-26425J26425D01* +G75* +G01* +X1922663Y7181853D02* +G03* +X1933609Y7155427I37371J-1D01* +G75* +G01* +X1911715Y7155427D02* +G03* +X1922661Y7181853I-26425J26425D01* +G75* +G01* +X1880606Y6938081D02* +G03* +X1907182Y7002242I-64161J64160D01* +G75* +G01* +X2482164Y6632237D02* +G03* +X2490235Y6612752I27557J0D01* +G75* +G01* +X2444194Y6512242D02* +G03* +X2466091Y6521313I0J30968D01* +D14* +G75* +G01* +X8039433Y2458905D02* +G03* +X8057431Y2422910I44993J0D01* +G75* +G01* +X8021432Y2422910D02* +G03* +X8039430Y2458905I-26995J35995D01* +G75* +G01* +X7956431Y2381334D02* +G03* +X7977644Y2330121I72425J0D01* +G75* +G01* +X7935218Y2330121D02* +G03* +X7956431Y2381334I-51213J51213D01* +D16* +G75* +G01* +X6133424Y6734754D02* +G03* +X6157101Y6677593I80838J0D01* +G75* +G01* +X6157101Y6632236D02* +G03* +X6133424Y6575074I57161J-57161D01* +D10* +G75* +G01* +X2902463Y7218241D02* +G03* +X2914696Y7188708I41765J-1D01* +G75* +G01* +X2840812Y7214243D02* +G03* +X2871465Y7226940I0J43350D01* +G75* +G01* +X-269354Y5179845D02* +G03* +X-277202Y5198791I-26795J0D01* +G75* +G01* +X-245665Y5198792D02* +G03* +X-269354Y5141603I57189J-57189D01* +G75* +G01* +X-225672Y5411910D02* +G03* +X-239340Y5371266I34082J-34082D01* +G75* +G01* +X-261435Y5390530D02* +G03* +X-236888Y5400698I0J34714D01* +G75* +G01* +X-124305Y5411912D02* +G03* +X-244007Y5354314I0J-153182D01* +G75* +G01* +X-177091Y5411912D02* +G03* +X-263855Y5370163I0J-111031D01* +G75* +G01* +X-229880Y5411912D02* +G03* +X-283705Y5386012I0J-68880D01* +G75* +G01* +X-270434Y5018466D02* +G03* +X-245665Y4958670I84564J0D01* +G75* +G01* +X-207597Y4789228D02* +G03* +X-245664Y4773460I0J-53835D01* +G75* +G01* +X-245664Y4804999D02* +G03* +X-207597Y4789231I38067J38067D01* +D14* +G75* +G01* +X2633800Y4413123D02* +G03* +X2503398Y4349007I0J-164666D01* +G75* +G01* +X2593124Y4413120D02* +G03* +X2487562Y4361218I0J-133299D01* +G75* +G01* +X2552446Y4413123D02* +G03* +X2471722Y4373432I0J-101935D01* +G75* +G01* +X2503398Y4477239D02* +G03* +X2633800Y4413123I130402J100550D01* +G75* +G01* +X2487562Y4465028D02* +G03* +X2593124Y4413126I105562J81397D01* +G75* +G01* +X2471722Y4452814D02* +G03* +X2552446Y4413123I80724J62244D01* +G75* +G01* +X1382563Y4394738D02* +G03* +X1203317Y4320493I-1J-253492D01* +G75* +G01* +X1334280Y4394736D02* +G03* +X1189177Y4334632I0J-205207D01* +G75* +G01* +X1285994Y4394738D02* +G03* +X1175032Y4348777I0J-156923D01* +G75* +G01* +X1203317Y4468984D02* +G03* +X1382563Y4394738I179245J179246D01* +G75* +G01* +X1189177Y4454845D02* +G03* +X1334280Y4394741I145103J145103D01* +G75* +G01* +X1175032Y4440700D02* +G03* +X1285994Y4394738I110962J110962D01* +D13* +G75* +G01* +X5282591Y7043534D02* +G03* +X5240165Y6941109I102425J-102425D01* +D10* +G75* +G01* +X429567Y5635231D02* +G03* +X418475Y5658953I-30911J0D01* +G75* +G01* +X440660Y5658953D02* +G03* +X429567Y5635231I19819J-23722D01* +G75* +G01* +X429565Y5630464D02* +G03* +X417332Y5659996I-41765J0D01* +G75* +G01* +X441800Y5659996D02* +G03* +X429567Y5630464I29533J-29532D01* +G75* +G01* +X-270434Y4994466D02* +G03* +X-282666Y5023998I-41765J0D01* +G75* +G01* +X-258201Y5023998D02* +G03* +X-270434Y4994466I29532J-29532D01* +G75* +G01* +X-269352Y5197259D02* +G03* +X-239199Y5124463I102949J0D01* +D14* +G75* +G01* +X9350162Y1503606D02* +G03* +X9331020Y1549819I-65355J1D01* +G75* +G01* +X9359306Y1549819D02* +G03* +X9350164Y1527749I22070J-22070D01* +D15* +G75* +G01* +X9350162Y1515676D02* +G03* +X9334555Y1553354I-53284J0D01* +D14* +G75* +G01* +X9316142Y1595983D02* +G03* +X9345163Y1583962I29021J29020D01* +G75* +G01* +X9325160Y1563962D02* +G03* +X9308898Y1603224I-55524J0D01* +D15* +G75* +G01* +X9324679Y1587448D02* +G03* +X9345163Y1578963I20484J20484D01* +G75* +G01* +X9330162Y1563962D02* +G03* +X9317434Y1594689I-43455J0D01* +G75* +G01* +X9604162Y1034748D02* +G03* +X9593555Y1060354I-36213J0D01* +G75* +G01* +X9614771Y1060354D02* +G03* +X9604164Y1034748I25606J-25606D01* +G75* +G01* +X9148862Y5923963D02* +G03* +X9123255Y5913357I0J-36213D01* +G75* +G01* +X9123255Y5934570D02* +G03* +X9148862Y5923963I25607J25606D01* +D10* +G75* +G01* +X7314794Y2403025D02* +G03* +X7302561Y2432558I-41766J1D01* +G75* +G01* +X7327026Y2432558D02* +G03* +X7314794Y2403025I29533J-29532D01* +G75* +G01* +X7314794Y2486556D02* +G03* +X7327026Y2457023I41765J0D01* +G75* +G01* +X7302561Y2457023D02* +G03* +X7314794Y2486556I-29533J29533D01* +D14* +G75* +G01* +X8356295Y2956369D02* +G03* +X8370437Y2922228I48283J0D01* +G75* +G01* +X8342151Y2922228D02* +G03* +X8356293Y2956369I-34141J34141D01* +G75* +G01* +X7264715Y5479908D02* +G03* +X7230574Y5465766I0J-48283D01* +G75* +G01* +X7230574Y5494052D02* +G03* +X7264715Y5479910I34141J34141D01* +G75* +G01* +X6052152Y5406845D02* +G03* +X6020574Y5393765I0J-44659D01* +G75* +G01* +X6020574Y5422051D02* +G03* +X6057278Y5406847I36704J36704D01* +G75* +G01* +X6412395Y5551843D02* +G03* +X6373575Y5535763I0J-54899D01* +G75* +G01* +X6373573Y5564049D02* +G03* +X6403035Y5551846I29462J29463D01* +G75* +G01* +X9147249Y6248847D02* +G03* +X9181390Y6262989I0J48283D01* +G75* +G01* +X9181390Y6234703D02* +G03* +X9147249Y6248844I-34141J-34141D01* +G75* +G01* +X9147249Y6138847D02* +G03* +X9181390Y6152989I0J48283D01* +G75* +G01* +X9181390Y6124703D02* +G03* +X9147249Y6138845I-34141J-34141D01* +G75* +G01* +X5787636Y2158235D02* +G03* +X5821778Y2172377I0J48283D01* +G75* +G01* +X5821778Y2144091D02* +G03* +X5787636Y2158233I-34142J-34141D01* +G75* +G01* +X9152504Y6030595D02* +G03* +X9186645Y6044737I0J48283D01* +G75* +G01* +X9186645Y6016451D02* +G03* +X9152504Y6030592I-34141J-34141D01* +G75* +G01* +X9870816Y6248844D02* +G03* +X9836675Y6234703I0J-48282D01* +G75* +G01* +X9836675Y6262989D02* +G03* +X9870816Y6248847I34141J34141D01* +G75* +G01* +X9870417Y6140447D02* +G03* +X9836276Y6126306I0J-48282D01* +G75* +G01* +X9836276Y6154592D02* +G03* +X9870417Y6140450I34141J34141D01* +G75* +G01* +X9871563Y6030592D02* +G03* +X9837422Y6016451I0J-48282D01* +G75* +G01* +X9837422Y6044737D02* +G03* +X9871563Y6030595I34141J34141D01* +G75* +G01* +X5872152Y5331846D02* +G03* +X5840574Y5318766I0J-44658D01* +G75* +G01* +X5840574Y5347052D02* +G03* +X5877278Y5331849I36704J36704D01* +G75* +G01* +X5805465Y2412108D02* +G03* +X5841391Y2426990I0J50808D01* +G75* +G01* +X5841389Y2398704D02* +G03* +X5809033Y2412106I-32356J-32356D01* +G75* +G01* +X6128426Y5136200D02* +G03* +X6093575Y5121764I0J-49286D01* +G75* +G01* +X6093574Y5150050D02* +G03* +X6127006Y5136203I33432J33432D01* +G75* +G01* +X4837951Y2665979D02* +G03* +X4803810Y2651837I0J-48283D01* +G75* +G01* +X4803810Y2680123D02* +G03* +X4837951Y2665981I34141J34141D01* +G75* +G01* +X4837811Y2919852D02* +G03* +X4803670Y2905710I0J-48283D01* +G75* +G01* +X4803670Y2933996D02* +G03* +X4837811Y2919854I34141J34141D01* +G75* +G01* +X4837557Y2412106D02* +G03* +X4803416Y2397964I0J-48283D01* +G75* +G01* +X4803416Y2426250D02* +G03* +X4837557Y2412108I34141J34141D01* +G75* +G01* +X4836206Y2158233D02* +G03* +X4802065Y2144091I0J-48283D01* +G75* +G01* +X4802065Y2172377D02* +G03* +X4836206Y2158235I34141J34141D01* +G75* +G01* +X4840696Y3173725D02* +G03* +X4806555Y3159583I0J-48283D01* +G75* +G01* +X4806555Y3187869D02* +G03* +X4840696Y3173727I34141J34141D01* +G75* +G01* +X491565Y4587988D02* +G03* +X477423Y4553847I34141J-34141D01* +G75* +G01* +X457421Y4573847D02* +G03* +X491562Y4587988I0J48282D01* +G75* +G01* +X6668249Y4838847D02* +G03* +X6702390Y4852989I0J48283D01* +G75* +G01* +X6702390Y4824703D02* +G03* +X6668249Y4838845I-34141J-34141D01* +G75* +G01* +X7563818Y4838845D02* +G03* +X7529677Y4824703I0J-48283D01* +G75* +G01* +X7529677Y4852989D02* +G03* +X7563818Y4838847I34141J34141D01* +G75* +G01* +X7515532Y4790562D02* +G03* +X7501391Y4824703I-48283J0D01* +G75* +G01* +X7529677Y4824703D02* +G03* +X7515535Y4790562I34141J-34141D01* +G75* +G01* +X6726248Y4768847D02* +G03* +X6760389Y4782989I0J48283D01* +G75* +G01* +X6760389Y4754703D02* +G03* +X6726248Y4768845I-34141J-34141D01* +G75* +G01* +X6801249Y4703849D02* +G03* +X6835390Y4717991I0J48283D01* +G75* +G01* +X6835390Y4689705D02* +G03* +X6801249Y4703846I-34141J-34142D01* +G75* +G01* +X4809818Y4092844D02* +G03* +X4775677Y4078703I0J-48283D01* +G75* +G01* +X4775677Y4106988D02* +G03* +X4809818Y4092847I34141J34142D01* +G75* +G01* +X5710391Y2727705D02* +G03* +X5724533Y2761846I-34141J34141D01* +G75* +G01* +X5744533Y2741846D02* +G03* +X5710391Y2727704I0J-48283D01* +G75* +G01* +X5929714Y4489907D02* +G03* +X5895573Y4475765I0J-48283D01* +G75* +G01* +X5895573Y4504051D02* +G03* +X5929714Y4489910I34141J34142D01* +G75* +G01* +X4803778Y3935344D02* +G03* +X4775675Y3923703I0J-39743D01* +G75* +G01* +X4775676Y3951989D02* +G03* +X4815855Y3935346I40179J40180D01* +G75* +G01* +X5710391Y2982706D02* +G03* +X5724533Y3016847I-34141J34141D01* +G75* +G01* +X5744533Y2996844D02* +G03* +X5710391Y2982703I0J-48282D01* +G75* +G01* +X6212716Y4256908D02* +G03* +X6178574Y4242766I0J-48283D01* +G75* +G01* +X6178574Y4271052D02* +G03* +X6212716Y4256910I34142J34141D01* +D15* +G75* +G01* +X-171839Y5774748D02* +G03* +X-182445Y5800355I-36212J0D01* +G75* +G01* +X-161230Y5800355D02* +G03* +X-171836Y5774748I25607J-25607D01* +D14* +G75* +G01* +X1167151Y1405185D02* +G03* +X1181293Y1439327I-34141J34142D01* +G75* +G01* +X1201293Y1419327D02* +G03* +X1167152Y1405185I0J-48283D01* +G75* +G01* +X5974133Y1426075D02* +G03* +X5988275Y1391934I48283J0D01* +G75* +G01* +X5959989Y1391934D02* +G03* +X5974131Y1426075I-34141J34141D01* +G75* +G01* +X1438149Y1409186D02* +G03* +X1452291Y1443327I-34141J34141D01* +G75* +G01* +X1472293Y1423325D02* +G03* +X1438152Y1409183I0J-48283D01* +G75* +G01* +X6067598Y1490909D02* +G03* +X6081591Y1457617I46599J0D01* +G75* +G01* +X6053602Y1457617D02* +G03* +X6067595Y1490909I-32606J33292D01* +G75* +G01* +X1436153Y596470D02* +G03* +X1470294Y582328I34141J34141D01* +G75* +G01* +X1450292Y562326D02* +G03* +X1436150Y596467I-48283J0D01* +G75* +G01* +X6127013Y891611D02* +G03* +X6141155Y857470I48283J0D01* +G75* +G01* +X6112869Y857470D02* +G03* +X6127011Y891611I-34141J34141D01* +G75* +G01* +X3199152Y612469D02* +G03* +X3233293Y598327I34141J34141D01* +G75* +G01* +X3213293Y578328D02* +G03* +X3199151Y612469I-48283J0D01* +G75* +G01* +X6213533Y839130D02* +G03* +X6227675Y804988I48283J0D01* +G75* +G01* +X6199389Y804988D02* +G03* +X6213531Y839130I-34141J34142D01* +G75* +G01* +X6213533Y839130D02* +G03* +X6227675Y804988I48283J0D01* +G75* +G01* +X6199389Y804988D02* +G03* +X6213531Y839130I-34141J34142D01* +G75* +G01* +X3142899Y1485405D02* +G03* +X3130150Y1516184I-43527J0D01* +G75* +G01* +X3158436Y1516182D02* +G03* +X3142902Y1478679I37504J-37503D01* +G75* +G01* +X3653292Y1533042D02* +G03* +X3639150Y1567184I-48283J0D01* +G75* +G01* +X3667436Y1567184D02* +G03* +X3653295Y1533042I34142J-34142D01* +G75* +G01* +X6832151Y411184D02* +G03* +X6846293Y445325I-34141J34141D01* +G75* +G01* +X6866293Y425326D02* +G03* +X6832152Y411184I0J-48283D01* +G75* +G01* +X6866296Y810611D02* +G03* +X6880437Y776469I48282J-1D01* +G75* +G01* +X6852151Y776469D02* +G03* +X6866293Y810611I-34141J34141D01* +G75* +G01* +X3398291Y1469042D02* +G03* +X3384150Y1503183I-48282J0D01* +G75* +G01* +X3412436Y1503183D02* +G03* +X3398294Y1469042I34141J-34141D01* +G75* +G01* +X7667295Y1565610D02* +G03* +X7681437Y1531469I48283J0D01* +G75* +G01* +X7653151Y1531469D02* +G03* +X7667292Y1565610I-34142J34141D01* +G75* +G01* +X3464153Y602469D02* +G03* +X3498294Y588327I34141J34141D01* +G75* +G01* +X3478291Y568328D02* +G03* +X3464150Y602469I-48283J0D01* +G75* +G01* +X7764795Y931111D02* +G03* +X7778937Y896970I48283J0D01* +G75* +G01* +X7750651Y896970D02* +G03* +X7764793Y931111I-34141J34141D01* +G75* +G01* +X8585131Y1686750D02* +G03* +X8571019Y1720820I-48181J0D01* +G75* +G01* +X8599305Y1720819D02* +G03* +X8585134Y1686606I34213J-34213D01* +G75* +G01* +X8585131Y1686750D02* +G03* +X8571019Y1720820I-48181J0D01* +G75* +G01* +X8599305Y1720819D02* +G03* +X8585134Y1686606I34213J-34213D01* +D15* +G75* +G01* +X8621375Y1734962D02* +G03* +X8595768Y1724356I0J-36213D01* +G75* +G01* +X8595768Y1745569D02* +G03* +X8621375Y1734962I25607J25606D01* +G75* +G01* +X1745183Y518005D02* +G03* +X1755790Y492399I36213J0D01* +G75* +G01* +X1734577Y492399D02* +G03* +X1745183Y518005I-25607J25606D01* +G75* +G01* +X1745183Y518005D02* +G03* +X1755790Y492399I36213J0D01* +G75* +G01* +X1734577Y492399D02* +G03* +X1745183Y518005I-25607J25606D01* +D10* +G75* +G01* +X2632133Y2111075D02* +G03* +X2619901Y2140608I-41765J0D01* +G75* +G01* +X2644366Y2140608D02* +G03* +X2632133Y2111075I29533J-29533D01* +D13* +G75* +G01* +X8257134Y929076D02* +G03* +X8271275Y894935I48282J0D01* +G75* +G01* +X8242989Y894935D02* +G03* +X8257131Y929076I-34141J34141D01* +G75* +G01* +X394061Y1889720D02* +G03* +X364848Y1901820I-29213J-29213D01* +G75* +G01* +X394061Y1889720D02* +G03* +X364848Y1901820I-29213J-29213D01* +D10* +G75* +G01* +X2889026Y2183181D02* +G03* +X2876794Y2212713I-41765J0D01* +G75* +G01* +X2901259Y2212713D02* +G03* +X2889026Y2183181I29533J-29532D01* +G75* +G01* +X2381280Y1966313D02* +G03* +X2369048Y1995846I-41765J0D01* +G75* +G01* +X2393513Y1995846D02* +G03* +X2381280Y1966313I29533J-29533D01* +G75* +G01* +X2760132Y1885076D02* +G03* +X2747899Y1914609I-41766J0D01* +G75* +G01* +X2772367Y1914609D02* +G03* +X2760134Y1885076I29532J-29533D01* +G75* +G01* +X8395299Y4524845D02* +G03* +X8365767Y4512612I0J-41765D01* +G75* +G01* +X8365767Y4537080D02* +G03* +X8395299Y4524847I29532J29533D01* +G75* +G01* +X4069629Y6753428D02* +G03* +X4081861Y6782961I-29533J29533D01* +G75* +G01* +X4099164Y6765661D02* +G03* +X4069631Y6753428I0J-41765D01* +G75* +G01* +X4067630Y6955429D02* +G03* +X4079862Y6984962I-29533J29533D01* +G75* +G01* +X4097162Y6967659D02* +G03* +X4067630Y6955427I0J-41765D01* +G75* +G01* +X4138927Y6984959D02* +G03* +X4109395Y6972727I0J-41765D01* +G75* +G01* +X4109395Y6997195D02* +G03* +X4138927Y6984962I29532J29532D01* +G75* +G01* +X4427398Y6984962D02* +G03* +X4456930Y6997195I0J41765D01* +G75* +G01* +X4456930Y6972727D02* +G03* +X4427398Y6984959I-29532J-29533D01* +G75* +G01* +X4679396Y6856961D02* +G03* +X4708929Y6869194I0J41765D01* +G75* +G01* +X4708929Y6844728D02* +G03* +X4679396Y6856961I-29533J-29532D01* +G75* +G01* +X4762929Y4189961D02* +G03* +X4733397Y4177728I0J-41765D01* +G75* +G01* +X4733397Y4202194D02* +G03* +X4762929Y4189961I29532J29532D01* +G75* +G01* +X4601809Y6602961D02* +G03* +X4628928Y6614194I0J38352D01* +G75* +G01* +X4628930Y6589729D02* +G03* +X4596983Y6602961I-31947J-31947D01* +G75* +G01* +X4510982Y6730962D02* +G03* +X4542928Y6744195I0J45179D01* +G75* +G01* +X4542929Y6719727D02* +G03* +X4515813Y6730959I-27116J-27117D01* +G75* +G01* +X4349397Y6099414D02* +G03* +X4378930Y6111646I0J41765D01* +G75* +G01* +X4378930Y6087181D02* +G03* +X4349397Y6099414I-29533J-29532D01* +G75* +G01* +X957163Y6027727D02* +G03* +X969396Y5998195I41766J0D01* +G75* +G01* +X944931Y5998195D02* +G03* +X957163Y6027727I-29533J29532D01* +G75* +G01* +X962162Y6468196D02* +G03* +X949930Y6497729I-41765J1D01* +G75* +G01* +X974395Y6497729D02* +G03* +X962162Y6468196I29532J-29532D01* +G75* +G01* +X2265164Y7220727D02* +G03* +X2277397Y7191195I41766J0D01* +G75* +G01* +X2252929Y7191195D02* +G03* +X2265162Y7220727I-29532J29532D01* +G75* +G01* +X881802Y5701231D02* +G03* +X911334Y5713463I0J41765D01* +G75* +G01* +X911334Y5688998D02* +G03* +X881802Y5701231I-29532J-29533D01* +G75* +G01* +X2359254Y6822681D02* +G03* +X2330396Y6810728I0J-40810D01* +G75* +G01* +X2330397Y6835196D02* +G03* +X2360605Y6822684I30208J30208D01* +D15* +G75* +G01* +X4796163Y6545196D02* +G03* +X4807654Y6517453I39235J0D01* +G75* +G01* +X4786442Y6517453D02* +G03* +X4796163Y6540922I-23470J23468D01* +D10* +G75* +G01* +X3962629Y6959430D02* +G03* +X3974861Y6988962I-29533J29532D01* +G75* +G01* +X3992164Y6971660D02* +G03* +X3962631Y6959427I0J-41765D01* +D14* +G75* +G01* +X2954162Y6645961D02* +G03* +X2933897Y6635006I0J-24222D01* +G75* +G01* +X2933897Y6656918D02* +G03* +X2954162Y6645963I20265J13267D01* +G75* +G01* +X2924940Y6664387D02* +G03* +X2984159Y6675959I21013J49778D01* +G75* +G01* +X2917165Y6645964D02* +G03* +X2963149Y6654950I16317J38653D01* +D15* +G75* +G01* +X4796163Y7145749D02* +G03* +X4785556Y7171355I-36213J0D01* +G75* +G01* +X4806769Y7171355D02* +G03* +X4796163Y7145749I25606J-25606D01* +D14* +G75* +G01* +X6489736Y6694919D02* +G03* +X6526280Y6710056I0J51682D01* +G75* +G01* +X6526277Y6681770D02* +G03* +X6494539Y6694917I-31738J-31738D01* +G75* +G01* +X6049522Y4292937D02* +G03* +X6063663Y4327078I-34142J34141D01* +G75* +G01* +X6083663Y4307078D02* +G03* +X6049522Y4292936I0J-48283D01* +G75* +G01* +X6117807Y4361219D02* +G03* +X6103666Y4327078I34142J-34141D01* +G75* +G01* +X6083663Y4347080D02* +G03* +X6117804Y4361222I0J48283D01* +D10* +G75* +G01* +X8155396Y5696961D02* +G03* +X8184929Y5709194I1J41765D01* +G75* +G01* +X8184929Y5684728D02* +G03* +X8155396Y5696961I-29532J-29532D01* +D14* +G75* +G01* +X5955359Y4364674D02* +G03* +X5969500Y4398815I-34141J34141D01* +G75* +G01* +X5989503Y4378815D02* +G03* +X5955362Y4364674I0J-48283D01* +G75* +G01* +X6023645Y4432956D02* +G03* +X6009503Y4398815I34141J-34141D01* +G75* +G01* +X5989503Y4418818D02* +G03* +X6023644Y4432959I0J48283D01* +G75* +G01* +X6885432Y5676191D02* +G03* +X6899574Y5642050I48283J0D01* +G75* +G01* +X6871288Y5642050D02* +G03* +X6885429Y5676191I-34141J34141D01* +D10* +G75* +G01* +X6885432Y5669674D02* +G03* +X6897665Y5640141I41765J-1D01* +G75* +G01* +X6873197Y5640141D02* +G03* +X6885429Y5669674I-29533J29532D01* +D14* +G75* +G01* +X6986715Y5822907D02* +G03* +X6952573Y5808765I-1J-48283D01* +G75* +G01* +X6952573Y5837051D02* +G03* +X6986715Y5822909I34141J34141D01* +G75* +G01* +X7565146Y5822909D02* +G03* +X7599287Y5837051I0J48283D01* +G75* +G01* +X7599287Y5808765D02* +G03* +X7565146Y5822907I-34141J-34141D01* +G75* +G01* +X8652132Y1595676D02* +G03* +X8637990Y1629817I-48283J0D01* +G75* +G01* +X8666276Y1629817D02* +G03* +X8652134Y1595676I34141J-34141D01* +G75* +G01* +X8700417Y1643959D02* +G03* +X8666276Y1629817I0J-48283D01* +G75* +G01* +X8666276Y1658103D02* +G03* +X8700417Y1643962I34141J34142D01* +D15* +G75* +G01* +X8688347Y1643962D02* +G03* +X8662741Y1633355I0J-36213D01* +G75* +G01* +X8662741Y1654568D02* +G03* +X8688347Y1643962I25606J25606D01* +D10* +G75* +G01* +X149656Y5188148D02* +G03* +X205745Y5164915I56089J56088D01* +G75* +G01* +X69098Y5164915D02* +G03* +X125187Y5188148I0J79321D01* +G75* +G01* +X-61361Y5164915D02* +G03* +X70332Y5219464I0J186243D01* +G75* +G01* +X-38Y5164917D02* +G03* +X88293Y5201505I0J124920D01* +G75* +G01* +X326423Y5521681D02* +G03* +X338656Y5492148I41765J-1D01* +G75* +G01* +X314188Y5492148D02* +G03* +X326420Y5521681I-29533J29532D01* +G75* +G01* +X326423Y5521681D02* +G03* +X338656Y5492148I41765J-1D01* +G75* +G01* +X314188Y5492148D02* +G03* +X326420Y5521681I-29533J29532D01* +D13* +G75* +G01* +X1090859Y4606912D02* +G03* +X966100Y4555235I0J-176436D01* +G36* +X1741167Y3528948D02* +G01* +X1788436Y3528948D01* +X1788436Y3474948D01* +X1741167Y3474948D01* +G37* +G36* +X1695168Y3502964D02* +G01* +X1798165Y3502964D01* +X1798165Y3462908D01* +X1695168Y3462908D01* +G37* +G36* +X1526156Y3499967D02* +G01* +X1616148Y3499967D01* +X1616148Y3462909D01* +X1526156Y3462909D01* +G37* +G36* +X1500172Y3537965D02* +G01* +X1550184Y3537965D01* +X1550184Y3462909D01* +X1500172Y3462909D01* +G37* +G36* +X1484170Y3563950D02* +G01* +X1521178Y3563950D01* +X1521178Y3462909D01* +X1484170Y3462909D01* +G37* +G36* +X6228433Y6789928D02* +G01* +X6293431Y6789928D01* +X6293431Y6729907D01* +X6228433Y6729907D01* +G37* +G36* +X6562417Y6138900D02* +G01* +X6652409Y6138900D01* +X6652409Y6019901D01* +X6562417Y6019901D01* +G37* +G36* +X6434427Y6197904D02* +G01* +X6596428Y6197904D01* +X6596428Y5975908D01* +X6434427Y5975908D01* +G37* +G36* +X6195413Y6365900D02* +G01* +X6652409Y6365900D01* +X6652409Y6138900D01* +X6195413Y6138900D01* +G37* +G36* +X6195413Y6478904D02* +G01* +X6652409Y6478904D01* +X6652409Y6365900D01* +X6195413Y6365900D01* +G37* +G36* +X6270419Y6478904D02* +G01* +X6652409Y6478904D01* +X6652409Y6138900D01* +X6270419Y6138900D01* +G37* +G36* +X5873417Y6908901D02* +G01* +X6172426Y6908901D01* +X6172426Y6787895D01* +X5873417Y6787895D01* +G37* +G36* +X5986421Y6884923D02* +G01* +X6038415Y6884923D01* +X6038415Y6733920D01* +X5986421Y6733920D01* +G37* +G36* +X5751421Y6717919D02* +G01* +X5936434Y6717919D01* +X5936434Y6660921D01* +X5751421Y6660921D01* +G37* +G36* +X5281419Y6584924D02* +G01* +X6046416Y6584924D01* +X6046416Y6478930D01* +X5281419Y6478930D01* +G37* +G36* +X802434Y5281904D02* +G01* +X881352Y5281904D01* +X881352Y5255895D01* +X802434Y5255895D01* +G37* +G36* +X776424Y5255920D02* +G01* +X881326Y5255920D01* +X881326Y5217820D01* +X776424Y5217820D01* +G37* +G36* +X752421Y5228920D02* +G01* +X874417Y5228920D01* +X874417Y5177917D01* +X752421Y5177917D01* +G37* +G36* +X730425Y5206923D02* +G01* +X874417Y5206923D01* +X874417Y5160949D01* +X730425Y5160949D01* +G37* +G36* +X874417Y5177917D02* +G01* +X910435Y5177917D01* +X910435Y5160949D01* +X874417Y5160949D01* +G37* +G36* +X874417Y5305907D02* +G01* +X1043429Y5305907D01* +X1043429Y5177916D01* +X874417Y5177916D01* +G37* +G36* +X833422Y5317921D02* +G01* +X895423Y5317921D01* +X895423Y5102910D01* +X833422Y5102910D01* +G37* +G36* +X667433Y5164912D02* +G01* +X833447Y5164912D01* +X833447Y5102910D01* +X667433Y5102910D01* +G37* +G36* +X-100586Y5255920D02* +G01* +X33423Y5255920D01* +X33423Y5195925D01* +X-100586Y5195925D01* +G37* +G36* +X-85575Y5236921D02* +G01* +X91437Y5236921D01* +X91437Y5114925D01* +X-85575Y5114925D01* +G37* +G36* +X7414Y5269915D02* +G01* +X168424Y5269915D01* +X168424Y5240909D01* +X7414Y5240909D01* +G37* +G36* +X7414Y5240909D02* +G01* +X169415Y5240909D01* +X169415Y5101920D01* +X7414Y5101920D01* +G37* +G36* +X29410Y5164912D02* +G01* +X169415Y5164912D01* +X169415Y5101920D01* +X29410Y5101920D01* +G37* +G36* +X288439Y1193901D02* +G01* +X382419Y1193901D01* +X382419Y1134897D01* +X288439Y1134897D01* +G37* +G36* +X-251564Y6303645D02* +G01* +X-106580Y6303645D01* +X-106580Y6085916D01* +X-251564Y6085916D01* +G37* +G36* +X-231574Y6552895D02* +G01* +X-108562Y6552895D01* +X-108562Y6303619D01* +X-231574Y6303619D01* +G37* +G36* +X-164315Y6397904D02* +G01* +X138427Y6397904D01* +X138427Y6206896D01* +X-164315Y6206896D01* +G37* +G36* +X1159431Y6309918D02* +G01* +X1202433Y6309918D01* +X1202433Y6177686D01* +X1159431Y6177686D01* +G37* +G36* +X1023414Y6309918D02* +G01* +X1052421Y6309918D01* +X1052421Y6152921D01* +X1023414Y6152921D01* +G37* +G36* +X1012416Y6194907D02* +G01* +X1197429Y6194907D01* +X1197429Y6155918D01* +X1012416Y6155918D01* +G37* +G36* +X1009418Y6323914D02* +G01* +X1188412Y6323914D01* +X1188412Y6284925D01* +X1009418Y6284925D01* +G37* +G36* +X11482524Y7174839D02* +G01* +X11562483Y7174839D01* +X11562483Y7008825D01* +X11482524Y7008825D01* +G37* +G36* +X11195530Y7316851D02* +G01* +X11538430Y7316851D01* +X11538430Y6732905D01* +X11195530Y6732905D01* +G37* +G36* +X11111532Y7428839D02* +G01* +X11388417Y7428839D01* +X11388417Y7333843D01* +X11111532Y7333843D01* +G37* +G36* +X10908433Y7392898D02* +G01* +X11464541Y7392898D01* +X11464541Y6950837D01* +X10908433Y6950837D01* +G37* +G36* +X11378537Y269849D02* +G01* +X11500533Y269849D01* +X11500533Y131851D01* +X11378537Y131851D01* +G37* +G36* +X11347523Y672922D02* +G01* +X11551536Y672922D01* +X11551536Y218846D01* +X11347523Y218846D01* +G37* +G36* +X10831522Y762914D02* +G01* +X11418415Y762914D01* +X11418415Y90652D01* +X10831522Y90652D01* +G37* +G36* +X-118569Y7437907D02* +G01* +X408454Y7437907D01* +X408454Y6762902D01* +X-118569Y6762902D01* +G37* +G36* +X-291696Y7091908D02* +G01* +X-29568Y7091908D01* +X-29568Y6788911D01* +X-291696Y6788911D01* +G37* +G36* +X-282374Y7272909D02* +G01* +X-41582Y7272909D01* +X-41582Y7031913D01* +X-282374Y7031913D01* +G37* +G36* +X-236959Y7362901D02* +G01* +X-6581Y7362901D01* +X-6581Y7190917D01* +X-236959Y7190917D01* +G37* +G36* +X-108206Y368909D02* +G01* +X408454Y368909D01* +X408454Y72923D01* +X-108206Y72923D01* +G37* +G36* +X-105387Y765911D02* +G01* +X258467Y765911D01* +X258467Y102920D01* +X-105387Y102920D01* +G37* +G36* +X236420Y482904D02* +G01* +X408429Y482904D01* +X408429Y326898D01* +X236420Y326898D01* +G37* +G36* +X213433Y655701D02* +G01* +X288439Y655701D01* +X288439Y431901D01* +X213433Y431901D01* +G37* +G36* +X258442Y604901D02* +G01* +X314449Y604901D01* +X314449Y432892D01* +X258442Y432892D01* +G37* +G36* +X288439Y578916D02* +G01* +X340433Y578916D01* +X340433Y431927D01* +X288439Y431927D01* +G37* +G36* +X288439Y521233D02* +G01* +X357680Y521233D01* +X357680Y431901D01* +X288439Y431901D01* +G37* +G36* +X-263578Y702919D02* +G01* +X-6581Y702919D01* +X-6581Y215925D01* +X-263578Y215925D01* +G37* +G36* +X-215572Y245897D02* +G01* +X-79580Y245897D01* +X-79580Y146888D01* +X-215572Y146888D01* +G37* +G36* +X-173560Y184912D02* +G01* +X-101551Y184912D01* +X-101551Y100838D01* +X-173560Y100838D01* +G37* +G36* +X4430417Y295503D02* +G01* +X4908420Y295503D01* +X4908420Y223342D01* +X4430417Y223342D01* +G37* +G36* +X4398439Y345922D02* +G01* +X4480430Y345922D01* +X4480430Y293928D01* +X4398439Y293928D01* +G37* +G36* +X5654443Y6864908D02* +G01* +X5873417Y6864908D01* +X5873417Y6787895D01* +X5654443Y6787895D01* +G37* +G36* +X6257439Y6852894D02* +G01* +X6258430Y6852894D01* +X6258430Y6850913D01* +X6257439Y6850913D01* +G37* +G36* +X6247432Y7182891D02* +G01* +X6412430Y7182891D01* +X6412430Y6852894D01* +X6247432Y6852894D01* +G37* +D55* +G01* +X6982152Y6992950D03* +G01* +X6982152Y6738950D03* +G01* +X7744152Y6992950D03* +D56* +G01* +X7998152Y6738950D03* +G01* +X7744152Y6738950D03* +G01* +X7490152Y6738950D03* +D57* +G01* +X7998152Y6992950D03* +D56* +G01* +X7490152Y6992950D03* +G01* +X7236152Y6738950D03* +G01* +X7236152Y6992950D03* +D12* +G01* +X-123675Y5972175D03* +G01* +X587524Y5972175D03* +D58* +G01* +X54124Y391795D03* +G01* +X11252984Y398145D03* +G01* +X11249174Y7108825D03* +G01* +X40154Y7085964D03* +D59* +G01* +X5240169Y7085964D03* +D60* +G01* +X5494169Y7085964D03* +G01* +X4986169Y7085964D03* +D56* +G01* +X1303195Y1578787D03* +G01* +X1557195Y1578787D03* +D59* +G01* +X5242125Y391795D03* +D60* +G01* +X5496125Y391795D03* +G01* +X4988125Y391795D03* +D61* +G01* +X1129078Y4394733D03* +G01* +X2126104Y5373370D03* +G01* +X2420236Y4413122D03* +G01* +X1404846Y2143302D03* +G01* +X1654451Y3647312D03* +G01* +X2401872Y3121939D03* +G01* +X3276546Y2985465D03* +D62* +G01* +X3374641Y6888962D03* +G01* +X3374641Y6762953D03* +G01* +X3249622Y6888962D03* +G01* +X3249622Y6763969D03* +D63* +G01* +X50314Y614045D03* +G01* +X207794Y549275D03* +G01* +X-104625Y550545D03* +G01* +X-175745Y387985D03* +G01* +X270024Y393064D03* +G01* +X-104625Y240664D03* +G01* +X50314Y174625D03* +G01* +X206524Y239395D03* +G01* +X11249174Y620395D03* +G01* +X11406654Y555625D03* +G01* +X11094234Y556895D03* +G01* +X11023114Y394335D03* +G01* +X11468884Y399414D03* +G01* +X11094234Y247014D03* +G01* +X11249174Y180975D03* +G01* +X11405384Y245745D03* +G01* +X11245364Y7331075D03* +G01* +X11402844Y7266304D03* +G01* +X11090424Y7267575D03* +G01* +X11019304Y7105014D03* +G01* +X11465074Y7110095D03* +G01* +X11090424Y6957695D03* +G01* +X11245364Y6891654D03* +G01* +X11401574Y6956425D03* +G01* +X36344Y7308214D03* +G01* +X193824Y7243445D03* +G01* +X-118595Y7244714D03* +G01* +X-189715Y7082154D03* +G01* +X256054Y7087235D03* +G01* +X-118595Y6934835D03* +G01* +X36344Y6868795D03* +G01* +X192554Y6933564D03* +D60* +G01* +X1447264Y4076547D03* +G01* +X2083661Y3440150D03* +D62* +G01* +X4318200Y7317968D03* +G01* +X5728967Y6387922D03* +G01* +X5563867Y6387922D03* +G01* +X5411467Y6387922D03* +G01* +X2354145Y5603951D03* +G01* +X-71554Y898905D03* +G01* +X4069433Y5433923D03* +G01* +X3918430Y5433923D03* +G01* +X3768443Y5433923D03* +G01* +X3619446Y5433923D03* +G01* +X3468443Y5433923D03* +G01* +X3318431Y5433923D03* +G01* +X3169434Y5433923D03* +G01* +X3018431Y5433923D03* +G01* +X2868444Y5433923D03* +G01* +X4069433Y5765901D03* +G01* +X3918430Y5765901D03* +G01* +X3768443Y5765901D03* +G01* +X3619446Y5765901D03* +G01* +X3468443Y5765901D03* +G01* +X3318431Y5765901D03* +G01* +X3169434Y5765901D03* +G01* +X3018431Y5765901D03* +G01* +X2868444Y5765901D03* +G01* +X2719448Y5765901D03* +G01* +X2568445Y5765901D03* +G01* +X2418433Y5765901D03* +G01* +X-260428Y4535220D03* +D16* +G01* +X1477413Y4606925D03* +D17* +G01* +X948433Y4572914D03* +D62* +G01* +X326412Y5479922D03* +G01* +X82572Y5207228D03* +G01* +X137411Y5175910D03* +G01* +X139418Y5234914D03* +G01* +X139418Y5234914D03* +G01* +X367433Y5094909D03* +G01* +X447418Y5094909D03* +G01* +X447418Y5181904D03* +G01* +X367433Y5181904D03* +G01* +X79423Y5336920D03* +G01* +X80413Y5416905D03* +G01* +X11538430Y1254912D03* +G01* +X11538430Y1414906D03* +G01* +X11538430Y1556918D03* +G01* +X9138434Y2232913D03* +G01* +X9288421Y2232913D03* +G01* +X9438434Y2232913D03* +G01* +X9588421Y2232913D03* +G01* +X9738433Y2232913D03* +G01* +X8208439Y2618917D03* +G01* +X8208439Y2715895D03* +G01* +X8652126Y1643964D03* +D64* +G01* +X6991372Y5923965D03* +G01* +X8637496Y5923965D03* +D62* +G01* +X7613444Y5822899D03* +G01* +X6938439Y5822899D03* +G01* +X6885429Y5627903D03* +G01* +X5989495Y4398822D03* +G01* +X8197161Y5696965D03* +G01* +X7094420Y5694908D03* +G01* +X6083653Y4327067D03* +G01* +X7877121Y5613907D03* +G01* +X7125434Y5613907D03* +G01* +X6540421Y6695922D03* +G01* +X2284422Y6912889D03* +G01* +X2285438Y7002906D03* +G01* +X2478453Y6928916D03* +G01* +X4128437Y6382918D03* +G01* +X4128437Y6474917D03* +G01* +X1759430Y6903923D03* +G01* +X1678429Y6903923D03* +G01* +X2195446Y6072911D03* +G01* +X2260445Y6159906D03* +G01* +X3348428Y6255918D03* +G01* +X3288433Y6316903D03* +G01* +X2268446Y4846904D03* +G01* +X2268446Y4948910D03* +G01* +X2268446Y5046903D03* +G01* +X1978124Y5079796D03* +G01* +X2055136Y5158790D03* +G01* +X1907131Y4999786D03* +G01* +X5328434Y7346924D03* +G01* +X5178422Y7346924D03* +G01* +X5478421Y7346924D03* +G01* +X4428436Y7346924D03* +G01* +X5628434Y7346924D03* +G01* +X5028435Y7346924D03* +G01* +X4878423Y7346924D03* +G01* +X5778421Y7346924D03* +G01* +X2188156Y7434961D03* +G01* +X2338169Y7434961D03* +G01* +X6444968Y6634022D03* +D13* +G01* +X3326152Y6456959D03* +D62* +G01* +X4796152Y7181951D03* +G01* +X2846169Y6725970D03* +G01* +X2917162Y6645960D03* +G01* +X3390160Y7182891D03* +G01* +X3992166Y6988962D03* +G01* +X3992928Y6195415D03* +G01* +X4797041Y6506845D03* +G01* +X2318153Y6822947D03* +G01* +X923566Y5701233D03* +G01* +X2265169Y7178954D03* +G01* +X962174Y6509969D03* +G01* +X3574158Y7248956D03* +G01* +X957171Y5985967D03* +G01* +X4391174Y6099403D03* +G01* +X4555157Y6731965D03* +G01* +X4641161Y6601968D03* +G01* +X4721171Y4189958D03* +G01* +X4721171Y6856958D03* +G01* +X4469152Y6984949D03* +G01* +X4097169Y6984949D03* +G01* +X4099176Y6782968D03* +G01* +X2517137Y2606802D03* +G01* +X3119142Y3144799D03* +G01* +X3027144Y3032785D03* +G01* +X2426129Y2527782D03* +G01* +X3339132Y2575788D03* +G01* +X3340122Y2442794D03* +G01* +X3191126Y2579801D03* +G01* +X3339132Y2729788D03* +G01* +X3208144Y3234791D03* +G01* +X4968440Y1136802D03* +G01* +X4818428Y1135786D03* +G01* +X4668441Y1134795D03* +G01* +X4518428Y1135786D03* +G01* +X4368441Y1134795D03* +G01* +X11538430Y1696923D03* +G01* +X11538430Y1816912D03* +G01* +X11536423Y1932914D03* +G01* +X11538430Y2065909D03* +G01* +X11521437Y822909D03* +G01* +X11520421Y672922D03* +G01* +X10938431Y123901D03* +G01* +X10788418Y124917D03* +G01* +X10638431Y125907D03* +G01* +X10488419Y124917D03* +G01* +X10338432Y124917D03* +G01* +X10188420Y123901D03* +G01* +X10038433Y122910D03* +G01* +X9888420Y123901D03* +G01* +X9738433Y123901D03* +G01* +X9588421Y122910D03* +G01* +X9438434Y122910D03* +G01* +X9288421Y122910D03* +G01* +X9138434Y122910D03* +G01* +X8988422Y122910D03* +G01* +X8838435Y122910D03* +G01* +X8688423Y121920D03* +G01* +X78458Y799922D03* +G01* +X228445Y687908D03* +G01* +X348434Y572896D03* +G01* +X-259565Y882903D03* +G01* +X-261571Y1032916D03* +G01* +X-261571Y1182903D03* +G01* +X-261571Y1332915D03* +G01* +X-261571Y1482902D03* +G01* +X-261571Y1632915D03* +G01* +X-81561Y6552895D03* +G01* +X-231574Y6552895D03* +G01* +X7608440Y7348448D03* +G01* +X7327160Y7345959D03* +G01* +X7128431Y7347458D03* +G01* +X6828431Y7348448D03* +G01* +X7458428Y2036851D03* +G01* +X7458428Y2165832D03* +G01* +X7458428Y2271852D03* +G01* +X8148419Y4447844D03* +G01* +X7436533Y2987852D03* +G01* +X7253526Y2982848D03* +G01* +X7063534Y2980842D03* +G01* +X7755531Y3965854D03* +G01* +X6933537Y3985844D03* +G01* +X7414536Y3930853D03* +G01* +X7414536Y4027855D03* +G01* +X7434526Y3392855D03* +G01* +X7433536Y3578834D03* +G01* +X7255532Y3576853D03* +G01* +X7254542Y3394837D03* +G01* +X7065540Y3393846D03* +G01* +X7068538Y3576853D03* +G01* +X9888420Y2232913D03* +G01* +X10038433Y2232913D03* +G01* +X10188420Y2232913D03* +G01* +X10338432Y2232913D03* +G01* +X10488419Y2232913D03* +G01* +X6678444Y2016836D03* +G01* +X6678444Y2104847D03* +G01* +X6678444Y2195855D03* +G01* +X6678444Y2280843D03* +G01* +X7212124Y2419781D03* +G01* +X7212124Y2507792D03* +G01* +X8353524Y4524857D03* +G01* +X7954439Y4961915D03* +G01* +X11538430Y2232913D03* +G01* +X11388443Y2232913D03* +G01* +X11238430Y2232913D03* +G01* +X11088443Y2232913D03* +G01* +X10938431Y2232913D03* +G01* +X10788444Y2232913D03* +G01* +X10638431Y2232913D03* +G01* +X158442Y6552895D03* +G01* +X328444Y6552895D03* +G01* +X498421Y6552895D03* +G01* +X638426Y6792899D03* +G01* +X638426Y6672910D03* +G01* +X638426Y6552895D03* +G01* +X-231574Y6702907D03* +G01* +X-81561Y6702907D03* +G01* +X138452Y6742912D03* +G01* +X318437Y6842912D03* +G01* +X418437Y7002906D03* +G01* +X438452Y7162901D03* +G01* +X-261571Y3282899D03* +G01* +X-261571Y3132912D03* +G01* +X-261571Y2982899D03* +G01* +X-261571Y2832912D03* +G01* +X-261571Y2682900D03* +G01* +X-261571Y2532913D03* +G01* +X-261571Y2382901D03* +G01* +X-261571Y2232913D03* +G01* +X-261571Y2082901D03* +G01* +X-261571Y1932914D03* +G01* +X-261571Y1782902D03* +G01* +X-251564Y752906D03* +G01* +X-251564Y622909D03* +G01* +X468449Y462914D03* +G01* +X558441Y362915D03* +G01* +X648434Y272922D03* +G01* +X738451Y182905D03* +G01* +X288439Y82905D03* +G01* +X438452Y82905D03* +G01* +X588439Y82905D03* +G01* +X738451Y82905D03* +G01* +X888438Y82905D03* +G01* +X1038451Y82905D03* +G01* +X1188438Y82905D03* +G01* +X1338450Y82905D03* +G01* +X1488437Y82905D03* +G01* +X1638449Y82905D03* +G01* +X1788436Y82905D03* +G01* +X1938449Y82905D03* +G01* +X2088436Y82905D03* +G01* +X2238448Y82905D03* +G01* +X2388435Y82905D03* +G01* +X2538448Y82905D03* +G01* +X2688435Y82905D03* +G01* +X2838447Y82905D03* +G01* +X2988434Y82905D03* +G01* +X3138446Y82905D03* +G01* +X3288433Y82905D03* +G01* +X3438446Y82905D03* +G01* +X3588433Y82905D03* +G01* +X3738445Y82905D03* +G01* +X3888432Y82905D03* +G01* +X4038445Y82905D03* +G01* +X4188432Y82905D03* +G01* +X4338444Y82905D03* +G01* +X4488431Y82905D03* +G01* +X4638443Y82905D03* +G01* +X4788430Y82905D03* +G01* +X4938443Y82905D03* +G01* +X5088430Y82905D03* +G01* +X5238442Y82905D03* +G01* +X5388429Y82905D03* +G01* +X5538442Y82905D03* +G01* +X5688429Y82905D03* +G01* +X5838441Y82905D03* +G01* +X5988428Y82905D03* +G01* +X6138440Y82905D03* +G01* +X6288427Y82905D03* +G01* +X6438440Y82905D03* +G01* +X6588427Y82905D03* +G01* +X6738439Y82905D03* +G01* +X6889137Y82905D03* +G01* +X7039124Y82905D03* +G01* +X7189137Y82905D03* +G01* +X7339124Y82905D03* +G01* +X7489136Y82905D03* +G01* +X7643136Y82778D03* +G01* +X7800159Y83972D03* +G01* +X7938437Y122910D03* +G01* +X8088424Y122910D03* +G01* +X8238436Y122910D03* +G01* +X8388423Y122910D03* +G01* +X8538436Y122910D03* +G01* +X438172Y7434961D03* +G01* +X588159Y7434961D03* +G01* +X738172Y7434961D03* +G01* +X888159Y7434961D03* +G01* +X1438170Y7434961D03* +G01* +X1588157Y7434961D03* +G01* +X1738170Y7434961D03* +G01* +X2038169Y7434961D03* +G01* +X1888157Y7434961D03* +G01* +X2488156Y7434961D03* +G01* +X2646169Y7432954D03* +G01* +X2792168Y7431963D03* +G01* +X2916171Y7433970D03* +G01* +X3088154Y7434961D03* +G01* +X3238167Y7434961D03* +G01* +X3388154Y7434961D03* +G01* +X3538166Y7434961D03* +G01* +X3688153Y7434961D03* +G01* +X3838166Y7434961D03* +G01* +X3988153Y7434961D03* +G01* +X4138165Y7434961D03* +G01* +X4578423Y7346924D03* +G01* +X4728436Y7346924D03* +G01* +X5928433Y7346924D03* +G01* +X6078446Y7347458D03* +G01* +X6228433Y7347458D03* +G01* +X6378445Y7347458D03* +G01* +X6528432Y7347458D03* +G01* +X6678444Y7347458D03* +G01* +X7860154Y7350963D03* +G01* +X8118421Y7347458D03* +G01* +X8268434Y7347458D03* +G01* +X8448418Y7347458D03* +G01* +X8598430Y7347458D03* +G01* +X8748417Y7347458D03* +G01* +X8898430Y7347458D03* +G01* +X9048417Y7347458D03* +G01* +X9198429Y7347458D03* +G01* +X9348416Y7347458D03* +G01* +X9498429Y7347458D03* +G01* +X9648416Y7347458D03* +G01* +X9798428Y7347458D03* +G01* +X9948415Y7347458D03* +G01* +X10098427Y7347458D03* +G01* +X10248414Y7347458D03* +G01* +X10398427Y7347458D03* +G01* +X10548414Y7347458D03* +G01* +X10698426Y7347458D03* +G01* +X10848413Y7347458D03* +G01* +X2760139Y1926844D03* +G01* +X2381272Y2008073D03* +G01* +X2889018Y2224938D03* +D64* +G01* +X401139Y1896795D03* +D65* +G01* +X8257131Y880795D03* +D62* +G01* +X2632123Y2152827D03* +G01* +X1745180Y481787D03* +G01* +X8585172Y1734972D03* +G01* +X7764802Y882827D03* +G01* +X3498288Y568325D03* +G01* +X7667292Y1517319D03* +G01* +X3398288Y1517319D03* +G01* +X6866303Y762330D03* +G01* +X6866303Y445312D03* +G01* +X6359522Y1580845D03* +G01* +X3653304Y1581327D03* +G01* +X6301534Y1653844D03* +G01* +X3144288Y1530324D03* +G01* +X6213523Y790854D03* +G01* +X3233290Y578332D03* +G01* +X6127010Y843330D03* +G01* +X1470301Y562330D03* +G01* +X6067600Y1443329D03* +G01* +X1472283Y1443329D03* +G01* +X5974128Y1377797D03* +G01* +X1201290Y1439316D03* +G01* +X-171833Y5810961D03* +G01* +X6164425Y4256912D03* +G01* +X5744537Y3016834D03* +G01* +X4761532Y3937838D03* +G01* +X5881443Y4489907D03* +G01* +X5744537Y2761843D03* +G01* +X4761532Y4092854D03* +G01* +X6919541Y4631842D03* +G01* +X7713545Y4632832D03* +G01* +X7651544Y4702835D03* +G01* +X6849539Y4703851D03* +G01* +X7586545Y4768850D03* +G01* +X6774533Y4768850D03* +G01* +X7515527Y4838852D03* +G01* +X6716544Y4838852D03* +G01* +X457426Y4553838D03* +G01* +X7806535Y4586833D03* +G01* +X4792418Y3173729D03* +G01* +X4787922Y2158237D03* +G01* +X4789269Y2412111D03* +G01* +X4789523Y2919856D03* +G01* +X4789675Y2665984D03* +G01* +X6079436Y5135905D03* +G01* +X5855535Y2412847D03* +G01* +X6830438Y5201894D03* +G01* +X5962444Y5267909D03* +G01* +X5826427Y5332907D03* +G01* +X9823269Y6030595D03* +G01* +X9822126Y6140450D03* +G01* +X9822533Y6248857D03* +G01* +X9200791Y6030595D03* +G01* +X5835926Y2158237D03* +G01* +X9195534Y6138849D03* +G01* +X9195534Y6248857D03* +G01* +X6359420Y5549900D03* +G01* +X6006437Y5407913D03* +G01* +X7216442Y5479897D03* +D16* +G01* +X1480411Y6408216D03* +D64* +G01* +X2127399Y1828850D03* +D62* +G01* +X8356292Y2908096D03* +G01* +X8353168Y1828952D03* +G01* +X7314791Y2444800D03* +G01* +X4813145Y1828850D03* +G01* +X9112653Y5923965D03* +G01* +X7879128Y1994788D03* +D66* +G01* +X2826128Y4818989D03* +D67* +G01* +X704796Y4818989D03* +D66* +G01* +X2826128Y2697683D03* +D62* +G01* +X2161131Y4076801D03* +G01* +X4032425Y3132912D03* +G01* +X4034431Y2982899D03* +G01* +X4034431Y2832912D03* +G01* +X4038445Y2672918D03* +G01* +X4038445Y2510917D03* +G01* +X-261571Y3432911D03* +G01* +X-261571Y3582898D03* +G01* +X-261571Y3782898D03* +G01* +X-261571Y3932910D03* +G01* +X2088436Y5973902D03* +G01* +X1998444Y5874918D03* +G01* +X1902432Y5772912D03* +G01* +X2508450Y6213906D03* +G01* +X2489426Y6072911D03* +G01* +X2388435Y5961913D03* +G01* +X2263442Y5862904D03* +G01* +X2148431Y5762904D03* +D16* +G01* +X10112169Y543966D03* +G01* +X9096169Y659968D03* +G01* +X9986159Y659968D03* +G01* +X8963174Y545947D03* +D62* +G01* +X9096169Y1543964D03* +G01* +X9096169Y1828952D03* +G01* +X9604169Y1070965D03* +G01* +X9345165Y1563954D03* +G01* +X-251437Y5112232D03* +G01* +X-259438Y4604232D03* +G01* +X-270436Y5036235D03* +G01* +X429562Y5672226D03* +G01* +X-111432Y4804232D03* +M02* diff --git a/hardware/portapack_h4m/h4-gerbers/Gerber_TopPasteMaskLayer.GTP b/hardware/portapack_h4m/h4-gerbers/Gerber_TopPasteMaskLayer.GTP new file mode 100644 index 000000000..887d7b21c --- /dev/null +++ b/hardware/portapack_h4m/h4-gerbers/Gerber_TopPasteMaskLayer.GTP @@ -0,0 +1,1072 @@ +G04 Layer: TopPasteMaskLayer* +G04 EasyEDA v6.5.46, 2025-01-01 16:01:39* +G04 1acd7fc2553046b79c71bda98b4923fc,10* +G04 Gerber Generator version 0.2* +G04 Scale: 100 percent, Rotated: No, Reflected: No * +G04 Dimensions in millimeters * +G04 leading zeros omitted , absolute positions ,4 integer and 5 decimal * +%FSLAX45Y45*% +%MOMM*% + +%ADD10C,0.8000*% +%ADD11C,1.0000*% +%ADD12R,0.9000X1.1000*% +%ADD13R,0.7000X2.0000*% +%ADD14R,0.6850X0.2000*% +%ADD15R,1.3000X1.4000*% +%ADD16R,3.0000X3.0000*% +%ADD17R,1.0000X0.2800*% +%ADD18R,0.0155X0.2800*% +%ADD19R,0.2800X1.0000*% +%ADD20R,0.6000X0.5000*% +%ADD21R,1.5000X1.2000*% +%ADD22R,1.5000X0.7000*% +%ADD23R,1.4500X1.7500*% +%ADD24R,2.3000X1.3000*% +%ADD25R,1.6000X0.2700*% +%ADD26R,0.2700X1.6000*% +%ADD27R,1.0842X1.1842*% +%ADD28O,0.6096X2.032*% +%ADD29R,1.5240X1.2000*% +%ADD30R,0.5000X0.6000*% +%ADD31R,0.9144X1.2700*% +%ADD32O,3.4999676X1.1999976*% +%ADD33R,4.0000X1.2000*% +%ADD34R,1.5000X2.5000*% +%ADD35R,0.7000X1.6000*% +%ADD36R,1.1000X0.9000*% +%ADD37R,1.2000X1.5240*% +%ADD38R,2.2000X2.5000*% +%ADD39R,1.6000X2.5000*% +%ADD40R,3.2000X1.0000*% +%ADD41R,1.0000X3.2000*% +%ADD42O,1.2500102X0.2999994*% +%ADD43O,2.999994X1.9999959999999999*% +%ADD44R,3.2000X4.2000*% +%ADD45R,0.7000X0.2500*% +%ADD46R,0.2500X0.7000*% +%ADD47R,1.6000X1.6000*% +%ADD48R,0.7000X0.7000*% + +%LPD*% +D10* +G01* +X7879433Y2227910D03* +G01* +X7956420Y2308910D03* +G01* +X8039427Y2398903D03* +D11* +G01* +X972538Y372922D03* +G01* +X603171Y7093965D03* +G01* +X10676176Y6876795D03* +G01* +X10604522Y740841D03* +G01* +X6964804Y2299792D03* +G01* +X7614790Y2183104D03* +D12* +G01* +X3724069Y7318959D03* +G01* +X3724069Y7142962D03* +D13* +G01* +X10112169Y1322959D03* +G01* +X10112169Y872972D03* +G01* +X9858169Y1322959D03* +G01* +X9858169Y872972D03* +G01* +X9604169Y1322959D03* +G01* +X9604169Y872972D03* +G01* +X9350169Y1322959D03* +G01* +X9350169Y872972D03* +G01* +X9096169Y1322959D03* +G01* +X9096169Y872972D03* +G01* +X8842169Y1322959D03* +G01* +X8842169Y872972D03* +D14* +G01* +X6261173Y6574891D03* +G01* +X6261173Y6614896D03* +G01* +X6261173Y6654901D03* +G01* +X6261173Y6694906D03* +G01* +X6261173Y6734911D03* +G01* +X6017689Y6734911D03* +G01* +X6017689Y6694906D03* +G01* +X6017689Y6654901D03* +G01* +X6017689Y6614896D03* +G01* +X6017689Y6574891D03* +D15* +G01* +X6139431Y6654901D03* +D16* +G01* +X3315637Y6825970D03* +D17* +G01* +X3065625Y6675958D03* +G01* +X3065625Y6725970D03* +G01* +X3065625Y6775958D03* +G01* +X3065625Y6975957D03* +G01* +X3065625Y6925970D03* +G01* +X3065625Y6875957D03* +G01* +X3065625Y6825970D03* +G01* +X3565624Y6675958D03* +G01* +X3565624Y6725970D03* +G01* +X3565624Y6775958D03* +G01* +X3565624Y6975957D03* +G01* +X3565624Y6925970D03* +G01* +X3565624Y6875957D03* +G01* +X3565624Y6825970D03* +D19* +G01* +X3165624Y7075957D03* +G01* +X3215637Y7075957D03* +G01* +X3265624Y7075957D03* +G01* +X3465624Y7075957D03* +G01* +X3415637Y7075957D03* +G01* +X3365624Y7075957D03* +G01* +X3315637Y7075957D03* +G01* +X3165624Y6575958D03* +G01* +X3215637Y6575958D03* +G01* +X3265624Y6575958D03* +G01* +X3465624Y6575958D03* +G01* +X3415637Y6575958D03* +G01* +X3365624Y6575958D03* +G01* +X3315637Y6575958D03* +D20* +G01* +X116558Y5085943D03* +G01* +X116558Y4994503D03* +D21* +G01* +X10060937Y5250814D03* +D22* +G01* +X9999977Y5920739D03* +G01* +X9999977Y5810885D03* +G01* +X9999977Y5701029D03* +G01* +X9999977Y5591175D03* +G01* +X9999977Y5481320D03* +G01* +X9999977Y5371464D03* +G01* +X9999977Y6250304D03* +G01* +X9999977Y6140450D03* +G01* +X9999977Y6030595D03* +D23* +G01* +X10058397Y6720204D03* +D24* +G01* +X11018517Y6810375D03* +G01* +X11023597Y5252085D03* +D25* +G01* +X6503794Y3342817D03* +G01* +X6503794Y3392830D03* +G01* +X6503794Y3442817D03* +G01* +X6503794Y3492830D03* +G01* +X6503794Y3542817D03* +G01* +X6503794Y3592829D03* +G01* +X6503794Y3642817D03* +G01* +X6503794Y3692829D03* +G01* +X6503794Y3742817D03* +G01* +X6503794Y3792829D03* +G01* +X6503794Y3842816D03* +G01* +X6503794Y3892829D03* +G01* +X6503794Y3942816D03* +G01* +X6503794Y3992829D03* +G01* +X6503794Y4042816D03* +G01* +X6503794Y4092828D03* +D26* +G01* +X7514790Y4301820D03* +G01* +X7464803Y4301820D03* +G01* +X7414790Y4301820D03* +G01* +X7364803Y4301820D03* +G01* +X7314791Y4301820D03* +G01* +X7264803Y4301820D03* +G01* +X7214791Y4301820D03* +G01* +X7164804Y4301820D03* +G01* +X7114791Y4301820D03* +G01* +X7064804Y4301820D03* +G01* +X7014791Y4301820D03* +G01* +X6964804Y4301820D03* +G01* +X6914791Y4301820D03* +G01* +X6864804Y4301820D03* +G01* +X6814792Y4301820D03* +G01* +X6764804Y4301820D03* +G01* +X6714792Y2682824D03* +G01* +X6764804Y2682824D03* +G01* +X6814792Y2682824D03* +G01* +X6864804Y2682824D03* +G01* +X6914791Y2682824D03* +G01* +X6964804Y2682824D03* +G01* +X7014791Y2682824D03* +G01* +X7064804Y2682824D03* +G01* +X7114791Y2682824D03* +G01* +X7164804Y2682824D03* +G01* +X7214791Y2682824D03* +G01* +X7264803Y2682824D03* +G01* +X7314791Y2682824D03* +G01* +X7364803Y2682824D03* +G01* +X7414790Y2682824D03* +G01* +X7464803Y2682824D03* +D25* +G01* +X6503794Y2892831D03* +D26* +G01* +X7564803Y4301820D03* +G01* +X7614790Y4301820D03* +G01* +X7664803Y4301820D03* +G01* +X7714790Y4301820D03* +G01* +X7764802Y4301820D03* +G01* +X7814790Y4301820D03* +G01* +X7864802Y4301820D03* +G01* +X7914789Y4301820D03* +G01* +X6714792Y4301820D03* +D25* +G01* +X6503794Y2942818D03* +G01* +X6503794Y2992831D03* +G01* +X6503794Y3042818D03* +G01* +X6503794Y3092830D03* +G01* +X6503794Y3142818D03* +G01* +X6503794Y3192830D03* +G01* +X6503794Y3242818D03* +G01* +X6503794Y3292830D03* +D26* +G01* +X7864802Y2682824D03* +G01* +X7814790Y2682824D03* +G01* +X7764802Y2682824D03* +G01* +X7714790Y2682824D03* +G01* +X7664803Y2682824D03* +G01* +X7614790Y2682824D03* +G01* +X7564803Y2682824D03* +G01* +X7514790Y2682824D03* +G01* +X7914789Y2682824D03* +D25* +G01* +X8124797Y3142818D03* +G01* +X8124797Y3092830D03* +G01* +X8124797Y3042818D03* +G01* +X8124797Y2992831D03* +G01* +X8124797Y2942818D03* +G01* +X8124797Y2892831D03* +G01* +X8124797Y3192830D03* +G01* +X8124797Y3492830D03* +G01* +X8124797Y3442817D03* +G01* +X8124797Y3392830D03* +G01* +X8124797Y3342817D03* +G01* +X8124797Y3292830D03* +G01* +X8124797Y3242818D03* +G01* +X8124797Y3542817D03* +G01* +X8124797Y3842816D03* +G01* +X8124797Y3792829D03* +G01* +X8124797Y3742817D03* +G01* +X8124797Y3692829D03* +G01* +X8124797Y3642817D03* +G01* +X8124797Y3592829D03* +G01* +X8124797Y3892829D03* +G01* +X8124797Y4092828D03* +G01* +X8124797Y4042816D03* +G01* +X8124797Y3992829D03* +G01* +X8124797Y3942816D03* +D20* +G01* +X5791451Y6796633D03* +G01* +X5791451Y6705193D03* +D27* +G01* +X403527Y1401063D03* +G01* +X592757Y1158494D03* +G01* +X592757Y1401063D03* +G01* +X403527Y1158494D03* +D28* +G01* +X1795675Y6514566D03* +G01* +X1922675Y7073366D03* +G01* +X1795675Y7073366D03* +G01* +X2176675Y7073366D03* +G01* +X2176675Y6514566D03* +G01* +X1922675Y6514566D03* +G01* +X2049675Y6514566D03* +G01* +X2049675Y7073366D03* +D29* +G01* +X6034427Y7024903D03* +G01* +X6263027Y7024903D03* +D20* +G01* +X556435Y5517642D03* +G01* +X556409Y5426202D03* +G01* +X429435Y5432196D03* +G01* +X429435Y5523636D03* +G01* +X2758158Y7218248D03* +G01* +X2758158Y7309688D03* +D30* +G01* +X9419790Y5795949D03* +G01* +X9511230Y5795949D03* +G01* +X9510240Y5923965D03* +G01* +X9418800Y5923965D03* +G01* +X2716883Y6864959D03* +G01* +X2625443Y6864959D03* +D20* +G01* +X3164151Y6396685D03* +G01* +X3164151Y6305245D03* +D30* +G01* +X4275452Y6984949D03* +G01* +X4366892Y6984949D03* +G01* +X4366892Y6730949D03* +G01* +X4275452Y6730949D03* +G01* +X4367883Y6602958D03* +G01* +X4276443Y6602958D03* +D20* +G01* +X1036419Y6399631D03* +G01* +X1036419Y6308191D03* +G01* +X1036419Y6079185D03* +G01* +X1036419Y6170625D03* +G01* +X2634155Y7305675D03* +G01* +X2634155Y7214235D03* +G01* +X2378174Y7304684D03* +G01* +X2378174Y7213244D03* +G01* +X2478173Y6514236D03* +G01* +X2478173Y6605676D03* +G01* +X2353155Y6512229D03* +G01* +X2353155Y6603669D03* +D30* +G01* +X4275452Y6856958D03* +G01* +X4366892Y6856958D03* +G01* +X8331248Y4370857D03* +G01* +X8239808Y4370857D03* +D20* +G01* +X8356292Y3113049D03* +G01* +X8356292Y3021609D03* +D30* +G01* +X8499574Y2197328D03* +G01* +X8591014Y2197328D03* +G01* +X8324009Y2191334D03* +G01* +X8232569Y2191334D03* +D20* +G01* +X196136Y1307058D03* +G01* +X196136Y1398498D03* +D12* +G01* +X1075535Y1872843D03* +G01* +X1075535Y2048840D03* +D20* +G01* +X590141Y787501D03* +G01* +X590141Y696061D03* +G01* +X-93830Y3932250D03* +G01* +X-93830Y4023690D03* +D31* +G01* +X8331299Y2372334D03* +G01* +X8427819Y2595524D03* +G01* +X8521799Y2372334D03* +D32* +G01* +X6535163Y6014846D03* +D33* +G01* +X5905167Y5594857D03* +G01* +X5905167Y6234836D03* +D32* +G01* +X6535163Y5814847D03* +D34* +G01* +X1536164Y7085964D03* +G01* +X816175Y7085964D03* +D35* +G01* +X1239669Y7335951D03* +G01* +X1112669Y7335951D03* +D12* +G01* +X-124462Y1978837D03* +G01* +X-124462Y2154834D03* +D36* +G01* +X7396528Y4961839D03* +G01* +X7220531Y4961839D03* +D20* +G01* +X7169122Y2308504D03* +G01* +X7169122Y2217064D03* +D30* +G01* +X8242881Y1828952D03* +G01* +X8151441Y1828952D03* +G01* +X7319820Y4769840D03* +G01* +X7411260Y4769840D03* +D36* +G01* +X4295162Y6417970D03* +G01* +X4471159Y6417970D03* +D37* +G01* +X5027165Y1548968D03* +G01* +X5027165Y1320368D03* +D20* +G01* +X3467173Y6304229D03* +G01* +X3467173Y6395669D03* +D37* +G01* +X995423Y5468518D03* +G01* +X995423Y5239918D03* +G01* +X-81434Y4966639D03* +G01* +X-81434Y5195239D03* +D36* +G01* +X9329493Y6286779D03* +G01* +X9505490Y6286779D03* +D30* +G01* +X9508208Y6061786D03* +G01* +X9416768Y6061786D03* +D20* +G01* +X2885158Y7309688D03* +G01* +X2885158Y7218248D03* +D36* +G01* +X3030166Y7290968D03* +G01* +X3206163Y7290968D03* +D30* +G01* +X3361712Y7332903D03* +G01* +X3453152Y7332903D03* +D12* +G01* +X3939969Y7318959D03* +G01* +X3939969Y7142962D03* +G01* +X4157266Y7316952D03* +G01* +X4157266Y7140955D03* +D20* +G01* +X1180411Y6395643D03* +G01* +X1180411Y6304203D03* +G01* +X1181427Y6084188D03* +G01* +X1181427Y6175628D03* +G01* +X2506164Y7213244D03* +G01* +X2506164Y7304684D03* +G01* +X2482161Y6731228D03* +G01* +X2482161Y6822668D03* +D30* +G01* +X2014877Y6310960D03* +G01* +X1923437Y6310960D03* +G01* +X2049879Y7259954D03* +G01* +X1958439Y7259954D03* +G01* +X960422Y1637792D03* +G01* +X1051862Y1637792D03* +D36* +G01* +X779142Y1634794D03* +G01* +X603145Y1634794D03* +D38* +G01* +X-173205Y5634354D03* +G01* +X-164315Y6303645D03* +D39* +G01* +X167154Y5641975D03* +G01* +X558314Y6320154D03* +G01* +X734844Y5641975D03* +G01* +X788184Y6320154D03* +D40* +G01* +X193824Y1901825D03* +G01* +X746274Y1901825D03* +G01* +X193824Y2155697D03* +G01* +X746274Y2155697D03* +G01* +X193824Y2409570D03* +G01* +X746274Y2409570D03* +G01* +X193824Y2663444D03* +G01* +X746274Y2663444D03* +G01* +X193824Y2917317D03* +G01* +X746274Y2917317D03* +G01* +X193824Y3171189D03* +G01* +X193824Y3425062D03* +G01* +X193824Y3932809D03* +G01* +X193824Y3678936D03* +G01* +X193824Y4186681D03* +G01* +X193824Y4440554D03* +G01* +X746274Y3171189D03* +G01* +X746274Y3425062D03* +G01* +X746274Y3678936D03* +G01* +X746274Y3932809D03* +G01* +X746274Y4186681D03* +G01* +X746274Y4440554D03* +D41* +G01* +X3908574Y1292225D03* +G01* +X3908574Y739775D03* +G01* +X3654701Y739775D03* +G01* +X3654701Y1292225D03* +G01* +X3396764Y739775D03* +G01* +X3142891Y739775D03* +G01* +X2889018Y739775D03* +G01* +X2635145Y739775D03* +G01* +X2381272Y739775D03* +G01* +X2127399Y739775D03* +G01* +X3396764Y1292225D03* +G01* +X3142891Y1292225D03* +G01* +X2635145Y1292225D03* +G01* +X2889018Y1292225D03* +G01* +X2381272Y1292225D03* +G01* +X2127399Y1292225D03* +G01* +X1873526Y739775D03* +G01* +X1873526Y1292225D03* +G01* +X1619653Y739775D03* +G01* +X1619653Y1292225D03* +G01* +X1365780Y739775D03* +G01* +X1365780Y1292225D03* +G01* +X1111907Y739775D03* +G01* +X1111907Y1292225D03* +G01* +X858034Y739775D03* +G01* +X858034Y1292225D03* +D40* +G01* +X5026174Y1904364D03* +G01* +X5578624Y1904364D03* +G01* +X5026174Y2158237D03* +G01* +X5578624Y2158237D03* +G01* +X5026174Y2412111D03* +G01* +X5578624Y2412111D03* +G01* +X5026174Y2665984D03* +G01* +X5578624Y2665984D03* +G01* +X5026174Y2919856D03* +G01* +X5578624Y2919856D03* +G01* +X5026174Y3173729D03* +G01* +X5026174Y3427603D03* +G01* +X5026174Y3935348D03* +G01* +X5026174Y3681476D03* +G01* +X5026174Y4189221D03* +G01* +X5026174Y4443095D03* +G01* +X5578624Y3173729D03* +G01* +X5578624Y3427603D03* +G01* +X5578624Y3681476D03* +G01* +X5578624Y3935348D03* +G01* +X5578624Y4189221D03* +G01* +X5578624Y4443095D03* +D42* +G01* +X8603764Y2790825D03* +G01* +X8603764Y2841040D03* +G01* +X8603764Y2891256D03* +G01* +X8603764Y2941472D03* +G01* +X8603764Y2991688D03* +G01* +X8603764Y3041878D03* +G01* +X8603764Y3092094D03* +G01* +X8603764Y3142310D03* +G01* +X8603764Y3192526D03* +G01* +X8603764Y3242741D03* +G01* +X8603764Y3292957D03* +G01* +X8603764Y3343173D03* +G01* +X8603764Y3393389D03* +G01* +X8603764Y3443604D03* +G01* +X8603764Y3493820D03* +G01* +X8603764Y3544036D03* +G01* +X8603764Y3594252D03* +G01* +X8603764Y3644468D03* +G01* +X8603764Y3694658D03* +G01* +X8603764Y3744874D03* +G01* +X8603764Y3795090D03* +G01* +X8603764Y3845305D03* +G01* +X8603764Y3895521D03* +G01* +X8603764Y3945737D03* +G01* +X8603764Y3995953D03* +G01* +X8603764Y4046169D03* +G01* +X8603764Y4096385D03* +G01* +X8603764Y4146600D03* +G01* +X8603764Y4196816D03* +G01* +X8603764Y4247032D03* +G01* +X8603764Y4297248D03* +G01* +X8603764Y4347438D03* +G01* +X8603764Y4397654D03* +G01* +X8603764Y4447870D03* +G01* +X8603764Y4498086D03* +G01* +X8603764Y4548301D03* +G01* +X8603764Y4598517D03* +G01* +X8603764Y4648733D03* +G01* +X8603764Y4698949D03* +G01* +X8603764Y4749164D03* +D43* +G01* +X8831094Y4902835D03* +G01* +X8837444Y2639695D03* +D20* +G01* +X7315121Y2215057D03* +G01* +X7315146Y2306497D03* +D36* +G01* +X4538418Y505917D03* +G01* +X4714415Y505917D03* +G01* +X5986142Y357784D03* +G01* +X5810145Y357784D03* +D44* +G01* +X8362134Y1314780D03* +G01* +X5482130Y1314780D03* +D45* +G01* +X547418Y5064912D03* +G01* +X547418Y5114925D03* +G01* +X547418Y5164912D03* +G01* +X547418Y5214924D03* +D46* +G01* +X482419Y5279923D03* +G01* +X432432Y5279923D03* +G01* +X382419Y5279923D03* +G01* +X332432Y5279923D03* +D45* +G01* +X267434Y5214924D03* +G01* +X267434Y5164912D03* +G01* +X267434Y5114925D03* +G01* +X267434Y5064912D03* +D46* +G01* +X332432Y4999913D03* +G01* +X382419Y4999913D03* +G01* +X432432Y4999913D03* +G01* +X482419Y4999913D03* +D47* +G01* +X407413Y5139918D03* +D30* +G01* +X1054148Y5032908D03* +G01* +X962708Y5032908D03* +D20* +G01* +X331416Y4802631D03* +G01* +X331416Y4711192D03* +D30* +G01* +X-149151Y4667224D03* +G01* +X-57711Y4667224D03* +G01* +X1046147Y4894910D03* +G01* +X954707Y4894910D03* +G01* +X799132Y5417921D03* +G01* +X707692Y5417921D03* +G01* +X-32870Y5411901D03* +G01* +X-124310Y5411901D03* +D12* +G01* +X-127561Y4233900D03* +G01* +X-127561Y4409922D03* +D20* +G01* +X458416Y4803622D03* +G01* +X458416Y4712182D03* +G01* +X5562419Y6699630D03* +G01* +X5562419Y6608190D03* +D48* +G01* +X-261444Y5368239D03* +G01* +X-261444Y5214569D03* +G01* +X-261444Y4789220D03* +G01* +X-261444Y4942890D03* +M02* diff --git a/hardware/portapack_h4m/h4-gerbers/Gerber_TopSilkscreenLayer.GTO b/hardware/portapack_h4m/h4-gerbers/Gerber_TopSilkscreenLayer.GTO new file mode 100644 index 000000000..95010dd33 --- /dev/null +++ b/hardware/portapack_h4m/h4-gerbers/Gerber_TopSilkscreenLayer.GTO @@ -0,0 +1,2834 @@ +G04 Layer: TopSilkscreenLayer* +G04 EasyEDA v6.5.46, 2025-01-01 16:01:39* +G04 1acd7fc2553046b79c71bda98b4923fc,10* +G04 Gerber Generator version 0.2* +G04 Scale: 100 percent, Rotated: No, Reflected: No * +G04 Dimensions in millimeters * +G04 leading zeros omitted , absolute positions ,4 integer and 5 decimal * +%FSLAX45Y45*% +%MOMM*% + +%ADD10C,0.1200*% +%ADD11C,0.2200*% +%ADD12C,0.2540*% +%ADD13C,0.3048*% +%ADD14C,0.2000*% +%ADD15C,0.0176*% +%ADD16C,0.1524*% +%ADD17C,0.3000*% +%ADD18C,0.1270*% +%ADD19C,0.1000*% + +%LPD*% +D10* +X7027296Y6490492D02* +G01* +X7036440Y6495064D01* +X7045330Y6504208D01* +X7049902Y6513098D01* +X7049902Y6531386D01* +X7045330Y6540530D01* +X7036440Y6549674D01* +X7027296Y6553992D01* +X7013580Y6558564D01* +X6990974Y6558564D01* +X6977258Y6553992D01* +X6968114Y6549674D01* +X6958970Y6540530D01* +X6954398Y6531386D01* +X6954398Y6513098D01* +X6958970Y6504208D01* +X6968114Y6495064D01* +X6977258Y6490492D01* +X6990974Y6490492D01* +X6990974Y6513098D02* +G01* +X6990974Y6490492D01* +X7049902Y6460520D02* +G01* +X6954398Y6460520D01* +X7049902Y6460520D02* +G01* +X6954398Y6396766D01* +X7049902Y6396766D02* +G01* +X6954398Y6396766D01* +X7049902Y6366794D02* +G01* +X6954398Y6366794D01* +X7049902Y6366794D02* +G01* +X7049902Y6335044D01* +X7045330Y6321328D01* +X7036440Y6312184D01* +X7027296Y6307866D01* +X7013580Y6303294D01* +X6990974Y6303294D01* +X6977258Y6307866D01* +X6968114Y6312184D01* +X6958970Y6321328D01* +X6954398Y6335044D01* +X6954398Y6366794D01* +X7304900Y6558546D02* +G01* +X7209396Y6558546D01* +X7304900Y6558546D02* +G01* +X7209396Y6495046D01* +X7304900Y6495046D02* +G01* +X7209396Y6495046D01* +X7282294Y6396748D02* +G01* +X7291438Y6401320D01* +X7300328Y6410464D01* +X7304900Y6419608D01* +X7304900Y6437642D01* +X7300328Y6446786D01* +X7291438Y6455930D01* +X7282294Y6460502D01* +X7268578Y6465074D01* +X7245972Y6465074D01* +X7232256Y6460502D01* +X7223112Y6455930D01* +X7213968Y6446786D01* +X7209396Y6437642D01* +X7209396Y6419608D01* +X7213968Y6410464D01* +X7223112Y6401320D01* +X7232256Y6396748D01* +X7555900Y6558594D02* +G01* +X7460396Y6558594D01* +X7555900Y6558594D02* +G01* +X7460396Y6495094D01* +X7555900Y6495094D02* +G01* +X7460396Y6495094D01* +X7533294Y6396796D02* +G01* +X7542438Y6401368D01* +X7551328Y6410512D01* +X7555900Y6419656D01* +X7555900Y6437690D01* +X7551328Y6446834D01* +X7542438Y6455978D01* +X7533294Y6460550D01* +X7519578Y6465122D01* +X7496972Y6465122D01* +X7483256Y6460550D01* +X7474112Y6455978D01* +X7464968Y6446834D01* +X7460396Y6437690D01* +X7460396Y6419656D01* +X7464968Y6410512D01* +X7474112Y6401368D01* +X7483256Y6396796D01* +X7811950Y6552674D02* +G01* +X7811950Y6502636D01* +X7775628Y6529814D01* +X7775628Y6516098D01* +X7771056Y6507208D01* +X7766484Y6502636D01* +X7752768Y6498064D01* +X7743878Y6498064D01* +X7730162Y6502636D01* +X7721018Y6511780D01* +X7716446Y6525242D01* +X7716446Y6538958D01* +X7721018Y6552674D01* +X7725590Y6556992D01* +X7734734Y6561564D01* +X7739306Y6463520D02* +G01* +X7734734Y6468092D01* +X7730162Y6463520D01* +X7734734Y6458948D01* +X7739306Y6463520D01* +X7811950Y6419832D02* +G01* +X7811950Y6369794D01* +X7775628Y6397226D01* +X7775628Y6383510D01* +X7771056Y6374366D01* +X7766484Y6369794D01* +X7752768Y6365222D01* +X7743878Y6365222D01* +X7730162Y6369794D01* +X7721018Y6378938D01* +X7716446Y6392654D01* +X7716446Y6406116D01* +X7721018Y6419832D01* +X7725590Y6424404D01* +X7734734Y6428976D01* +X7811950Y6335250D02* +G01* +X7716446Y6298928D01* +X7811950Y6262606D02* +G01* +X7716446Y6298928D01* +X8043329Y6492491D02* +G01* +X8052219Y6497063D01* +X8061363Y6506207D01* +X8065935Y6515097D01* +X8065935Y6533385D01* +X8061363Y6542529D01* +X8052219Y6551673D01* +X8043329Y6555991D01* +X8029613Y6560563D01* +X8007007Y6560563D01* +X7993291Y6555991D01* +X7984147Y6551673D01* +X7975003Y6542529D01* +X7970431Y6533385D01* +X7970431Y6515097D01* +X7975003Y6506207D01* +X7984147Y6497063D01* +X7993291Y6492491D01* +X8007007Y6492491D01* +X8007007Y6515097D02* +G01* +X8007007Y6492491D01* +X8065935Y6462519D02* +G01* +X7970431Y6462519D01* +X8065935Y6462519D02* +G01* +X7970431Y6398765D01* +X8065935Y6398765D02* +G01* +X7970431Y6398765D01* +X8065935Y6368793D02* +G01* +X7970431Y6368793D01* +X8065935Y6368793D02* +G01* +X8065935Y6337043D01* +X8061363Y6323327D01* +X8052219Y6314183D01* +X8043329Y6309865D01* +X8029613Y6305293D01* +X8007007Y6305293D01* +X7993291Y6309865D01* +X7984147Y6314183D01* +X7975003Y6323327D01* +X7970431Y6337043D01* +X7970431Y6368793D01* +X6950397Y7184991D02* +G01* +X7045901Y7184991D01* +X6950397Y7153241D02* +G01* +X6950397Y7216741D01* +X6950397Y7246713D02* +G01* +X7045901Y7246713D01* +X6950397Y7246713D02* +G01* +X6950397Y7278463D01* +X6954969Y7292179D01* +X6964113Y7301323D01* +X6973257Y7305895D01* +X6986973Y7310467D01* +X7009579Y7310467D01* +X7023295Y7305895D01* +X7032185Y7301323D01* +X7041329Y7292179D01* +X7045901Y7278463D01* +X7045901Y7246713D01* +X6950397Y7340439D02* +G01* +X7045901Y7340439D01* +X7194397Y7153081D02* +G01* +X7289901Y7153081D01* +X7194397Y7153081D02* +G01* +X7289901Y7216835D01* +X7194397Y7216835D02* +G01* +X7289901Y7216835D01* +X7217257Y7314879D02* +G01* +X7208113Y7310307D01* +X7198969Y7301417D01* +X7194397Y7292273D01* +X7194397Y7273985D01* +X7198969Y7264841D01* +X7208113Y7255951D01* +X7217257Y7251379D01* +X7230973Y7246807D01* +X7253579Y7246807D01* +X7267295Y7251379D01* +X7276185Y7255951D01* +X7285329Y7264841D01* +X7289901Y7273985D01* +X7289901Y7292273D01* +X7285329Y7301417D01* +X7276185Y7310307D01* +X7267295Y7314879D01* +X7460396Y7185025D02* +G01* +X7555900Y7185025D01* +X7460396Y7153020D02* +G01* +X7460396Y7216775D01* +X7460396Y7246746D02* +G01* +X7555900Y7246746D01* +X7460396Y7246746D02* +G01* +X7555900Y7283069D01* +X7460396Y7319390D02* +G01* +X7555900Y7283069D01* +X7460396Y7319390D02* +G01* +X7555900Y7319390D01* +X7474112Y7413117D02* +G01* +X7464968Y7403972D01* +X7460396Y7390511D01* +X7460396Y7372222D01* +X7464968Y7358506D01* +X7474112Y7349362D01* +X7483256Y7349362D01* +X7492400Y7353935D01* +X7496972Y7358506D01* +X7501290Y7367651D01* +X7510434Y7394828D01* +X7515006Y7403972D01* +X7519578Y7408545D01* +X7528722Y7413117D01* +X7542184Y7413117D01* +X7551328Y7403972D01* +X7555900Y7390511D01* +X7555900Y7372222D01* +X7551328Y7358506D01* +X7542184Y7349362D01* +X7698460Y7181021D02* +G01* +X7793964Y7181021D01* +X7698460Y7149017D02* +G01* +X7698460Y7212771D01* +X7698460Y7242743D02* +G01* +X7793964Y7242743D01* +X7698460Y7242743D02* +G01* +X7698460Y7274493D01* +X7703032Y7288209D01* +X7712176Y7297353D01* +X7721320Y7301925D01* +X7734782Y7306497D01* +X7757642Y7306497D01* +X7771104Y7301925D01* +X7780248Y7297353D01* +X7789392Y7288209D01* +X7793964Y7274493D01* +X7793964Y7242743D01* +X7698460Y7363647D02* +G01* +X7703032Y7354503D01* +X7712176Y7345359D01* +X7721320Y7341041D01* +X7734782Y7336469D01* +X7757642Y7336469D01* +X7771104Y7341041D01* +X7780248Y7345359D01* +X7789392Y7354503D01* +X7793964Y7363647D01* +X7793964Y7381935D01* +X7789392Y7390825D01* +X7780248Y7399969D01* +X7771104Y7404541D01* +X7757642Y7409113D01* +X7734782Y7409113D01* +X7721320Y7404541D01* +X7712176Y7399969D01* +X7703032Y7390825D01* +X7698460Y7381935D01* +X7698460Y7363647D01* +X7953428Y7183036D02* +G01* +X8048932Y7183036D01* +X7953428Y7151032D02* +G01* +X7953428Y7214786D01* +X7976288Y7312830D02* +G01* +X7967144Y7308512D01* +X7958000Y7299368D01* +X7953428Y7290224D01* +X7953428Y7271936D01* +X7958000Y7263046D01* +X7967144Y7253902D01* +X7976288Y7249330D01* +X7989750Y7244758D01* +X8012610Y7244758D01* +X8026326Y7249330D01* +X8035216Y7253902D01* +X8044360Y7263046D01* +X8048932Y7271936D01* +X8048932Y7290224D01* +X8044360Y7299368D01* +X8035216Y7308512D01* +X8026326Y7312830D01* +X7953428Y7343056D02* +G01* +X8048932Y7343056D01* +X7953428Y7406556D02* +G01* +X8017182Y7343056D01* +X7994322Y7365662D02* +G01* +X8048932Y7406556D01* +X8820546Y1508191D02* +G01* +X8916050Y1544513D01* +X8820546Y1580835D02* +G01* +X8916050Y1544513D01* +X8866012Y1665417D02* +G01* +X8856868Y1656273D01* +X8852296Y1647129D01* +X8852296Y1633667D01* +X8856868Y1624523D01* +X8866012Y1615379D01* +X8879474Y1610807D01* +X8888618Y1610807D01* +X8902334Y1615379D01* +X8911478Y1624523D01* +X8916050Y1633667D01* +X8916050Y1647129D01* +X8911478Y1656273D01* +X8902334Y1665417D01* +X8852296Y1717995D02* +G01* +X8856868Y1709105D01* +X8866012Y1699961D01* +X8879474Y1695389D01* +X8888618Y1695389D01* +X8902334Y1699961D01* +X8911478Y1709105D01* +X8916050Y1717995D01* +X8916050Y1731711D01* +X8911478Y1740855D01* +X8902334Y1749999D01* +X8888618Y1754571D01* +X8879474Y1754571D01* +X8866012Y1749999D01* +X8856868Y1740855D01* +X8852296Y1731711D01* +X8852296Y1717995D01* +X8820546Y1784543D02* +G01* +X8825118Y1789115D01* +X8820546Y1793687D01* +X8815974Y1789115D01* +X8820546Y1784543D01* +X8852296Y1789115D02* +G01* +X8916050Y1789115D01* +X8852296Y1823659D02* +G01* +X8916050Y1823659D01* +X8870584Y1823659D02* +G01* +X8856868Y1837121D01* +X8852296Y1846265D01* +X8852296Y1859981D01* +X8856868Y1869125D01* +X8870584Y1873443D01* +X8916050Y1873443D01* +X9055514Y1519283D02* +G01* +X9055514Y1569321D01* +X9091836Y1541889D01* +X9091836Y1555605D01* +X9096408Y1564749D01* +X9100980Y1569321D01* +X9114696Y1573639D01* +X9123586Y1573639D01* +X9137302Y1569321D01* +X9146446Y1560177D01* +X9151018Y1546461D01* +X9151018Y1532745D01* +X9146446Y1519283D01* +X9141874Y1514711D01* +X9132730Y1510139D01* +X9128158Y1608183D02* +G01* +X9132730Y1603865D01* +X9137302Y1608183D01* +X9132730Y1612755D01* +X9128158Y1608183D01* +X9055514Y1651871D02* +G01* +X9055514Y1701909D01* +X9091836Y1674731D01* +X9091836Y1688193D01* +X9096408Y1697337D01* +X9100980Y1701909D01* +X9114696Y1706481D01* +X9123586Y1706481D01* +X9137302Y1701909D01* +X9146446Y1692765D01* +X9151018Y1679303D01* +X9151018Y1665587D01* +X9146446Y1651871D01* +X9141874Y1647299D01* +X9132730Y1642727D01* +X9055514Y1736453D02* +G01* +X9151018Y1772775D01* +X9055514Y1809097D02* +G01* +X9151018Y1772775D01* +X9316039Y1569780D02* +G01* +X9307149Y1560636D01* +X9302577Y1546920D01* +X9302577Y1528886D01* +X9307149Y1515170D01* +X9316039Y1506026D01* +X9325183Y1506026D01* +X9334327Y1510598D01* +X9338899Y1515170D01* +X9343471Y1524314D01* +X9352361Y1551492D01* +X9356933Y1560636D01* +X9361505Y1565208D01* +X9370649Y1569780D01* +X9384365Y1569780D01* +X9393509Y1560636D01* +X9397827Y1546920D01* +X9397827Y1528886D01* +X9393509Y1515170D01* +X9384365Y1506026D01* +X9302577Y1599752D02* +G01* +X9397827Y1599752D01* +X9302577Y1599752D02* +G01* +X9302577Y1631502D01* +X9307149Y1645218D01* +X9316039Y1654362D01* +X9325183Y1658934D01* +X9338899Y1663506D01* +X9361505Y1663506D01* +X9375221Y1658934D01* +X9384365Y1654362D01* +X9393509Y1645218D01* +X9397827Y1631502D01* +X9397827Y1599752D01* +X9302577Y1729800D02* +G01* +X9397827Y1693478D01* +X9302577Y1729800D02* +G01* +X9397827Y1766122D01* +X9366077Y1706940D02* +G01* +X9366077Y1752406D01* +X9570039Y1569780D02* +G01* +X9561149Y1560636D01* +X9556577Y1546920D01* +X9556577Y1528886D01* +X9561149Y1515170D01* +X9570039Y1506026D01* +X9579183Y1506026D01* +X9588327Y1510598D01* +X9592899Y1515170D01* +X9597471Y1524314D01* +X9606361Y1551492D01* +X9610933Y1560636D01* +X9615505Y1565208D01* +X9624649Y1569780D01* +X9638365Y1569780D01* +X9647509Y1560636D01* +X9651827Y1546920D01* +X9651827Y1528886D01* +X9647509Y1515170D01* +X9638365Y1506026D01* +X9579183Y1667824D02* +G01* +X9570039Y1663506D01* +X9561149Y1654362D01* +X9556577Y1645218D01* +X9556577Y1626930D01* +X9561149Y1618040D01* +X9570039Y1608896D01* +X9579183Y1604324D01* +X9592899Y1599752D01* +X9615505Y1599752D01* +X9629221Y1604324D01* +X9638365Y1608896D01* +X9647509Y1618040D01* +X9651827Y1626930D01* +X9651827Y1645218D01* +X9647509Y1654362D01* +X9638365Y1663506D01* +X9629221Y1667824D01* +X9556577Y1698050D02* +G01* +X9651827Y1698050D01* +X9651827Y1698050D02* +G01* +X9651827Y1752406D01* +X9815578Y1506105D02* +G01* +X9910828Y1506105D01* +X9815578Y1506105D02* +G01* +X9815578Y1546999D01* +X9820150Y1560715D01* +X9824468Y1565287D01* +X9833612Y1569859D01* +X9842756Y1569859D01* +X9851900Y1565287D01* +X9856472Y1560715D01* +X9861044Y1546999D01* +X9861044Y1506105D02* +G01* +X9861044Y1546999D01* +X9865362Y1560715D01* +X9869934Y1565287D01* +X9879078Y1569859D01* +X9892794Y1569859D01* +X9901938Y1565287D01* +X9906510Y1560715D01* +X9910828Y1546999D01* +X9910828Y1506105D01* +X9815578Y1636153D02* +G01* +X9910828Y1599831D01* +X9815578Y1636153D02* +G01* +X9910828Y1672475D01* +X9879078Y1613293D02* +G01* +X9879078Y1658759D01* +X9815578Y1734197D02* +G01* +X9910828Y1734197D01* +X9815578Y1702447D02* +G01* +X9815578Y1766201D01* +X9829040Y1837067D02* +G01* +X9910828Y1837067D01* +X9869934Y1796173D02* +G01* +X9869934Y1877961D01* +X10098217Y1572275D02* +G01* +X10089073Y1567703D01* +X10079929Y1558559D01* +X10075611Y1549669D01* +X10075611Y1531381D01* +X10079929Y1522237D01* +X10089073Y1513093D01* +X10098217Y1508775D01* +X10111933Y1504203D01* +X10134539Y1504203D01* +X10148255Y1508775D01* +X10157399Y1513093D01* +X10166289Y1522237D01* +X10170861Y1531381D01* +X10170861Y1549669D01* +X10166289Y1558559D01* +X10157399Y1567703D01* +X10148255Y1572275D01* +X10134539Y1572275D01* +X10134539Y1549669D02* +G01* +X10134539Y1572275D01* +X10075611Y1602247D02* +G01* +X10170861Y1602247D01* +X10075611Y1602247D02* +G01* +X10170861Y1666001D01* +X10075611Y1666001D02* +G01* +X10170861Y1666001D01* +X10075611Y1695973D02* +G01* +X10170861Y1695973D01* +X10075611Y1695973D02* +G01* +X10075611Y1727723D01* +X10079929Y1741439D01* +X10089073Y1750583D01* +X10098217Y1754901D01* +X10111933Y1759473D01* +X10134539Y1759473D01* +X10148255Y1754901D01* +X10157399Y1750583D01* +X10166289Y1741439D01* +X10170861Y1727723D01* +X10170861Y1695973D01* +X10159781Y691027D02* +G01* +X10064277Y654705D01* +X10159781Y618383D02* +G01* +X10064277Y654705D01* +X10114315Y533801D02* +G01* +X10123459Y542945D01* +X10127777Y552089D01* +X10127777Y565551D01* +X10123459Y574695D01* +X10114315Y583839D01* +X10100599Y588411D01* +X10091455Y588411D01* +X10077993Y583839D01* +X10068849Y574695D01* +X10064277Y565551D01* +X10064277Y552089D01* +X10068849Y542945D01* +X10077993Y533801D01* +X10127777Y481223D02* +G01* +X10123459Y490113D01* +X10114315Y499257D01* +X10100599Y503829D01* +X10091455Y503829D01* +X10077993Y499257D01* +X10068849Y490113D01* +X10064277Y481223D01* +X10064277Y467507D01* +X10068849Y458363D01* +X10077993Y449219D01* +X10091455Y444647D01* +X10100599Y444647D01* +X10114315Y449219D01* +X10123459Y458363D01* +X10127777Y467507D01* +X10127777Y481223D01* +X10159781Y414675D02* +G01* +X10155209Y410103D01* +X10159781Y405785D01* +X10164353Y410103D01* +X10159781Y414675D01* +X10127777Y410103D02* +G01* +X10064277Y410103D01* +X10127777Y375559D02* +G01* +X10064277Y375559D01* +X10109743Y375559D02* +G01* +X10123459Y362097D01* +X10127777Y352953D01* +X10127777Y339237D01* +X10123459Y330093D01* +X10109743Y325775D01* +X10064277Y325775D01* +X9924747Y680087D02* +G01* +X9924747Y630049D01* +X9888425Y657227D01* +X9888425Y643765D01* +X9883853Y634621D01* +X9879281Y630049D01* +X9865565Y625477D01* +X9856421Y625477D01* +X9842959Y630049D01* +X9833815Y639193D01* +X9829243Y652655D01* +X9829243Y666371D01* +X9833815Y680087D01* +X9838387Y684659D01* +X9847531Y689231D01* +X9852103Y590933D02* +G01* +X9847531Y595505D01* +X9842959Y590933D01* +X9847531Y586361D01* +X9852103Y590933D01* +X9924747Y547245D02* +G01* +X9924747Y497207D01* +X9888425Y524639D01* +X9888425Y510923D01* +X9883853Y501779D01* +X9879281Y497207D01* +X9865565Y492635D01* +X9856421Y492635D01* +X9842959Y497207D01* +X9833815Y506351D01* +X9829243Y520067D01* +X9829243Y533783D01* +X9833815Y547245D01* +X9838387Y551817D01* +X9847531Y556389D01* +X9924747Y462663D02* +G01* +X9829243Y426341D01* +X9924747Y390019D02* +G01* +X9829243Y426341D01* +X9664098Y629363D02* +G01* +X9673242Y638507D01* +X9677814Y652223D01* +X9677814Y670511D01* +X9673242Y683973D01* +X9664098Y693117D01* +X9654954Y693117D01* +X9645810Y688545D01* +X9641238Y683973D01* +X9636920Y674829D01* +X9627776Y647651D01* +X9623204Y638507D01* +X9618632Y633935D01* +X9609488Y629363D01* +X9595772Y629363D01* +X9586882Y638507D01* +X9582310Y652223D01* +X9582310Y670511D01* +X9586882Y683973D01* +X9595772Y693117D01* +X9677814Y599391D02* +G01* +X9582310Y599391D01* +X9677814Y599391D02* +G01* +X9677814Y567641D01* +X9673242Y553925D01* +X9664098Y545035D01* +X9654954Y540463D01* +X9641238Y535891D01* +X9618632Y535891D01* +X9604916Y540463D01* +X9595772Y545035D01* +X9586882Y553925D01* +X9582310Y567641D01* +X9582310Y599391D01* +X9677814Y469597D02* +G01* +X9582310Y505919D01* +X9677814Y469597D02* +G01* +X9582310Y433021D01* +X9614060Y492203D02* +G01* +X9614060Y446737D01* +X9410098Y629363D02* +G01* +X9419242Y638507D01* +X9423814Y652223D01* +X9423814Y670511D01* +X9419242Y683973D01* +X9410098Y693117D01* +X9400954Y693117D01* +X9391810Y688545D01* +X9387238Y683973D01* +X9382920Y674829D01* +X9373776Y647651D01* +X9369204Y638507D01* +X9364632Y633935D01* +X9355488Y629363D01* +X9341772Y629363D01* +X9332882Y638507D01* +X9328310Y652223D01* +X9328310Y670511D01* +X9332882Y683973D01* +X9341772Y693117D01* +X9400954Y531319D02* +G01* +X9410098Y535891D01* +X9419242Y545035D01* +X9423814Y553925D01* +X9423814Y572213D01* +X9419242Y581357D01* +X9410098Y590501D01* +X9400954Y594819D01* +X9387238Y599391D01* +X9364632Y599391D01* +X9350916Y594819D01* +X9341772Y590501D01* +X9332882Y581357D01* +X9328310Y572213D01* +X9328310Y553925D01* +X9332882Y545035D01* +X9341772Y535891D01* +X9350916Y531319D01* +X9423814Y501347D02* +G01* +X9328310Y501347D01* +X9328310Y501347D02* +G01* +X9328310Y446737D01* +X9164812Y693196D02* +G01* +X9069308Y693196D01* +X9164812Y693196D02* +G01* +X9164812Y652302D01* +X9160240Y638586D01* +X9155668Y634014D01* +X9146524Y629442D01* +X9137380Y629442D01* +X9128236Y634014D01* +X9123918Y638586D01* +X9119346Y652302D01* +X9119346Y693196D02* +G01* +X9119346Y652302D01* +X9114774Y638586D01* +X9110202Y634014D01* +X9101058Y629442D01* +X9087342Y629442D01* +X9078452Y634014D01* +X9073880Y638586D01* +X9069308Y652302D01* +X9069308Y693196D01* +X9164812Y563148D02* +G01* +X9069308Y599470D01* +X9164812Y563148D02* +G01* +X9069308Y526826D01* +X9101058Y585754D02* +G01* +X9101058Y540288D01* +X9164812Y464850D02* +G01* +X9069308Y464850D01* +X9164812Y496854D02* +G01* +X9164812Y433100D01* +X9151096Y362234D02* +G01* +X9069308Y362234D01* +X9110202Y403128D02* +G01* +X9110202Y321340D01* +X8881983Y626968D02* +G01* +X8891127Y631540D01* +X8900271Y640684D01* +X8904589Y649574D01* +X8904589Y667862D01* +X8900271Y677006D01* +X8891127Y685896D01* +X8881983Y690468D01* +X8868267Y695040D01* +X8845661Y695040D01* +X8831945Y690468D01* +X8822801Y685896D01* +X8813911Y677006D01* +X8809339Y667862D01* +X8809339Y649574D01* +X8813911Y640684D01* +X8822801Y631540D01* +X8831945Y626968D01* +X8845661Y626968D01* +X8845661Y649574D02* +G01* +X8845661Y626968D01* +X8904589Y596996D02* +G01* +X8809339Y596996D01* +X8904589Y596996D02* +G01* +X8809339Y533242D01* +X8904589Y533242D02* +G01* +X8809339Y533242D01* +X8904589Y503270D02* +G01* +X8809339Y503270D01* +X8904589Y503270D02* +G01* +X8904589Y471520D01* +X8900271Y457804D01* +X8891127Y448660D01* +X8881983Y444088D01* +X8868267Y439770D01* +X8845661Y439770D01* +X8831945Y444088D01* +X8822801Y448660D01* +X8813911Y457804D01* +X8809339Y471520D01* +X8809339Y503270D01* +X7027293Y6490492D02* +G01* +X7036437Y6495064D01* +X7045327Y6504208D01* +X7049899Y6513098D01* +X7049899Y6531386D01* +X7045327Y6540530D01* +X7036437Y6549674D01* +X7027293Y6553992D01* +X7013577Y6558564D01* +X6990971Y6558564D01* +X6977255Y6553992D01* +X6968111Y6549674D01* +X6958967Y6540530D01* +X6954395Y6531386D01* +X6954395Y6513098D01* +X6958967Y6504208D01* +X6968111Y6495064D01* +X6977255Y6490492D01* +X6990971Y6490492D01* +X6990971Y6513098D02* +G01* +X6990971Y6490492D01* +X7049899Y6460520D02* +G01* +X6954395Y6460520D01* +X7049899Y6460520D02* +G01* +X6954395Y6396766D01* +X7049899Y6396766D02* +G01* +X6954395Y6396766D01* +X7049899Y6366794D02* +G01* +X6954395Y6366794D01* +X7049899Y6366794D02* +G01* +X7049899Y6335044D01* +X7045327Y6321328D01* +X7036437Y6312184D01* +X7027293Y6307866D01* +X7013577Y6303294D01* +X6990971Y6303294D01* +X6977255Y6307866D01* +X6968111Y6312184D01* +X6958967Y6321328D01* +X6954395Y6335044D01* +X6954395Y6366794D01* +X7304897Y6558546D02* +G01* +X7209393Y6558546D01* +X7304897Y6558546D02* +G01* +X7209393Y6495046D01* +X7304897Y6495046D02* +G01* +X7209393Y6495046D01* +X7282291Y6396748D02* +G01* +X7291435Y6401320D01* +X7300325Y6410464D01* +X7304897Y6419608D01* +X7304897Y6437642D01* +X7300325Y6446786D01* +X7291435Y6455930D01* +X7282291Y6460502D01* +X7268575Y6465074D01* +X7245969Y6465074D01* +X7232253Y6460502D01* +X7223109Y6455930D01* +X7213965Y6446786D01* +X7209393Y6437642D01* +X7209393Y6419608D01* +X7213965Y6410464D01* +X7223109Y6401320D01* +X7232253Y6396748D01* +X7555898Y6558594D02* +G01* +X7460394Y6558594D01* +X7555898Y6558594D02* +G01* +X7460394Y6495094D01* +X7555898Y6495094D02* +G01* +X7460394Y6495094D01* +X7533292Y6396796D02* +G01* +X7542436Y6401368D01* +X7551326Y6410512D01* +X7555898Y6419656D01* +X7555898Y6437690D01* +X7551326Y6446834D01* +X7542436Y6455978D01* +X7533292Y6460550D01* +X7519576Y6465122D01* +X7496970Y6465122D01* +X7483254Y6460550D01* +X7474110Y6455978D01* +X7464966Y6446834D01* +X7460394Y6437690D01* +X7460394Y6419656D01* +X7464966Y6410512D01* +X7474110Y6401368D01* +X7483254Y6396796D01* +X7811947Y6552674D02* +G01* +X7811947Y6502636D01* +X7775625Y6529814D01* +X7775625Y6516098D01* +X7771053Y6507208D01* +X7766481Y6502636D01* +X7752765Y6498064D01* +X7743875Y6498064D01* +X7730159Y6502636D01* +X7721015Y6511780D01* +X7716443Y6525242D01* +X7716443Y6538958D01* +X7721015Y6552674D01* +X7725587Y6556992D01* +X7734731Y6561564D01* +X7739303Y6463520D02* +G01* +X7734731Y6468092D01* +X7730159Y6463520D01* +X7734731Y6458948D01* +X7739303Y6463520D01* +X7811947Y6419832D02* +G01* +X7811947Y6369794D01* +X7775625Y6397226D01* +X7775625Y6383510D01* +X7771053Y6374366D01* +X7766481Y6369794D01* +X7752765Y6365222D01* +X7743875Y6365222D01* +X7730159Y6369794D01* +X7721015Y6378938D01* +X7716443Y6392654D01* +X7716443Y6406116D01* +X7721015Y6419832D01* +X7725587Y6424404D01* +X7734731Y6428976D01* +X7811947Y6335250D02* +G01* +X7716443Y6298928D01* +X7811947Y6262606D02* +G01* +X7716443Y6298928D01* +X8043326Y6492491D02* +G01* +X8052216Y6497063D01* +X8061360Y6506207D01* +X8065932Y6515097D01* +X8065932Y6533385D01* +X8061360Y6542529D01* +X8052216Y6551673D01* +X8043326Y6555991D01* +X8029610Y6560563D01* +X8007004Y6560563D01* +X7993288Y6555991D01* +X7984144Y6551673D01* +X7975000Y6542529D01* +X7970428Y6533385D01* +X7970428Y6515097D01* +X7975000Y6506207D01* +X7984144Y6497063D01* +X7993288Y6492491D01* +X8007004Y6492491D01* +X8007004Y6515097D02* +G01* +X8007004Y6492491D01* +X8065932Y6462519D02* +G01* +X7970428Y6462519D01* +X8065932Y6462519D02* +G01* +X7970428Y6398765D01* +X8065932Y6398765D02* +G01* +X7970428Y6398765D01* +X8065932Y6368793D02* +G01* +X7970428Y6368793D01* +X8065932Y6368793D02* +G01* +X8065932Y6337043D01* +X8061360Y6323327D01* +X8052216Y6314183D01* +X8043326Y6309865D01* +X8029610Y6305293D01* +X8007004Y6305293D01* +X7993288Y6309865D01* +X7984144Y6314183D01* +X7975000Y6323327D01* +X7970428Y6337043D01* +X7970428Y6368793D01* +X6950395Y7184991D02* +G01* +X7045899Y7184991D01* +X6950395Y7153241D02* +G01* +X6950395Y7216741D01* +X6950395Y7246713D02* +G01* +X7045899Y7246713D01* +X6950395Y7246713D02* +G01* +X6950395Y7278463D01* +X6954967Y7292179D01* +X6964111Y7301323D01* +X6973255Y7305895D01* +X6986971Y7310467D01* +X7009577Y7310467D01* +X7023293Y7305895D01* +X7032183Y7301323D01* +X7041327Y7292179D01* +X7045899Y7278463D01* +X7045899Y7246713D01* +X6950395Y7340439D02* +G01* +X7045899Y7340439D01* +X7194395Y7153081D02* +G01* +X7289899Y7153081D01* +X7194395Y7153081D02* +G01* +X7289899Y7216835D01* +X7194395Y7216835D02* +G01* +X7289899Y7216835D01* +X7217255Y7314879D02* +G01* +X7208111Y7310307D01* +X7198967Y7301417D01* +X7194395Y7292273D01* +X7194395Y7273985D01* +X7198967Y7264841D01* +X7208111Y7255951D01* +X7217255Y7251379D01* +X7230971Y7246807D01* +X7253577Y7246807D01* +X7267293Y7251379D01* +X7276183Y7255951D01* +X7285327Y7264841D01* +X7289899Y7273985D01* +X7289899Y7292273D01* +X7285327Y7301417D01* +X7276183Y7310307D01* +X7267293Y7314879D01* +X7460394Y7185025D02* +G01* +X7555898Y7185025D01* +X7460394Y7153020D02* +G01* +X7460394Y7216775D01* +X7460394Y7246746D02* +G01* +X7555898Y7246746D01* +X7460394Y7246746D02* +G01* +X7555898Y7283069D01* +X7460394Y7319390D02* +G01* +X7555898Y7283069D01* +X7460394Y7319390D02* +G01* +X7555898Y7319390D01* +X7474110Y7413117D02* +G01* +X7464966Y7403972D01* +X7460394Y7390511D01* +X7460394Y7372222D01* +X7464966Y7358506D01* +X7474110Y7349362D01* +X7483254Y7349362D01* +X7492398Y7353935D01* +X7496970Y7358506D01* +X7501288Y7367651D01* +X7510432Y7394828D01* +X7515004Y7403972D01* +X7519576Y7408545D01* +X7528720Y7413117D01* +X7542182Y7413117D01* +X7551326Y7403972D01* +X7555898Y7390511D01* +X7555898Y7372222D01* +X7551326Y7358506D01* +X7542182Y7349362D01* +X7698458Y7181021D02* +G01* +X7793962Y7181021D01* +X7698458Y7149017D02* +G01* +X7698458Y7212771D01* +X7698458Y7242743D02* +G01* +X7793962Y7242743D01* +X7698458Y7242743D02* +G01* +X7698458Y7274493D01* +X7703030Y7288209D01* +X7712174Y7297353D01* +X7721318Y7301925D01* +X7734780Y7306497D01* +X7757640Y7306497D01* +X7771102Y7301925D01* +X7780246Y7297353D01* +X7789390Y7288209D01* +X7793962Y7274493D01* +X7793962Y7242743D01* +X7698458Y7363647D02* +G01* +X7703030Y7354503D01* +X7712174Y7345359D01* +X7721318Y7341041D01* +X7734780Y7336469D01* +X7757640Y7336469D01* +X7771102Y7341041D01* +X7780246Y7345359D01* +X7789390Y7354503D01* +X7793962Y7363647D01* +X7793962Y7381935D01* +X7789390Y7390825D01* +X7780246Y7399969D01* +X7771102Y7404541D01* +X7757640Y7409113D01* +X7734780Y7409113D01* +X7721318Y7404541D01* +X7712174Y7399969D01* +X7703030Y7390825D01* +X7698458Y7381935D01* +X7698458Y7363647D01* +X7953425Y7183036D02* +G01* +X8048929Y7183036D01* +X7953425Y7151032D02* +G01* +X7953425Y7214786D01* +X7976285Y7312830D02* +G01* +X7967141Y7308512D01* +X7957997Y7299368D01* +X7953425Y7290224D01* +X7953425Y7271936D01* +X7957997Y7263046D01* +X7967141Y7253902D01* +X7976285Y7249330D01* +X7989747Y7244758D01* +X8012607Y7244758D01* +X8026323Y7249330D01* +X8035213Y7253902D01* +X8044357Y7263046D01* +X8048929Y7271936D01* +X8048929Y7290224D01* +X8044357Y7299368D01* +X8035213Y7308512D01* +X8026323Y7312830D01* +X7953425Y7343056D02* +G01* +X8048929Y7343056D01* +X7953425Y7406556D02* +G01* +X8017179Y7343056D01* +X7994319Y7365662D02* +G01* +X8048929Y7406556D01* +D11* +X6705081Y5738385D02* +G01* +X6705081Y5615703D01* +X6643613Y5677171D02* +G01* +X6766549Y5677171D01* +D10* +X8820543Y1508191D02* +G01* +X8916047Y1544513D01* +X8820543Y1580835D02* +G01* +X8916047Y1544513D01* +X8866009Y1665417D02* +G01* +X8856865Y1656273D01* +X8852293Y1647129D01* +X8852293Y1633667D01* +X8856865Y1624523D01* +X8866009Y1615379D01* +X8879471Y1610807D01* +X8888615Y1610807D01* +X8902331Y1615379D01* +X8911475Y1624523D01* +X8916047Y1633667D01* +X8916047Y1647129D01* +X8911475Y1656273D01* +X8902331Y1665417D01* +X8852293Y1717995D02* +G01* +X8856865Y1709105D01* +X8866009Y1699961D01* +X8879471Y1695389D01* +X8888615Y1695389D01* +X8902331Y1699961D01* +X8911475Y1709105D01* +X8916047Y1717995D01* +X8916047Y1731711D01* +X8911475Y1740855D01* +X8902331Y1749999D01* +X8888615Y1754571D01* +X8879471Y1754571D01* +X8866009Y1749999D01* +X8856865Y1740855D01* +X8852293Y1731711D01* +X8852293Y1717995D01* +X8820543Y1784543D02* +G01* +X8825115Y1789115D01* +X8820543Y1793687D01* +X8815971Y1789115D01* +X8820543Y1784543D01* +X8852293Y1789115D02* +G01* +X8916047Y1789115D01* +X8852293Y1823659D02* +G01* +X8916047Y1823659D01* +X8870581Y1823659D02* +G01* +X8856865Y1837121D01* +X8852293Y1846265D01* +X8852293Y1859981D01* +X8856865Y1869125D01* +X8870581Y1873443D01* +X8916047Y1873443D01* +X9055511Y1519283D02* +G01* +X9055511Y1569321D01* +X9091833Y1541889D01* +X9091833Y1555605D01* +X9096405Y1564749D01* +X9100977Y1569321D01* +X9114693Y1573639D01* +X9123583Y1573639D01* +X9137299Y1569321D01* +X9146443Y1560177D01* +X9151015Y1546461D01* +X9151015Y1532745D01* +X9146443Y1519283D01* +X9141871Y1514711D01* +X9132727Y1510139D01* +X9128155Y1608183D02* +G01* +X9132727Y1603865D01* +X9137299Y1608183D01* +X9132727Y1612755D01* +X9128155Y1608183D01* +X9055511Y1651871D02* +G01* +X9055511Y1701909D01* +X9091833Y1674731D01* +X9091833Y1688193D01* +X9096405Y1697337D01* +X9100977Y1701909D01* +X9114693Y1706481D01* +X9123583Y1706481D01* +X9137299Y1701909D01* +X9146443Y1692765D01* +X9151015Y1679303D01* +X9151015Y1665587D01* +X9146443Y1651871D01* +X9141871Y1647299D01* +X9132727Y1642727D01* +X9055511Y1736453D02* +G01* +X9151015Y1772775D01* +X9055511Y1809097D02* +G01* +X9151015Y1772775D01* +X9316036Y1569780D02* +G01* +X9307146Y1560636D01* +X9302574Y1546920D01* +X9302574Y1528886D01* +X9307146Y1515170D01* +X9316036Y1506026D01* +X9325180Y1506026D01* +X9334324Y1510598D01* +X9338896Y1515170D01* +X9343468Y1524314D01* +X9352358Y1551492D01* +X9356930Y1560636D01* +X9361502Y1565208D01* +X9370646Y1569780D01* +X9384362Y1569780D01* +X9393506Y1560636D01* +X9397824Y1546920D01* +X9397824Y1528886D01* +X9393506Y1515170D01* +X9384362Y1506026D01* +X9302574Y1599752D02* +G01* +X9397824Y1599752D01* +X9302574Y1599752D02* +G01* +X9302574Y1631502D01* +X9307146Y1645218D01* +X9316036Y1654362D01* +X9325180Y1658934D01* +X9338896Y1663506D01* +X9361502Y1663506D01* +X9375218Y1658934D01* +X9384362Y1654362D01* +X9393506Y1645218D01* +X9397824Y1631502D01* +X9397824Y1599752D01* +X9302574Y1729800D02* +G01* +X9397824Y1693478D01* +X9302574Y1729800D02* +G01* +X9397824Y1766122D01* +X9366074Y1706940D02* +G01* +X9366074Y1752406D01* +X9570036Y1569780D02* +G01* +X9561146Y1560636D01* +X9556574Y1546920D01* +X9556574Y1528886D01* +X9561146Y1515170D01* +X9570036Y1506026D01* +X9579180Y1506026D01* +X9588324Y1510598D01* +X9592896Y1515170D01* +X9597468Y1524314D01* +X9606358Y1551492D01* +X9610930Y1560636D01* +X9615502Y1565208D01* +X9624646Y1569780D01* +X9638362Y1569780D01* +X9647506Y1560636D01* +X9651824Y1546920D01* +X9651824Y1528886D01* +X9647506Y1515170D01* +X9638362Y1506026D01* +X9579180Y1667824D02* +G01* +X9570036Y1663506D01* +X9561146Y1654362D01* +X9556574Y1645218D01* +X9556574Y1626930D01* +X9561146Y1618040D01* +X9570036Y1608896D01* +X9579180Y1604324D01* +X9592896Y1599752D01* +X9615502Y1599752D01* +X9629218Y1604324D01* +X9638362Y1608896D01* +X9647506Y1618040D01* +X9651824Y1626930D01* +X9651824Y1645218D01* +X9647506Y1654362D01* +X9638362Y1663506D01* +X9629218Y1667824D01* +X9556574Y1698050D02* +G01* +X9651824Y1698050D01* +X9651824Y1698050D02* +G01* +X9651824Y1752406D01* +X9815575Y1506105D02* +G01* +X9910825Y1506105D01* +X9815575Y1506105D02* +G01* +X9815575Y1546999D01* +X9820147Y1560715D01* +X9824465Y1565287D01* +X9833609Y1569859D01* +X9842753Y1569859D01* +X9851897Y1565287D01* +X9856469Y1560715D01* +X9861041Y1546999D01* +X9861041Y1506105D02* +G01* +X9861041Y1546999D01* +X9865359Y1560715D01* +X9869931Y1565287D01* +X9879075Y1569859D01* +X9892791Y1569859D01* +X9901936Y1565287D01* +X9906507Y1560715D01* +X9910825Y1546999D01* +X9910825Y1506105D01* +X9815575Y1636153D02* +G01* +X9910825Y1599831D01* +X9815575Y1636153D02* +G01* +X9910825Y1672475D01* +X9879075Y1613293D02* +G01* +X9879075Y1658759D01* +X9815575Y1734197D02* +G01* +X9910825Y1734197D01* +X9815575Y1702447D02* +G01* +X9815575Y1766201D01* +X9829037Y1837067D02* +G01* +X9910825Y1837067D01* +X9869931Y1796173D02* +G01* +X9869931Y1877961D01* +X10098214Y1572275D02* +G01* +X10089070Y1567703D01* +X10079926Y1558559D01* +X10075608Y1549669D01* +X10075608Y1531381D01* +X10079926Y1522237D01* +X10089070Y1513093D01* +X10098214Y1508775D01* +X10111930Y1504203D01* +X10134536Y1504203D01* +X10148252Y1508775D01* +X10157396Y1513093D01* +X10166286Y1522237D01* +X10170858Y1531381D01* +X10170858Y1549669D01* +X10166286Y1558559D01* +X10157396Y1567703D01* +X10148252Y1572275D01* +X10134536Y1572275D01* +X10134536Y1549669D02* +G01* +X10134536Y1572275D01* +X10075608Y1602247D02* +G01* +X10170858Y1602247D01* +X10075608Y1602247D02* +G01* +X10170858Y1666001D01* +X10075608Y1666001D02* +G01* +X10170858Y1666001D01* +X10075608Y1695973D02* +G01* +X10170858Y1695973D01* +X10075608Y1695973D02* +G01* +X10075608Y1727723D01* +X10079926Y1741439D01* +X10089070Y1750583D01* +X10098214Y1754901D01* +X10111930Y1759473D01* +X10134536Y1759473D01* +X10148252Y1754901D01* +X10157396Y1750583D01* +X10166286Y1741439D01* +X10170858Y1727723D01* +X10170858Y1695973D01* +X10159779Y691027D02* +G01* +X10064275Y654705D01* +X10159779Y618383D02* +G01* +X10064275Y654705D01* +X10114313Y533801D02* +G01* +X10123457Y542945D01* +X10127775Y552089D01* +X10127775Y565551D01* +X10123457Y574695D01* +X10114313Y583839D01* +X10100597Y588411D01* +X10091453Y588411D01* +X10077991Y583839D01* +X10068847Y574695D01* +X10064275Y565551D01* +X10064275Y552089D01* +X10068847Y542945D01* +X10077991Y533801D01* +X10127775Y481223D02* +G01* +X10123457Y490113D01* +X10114313Y499257D01* +X10100597Y503829D01* +X10091453Y503829D01* +X10077991Y499257D01* +X10068847Y490113D01* +X10064275Y481223D01* +X10064275Y467507D01* +X10068847Y458363D01* +X10077991Y449219D01* +X10091453Y444647D01* +X10100597Y444647D01* +X10114313Y449219D01* +X10123457Y458363D01* +X10127775Y467507D01* +X10127775Y481223D01* +X10159779Y414675D02* +G01* +X10155207Y410103D01* +X10159779Y405785D01* +X10164351Y410103D01* +X10159779Y414675D01* +X10127775Y410103D02* +G01* +X10064275Y410103D01* +X10127775Y375559D02* +G01* +X10064275Y375559D01* +X10109741Y375559D02* +G01* +X10123457Y362097D01* +X10127775Y352953D01* +X10127775Y339237D01* +X10123457Y330093D01* +X10109741Y325775D01* +X10064275Y325775D01* +X9924745Y680087D02* +G01* +X9924745Y630049D01* +X9888423Y657227D01* +X9888423Y643765D01* +X9883851Y634621D01* +X9879279Y630049D01* +X9865563Y625477D01* +X9856419Y625477D01* +X9842957Y630049D01* +X9833813Y639193D01* +X9829241Y652655D01* +X9829241Y666371D01* +X9833813Y680087D01* +X9838385Y684659D01* +X9847529Y689231D01* +X9852101Y590933D02* +G01* +X9847529Y595505D01* +X9842957Y590933D01* +X9847529Y586361D01* +X9852101Y590933D01* +X9924745Y547245D02* +G01* +X9924745Y497207D01* +X9888423Y524639D01* +X9888423Y510923D01* +X9883851Y501779D01* +X9879279Y497207D01* +X9865563Y492635D01* +X9856419Y492635D01* +X9842957Y497207D01* +X9833813Y506351D01* +X9829241Y520067D01* +X9829241Y533783D01* +X9833813Y547245D01* +X9838385Y551817D01* +X9847529Y556389D01* +X9924745Y462663D02* +G01* +X9829241Y426341D01* +X9924745Y390019D02* +G01* +X9829241Y426341D01* +X9664095Y629363D02* +G01* +X9673239Y638507D01* +X9677811Y652223D01* +X9677811Y670511D01* +X9673239Y683973D01* +X9664095Y693117D01* +X9654951Y693117D01* +X9645807Y688545D01* +X9641235Y683973D01* +X9636917Y674829D01* +X9627773Y647651D01* +X9623201Y638507D01* +X9618629Y633935D01* +X9609485Y629363D01* +X9595769Y629363D01* +X9586879Y638507D01* +X9582307Y652223D01* +X9582307Y670511D01* +X9586879Y683973D01* +X9595769Y693117D01* +X9677811Y599391D02* +G01* +X9582307Y599391D01* +X9677811Y599391D02* +G01* +X9677811Y567641D01* +X9673239Y553925D01* +X9664095Y545035D01* +X9654951Y540463D01* +X9641235Y535891D01* +X9618629Y535891D01* +X9604913Y540463D01* +X9595769Y545035D01* +X9586879Y553925D01* +X9582307Y567641D01* +X9582307Y599391D01* +X9677811Y469597D02* +G01* +X9582307Y505919D01* +X9677811Y469597D02* +G01* +X9582307Y433021D01* +X9614057Y492203D02* +G01* +X9614057Y446737D01* +X9410095Y629363D02* +G01* +X9419239Y638507D01* +X9423811Y652223D01* +X9423811Y670511D01* +X9419239Y683973D01* +X9410095Y693117D01* +X9400951Y693117D01* +X9391807Y688545D01* +X9387235Y683973D01* +X9382917Y674829D01* +X9373773Y647651D01* +X9369201Y638507D01* +X9364629Y633935D01* +X9355485Y629363D01* +X9341769Y629363D01* +X9332879Y638507D01* +X9328307Y652223D01* +X9328307Y670511D01* +X9332879Y683973D01* +X9341769Y693117D01* +X9400951Y531319D02* +G01* +X9410095Y535891D01* +X9419239Y545035D01* +X9423811Y553925D01* +X9423811Y572213D01* +X9419239Y581357D01* +X9410095Y590501D01* +X9400951Y594819D01* +X9387235Y599391D01* +X9364629Y599391D01* +X9350913Y594819D01* +X9341769Y590501D01* +X9332879Y581357D01* +X9328307Y572213D01* +X9328307Y553925D01* +X9332879Y545035D01* +X9341769Y535891D01* +X9350913Y531319D01* +X9423811Y501347D02* +G01* +X9328307Y501347D01* +X9328307Y501347D02* +G01* +X9328307Y446737D01* +X9164810Y693196D02* +G01* +X9069306Y693196D01* +X9164810Y693196D02* +G01* +X9164810Y652302D01* +X9160238Y638586D01* +X9155666Y634014D01* +X9146522Y629442D01* +X9137378Y629442D01* +X9128234Y634014D01* +X9123916Y638586D01* +X9119344Y652302D01* +X9119344Y693196D02* +G01* +X9119344Y652302D01* +X9114772Y638586D01* +X9110200Y634014D01* +X9101056Y629442D01* +X9087340Y629442D01* +X9078450Y634014D01* +X9073878Y638586D01* +X9069306Y652302D01* +X9069306Y693196D01* +X9164810Y563148D02* +G01* +X9069306Y599470D01* +X9164810Y563148D02* +G01* +X9069306Y526826D01* +X9101056Y585754D02* +G01* +X9101056Y540288D01* +X9164810Y464850D02* +G01* +X9069306Y464850D01* +X9164810Y496854D02* +G01* +X9164810Y433100D01* +X9151094Y362234D02* +G01* +X9069306Y362234D01* +X9110200Y403128D02* +G01* +X9110200Y321340D01* +X8881981Y626968D02* +G01* +X8891125Y631540D01* +X8900269Y640684D01* +X8904587Y649574D01* +X8904587Y667862D01* +X8900269Y677006D01* +X8891125Y685896D01* +X8881981Y690468D01* +X8868265Y695040D01* +X8845659Y695040D01* +X8831943Y690468D01* +X8822799Y685896D01* +X8813909Y677006D01* +X8809337Y667862D01* +X8809337Y649574D01* +X8813909Y640684D01* +X8822799Y631540D01* +X8831943Y626968D01* +X8845659Y626968D01* +X8845659Y649574D02* +G01* +X8845659Y626968D01* +X8904587Y596996D02* +G01* +X8809337Y596996D01* +X8904587Y596996D02* +G01* +X8809337Y533242D01* +X8904587Y533242D02* +G01* +X8809337Y533242D01* +X8904587Y503270D02* +G01* +X8809337Y503270D01* +X8904587Y503270D02* +G01* +X8904587Y471520D01* +X8900269Y457804D01* +X8891125Y448660D01* +X8881981Y444088D01* +X8868265Y439770D01* +X8845659Y439770D01* +X8831943Y444088D01* +X8822799Y448660D01* +X8813909Y457804D01* +X8809337Y471520D01* +X8809337Y503270D01* +D12* +X6734020Y5889472D02* +G01* +X6734020Y5803366D01* +X6734020Y5889472D02* +G01* +X6770850Y5889472D01* +X6783042Y5885154D01* +X6787360Y5881090D01* +X6791424Y5872962D01* +X6791424Y5864834D01* +X6787360Y5856706D01* +X6783042Y5852642D01* +X6770850Y5848578D01* +X6734020Y5848578D02* +G01* +X6770850Y5848578D01* +X6783042Y5844260D01* +X6787360Y5840196D01* +X6791424Y5832068D01* +X6791424Y5819876D01* +X6787360Y5811748D01* +X6783042Y5807430D01* +X6770850Y5803366D01* +X6734020Y5803366D01* +X6851114Y5889472D02* +G01* +X6818348Y5803366D01* +X6851114Y5889472D02* +G01* +X6883880Y5803366D01* +X6830540Y5832068D02* +G01* +X6871434Y5832068D01* +X6939506Y5889472D02* +G01* +X6939506Y5803366D01* +X6910804Y5889472D02* +G01* +X6967954Y5889472D01* +X7031962Y5877026D02* +G01* +X7031962Y5803366D01* +X6995132Y5840196D02* +G01* +X7068792Y5840196D01* +X8397222Y632150D02* +G01* +X8397222Y795980D01* +X8479010Y713938D02* +G01* +X8315434Y713938D01* +X11389570Y5386704D02* +G01* +X11527782Y5386704D01* +X11389573Y5386702D02* +G01* +X11527779Y5386702D01* +D13* +X3635161Y7262561D02* +G01* +X3635161Y7389561D01* +X3812961Y7389561D01* +X3812961Y7262561D01* +X3635161Y7186361D02* +G01* +X3635161Y7072061D01* +X3812961Y7072061D01* +X3812961Y7186361D01* +D14* +X10259161Y745962D02* +G01* +X8695161Y745962D01* +X8695161Y1449961D01* +X10259161Y1449961D01* +X10259161Y745962D01* +D16* +X6006802Y6547294D02* +G01* +X6206680Y6547294D01* +X6006802Y6762534D02* +G01* +X6206680Y6762534D01* +X6072162Y6547294D02* +G01* +X6272042Y6547294D01* +X6072162Y6762534D02* +G01* +X6272042Y6762534D01* +D17* +X6849163Y6613961D02* +G01* +X6849163Y7119960D01* +X7100663Y7119960D01* +X8125162Y7119960D01* +X6851162Y6611960D02* +G01* +X7100663Y6611960D01* +X8125162Y6611960D01* +D13* +X8125162Y6865960D02* +G01* +X7871162Y6865960D01* +X7871162Y7119960D01* +X8125162Y6611960D02* +G01* +X8125162Y7119960D01* +D18* +X3145632Y6575960D02* +G01* +X3065632Y6575960D01* +X3065632Y6655960D01* +X3065632Y6995960D02* +G01* +X3065632Y7075962D01* +X3145632Y7075962D01* +X3485631Y7075962D02* +G01* +X3565631Y7075962D01* +X3565631Y6995960D01* +X3485631Y6575960D02* +G01* +X3565631Y6575960D01* +X3565631Y6655960D01* +D14* +X171175Y5131668D02* +G01* +X171175Y4942438D01* +X67035Y4942438D01* +X67035Y5131668D01* +X171175Y5131668D01* +D12* +X10005052Y6311262D02* +G01* +X10005052Y6614792D01* +X10153642Y6768462D02* +G01* +X11454122Y6768462D01* +X11454122Y6443342D01* +X11484602Y6487792D01* +X11487142Y6490332D01* +X10146022Y5287642D02* +G01* +X11384272Y5287642D01* +X11384272Y6308722D01* +X11584932Y5456552D02* +G01* +X11584932Y6397622D01* +D19* +X8014792Y4092826D02* +G01* +X8014792Y2792826D01* +X6614792Y2792826D01* +X6614792Y4192826D01* +X7914792Y4192826D01* +X8014792Y4092826D01* +D14* +X5846066Y6842353D02* +G01* +X5846066Y6653123D01* +X5741926Y6653123D01* +X5741926Y6842353D01* +X5846066Y6842353D01* +X484797Y1437906D02* +G01* +X521627Y1437906D01* +X628307Y1238516D02* +G01* +X628307Y1315986D01* +X479717Y1114056D02* +G01* +X520357Y1114056D01* +X374307Y1235976D02* +G01* +X374307Y1318526D01* +D12* +X1732163Y6730461D02* +G01* +X1732163Y6666961D01* +X2240163Y6666961D01* +X2240163Y6920961D01* +X1732163Y6920961D01* +X1732163Y6857461D01* +D13* +X6199520Y6910613D02* +G01* +X6390020Y6910613D01* +X6390020Y7139213D01* +X6199520Y7139213D01* +X6097920Y6910613D02* +G01* +X5907420Y6910613D01* +X5907420Y7139213D01* +X6097920Y7139213D01* +D14* +X605950Y5569704D02* +G01* +X501810Y5569704D01* +X501810Y5380474D01* +X605950Y5380474D01* +X605950Y5569704D01* +X379892Y5569353D02* +G01* +X484032Y5569353D01* +X484032Y5380123D01* +X379892Y5380123D01* +X379892Y5569353D01* +X2708633Y7355400D02* +G01* +X2812773Y7355400D01* +X2812773Y7166170D01* +X2708633Y7166170D01* +X2708633Y7355400D01* +X9563303Y5746432D02* +G01* +X9374073Y5746432D01* +X9374073Y5850572D01* +X9563303Y5850572D01* +X9563303Y5746432D01* +X9562302Y5874433D02* +G01* +X9373072Y5874433D01* +X9373072Y5978573D01* +X9562302Y5978573D01* +X9562302Y5874433D01* +X2768953Y6815432D02* +G01* +X2579723Y6815432D01* +X2579723Y6919572D01* +X2768953Y6919572D01* +X2768953Y6815432D01* +X3213691Y6448752D02* +G01* +X3109551Y6448752D01* +X3109551Y6259522D01* +X3213691Y6259522D01* +X3213691Y6448752D01* +X4412602Y7034491D02* +G01* +X4223372Y7034491D01* +X4223372Y6930351D01* +X4412602Y6930351D01* +X4412602Y7034491D01* +X4412602Y6780491D02* +G01* +X4412602Y6676351D01* +X4223372Y6676351D01* +X4223372Y6780491D01* +X4412602Y6780491D01* +X4413603Y6652491D02* +G01* +X4413603Y6548351D01* +X4224373Y6548351D01* +X4224373Y6652491D01* +X4413603Y6652491D01* +X1085951Y6451704D02* +G01* +X981811Y6451704D01* +X981811Y6262474D01* +X1085951Y6262474D01* +X1085951Y6451704D01* +X986891Y6216352D02* +G01* +X1091031Y6216352D01* +X1091031Y6027122D01* +X986891Y6027122D01* +X986891Y6216352D01* +X2683692Y7357752D02* +G01* +X2579552Y7357752D01* +X2579552Y7168522D01* +X2683692Y7168522D01* +X2683692Y7357752D01* +X2427691Y7356751D02* +G01* +X2323551Y7356751D01* +X2323551Y7167521D01* +X2427691Y7167521D01* +X2427691Y7356751D01* +X2532773Y6651401D02* +G01* +X2532773Y6462171D01* +X2428633Y6462171D01* +X2428633Y6651401D01* +X2532773Y6651401D01* +X2402692Y6655752D02* +G01* +X2298552Y6655752D01* +X2298552Y6466522D01* +X2402692Y6466522D01* +X2402692Y6655752D01* +X4412602Y6906491D02* +G01* +X4223372Y6906491D01* +X4223372Y6802351D01* +X4412602Y6802351D01* +X4412602Y6906491D01* +X8383323Y4321317D02* +G01* +X8194093Y4321317D01* +X8194093Y4425457D01* +X8383323Y4425457D01* +X8383323Y4321317D01* +X8405822Y3165116D02* +G01* +X8301682Y3165116D01* +X8301682Y2975886D01* +X8405822Y2975886D01* +X8405822Y3165116D01* +X8636734Y2246856D02* +G01* +X8447504Y2246856D01* +X8447504Y2142716D01* +X8636734Y2142716D01* +X8636734Y2246856D01* +X8376084Y2141796D02* +G01* +X8186854Y2141796D01* +X8186854Y2245936D01* +X8376084Y2245936D01* +X8376084Y2141796D01* +X245663Y1450581D02* +G01* +X141523Y1450581D01* +X141523Y1261351D01* +X245663Y1261351D01* +X245663Y1450581D01* +D13* +X986632Y1992447D02* +G01* +X986632Y2119447D01* +X1164432Y2119447D01* +X1164432Y1992447D01* +X986632Y1916247D02* +G01* +X986632Y1801947D01* +X1164432Y1801947D01* +X1164432Y1916247D01* +D14* +X540603Y833231D02* +G01* +X644743Y833231D01* +X644743Y644001D01* +X540603Y644001D01* +X540603Y833231D01* +X-143367Y4069400D02* +G01* +X-39227Y4069400D01* +X-39227Y3880170D01* +X-143367Y3880170D01* +X-143367Y4069400D01* +D13* +X8280493Y2493926D02* +G01* +X8280493Y2608226D01* +X8331293Y2608226D01* +X8420193Y2379626D02* +G01* +X8432893Y2379626D01* +X8521793Y2608226D02* +G01* +X8572593Y2608226D01* +X8572593Y2493926D01* +D12* +X6639303Y6087059D02* +G01* +X6639303Y6174689D01* +X6595488Y6130874D01* +X6639303Y6087059D01* +X5731162Y6323848D02* +G01* +X6533161Y6323848D01* +X6533161Y6219847D01* +X6531663Y6096347D02* +G01* +X6531663Y6162847D01* +X6430662Y6162847D01* +X6430662Y6219847D01* +X6532661Y6219847D01* +X6534162Y5614347D02* +G01* +X6432161Y5614347D01* +X6432161Y5671347D01* +X6533161Y5671347D01* +X6533161Y5737849D01* +X5732663Y5510349D02* +G01* +X6534663Y5510349D01* +X6534663Y5614347D01* +X5735162Y5694847D02* +G01* +X5735162Y6134849D01* +D14* +X1066162Y7335961D02* +G01* +X901164Y7335961D01* +X901164Y6835960D01* +X1451162Y6835960D01* +X1451162Y7335961D01* +X1286162Y7335961D01* +D13* +X-213367Y2035246D02* +G01* +X-213367Y1908246D01* +X-35567Y1908246D01* +X-35567Y2035246D01* +X-213367Y2111446D02* +G01* +X-213367Y2225746D01* +X-35567Y2225746D01* +X-35567Y2111446D01* +X7353132Y4872946D02* +G01* +X7467432Y4872946D01* +X7467432Y5050746D01* +X7353132Y5050746D01* +X7276932Y4872946D02* +G01* +X7149932Y4872946D01* +X7149932Y5050746D01* +X7276932Y5050746D01* +D14* +X7218662Y2171352D02* +G01* +X7218662Y2360582D01* +X7114522Y2360582D01* +X7114522Y2171352D01* +X7218662Y2171352D01* +X8105724Y1883572D02* +G01* +X8105724Y1779432D01* +X8294954Y1779432D01* +X8294954Y1883572D01* +X8105724Y1883572D01* +X7463322Y4720315D02* +G01* +X7274092Y4720315D01* +X7274092Y4824455D01* +X7463322Y4824455D01* +X7463322Y4720315D01* +D13* +X4351563Y6329060D02* +G01* +X4224563Y6329060D01* +X4224563Y6506860D01* +X4351563Y6506860D01* +X4427763Y6329060D02* +G01* +X4542063Y6329060D01* +X4542063Y6506860D01* +X4427763Y6506860D01* +X5141462Y1485460D02* +G01* +X5141462Y1675960D01* +X4912862Y1675960D01* +X4912862Y1485460D01* +X5141462Y1383860D02* +G01* +X5141462Y1193360D01* +X4912862Y1193360D01* +X4912862Y1383860D01* +D14* +X3516693Y6447751D02* +G01* +X3412553Y6447751D01* +X3412553Y6258521D01* +X3516693Y6258521D01* +X3516693Y6447751D01* +D13* +X1109720Y5303413D02* +G01* +X1109720Y5112913D01* +X881120Y5112913D01* +X881120Y5303413D01* +X1109720Y5405013D02* +G01* +X1109720Y5595513D01* +X881120Y5595513D01* +X881120Y5405013D01* +X32867Y5131729D02* +G01* +X32867Y5322229D01* +X-195732Y5322229D01* +X-195732Y5131729D01* +X32867Y5030129D02* +G01* +X32867Y4839629D01* +X-195732Y4839629D01* +X-195732Y5030129D01* +X9385881Y6197892D02* +G01* +X9258881Y6197892D01* +X9258881Y6375692D01* +X9385881Y6375692D01* +X9462081Y6197892D02* +G01* +X9576381Y6197892D01* +X9576381Y6375692D01* +X9462081Y6375692D01* +D14* +X9560272Y6012263D02* +G01* +X9371042Y6012263D01* +X9371042Y6116403D01* +X9560272Y6116403D01* +X9560272Y6012263D01* +X2939773Y7355400D02* +G01* +X2939773Y7166170D01* +X2835633Y7166170D01* +X2835633Y7355400D01* +X2939773Y7355400D01* +D13* +X3086562Y7202060D02* +G01* +X2959562Y7202060D01* +X2959562Y7379860D01* +X3086562Y7379860D01* +X3162762Y7202060D02* +G01* +X3277062Y7202060D01* +X3277062Y7379860D01* +X3162762Y7379860D01* +D14* +X3498872Y7382443D02* +G01* +X3309642Y7382443D01* +X3309642Y7278303D01* +X3498872Y7278303D01* +X3498872Y7382443D01* +D13* +X3851061Y7262561D02* +G01* +X3851061Y7389561D01* +X4028861Y7389561D01* +X4028861Y7262561D01* +X3851061Y7186361D02* +G01* +X3851061Y7072061D01* +X4028861Y7072061D01* +X4028861Y7186361D01* +X4068363Y7260562D02* +G01* +X4068363Y7387562D01* +X4246163Y7387562D01* +X4246163Y7260562D01* +X4068363Y7184362D02* +G01* +X4068363Y7070062D01* +X4246163Y7070062D01* +X4246163Y7184362D01* +D14* +X1229951Y6447703D02* +G01* +X1125811Y6447703D01* +X1125811Y6258473D01* +X1229951Y6258473D01* +X1229951Y6447703D01* +X1131892Y6221354D02* +G01* +X1236032Y6221354D01* +X1236032Y6032124D01* +X1131892Y6032124D01* +X1131892Y6221354D01* +X2555692Y7167521D02* +G01* +X2555692Y7356751D01* +X2451552Y7356751D01* +X2451552Y7167521D01* +X2555692Y7167521D01* +X2531691Y6685521D02* +G01* +X2531691Y6874751D01* +X2427551Y6874751D01* +X2427551Y6685521D01* +X2531691Y6685521D01* +X2060602Y6360490D02* +G01* +X2060602Y6256350D01* +X1871372Y6256350D01* +X1871372Y6360490D01* +X2060602Y6360490D01* +X2095601Y7309490D02* +G01* +X1906371Y7309490D01* +X1906371Y7205350D01* +X2095601Y7205350D01* +X2095601Y7309490D01* +X1097572Y1687321D02* +G01* +X908342Y1687321D01* +X908342Y1583181D01* +X1097572Y1583181D01* +X1097572Y1687321D01* +D13* +X735733Y1545892D02* +G01* +X850033Y1545892D01* +X850033Y1723692D01* +X735733Y1723692D01* +X659533Y1545892D02* +G01* +X532533Y1545892D01* +X532533Y1723692D01* +X659533Y1723692D01* +D12* +X-333217Y6280779D02* +G01* +X-291307Y6280779D01* +X-29687Y6289669D02* +G01* +X449102Y6289669D01* +X654842Y6289669D02* +G01* +X691672Y6289669D01* +X830102Y5664829D02* +G01* +X830102Y6172829D01* +X280192Y5671179D02* +G01* +X633252Y5671179D01* +X-41117Y5669909D02* +G01* +X68102Y5669909D01* +X-342107Y5669909D02* +G01* +X-298927Y5669909D01* +X-126207Y5780399D02* +G01* +X-126207Y5847709D01* +X-126207Y6069959D02* +G01* +X-126207Y6134729D01* +D14* +X220502Y4563739D02* +G01* +X717072Y4563739D01* +X717072Y1771009D01* +X220502Y1771009D01* +X220502Y4563739D01* +X3519962Y766439D02* +G01* +X4031772Y766439D01* +X4031772Y1263009D01* +X3519962Y1263009D01* +X727232Y1263009D01* +X727232Y766439D01* +X3519962Y766439D01* +X5052852Y4566279D02* +G01* +X5549422Y4566279D01* +X5549422Y1773549D01* +X5052852Y1773549D01* +X5052852Y4566279D01* +D12* +X8652032Y4799962D02* +G01* +X8652032Y5014592D01* +X8961912Y5031102D02* +G01* +X8961912Y5073012D01* +X9113042Y5073012D01* +X9113042Y2493642D01* +X8961912Y2493642D01* +X8961912Y2533012D01* +X8652032Y2550792D02* +G01* +X8652032Y2747642D01* +D14* +X7364661Y2358580D02* +G01* +X7260521Y2358580D01* +X7260521Y2169350D01* +X7364661Y2169350D01* +X7364661Y2358580D01* +D13* +X4581827Y417014D02* +G01* +X4467527Y417014D01* +X4467527Y594814D01* +X4581827Y594814D01* +X4658027Y417014D02* +G01* +X4785027Y417014D01* +X4785027Y594814D01* +X4658027Y594814D01* +X5929734Y268892D02* +G01* +X6056734Y268892D01* +X6056734Y446692D01* +X5929734Y446692D01* +X5853534Y268892D02* +G01* +X5739234Y268892D01* +X5739234Y446692D01* +X5853534Y446692D01* +D14* +X6282133Y514791D02* +G01* +X7562133Y514791D01* +X8032132Y514791D01* +X8032132Y2114791D01* +X7562133Y2114791D01* +X6282133Y2114791D01* +X6282128Y514791D02* +G01* +X5812132Y514791D01* +X5812132Y2114791D01* +X6282128Y2114791D01* +X8032132Y964791D02* +G01* +X8362132Y964791D01* +X8362132Y1084790D01* +X8032132Y1664792D02* +G01* +X8362132Y1664792D01* +X8362132Y1544792D01* +X5482132Y964791D02* +G01* +X5482132Y1084790D01* +X5482132Y964791D01* +X5812132Y964791D01* +X5482132Y1664789D02* +G01* +X5482132Y1544789D01* +X5482132Y1664792D01* +X5811133Y1664792D01* +X234937Y5267413D02* +G01* +X234937Y5312397D01* +X279920Y5312397D01* +X234937Y5012397D02* +G01* +X234937Y4967414D01* +X279920Y4967414D01* +X534936Y4967414D02* +G01* +X579920Y4967414D01* +X579920Y5012397D01* +X534936Y5312397D02* +G01* +X579920Y5312397D01* +X579920Y5267413D01* +X1099860Y5082443D02* +G01* +X1099860Y4978303D01* +X910630Y4978303D01* +X910630Y5082443D01* +X1099860Y5082443D01* +X386031Y4848354D02* +G01* +X386031Y4659124D01* +X281891Y4659124D01* +X281891Y4848354D01* +X386031Y4848354D01* +X-11993Y4716759D02* +G01* +X-201223Y4716759D01* +X-201223Y4612619D01* +X-11993Y4612619D01* +X-11993Y4716759D01* +X1098212Y4845385D02* +G01* +X908982Y4845385D01* +X908982Y4949525D01* +X1098212Y4949525D01* +X1098212Y4845385D01* +X844859Y5467443D02* +G01* +X844859Y5363303D01* +X655629Y5363303D01* +X655629Y5467443D01* +X844859Y5467443D01* +X12860Y5461444D02* +G01* +X12860Y5357304D01* +X-176369Y5357304D01* +X-176369Y5461444D01* +X12860Y5461444D01* +D13* +X-38661Y4277314D02* +G01* +X-38661Y4163014D01* +X-216461Y4163014D01* +X-216461Y4277314D01* +X-38661Y4353514D02* +G01* +X-38661Y4480514D01* +X-216461Y4480514D01* +X-216461Y4353514D01* +D14* +X513031Y4849352D02* +G01* +X513031Y4660122D01* +X408891Y4660122D01* +X408891Y4849352D01* +X513031Y4849352D01* +X5617032Y6745353D02* +G01* +X5617032Y6556123D01* +X5512892Y6556123D01* +X5512892Y6745353D01* +X5617032Y6745353D01* +X-209364Y5222179D02* +G01* +X-209364Y5163759D01* +X-318584Y5163759D01* +X-318584Y5220909D01* +X-209364Y5368229D02* +G01* +X-209364Y5424109D01* +X-318584Y5424109D01* +X-318584Y5365689D01* +X-265244Y5270439D02* +G01* +X-252544Y5270439D01* +X-203014Y5319969D01* +X-324934Y5319969D01* +X-275404Y5270439D01* +X-252544Y5270439D01* +X-204284Y4936550D02* +G01* +X-204284Y4993700D01* +X-313504Y4993700D01* +X-313504Y4935280D01* +X-204284Y4791770D02* +G01* +X-204284Y4733350D01* +X-313504Y4733350D01* +X-313504Y4789230D01* +X-270324Y4887020D02* +G01* +X-247464Y4887020D01* +X-197934Y4837490D01* +X-319854Y4837490D01* +X-270324Y4887020D01* +X-257624Y4887020D01* +G75* +G01* +X6270429Y6507907D02* +G03* +X6270420Y6507463I-10007J1D01* +G75* +G01* +X3124736Y6494856D02* +G03* +X3124731Y6494436I-19103J-2D01* +D12* +G75* +G01* +X11527781Y5386702D02* +G03* +X11584932Y5456552I-19518J74275D01* +G75* +G01* +X11584932Y6397623D02* +G03* +X11484603Y6487792I-83883J7566D01* +G75* +G01* +X11454123Y6443342D02* +G03* +X11384272Y6308721I85476J-129783D01* +G75* +G01* +X7853631Y4002928D02* +G03* +X7844794Y4002828I-5033J54107D01* +D14* +G75* +G01* +X327721Y1425207D02* +G03* +X327717Y1424807I-18184J-4D01* +D12* +G75* +G01* +X1732163Y6730462D02* +G03* +X1732163Y6857462I0J63500D01* +D14* +G75* +G01* +X169144Y1782440D02* +G03* +X169139Y1782033I-18492J4D01* +G75* +G01* +X757154Y1332860D02* +G03* +X757149Y1332453I-18492J4D01* +G75* +G01* +X5001494Y1784980D02* +G03* +X5001489Y1784573I-18492J4D01* +D12* +G75* +G01* +X8613074Y2737482D02* +G03* +X8613042Y2736768I-8032J0D01* +D14* +G75* +G01* +X7562134Y514793D02* +G03* +X7562134Y2114787I-640001J799997D01* +G75* +G01* +X6282130Y2114787D02* +G03* +X6282130Y514793I640002J-799997D01* +G75* +G01* +X621424Y4999660D02* +G03* +X621426Y5000076I14998J126D01* +M02* diff --git a/hardware/portapack_h4m/h4-gerbers/Gerber_TopSolderMaskLayer.GTS b/hardware/portapack_h4m/h4-gerbers/Gerber_TopSolderMaskLayer.GTS new file mode 100644 index 000000000..c7dc71452 --- /dev/null +++ b/hardware/portapack_h4m/h4-gerbers/Gerber_TopSolderMaskLayer.GTS @@ -0,0 +1,1220 @@ +G04 Layer: TopSolderMaskLayer* +G04 EasyEDA v6.5.46, 2025-01-01 16:01:39* +G04 1acd7fc2553046b79c71bda98b4923fc,10* +G04 Gerber Generator version 0.2* +G04 Scale: 100 percent, Rotated: No, Reflected: No * +G04 Dimensions in millimeters * +G04 leading zeros omitted , absolute positions ,4 integer and 5 decimal * +%FSLAX45Y45*% +%MOMM*% + +%AMMACRO1*4,1,8,-0.4711,-0.6008,-0.5008,-0.5711,-0.5008,0.571,-0.4711,0.6008,0.471,0.6008,0.5008,0.571,0.5008,-0.5711,0.471,-0.6008,-0.4711,-0.6008,0*% +%AMMACRO2*4,1,8,-0.3711,-1.0508,-0.4008,-1.0211,-0.4008,1.021,-0.3711,1.0508,0.371,1.0508,0.4008,1.021,0.4008,-1.0211,0.371,-1.0508,-0.3711,-1.0508,0*% +%AMMACRO3*4,1,8,-0.3636,-0.1508,-0.3933,-0.1211,-0.3933,0.121,-0.3636,0.1508,0.3635,0.1508,0.3933,0.121,0.3933,-0.1211,0.3635,-0.1508,-0.3636,-0.1508,0*% +%AMMACRO4*4,1,8,-0.6711,-0.7508,-0.7008,-0.7211,-0.7008,0.721,-0.6711,0.7508,0.671,0.7508,0.7008,0.721,0.7008,-0.7211,0.671,-0.7508,-0.6711,-0.7508,0*% +%AMMACRO5*4,1,8,-0.8085,-0.8382,-0.8382,-0.8085,-0.8382,0.8084,-0.8085,0.8382,0.8084,0.8382,0.8382,0.8084,0.8382,-0.8085,0.8084,-0.8382,-0.8085,-0.8382,0*% +%AMMACRO6*4,1,8,-1.5211,-1.5508,-1.5508,-1.5211,-1.5508,1.521,-1.5211,1.5508,1.521,1.5508,1.5508,1.521,1.5508,-1.5211,1.521,-1.5508,-1.5211,-1.5508,0*% +%AMMACRO7*4,1,8,-0.5211,-0.1908,-0.5508,-0.161,-0.5508,0.161,-0.5211,0.1908,0.521,0.1908,0.5508,0.161,0.5508,-0.161,0.521,-0.1908,-0.5211,-0.1908,0*% +%AMMACRO8*4,1,8,-0.161,-0.5508,-0.1908,-0.5211,-0.1908,0.521,-0.161,0.5508,0.161,0.5508,0.1908,0.521,0.1908,-0.5211,0.161,-0.5508,-0.161,-0.5508,0*% +%AMMACRO9*4,1,8,-0.3211,-0.3008,-0.3508,-0.2711,-0.3508,0.271,-0.3211,0.3008,0.321,0.3008,0.3508,0.271,0.3508,-0.2711,0.321,-0.3008,-0.3211,-0.3008,0*% +%AMMACRO10*4,1,8,-0.7711,-0.6508,-0.8008,-0.6211,-0.8008,0.621,-0.7711,0.6508,0.771,0.6508,0.8008,0.621,0.8008,-0.6211,0.771,-0.6508,-0.7711,-0.6508,0*% +%AMMACRO11*4,1,8,-0.7711,-0.4008,-0.8008,-0.3711,-0.8008,0.371,-0.7711,0.4008,0.771,0.4008,0.8008,0.371,0.8008,-0.3711,0.771,-0.4008,-0.7711,-0.4008,0*% +%AMMACRO12*4,1,8,-0.7461,-0.9258,-0.7758,-0.8961,-0.7758,0.896,-0.7461,0.9258,0.746,0.9258,0.7758,0.896,0.7758,-0.8961,0.746,-0.9258,-0.7461,-0.9258,0*% +%AMMACRO13*4,1,8,-1.1711,-0.7008,-1.2008,-0.6711,-1.2008,0.671,-1.1711,0.7008,1.171,0.7008,1.2008,0.671,1.2008,-0.6711,1.171,-0.7008,-1.1711,-0.7008,0*% +%AMMACRO14*4,1,8,-1.1711,-0.7008,-1.2008,-0.671,-1.2008,0.671,-1.1711,0.7008,1.171,0.7008,1.2008,0.671,1.2008,-0.671,1.171,-0.7008,-1.1711,-0.7008,0*% +%AMMACRO15*4,1,8,-0.8211,-0.1858,-0.8508,-0.1561,-0.8508,0.156,-0.8211,0.1858,0.821,0.1858,0.8508,0.156,0.8508,-0.1561,0.821,-0.1858,-0.8211,-0.1858,0*% +%AMMACRO16*4,1,8,-0.156,-0.8508,-0.1858,-0.8211,-0.1858,0.821,-0.156,0.8508,0.156,0.8508,0.1858,0.821,0.1858,-0.8211,0.156,-0.8508,-0.156,-0.8508,0*% +%AMMACRO17*4,1,8,-0.1561,-0.8508,-0.1858,-0.8211,-0.1858,0.821,-0.1561,0.8508,0.156,0.8508,0.1858,0.821,0.1858,-0.8211,0.156,-0.8508,-0.1561,-0.8508,0*% +%AMMACRO18*4,1,8,-0.5632,-0.6429,-0.5929,-0.6132,-0.5929,0.6131,-0.5632,0.6429,0.5631,0.6429,0.5929,0.6131,0.5929,-0.6132,0.5631,-0.6429,-0.5632,-0.6429,0*% +%AMMACRO19*4,1,8,-0.7831,-0.6508,-0.8128,-0.6211,-0.8128,0.621,-0.7831,0.6508,0.783,0.6508,0.8128,0.621,0.8128,-0.6211,0.783,-0.6508,-0.7831,-0.6508,0*% +%AMMACRO20*4,1,8,-0.2711,-0.3508,-0.3008,-0.3211,-0.3008,0.321,-0.2711,0.3508,0.271,0.3508,0.3008,0.321,0.3008,-0.3211,0.271,-0.3508,-0.2711,-0.3508,0*% +%AMMACRO21*4,1,8,-0.4783,-0.6858,-0.508,-0.6561,-0.508,0.656,-0.4783,0.6858,0.4782,0.6858,0.508,0.656,0.508,-0.6561,0.4782,-0.6858,-0.4783,-0.6858,0*% +%AMMACRO22*4,1,8,-2.021,-0.6508,-2.0508,-0.6211,-2.0508,0.621,-2.021,0.6508,2.021,0.6508,2.0508,0.621,2.0508,-0.6211,2.021,-0.6508,-2.021,-0.6508,0*% +%AMMACRO23*4,1,8,-0.7711,-1.3008,-0.8008,-1.2711,-0.8008,1.271,-0.7711,1.3008,0.771,1.3008,0.8008,1.271,0.8008,-1.2711,0.771,-1.3008,-0.7711,-1.3008,0*% +%AMMACRO24*4,1,8,-0.3711,-0.8508,-0.4008,-0.8211,-0.4008,0.821,-0.3711,0.8508,0.371,0.8508,0.4008,0.821,0.4008,-0.8211,0.371,-0.8508,-0.3711,-0.8508,0*% +%AMMACRO25*4,1,8,-0.5711,-0.5008,-0.6008,-0.4711,-0.6008,0.471,-0.5711,0.5008,0.571,0.5008,0.6008,0.471,0.6008,-0.4711,0.571,-0.5008,-0.5711,-0.5008,0*% +%AMMACRO26*4,1,8,-0.6211,-0.8128,-0.6508,-0.7831,-0.6508,0.783,-0.6211,0.8128,0.621,0.8128,0.6508,0.783,0.6508,-0.7831,0.621,-0.8128,-0.6211,-0.8128,0*% +%AMMACRO27*4,1,8,-1.1211,-1.3008,-1.1508,-1.2711,-1.1508,1.271,-1.1211,1.3008,1.121,1.3008,1.1508,1.271,1.1508,-1.2711,1.121,-1.3008,-1.1211,-1.3008,0*% +%AMMACRO28*4,1,8,-0.8211,-1.3008,-0.8508,-1.2711,-0.8508,1.271,-0.8211,1.3008,0.821,1.3008,0.8508,1.271,0.8508,-1.2711,0.821,-1.3008,-0.8211,-1.3008,0*% +%AMMACRO29*4,1,8,-0.8211,-1.3008,-0.8508,-1.271,-0.8508,1.271,-0.8211,1.3008,0.821,1.3008,0.8508,1.271,0.8508,-1.271,0.821,-1.3008,-0.8211,-1.3008,0*% +%AMMACRO30*4,1,8,-1.6211,-0.5508,-1.6508,-0.5211,-1.6508,0.521,-1.6211,0.5508,1.621,0.5508,1.6508,0.521,1.6508,-0.5211,1.621,-0.5508,-1.6211,-0.5508,0*% +%AMMACRO31*4,1,8,-1.621,-0.5508,-1.6508,-0.5211,-1.6508,0.521,-1.621,0.5508,1.621,0.5508,1.6508,0.521,1.6508,-0.5211,1.621,-0.5508,-1.621,-0.5508,0*% +%AMMACRO32*4,1,8,-0.5211,-1.6508,-0.5508,-1.6211,-0.5508,1.621,-0.5211,1.6508,0.521,1.6508,0.5508,1.621,0.5508,-1.6211,0.521,-1.6508,-0.5211,-1.6508,0*% +%AMMACRO33*4,1,8,-1.6211,-2.1508,-1.6508,-2.1211,-1.6508,2.121,-1.6211,2.1508,1.621,2.1508,1.6508,2.121,1.6508,-2.1211,1.621,-2.1508,-1.6211,-2.1508,0*% +%AMMACRO34*4,1,8,-0.3711,-0.1758,-0.4008,-0.1461,-0.4008,0.146,-0.3711,0.1758,0.371,0.1758,0.4008,0.146,0.4008,-0.1461,0.371,-0.1758,-0.3711,-0.1758,0*% +%AMMACRO35*4,1,8,-0.3711,-0.1758,-0.4008,-0.146,-0.4008,0.146,-0.3711,0.1758,0.371,0.1758,0.4008,0.146,0.4008,-0.146,0.371,-0.1758,-0.3711,-0.1758,0*% +%AMMACRO36*4,1,8,-0.1461,-0.4008,-0.1758,-0.3711,-0.1758,0.371,-0.1461,0.4008,0.146,0.4008,0.1758,0.371,0.1758,-0.3711,0.146,-0.4008,-0.1461,-0.4008,0*% +%AMMACRO37*4,1,8,-0.146,-0.4008,-0.1758,-0.3711,-0.1758,0.371,-0.146,0.4008,0.146,0.4008,0.1758,0.371,0.1758,-0.3711,0.146,-0.4008,-0.146,-0.4008,0*% +%AMMACRO38*4,1,8,-0.8211,-0.8508,-0.8508,-0.8211,-0.8508,0.821,-0.8211,0.8508,0.821,0.8508,0.8508,0.821,0.8508,-0.8211,0.821,-0.8508,-0.8211,-0.8508,0*% +%AMMACRO39*4,1,8,-0.3711,-0.4008,-0.4008,-0.3711,-0.4008,0.371,-0.3711,0.4008,0.371,0.4008,0.4008,0.371,0.4008,-0.3711,0.371,-0.4008,-0.3711,-0.4008,0*% +%ADD10C,0.9016*% +%ADD11C,1.1016*% +%ADD12MACRO1*% +%ADD13MACRO2*% +%ADD14MACRO3*% +%ADD15C,0.0199*% +%ADD16MACRO4*% +%ADD17C,1.6766*% +%ADD18C,1.6764*% +%ADD19MACRO5*% +%ADD20MACRO6*% +%ADD21MACRO7*% +%ADD22MACRO8*% +%ADD23MACRO9*% +%ADD24MACRO10*% +%ADD25MACRO11*% +%ADD26MACRO12*% +%ADD27MACRO13*% +%ADD28MACRO14*% +%ADD29MACRO15*% +%ADD30MACRO16*% +%ADD31MACRO17*% +%ADD32MACRO18*% +%ADD33O,0.7111999999999999X2.1336*% +%ADD34MACRO19*% +%ADD35MACRO20*% +%ADD36MACRO21*% +%ADD37O,3.6015676000000005X1.3015976000000002*% +%ADD38MACRO22*% +%ADD39MACRO23*% +%ADD40MACRO24*% +%ADD41MACRO25*% +%ADD42MACRO26*% +%ADD43MACRO27*% +%ADD44MACRO28*% +%ADD45MACRO29*% +%ADD46C,1.6016*% +%ADD47MACRO30*% +%ADD48MACRO31*% +%ADD49MACRO32*% +%ADD50O,1.3516102X0.40159940000000005*% +%ADD51O,3.1015939999999995X2.101596*% +%ADD52C,5.4016*% +%ADD53MACRO33*% +%ADD54MACRO34*% +%ADD55MACRO35*% +%ADD56MACRO36*% +%ADD57MACRO37*% +%ADD58MACRO38*% +%ADD59MACRO39*% +%ADD60C,1.8016*% +%ADD61C,1.7016*% +%ADD62C,2.4016*% + +%LPD*% +D10* +G01* +X7879433Y2227910D03* +G01* +X7956420Y2308910D03* +G01* +X8039427Y2398903D03* +D11* +G01* +X972538Y372922D03* +G01* +X603171Y7093965D03* +G01* +X10676176Y6876795D03* +G01* +X10604522Y740841D03* +G01* +X6964804Y2299792D03* +G01* +X7614790Y2183104D03* +D12* +G01* +X3724070Y7318959D03* +G01* +X3724070Y7142962D03* +D13* +G01* +X10112170Y1322958D03* +G01* +X10112170Y872972D03* +G01* +X9858170Y1322958D03* +G01* +X9858170Y872972D03* +G01* +X9604170Y1322958D03* +G01* +X9604170Y872972D03* +G01* +X9350170Y1322958D03* +G01* +X9350170Y872972D03* +G01* +X9096170Y1322958D03* +G01* +X9096170Y872972D03* +G01* +X8842170Y1322958D03* +G01* +X8842170Y872972D03* +D14* +G01* +X6261173Y6574891D03* +G01* +X6261173Y6614896D03* +G01* +X6261173Y6654901D03* +G01* +X6261173Y6694906D03* +G01* +X6261173Y6734911D03* +G01* +X6017689Y6734911D03* +G01* +X6017689Y6694906D03* +G01* +X6017689Y6654901D03* +G01* +X6017689Y6614896D03* +G01* +X6017689Y6574891D03* +D16* +G01* +X6139432Y6654901D03* +D17* +G01* +X6982152Y6992950D03* +G01* +X6982152Y6738950D03* +G01* +X7744152Y6992950D03* +D18* +G01* +X7998152Y6738950D03* +G01* +X7744152Y6738950D03* +G01* +X7490152Y6738950D03* +D19* +G01* +X7998152Y6992950D03* +D18* +G01* +X7490152Y6992950D03* +G01* +X7236152Y6738950D03* +G01* +X7236152Y6992950D03* +D20* +G01* +X3315637Y6825970D03* +D21* +G01* +X3065625Y6675958D03* +G01* +X3065625Y6725970D03* +G01* +X3065625Y6775958D03* +G01* +X3065625Y6975956D03* +G01* +X3065625Y6925969D03* +G01* +X3065625Y6875956D03* +G01* +X3065625Y6825970D03* +G01* +X3565624Y6675958D03* +G01* +X3565624Y6725970D03* +G01* +X3565624Y6775958D03* +G01* +X3565624Y6975956D03* +G01* +X3565624Y6925969D03* +G01* +X3565624Y6875956D03* +G01* +X3565624Y6825970D03* +D22* +G01* +X3165626Y7075957D03* +G01* +X3215637Y7075957D03* +G01* +X3265625Y7075957D03* +G01* +X3465624Y7075957D03* +G01* +X3415638Y7075957D03* +G01* +X3365624Y7075957D03* +G01* +X3315638Y7075957D03* +G01* +X3165626Y6575958D03* +G01* +X3215637Y6575958D03* +G01* +X3265625Y6575958D03* +G01* +X3465624Y6575958D03* +G01* +X3415638Y6575958D03* +G01* +X3365624Y6575958D03* +G01* +X3315638Y6575958D03* +D23* +G01* +X116558Y5085943D03* +G01* +X116558Y4994503D03* +D24* +G01* +X10060937Y5250814D03* +D25* +G01* +X9999977Y5920738D03* +G01* +X9999977Y5810883D03* +G01* +X9999977Y5701028D03* +G01* +X9999977Y5591173D03* +G01* +X9999977Y5481319D03* +G01* +X9999977Y5371463D03* +G01* +X9999977Y6250303D03* +G01* +X9999977Y6140448D03* +G01* +X9999977Y6030594D03* +D26* +G01* +X10058398Y6720205D03* +D27* +G01* +X11018518Y6810373D03* +D28* +G01* +X11023598Y5252085D03* +D29* +G01* +X6503794Y3342817D03* +G01* +X6503794Y3392830D03* +G01* +X6503794Y3442817D03* +G01* +X6503794Y3492830D03* +G01* +X6503794Y3542817D03* +G01* +X6503794Y3592830D03* +G01* +X6503794Y3642817D03* +G01* +X6503794Y3692829D03* +G01* +X6503794Y3742817D03* +G01* +X6503794Y3792829D03* +G01* +X6503794Y3842816D03* +G01* +X6503794Y3892829D03* +G01* +X6503794Y3942816D03* +G01* +X6503794Y3992829D03* +G01* +X6503794Y4042816D03* +G01* +X6503794Y4092829D03* +D30* +G01* +X7514791Y4301820D03* +G01* +X7464804Y4301820D03* +G01* +X7414792Y4301820D03* +D31* +G01* +X7364803Y4301820D03* +G01* +X7314791Y4301820D03* +G01* +X7264803Y4301820D03* +G01* +X7214791Y4301820D03* +G01* +X7164804Y4301820D03* +G01* +X7114791Y4301820D03* +G01* +X7064804Y4301820D03* +G01* +X7014791Y4301820D03* +G01* +X6964804Y4301820D03* +G01* +X6914791Y4301820D03* +D30* +G01* +X6864805Y4301820D03* +G01* +X6814793Y4301820D03* +G01* +X6764806Y4301820D03* +G01* +X6714793Y2682824D03* +G01* +X6764806Y2682824D03* +G01* +X6814793Y2682824D03* +G01* +X6864805Y2682824D03* +D31* +G01* +X6914791Y2682824D03* +G01* +X6964804Y2682824D03* +G01* +X7014791Y2682824D03* +G01* +X7064804Y2682824D03* +G01* +X7114791Y2682824D03* +G01* +X7164804Y2682824D03* +G01* +X7214791Y2682824D03* +G01* +X7264803Y2682824D03* +G01* +X7314791Y2682824D03* +G01* +X7364803Y2682824D03* +D30* +G01* +X7414792Y2682824D03* +G01* +X7464804Y2682824D03* +D29* +G01* +X6503794Y2892831D03* +D30* +G01* +X7564804Y4301820D03* +G01* +X7614791Y4301820D03* +G01* +X7664804Y4301820D03* +G01* +X7714791Y4301820D03* +G01* +X7764804Y4301820D03* +D31* +G01* +X7814790Y4301820D03* +G01* +X7864802Y4301820D03* +G01* +X7914789Y4301820D03* +D30* +G01* +X6714793Y4301820D03* +D29* +G01* +X6503794Y2942818D03* +G01* +X6503794Y2992831D03* +G01* +X6503794Y3042818D03* +G01* +X6503794Y3092831D03* +G01* +X6503794Y3142818D03* +G01* +X6503794Y3192830D03* +G01* +X6503794Y3242818D03* +G01* +X6503794Y3292830D03* +D31* +G01* +X7864802Y2682824D03* +G01* +X7814790Y2682824D03* +D30* +G01* +X7764804Y2682824D03* +G01* +X7714791Y2682824D03* +G01* +X7664804Y2682824D03* +G01* +X7614791Y2682824D03* +G01* +X7564804Y2682824D03* +G01* +X7514791Y2682824D03* +D31* +G01* +X7914789Y2682824D03* +D29* +G01* +X8124797Y3142818D03* +G01* +X8124797Y3092831D03* +G01* +X8124797Y3042818D03* +G01* +X8124797Y2992831D03* +G01* +X8124797Y2942818D03* +G01* +X8124797Y2892831D03* +G01* +X8124797Y3192830D03* +G01* +X8124797Y3492830D03* +G01* +X8124797Y3442817D03* +G01* +X8124797Y3392830D03* +G01* +X8124797Y3342817D03* +G01* +X8124797Y3292830D03* +G01* +X8124797Y3242818D03* +G01* +X8124797Y3542817D03* +G01* +X8124797Y3842816D03* +G01* +X8124797Y3792829D03* +G01* +X8124797Y3742817D03* +G01* +X8124797Y3692829D03* +G01* +X8124797Y3642817D03* +G01* +X8124797Y3592830D03* +G01* +X8124797Y3892829D03* +G01* +X8124797Y4092829D03* +G01* +X8124797Y4042816D03* +G01* +X8124797Y3992829D03* +G01* +X8124797Y3942816D03* +D23* +G01* +X5791451Y6796633D03* +G01* +X5791451Y6705193D03* +D32* +G01* +X403528Y1401064D03* +G01* +X592757Y1158493D03* +G01* +X592757Y1401064D03* +G01* +X403528Y1158493D03* +D33* +G01* +X1795675Y6514566D03* +G01* +X1922675Y7073366D03* +G01* +X1795675Y7073366D03* +G01* +X2176675Y7073366D03* +G01* +X2176675Y6514566D03* +G01* +X1922675Y6514566D03* +G01* +X2049675Y6514566D03* +G01* +X2049675Y7073366D03* +D34* +G01* +X6034427Y7024903D03* +G01* +X6263027Y7024903D03* +D23* +G01* +X556435Y5517642D03* +G01* +X556409Y5426201D03* +G01* +X429435Y5432196D03* +G01* +X429435Y5523636D03* +G01* +X2758158Y7218248D03* +G01* +X2758158Y7309688D03* +D35* +G01* +X9419791Y5795949D03* +G01* +X9511230Y5795949D03* +G01* +X9510240Y5923965D03* +G01* +X9418800Y5923965D03* +G01* +X2716883Y6864959D03* +G01* +X2625443Y6864959D03* +D23* +G01* +X3164151Y6396685D03* +G01* +X3164151Y6305245D03* +D35* +G01* +X4275452Y6984949D03* +G01* +X4366893Y6984949D03* +G01* +X4366893Y6730949D03* +G01* +X4275452Y6730949D03* +G01* +X4367883Y6602958D03* +G01* +X4276443Y6602958D03* +D23* +G01* +X1036419Y6399631D03* +G01* +X1036419Y6308191D03* +G01* +X1036419Y6079185D03* +G01* +X1036419Y6170625D03* +G01* +X2634155Y7305675D03* +G01* +X2634155Y7214235D03* +G01* +X2378174Y7304684D03* +G01* +X2378174Y7213244D03* +G01* +X2478173Y6514236D03* +G01* +X2478173Y6605676D03* +G01* +X2353155Y6512229D03* +G01* +X2353155Y6603669D03* +D35* +G01* +X4275452Y6856958D03* +G01* +X4366893Y6856958D03* +G01* +X8331248Y4370857D03* +G01* +X8239809Y4370857D03* +D23* +G01* +X8356292Y3113049D03* +G01* +X8356292Y3021609D03* +D35* +G01* +X8499574Y2197328D03* +G01* +X8591015Y2197328D03* +G01* +X8324009Y2191334D03* +G01* +X8232570Y2191334D03* +D23* +G01* +X196136Y1307058D03* +G01* +X196136Y1398498D03* +D12* +G01* +X1075535Y1872842D03* +G01* +X1075535Y2048840D03* +D23* +G01* +X590141Y787501D03* +G01* +X590141Y696061D03* +G01* +X-93830Y3932250D03* +G01* +X-93830Y4023690D03* +D36* +G01* +X8331299Y2372334D03* +G01* +X8427819Y2595524D03* +G01* +X8521799Y2372334D03* +D37* +G01* +X6535163Y6014846D03* +D38* +G01* +X5905168Y5594857D03* +G01* +X5905168Y6234836D03* +D37* +G01* +X6535163Y5814847D03* +D39* +G01* +X1536165Y7085963D03* +G01* +X816175Y7085963D03* +D40* +G01* +X1239669Y7335951D03* +G01* +X1112669Y7335951D03* +D12* +G01* +X-124462Y1978837D03* +G01* +X-124462Y2154833D03* +D41* +G01* +X7396529Y4961837D03* +G01* +X7220532Y4961837D03* +D23* +G01* +X7169122Y2308504D03* +G01* +X7169122Y2217064D03* +D35* +G01* +X8242882Y1828952D03* +G01* +X8151441Y1828952D03* +G01* +X7319820Y4769840D03* +G01* +X7411261Y4769840D03* +D41* +G01* +X4295162Y6417969D03* +G01* +X4471159Y6417969D03* +D42* +G01* +X5027165Y1548968D03* +G01* +X5027165Y1320368D03* +D23* +G01* +X3467173Y6304229D03* +G01* +X3467173Y6395669D03* +D42* +G01* +X995423Y5468518D03* +G01* +X995423Y5239918D03* +G01* +X-81434Y4966639D03* +G01* +X-81434Y5195239D03* +D41* +G01* +X9329494Y6286778D03* +G01* +X9505491Y6286778D03* +D35* +G01* +X9508208Y6061786D03* +G01* +X9416768Y6061786D03* +D23* +G01* +X2885158Y7309688D03* +G01* +X2885158Y7218248D03* +D41* +G01* +X3030167Y7290967D03* +G01* +X3206164Y7290967D03* +D35* +G01* +X3361712Y7332903D03* +G01* +X3453154Y7332903D03* +D12* +G01* +X3939970Y7318959D03* +G01* +X3939970Y7142962D03* +G01* +X4157266Y7316952D03* +G01* +X4157266Y7140954D03* +D23* +G01* +X1180411Y6395643D03* +G01* +X1180411Y6304203D03* +G01* +X1181427Y6084189D03* +G01* +X1181427Y6175629D03* +G01* +X2506164Y7213244D03* +G01* +X2506164Y7304684D03* +G01* +X2482161Y6731228D03* +G01* +X2482161Y6822668D03* +D35* +G01* +X2014879Y6310960D03* +G01* +X1923437Y6310960D03* +G01* +X2049879Y7259954D03* +G01* +X1958440Y7259954D03* +G01* +X960422Y1637792D03* +G01* +X1051863Y1637792D03* +D41* +G01* +X779143Y1634794D03* +G01* +X603147Y1634794D03* +D43* +G01* +X-173205Y5634353D03* +G01* +X-164315Y6303644D03* +D44* +G01* +X167154Y5641974D03* +G01* +X558314Y6320153D03* +D45* +G01* +X734844Y5641975D03* +D44* +G01* +X788184Y6320153D03* +D46* +G01* +X-123675Y5972175D03* +G01* +X587524Y5972175D03* +D47* +G01* +X193824Y1901824D03* +G01* +X746274Y1901824D03* +G01* +X193824Y2155698D03* +G01* +X746274Y2155698D03* +G01* +X193824Y2409571D03* +G01* +X746274Y2409571D03* +G01* +X193824Y2663443D03* +G01* +X746274Y2663443D03* +G01* +X193824Y2917316D03* +G01* +X746274Y2917316D03* +G01* +X193824Y3171190D03* +G01* +X193824Y3425063D03* +G01* +X193824Y3932808D03* +G01* +X193824Y3678935D03* +G01* +X193824Y4186682D03* +G01* +X193824Y4440555D03* +G01* +X746274Y3171190D03* +G01* +X746274Y3425063D03* +G01* +X746274Y3678935D03* +D48* +G01* +X746276Y3932808D03* +D47* +G01* +X746274Y4186682D03* +G01* +X746274Y4440555D03* +D49* +G01* +X3908574Y1292225D03* +G01* +X3908574Y739775D03* +G01* +X3654701Y739775D03* +G01* +X3654701Y1292225D03* +G01* +X3396764Y739775D03* +G01* +X3142891Y739775D03* +G01* +X2889018Y739775D03* +G01* +X2635145Y739775D03* +G01* +X2381272Y739775D03* +G01* +X2127399Y739775D03* +G01* +X3396764Y1292225D03* +G01* +X3142891Y1292225D03* +G01* +X2635145Y1292225D03* +G01* +X2889018Y1292225D03* +G01* +X2381272Y1292225D03* +G01* +X2127399Y1292225D03* +G01* +X1873526Y739775D03* +G01* +X1873526Y1292225D03* +G01* +X1619653Y739775D03* +G01* +X1619653Y1292225D03* +G01* +X1365780Y739775D03* +G01* +X1365780Y1292225D03* +G01* +X1111907Y739775D03* +G01* +X1111907Y1292225D03* +G01* +X858034Y739775D03* +G01* +X858034Y1292225D03* +D47* +G01* +X5026174Y1904365D03* +G01* +X5578624Y1904365D03* +G01* +X5026174Y2158238D03* +G01* +X5578624Y2158238D03* +G01* +X5026174Y2412110D03* +G01* +X5578624Y2412110D03* +G01* +X5026174Y2665983D03* +G01* +X5578624Y2665983D03* +D48* +G01* +X5026176Y2919857D03* +D47* +G01* +X5578624Y2919857D03* +G01* +X5026174Y3173730D03* +G01* +X5026174Y3427602D03* +G01* +X5026174Y3935349D03* +G01* +X5026174Y3681475D03* +G01* +X5026174Y4189222D03* +G01* +X5026174Y4443094D03* +G01* +X5578624Y3173730D03* +G01* +X5578624Y3427602D03* +G01* +X5578624Y3681475D03* +G01* +X5578624Y3935349D03* +G01* +X5578624Y4189222D03* +G01* +X5578624Y4443094D03* +D50* +G01* +X8603764Y2790825D03* +G01* +X8603764Y2841040D03* +G01* +X8603764Y2891256D03* +G01* +X8603764Y2941472D03* +G01* +X8603764Y2991688D03* +G01* +X8603764Y3041878D03* +G01* +X8603764Y3092094D03* +G01* +X8603764Y3142310D03* +G01* +X8603764Y3192526D03* +G01* +X8603764Y3242741D03* +G01* +X8603764Y3292957D03* +G01* +X8603764Y3343173D03* +G01* +X8603764Y3393389D03* +G01* +X8603764Y3443604D03* +G01* +X8603764Y3493820D03* +G01* +X8603764Y3544036D03* +G01* +X8603764Y3594252D03* +G01* +X8603764Y3644468D03* +G01* +X8603764Y3694658D03* +G01* +X8603764Y3744874D03* +G01* +X8603764Y3795090D03* +G01* +X8603764Y3845305D03* +G01* +X8603764Y3895521D03* +G01* +X8603764Y3945737D03* +G01* +X8603764Y3995953D03* +G01* +X8603764Y4046169D03* +G01* +X8603764Y4096385D03* +G01* +X8603764Y4146600D03* +G01* +X8603764Y4196816D03* +G01* +X8603764Y4247032D03* +G01* +X8603764Y4297248D03* +G01* +X8603764Y4347438D03* +G01* +X8603764Y4397654D03* +G01* +X8603764Y4447870D03* +G01* +X8603764Y4498086D03* +G01* +X8603764Y4548301D03* +G01* +X8603764Y4598517D03* +G01* +X8603764Y4648733D03* +G01* +X8603764Y4698949D03* +G01* +X8603764Y4749164D03* +D51* +G01* +X8831094Y4902835D03* +G01* +X8837444Y2639695D03* +D52* +G01* +X54124Y391795D03* +G01* +X11252984Y398145D03* +G01* +X11249174Y7108825D03* +G01* +X40154Y7085964D03* +D23* +G01* +X7315121Y2215057D03* +G01* +X7315146Y2306497D03* +D41* +G01* +X4538419Y505917D03* +G01* +X4714416Y505917D03* +G01* +X5986143Y357783D03* +G01* +X5810147Y357783D03* +D53* +G01* +X8362134Y1314780D03* +G01* +X5482130Y1314780D03* +D54* +G01* +X547419Y5064912D03* +D55* +G01* +X547419Y5114924D03* +D54* +G01* +X547419Y5164912D03* +G01* +X547419Y5214924D03* +D56* +G01* +X482419Y5279922D03* +G01* +X432432Y5279922D03* +G01* +X382419Y5279922D03* +D57* +G01* +X332432Y5279922D03* +D54* +G01* +X267434Y5214924D03* +G01* +X267434Y5164912D03* +D55* +G01* +X267434Y5114924D03* +D54* +G01* +X267434Y5064912D03* +D57* +G01* +X332432Y4999912D03* +D56* +G01* +X382419Y4999912D03* +G01* +X432432Y4999912D03* +G01* +X482419Y4999912D03* +D58* +G01* +X407413Y5139918D03* +D35* +G01* +X1054148Y5032908D03* +G01* +X962709Y5032908D03* +D23* +G01* +X331416Y4802631D03* +G01* +X331416Y4711192D03* +D35* +G01* +X-149151Y4667224D03* +G01* +X-57710Y4667224D03* +G01* +X1046147Y4894910D03* +G01* +X954707Y4894910D03* +G01* +X799132Y5417921D03* +G01* +X707693Y5417921D03* +G01* +X-32868Y5411901D03* +G01* +X-124310Y5411901D03* +D12* +G01* +X-127561Y4233899D03* +G01* +X-127561Y4409922D03* +D23* +G01* +X458416Y4803622D03* +G01* +X458416Y4712182D03* +G01* +X5562419Y6699630D03* +G01* +X5562419Y6608190D03* +D59* +G01* +X-261443Y5368237D03* +G01* +X-261443Y5214567D03* +G01* +X-261443Y4789220D03* +G01* +X-261443Y4942889D03* +D60* +G01* +X5240169Y7085964D03* +D61* +G01* +X5494169Y7085964D03* +G01* +X4986169Y7085964D03* +D18* +G01* +X1303195Y1578787D03* +G01* +X1557195Y1578787D03* +D60* +G01* +X5242125Y391795D03* +D61* +G01* +X5496125Y391795D03* +G01* +X4988125Y391795D03* +D62* +G01* +X1129078Y4394733D03* +G01* +X2126104Y5373370D03* +G01* +X2420236Y4413122D03* +G01* +X1404846Y2143302D03* +G01* +X1654451Y3647312D03* +G01* +X2401872Y3121939D03* +G01* +X3276546Y2985465D03* +M02* diff --git a/hardware/portapack_h4m/h4-gerbers/README.txt b/hardware/portapack_h4m/h4-gerbers/README.txt new file mode 100644 index 000000000..1d177cc68 --- /dev/null +++ b/hardware/portapack_h4m/h4-gerbers/README.txt @@ -0,0 +1,11 @@ +Portapack H4 is an add-on for the HackRF Software Defined Radio (SDR) platform. + +The improvements of H4: +1.GPIO port! The H4M adds a GPIO port so users can make their own add-ons for the H4M, just like the flipper. +2.Advanced battery management IC (battery %, voltage, current/draw, etc...) +3.Single power on/off switch. +4.When powered off, the battery will no longer phantom drain. +5.flat design, going back to the iPod style click wheel. (so no more broken buttons and encoders!) +6.Improved charge speeds. +7.Built in mic (and mic switch between internal and external). +8.Matte screen. diff --git a/hardware/portapack_h4m/h4-pcb/H4-Official Version_V1.0.PcbDoc.json b/hardware/portapack_h4m/h4-pcb/H4-Official Version_V1.0.PcbDoc.json new file mode 100644 index 000000000..7b8d6239a --- /dev/null +++ b/hardware/portapack_h4m/h4-pcb/H4-Official Version_V1.0.PcbDoc.json @@ -0,0 +1 @@ +{"head":{"docType":"3","editorVersion":"6.5.46","importedFrom":"Altium","x":"5483.1211","y":"-2532.951","importFlag":0,"c_para":{},"transformList":"","hasIdFlag":true,"newgId":true},"canvas":"CA~1000~1000~#000000~yes~#FFFFFF~9.99998~1000~1000~line~0.999998~mm~1~45~visible~0.499999~5483.1211~-2532.951~0~yes","shape":["TRACK~1~10~~5848.7023 -2736.1633 5934.6023 -2736.1633~rep3410~0","ARC~1~10~~M 5935.5005 -2783.5972 A 4.5275 4.5275 0 1 0 5935.50044 -2783.57349~~rep1930~0","ARC~1~10~~M 5638.9651 -2783.5972 A 4.5275 4.5275 0 1 0 5638.96504 -2783.57349~~rep1931~0","ARC~1~10~~M 5935.4809 -2577.1799 A 4.5275 4.5275 0 1 0 5935.48084 -2577.15619~~rep1932~0","ARC~1~10~~M 5921.0267 -2782.6259 A 2.7559 2.7559 0 1 0 5921.02666 -2782.61147~~rep1933~0","ARC~1~10~~M 5920.9267 -2751.0259 A 2.7559 2.7559 0 1 0 5920.92666 -2751.01147~~rep1934~0","ARC~1~10~~M 5638.9651 -2577.2193 A 4.5275 4.5275 0 1 0 5638.96504 -2577.19559~~rep1935~0","ARC~1~10~~M 5848.70227 -2736.16326 A 6.3994 6.3994 0 0 0 5842.15232 -2730.06324~~rep1936~0","ARC~1~10~~M 5934.60224 -2736.16324 A 6.2077 6.2077 0 0 0 5940.50228 -2742.21325~~rep1937~0","ARC~1~10~~M 5842.15234 -2629.57589 A 5.4339 5.4339 0 0 0 5847.65236 -2624.52588~~rep1938~0","ARC~1~10~~M 5940.90233 -2618.77591 A 5.6016 5.6016 0 0 0 5935.35227 -2624.52598~~rep1939~0","ARC~1~10~~M 5927.80236 -2532.95106 A 13.8549 13.8549 0 0 0 5940.90235 -2545.90102~~rep1940~0","ARC~1~10~~M 5469.4712 -2545.55099 A 13.3251 13.3251 0 0 0 5483.12119 -2532.95095~~rep1941~0","ARC~1~10~~M 5482.67107 -2828.94413 A 12.4619 12.4619 0 0 0 5469.47118 -2815.89407~~rep1942~0","ARC~1~10~~M 5940.50228 -2816.29438 A 11.4451 11.4451 0 0 0 5928.40236 -2828.94428~~rep1943~0","TRACK~1~10~~5482.671 -2828.9442 5928.4023 -2828.9442~rep3400~0","TRACK~1~10~~5940.5023 -2742.2132 5940.5023 -2816.2944~rep3411~0","TRACK~1~10~~5842.1523 -2629.5759 5842.1523 -2730.0632~rep3412~0","TRACK~1~10~~5847.6523 -2624.5259 5935.3523 -2624.5259~rep3413~0","TRACK~1~10~~5940.9023 -2545.901 5940.9023 -2618.7759~rep3414~0","TRACK~1~10~~5483.1211 -2532.951 5927.8023 -2532.951~rep3415~0","TRACK~1~10~~5469.4712 -2545.5509 5469.4712 -2815.894~rep3416~0","ARC~1~10~~M 5927.8023 -2532.9511 A 13.8549 13.8549 0 0 0 5940.9023 -2545.9011~~rep3~0","TRACK~1~3~~5931.5294 -2745.026 5936.9708 -2745.026~gge10881~0","TRACK~1~3~~5931.5295 -2745.0259 5936.9707 -2745.0259~rep2394~0","TEXT~L~5756.706~-2791.166~0.4724~270~0~3~~3.937~GND~M 5759.7863 -2788.4822 L 5760.1463 -2788.6622 L 5760.4963 -2789.0222 L 5760.6763 -2789.3722 L 5760.6763 -2790.0922 L 5760.4963 -2790.4522 L 5760.1463 -2790.8122 L 5759.7863 -2790.9822 L 5759.2463 -2791.1622 L 5758.3563 -2791.1622 L 5757.8163 -2790.9822 L 5757.4563 -2790.8122 L 5757.0963 -2790.4522 L 5756.9163 -2790.0922 L 5756.9163 -2789.3722 L 5757.0963 -2789.0222 L 5757.4563 -2788.6622 L 5757.8163 -2788.4822 L 5758.3563 -2788.4822 M 5758.3563 -2789.3722 L 5758.3563 -2788.4822 M 5760.6763 -2787.3022 L 5756.9163 -2787.3022 M 5760.6763 -2787.3022 L 5756.9163 -2784.7922 M 5760.6763 -2784.7922 L 5756.9163 -2784.7922 M 5760.6763 -2783.6122 L 5756.9163 -2783.6122 M 5760.6763 -2783.6122 L 5760.6763 -2782.3622 L 5760.4963 -2781.8222 L 5760.1463 -2781.4622 L 5759.7863 -2781.2922 L 5759.2463 -2781.1122 L 5758.3563 -2781.1122 L 5757.8163 -2781.2922 L 5757.4563 -2781.4622 L 5757.0963 -2781.8222 L 5756.9163 -2782.3622 L 5756.9163 -2783.6122~~rep3417~~0~","TEXT~L~5766.746~-2791.166~0.4724~270~0~3~~3.937~NC~M 5770.7156 -2791.1615 L 5766.9556 -2791.1615 M 5770.7156 -2791.1615 L 5766.9556 -2788.6615 M 5770.7156 -2788.6615 L 5766.9556 -2788.6615 M 5769.8256 -2784.7915 L 5770.1856 -2784.9715 L 5770.5356 -2785.3315 L 5770.7156 -2785.6915 L 5770.7156 -2786.4015 L 5770.5356 -2786.7615 L 5770.1856 -2787.1215 L 5769.8256 -2787.3015 L 5769.2856 -2787.4815 L 5768.3956 -2787.4815 L 5767.8556 -2787.3015 L 5767.4956 -2787.1215 L 5767.1356 -2786.7615 L 5766.9556 -2786.4015 L 5766.9556 -2785.6915 L 5767.1356 -2785.3315 L 5767.4956 -2784.9715 L 5767.8556 -2784.7915~~rep3418~~0~","TEXT~L~5776.627~-2791.166~0.4724~270~0~3~~3.937~NC~M 5780.5975 -2791.1634 L 5776.8375 -2791.1634 M 5780.5975 -2791.1634 L 5776.8375 -2788.6634 M 5780.5975 -2788.6634 L 5776.8375 -2788.6634 M 5779.7075 -2784.7934 L 5780.0675 -2784.9734 L 5780.4175 -2785.3334 L 5780.5975 -2785.6934 L 5780.5975 -2786.4034 L 5780.4175 -2786.7634 L 5780.0675 -2787.1234 L 5779.7075 -2787.3034 L 5779.1675 -2787.4834 L 5778.2775 -2787.4834 L 5777.7375 -2787.3034 L 5777.3775 -2787.1234 L 5777.0175 -2786.7634 L 5776.8375 -2786.4034 L 5776.8375 -2785.6934 L 5777.0175 -2785.3334 L 5777.3775 -2784.9734 L 5777.7375 -2784.7934~~rep3419~~0~","TEXT~L~5786.706~-2791.284~0.4724~270~0~3~~3.937~3.3V~M 5790.6782 -2790.9303 L 5790.6782 -2788.9603 L 5789.2482 -2790.0303 L 5789.2482 -2789.4903 L 5789.0682 -2789.1403 L 5788.8882 -2788.9603 L 5788.3482 -2788.7803 L 5787.9982 -2788.7803 L 5787.4582 -2788.9603 L 5787.0982 -2789.3203 L 5786.9182 -2789.8503 L 5786.9182 -2790.3903 L 5787.0982 -2790.9303 L 5787.2782 -2791.1003 L 5787.6382 -2791.2803 M 5787.8182 -2787.4203 L 5787.6382 -2787.6003 L 5787.4582 -2787.4203 L 5787.6382 -2787.2403 L 5787.8182 -2787.4203 M 5790.6782 -2785.7003 L 5790.6782 -2783.7303 L 5789.2482 -2784.8103 L 5789.2482 -2784.2703 L 5789.0682 -2783.9103 L 5788.8882 -2783.7303 L 5788.3482 -2783.5503 L 5787.9982 -2783.5503 L 5787.4582 -2783.7303 L 5787.0982 -2784.0903 L 5786.9182 -2784.6303 L 5786.9182 -2785.1603 L 5787.0982 -2785.7003 L 5787.2782 -2785.8803 L 5787.6382 -2786.0603 M 5790.6782 -2782.3703 L 5786.9182 -2780.9403 M 5790.6782 -2779.5103 L 5786.9182 -2780.9403~~rep3420~~0~","TEXT~L~5796.706~-2791.245~0.4724~270~0~3~~3.937~GND~M 5799.7876 -2788.5609 L 5800.1376 -2788.7409 L 5800.4976 -2789.1009 L 5800.6776 -2789.4509 L 5800.6776 -2790.1709 L 5800.4976 -2790.5309 L 5800.1376 -2790.8909 L 5799.7876 -2791.0609 L 5799.2476 -2791.2409 L 5798.3576 -2791.2409 L 5797.8176 -2791.0609 L 5797.4576 -2790.8909 L 5797.0976 -2790.5309 L 5796.9176 -2790.1709 L 5796.9176 -2789.4509 L 5797.0976 -2789.1009 L 5797.4576 -2788.7409 L 5797.8176 -2788.5609 L 5798.3576 -2788.5609 M 5798.3576 -2789.4509 L 5798.3576 -2788.5609 M 5800.6776 -2787.3809 L 5796.9176 -2787.3809 M 5800.6776 -2787.3809 L 5796.9176 -2784.8709 M 5800.6776 -2784.8709 L 5796.9176 -2784.8709 M 5800.6776 -2783.6909 L 5796.9176 -2783.6909 M 5800.6776 -2783.6909 L 5800.6776 -2782.4409 L 5800.4976 -2781.9009 L 5800.1376 -2781.5409 L 5799.7876 -2781.3709 L 5799.2476 -2781.1909 L 5798.3576 -2781.1909 L 5797.8176 -2781.3709 L 5797.4576 -2781.5409 L 5797.0976 -2781.9009 L 5796.9176 -2782.4409 L 5796.9176 -2783.6909~~rep3421~~0~","TEXT~L~5760.735~-2814.57~0.4724~90~0~3~~3.937~TDI~M 5756.7588 -2815.8247 L 5760.5188 -2815.8247 M 5756.7588 -2814.5747 L 5756.7588 -2817.0747 M 5756.7588 -2818.2547 L 5760.5188 -2818.2547 M 5756.7588 -2818.2547 L 5756.7588 -2819.5047 L 5756.9388 -2820.0447 L 5757.2988 -2820.4047 L 5757.6588 -2820.5847 L 5758.1988 -2820.7647 L 5759.0888 -2820.7647 L 5759.6288 -2820.5847 L 5759.9788 -2820.4047 L 5760.3388 -2820.0447 L 5760.5188 -2819.5047 L 5760.5188 -2818.2547 M 5756.7588 -2821.9447 L 5760.5188 -2821.9447~~rep3422~~0~","TEXT~L~5770.341~-2814.57~0.4724~90~0~3~~3.937~NC~M 5766.3651 -2814.5684 L 5770.1251 -2814.5684 M 5766.3651 -2814.5684 L 5770.1251 -2817.0784 M 5766.3651 -2817.0784 L 5770.1251 -2817.0784 M 5767.2651 -2820.9384 L 5766.9051 -2820.7584 L 5766.5451 -2820.4084 L 5766.3651 -2820.0484 L 5766.3651 -2819.3284 L 5766.5451 -2818.9684 L 5766.9051 -2818.6184 L 5767.2651 -2818.4384 L 5767.8051 -2818.2584 L 5768.6951 -2818.2584 L 5769.2351 -2818.4384 L 5769.5851 -2818.6184 L 5769.9451 -2818.9684 L 5770.1251 -2819.3284 L 5770.1251 -2820.0484 L 5769.9451 -2820.4084 L 5769.5851 -2820.7584 L 5769.2351 -2820.9384~~rep3423~~0~","TEXT~L~5780.814~-2814.57~0.4724~90~0~3~~3.937~TMS~M 5776.8375 -2815.826 L 5780.5975 -2815.826 M 5776.8375 -2814.566 L 5776.8375 -2817.076 M 5776.8375 -2818.256 L 5780.5975 -2818.256 M 5776.8375 -2818.256 L 5780.5975 -2819.686 M 5776.8375 -2821.116 L 5780.5975 -2819.686 M 5776.8375 -2821.116 L 5780.5975 -2821.116 M 5777.3775 -2824.806 L 5777.0175 -2824.446 L 5776.8375 -2823.916 L 5776.8375 -2823.196 L 5777.0175 -2822.656 L 5777.3775 -2822.296 L 5777.7375 -2822.296 L 5778.0975 -2822.476 L 5778.2775 -2822.656 L 5778.4475 -2823.016 L 5778.8075 -2824.086 L 5778.9875 -2824.446 L 5779.1675 -2824.626 L 5779.5275 -2824.806 L 5780.0575 -2824.806 L 5780.4175 -2824.446 L 5780.5975 -2823.916 L 5780.5975 -2823.196 L 5780.4175 -2822.656 L 5780.0575 -2822.296~~rep3424~~0~","TEXT~L~5790.184~-2814.412~0.4724~90~0~3~~3.937~TDO~M 5786.2101 -2815.6684 L 5789.9701 -2815.6684 M 5786.2101 -2814.4084 L 5786.2101 -2816.9184 M 5786.2101 -2818.0984 L 5789.9701 -2818.0984 M 5786.2101 -2818.0984 L 5786.2101 -2819.3484 L 5786.3901 -2819.8884 L 5786.7501 -2820.2484 L 5787.1101 -2820.4284 L 5787.6401 -2820.6084 L 5788.5401 -2820.6084 L 5789.0701 -2820.4284 L 5789.4301 -2820.2484 L 5789.7901 -2819.8884 L 5789.9701 -2819.3484 L 5789.9701 -2818.0984 M 5786.2101 -2822.8584 L 5786.3901 -2822.4984 L 5786.7501 -2822.1384 L 5787.1101 -2821.9684 L 5787.6401 -2821.7884 L 5788.5401 -2821.7884 L 5789.0701 -2821.9684 L 5789.4301 -2822.1384 L 5789.7901 -2822.4984 L 5789.9701 -2822.8584 L 5789.9701 -2823.5784 L 5789.7901 -2823.9284 L 5789.4301 -2824.2884 L 5789.0701 -2824.4684 L 5788.5401 -2824.6484 L 5787.6401 -2824.6484 L 5787.1101 -2824.4684 L 5786.7501 -2824.2884 L 5786.3901 -2823.9284 L 5786.2101 -2823.5784 L 5786.2101 -2822.8584~~rep3425~~0~","TEXT~L~5800.223~-2814.491~0.4724~90~0~3~~3.937~TCK~M 5796.2482 -2815.7477 L 5800.0082 -2815.7477 M 5796.2482 -2814.4877 L 5796.2482 -2816.9977 M 5797.1482 -2820.8577 L 5796.7882 -2820.6877 L 5796.4282 -2820.3277 L 5796.2482 -2819.9677 L 5796.2482 -2819.2477 L 5796.4282 -2818.8977 L 5796.7882 -2818.5377 L 5797.1482 -2818.3577 L 5797.6782 -2818.1777 L 5798.5782 -2818.1777 L 5799.1182 -2818.3577 L 5799.4682 -2818.5377 L 5799.8282 -2818.8977 L 5800.0082 -2819.2477 L 5800.0082 -2819.9677 L 5799.8282 -2820.3277 L 5799.4682 -2820.6877 L 5799.1182 -2820.8577 M 5796.2482 -2822.0477 L 5800.0082 -2822.0477 M 5796.2482 -2824.5477 L 5798.7582 -2822.0477 M 5797.8582 -2822.9377 L 5800.0082 -2824.5477~~rep3426~~0~","TEXT~L~5834.357~-2592.326~0.4724~90~0~3~~3.937~Vcoin~M 5830.3867 -2592.3286 L 5834.1467 -2593.7586 M 5830.3867 -2595.1886 L 5834.1467 -2593.7586 M 5832.1767 -2598.5186 L 5831.8167 -2598.1586 L 5831.6367 -2597.7986 L 5831.6367 -2597.2686 L 5831.8167 -2596.9086 L 5832.1767 -2596.5486 L 5832.7067 -2596.3686 L 5833.0667 -2596.3686 L 5833.6067 -2596.5486 L 5833.9667 -2596.9086 L 5834.1467 -2597.2686 L 5834.1467 -2597.7986 L 5833.9667 -2598.1586 L 5833.6067 -2598.5186 M 5831.6367 -2600.5886 L 5831.8167 -2600.2386 L 5832.1767 -2599.8786 L 5832.7067 -2599.6986 L 5833.0667 -2599.6986 L 5833.6067 -2599.8786 L 5833.9667 -2600.2386 L 5834.1467 -2600.5886 L 5834.1467 -2601.1286 L 5833.9667 -2601.4886 L 5833.6067 -2601.8486 L 5833.0667 -2602.0286 L 5832.7067 -2602.0286 L 5832.1767 -2601.8486 L 5831.8167 -2601.4886 L 5831.6367 -2601.1286 L 5831.6367 -2600.5886 M 5830.3867 -2603.2086 L 5830.5667 -2603.3886 L 5830.3867 -2603.5686 L 5830.2067 -2603.3886 L 5830.3867 -2603.2086 M 5831.6367 -2603.3886 L 5834.1467 -2603.3886 M 5831.6367 -2604.7486 L 5834.1467 -2604.7486 M 5832.3567 -2604.7486 L 5831.8167 -2605.2786 L 5831.6367 -2605.6386 L 5831.6367 -2606.1786 L 5831.8167 -2606.5386 L 5832.3567 -2606.7086 L 5834.1467 -2606.7086~~rep3428~~0~","TEXT~L~5843.609~-2592.404~0.4724~90~0~3~~3.937~3.3V~M 5839.6374 -2592.7653 L 5839.6374 -2594.7353 L 5841.0674 -2593.6553 L 5841.0674 -2594.1953 L 5841.2474 -2594.5553 L 5841.4274 -2594.7353 L 5841.9674 -2594.9053 L 5842.3174 -2594.9053 L 5842.8574 -2594.7353 L 5843.2174 -2594.3753 L 5843.3974 -2593.8353 L 5843.3974 -2593.2953 L 5843.2174 -2592.7653 L 5843.0374 -2592.5853 L 5842.6774 -2592.4053 M 5842.4974 -2596.2653 L 5842.6774 -2596.0953 L 5842.8574 -2596.2653 L 5842.6774 -2596.4453 L 5842.4974 -2596.2653 M 5839.6374 -2597.9853 L 5839.6374 -2599.9553 L 5841.0674 -2598.8853 L 5841.0674 -2599.4153 L 5841.2474 -2599.7753 L 5841.4274 -2599.9553 L 5841.9674 -2600.1353 L 5842.3174 -2600.1353 L 5842.8574 -2599.9553 L 5843.2174 -2599.5953 L 5843.3974 -2599.0653 L 5843.3974 -2598.5253 L 5843.2174 -2597.9853 L 5843.0374 -2597.8053 L 5842.6774 -2597.6253 M 5839.6374 -2601.3153 L 5843.3974 -2602.7453 M 5839.6374 -2604.1753 L 5843.3974 -2602.7453~~rep3429~~0~","TEXT~L~5853.333~-2592.247~0.4724~90~0~3~~3.937~SDA~M 5849.8943 -2594.7534 L 5849.5443 -2594.3934 L 5849.3643 -2593.8534 L 5849.3643 -2593.1434 L 5849.5443 -2592.6034 L 5849.8943 -2592.2434 L 5850.2543 -2592.2434 L 5850.6143 -2592.4234 L 5850.7943 -2592.6034 L 5850.9743 -2592.9634 L 5851.3243 -2594.0334 L 5851.5043 -2594.3934 L 5851.6843 -2594.5734 L 5852.0443 -2594.7534 L 5852.5843 -2594.7534 L 5852.9443 -2594.3934 L 5853.1143 -2593.8534 L 5853.1143 -2593.1434 L 5852.9443 -2592.6034 L 5852.5843 -2592.2434 M 5849.3643 -2595.9334 L 5853.1143 -2595.9334 M 5849.3643 -2595.9334 L 5849.3643 -2597.1834 L 5849.5443 -2597.7234 L 5849.8943 -2598.0834 L 5850.2543 -2598.2634 L 5850.7943 -2598.4434 L 5851.6843 -2598.4434 L 5852.2243 -2598.2634 L 5852.5843 -2598.0834 L 5852.9443 -2597.7234 L 5853.1143 -2597.1834 L 5853.1143 -2595.9334 M 5849.3643 -2601.0534 L 5853.1143 -2599.6234 M 5849.3643 -2601.0534 L 5853.1143 -2602.4834 M 5851.8643 -2600.1534 L 5851.8643 -2601.9434~~rep3430~~0~","TEXT~L~5863.333~-2592.247~0.4724~90~0~3~~3.937~SCL~M 5859.8943 -2594.7534 L 5859.5443 -2594.3934 L 5859.3643 -2593.8534 L 5859.3643 -2593.1434 L 5859.5443 -2592.6034 L 5859.8943 -2592.2434 L 5860.2543 -2592.2434 L 5860.6143 -2592.4234 L 5860.7943 -2592.6034 L 5860.9743 -2592.9634 L 5861.3243 -2594.0334 L 5861.5043 -2594.3934 L 5861.6843 -2594.5734 L 5862.0443 -2594.7534 L 5862.5843 -2594.7534 L 5862.9443 -2594.3934 L 5863.1143 -2593.8534 L 5863.1143 -2593.1434 L 5862.9443 -2592.6034 L 5862.5843 -2592.2434 M 5860.2543 -2598.6134 L 5859.8943 -2598.4434 L 5859.5443 -2598.0834 L 5859.3643 -2597.7234 L 5859.3643 -2597.0034 L 5859.5443 -2596.6534 L 5859.8943 -2596.2934 L 5860.2543 -2596.1134 L 5860.7943 -2595.9334 L 5861.6843 -2595.9334 L 5862.2243 -2596.1134 L 5862.5843 -2596.2934 L 5862.9443 -2596.6534 L 5863.1143 -2597.0034 L 5863.1143 -2597.7234 L 5862.9443 -2598.0834 L 5862.5843 -2598.4434 L 5862.2243 -2598.6134 M 5859.3643 -2599.8034 L 5863.1143 -2599.8034 M 5863.1143 -2599.8034 L 5863.1143 -2601.9434~~rep3431~~0~","TEXT~L~5873.53~-2592.247~0.4724~90~0~3~~3.937~BAT+~M 5869.5612 -2592.2465 L 5873.3112 -2592.2465 M 5869.5612 -2592.2465 L 5869.5612 -2593.8565 L 5869.7412 -2594.3965 L 5869.9112 -2594.5765 L 5870.2712 -2594.7565 L 5870.6312 -2594.7565 L 5870.9912 -2594.5765 L 5871.1712 -2594.3965 L 5871.3512 -2593.8565 M 5871.3512 -2592.2465 L 5871.3512 -2593.8565 L 5871.5212 -2594.3965 L 5871.7012 -2594.5765 L 5872.0612 -2594.7565 L 5872.6012 -2594.7565 L 5872.9612 -2594.5765 L 5873.1412 -2594.3965 L 5873.3112 -2593.8565 L 5873.3112 -2592.2465 M 5869.5612 -2597.3665 L 5873.3112 -2595.9365 M 5869.5612 -2597.3665 L 5873.3112 -2598.7965 M 5872.0612 -2596.4665 L 5872.0612 -2598.2565 M 5869.5612 -2601.2265 L 5873.3112 -2601.2265 M 5869.5612 -2599.9765 L 5869.5612 -2602.4865 M 5870.0912 -2605.2765 L 5873.3112 -2605.2765 M 5871.7012 -2603.6665 L 5871.7012 -2606.8865~~rep3432~~0~","TEXT~L~5883.767~-2592.168~0.4724~90~0~3~~3.937~GND~M 5880.6887 -2594.8516 L 5880.3287 -2594.6716 L 5879.9687 -2594.3116 L 5879.7987 -2593.9616 L 5879.7987 -2593.2416 L 5879.9687 -2592.8816 L 5880.3287 -2592.5216 L 5880.6887 -2592.3516 L 5881.2287 -2592.1716 L 5882.1187 -2592.1716 L 5882.6587 -2592.3516 L 5883.0187 -2592.5216 L 5883.3687 -2592.8816 L 5883.5487 -2593.2416 L 5883.5487 -2593.9616 L 5883.3687 -2594.3116 L 5883.0187 -2594.6716 L 5882.6587 -2594.8516 L 5882.1187 -2594.8516 M 5882.1187 -2593.9616 L 5882.1187 -2594.8516 M 5879.7987 -2596.0316 L 5883.5487 -2596.0316 M 5879.7987 -2596.0316 L 5883.5487 -2598.5416 M 5879.7987 -2598.5416 L 5883.5487 -2598.5416 M 5879.7987 -2599.7216 L 5883.5487 -2599.7216 M 5879.7987 -2599.7216 L 5879.7987 -2600.9716 L 5879.9687 -2601.5116 L 5880.3287 -2601.8716 L 5880.6887 -2602.0416 L 5881.2287 -2602.2216 L 5882.1187 -2602.2216 L 5882.6587 -2602.0416 L 5883.0187 -2601.8716 L 5883.3687 -2601.5116 L 5883.5487 -2600.9716 L 5883.5487 -2599.7216~~rep3433~~0~","TEXT~L~5879.137~-2560.16~0.4724~270~0~3~~3.937~Vcoin~M 5883.1125 -2560.1568 L 5879.3525 -2558.7268 M 5883.1125 -2557.2968 L 5879.3525 -2558.7268 M 5881.3225 -2553.9668 L 5881.6825 -2554.3268 L 5881.8525 -2554.6868 L 5881.8525 -2555.2168 L 5881.6825 -2555.5768 L 5881.3225 -2555.9368 L 5880.7825 -2556.1168 L 5880.4225 -2556.1168 L 5879.8925 -2555.9368 L 5879.5325 -2555.5768 L 5879.3525 -2555.2168 L 5879.3525 -2554.6868 L 5879.5325 -2554.3268 L 5879.8925 -2553.9668 M 5881.8525 -2551.8968 L 5881.6825 -2552.2468 L 5881.3225 -2552.6068 L 5880.7825 -2552.7868 L 5880.4225 -2552.7868 L 5879.8925 -2552.6068 L 5879.5325 -2552.2468 L 5879.3525 -2551.8968 L 5879.3525 -2551.3568 L 5879.5325 -2550.9968 L 5879.8925 -2550.6368 L 5880.4225 -2550.4568 L 5880.7825 -2550.4568 L 5881.3225 -2550.6368 L 5881.6825 -2550.9968 L 5881.8525 -2551.3568 L 5881.8525 -2551.8968 M 5883.1125 -2549.2768 L 5882.9325 -2549.0968 L 5883.1125 -2548.9268 L 5883.2925 -2549.0968 L 5883.1125 -2549.2768 M 5881.8525 -2549.0968 L 5879.3525 -2549.0968 M 5881.8525 -2547.7368 L 5879.3525 -2547.7368 M 5881.1425 -2547.7368 L 5881.6825 -2547.2068 L 5881.8525 -2546.8468 L 5881.8525 -2546.3068 L 5881.6825 -2545.9468 L 5881.1425 -2545.7768 L 5879.3525 -2545.7768~~rep3434~~0~","TEXT~L~5869.885~-2560.081~0.4724~270~0~3~~3.937~3.3V~M 5873.8592 -2559.7261 L 5873.8592 -2557.7561 L 5872.4292 -2558.8261 L 5872.4292 -2558.2961 L 5872.2492 -2557.9361 L 5872.0692 -2557.7561 L 5871.5292 -2557.5761 L 5871.1692 -2557.5761 L 5870.6392 -2557.7561 L 5870.2792 -2558.1161 L 5870.0992 -2558.6461 L 5870.0992 -2559.1861 L 5870.2792 -2559.7261 L 5870.4592 -2559.9061 L 5870.8192 -2560.0861 M 5870.9992 -2556.2161 L 5870.8192 -2556.3961 L 5870.6392 -2556.2161 L 5870.8192 -2556.0361 L 5870.9992 -2556.2161 M 5873.8592 -2554.4961 L 5873.8592 -2552.5261 L 5872.4292 -2553.6061 L 5872.4292 -2553.0661 L 5872.2492 -2552.7061 L 5872.0692 -2552.5261 L 5871.5292 -2552.3461 L 5871.1692 -2552.3461 L 5870.6392 -2552.5261 L 5870.2792 -2552.8861 L 5870.0992 -2553.4261 L 5870.0992 -2553.9661 L 5870.2792 -2554.4961 L 5870.4592 -2554.6761 L 5870.8192 -2554.8561 M 5873.8592 -2551.1661 L 5870.0992 -2549.7361 M 5873.8592 -2548.3061 L 5870.0992 -2549.7361~~rep3435~~0~","TEXT~L~5860.16~-2560.239~0.4724~270~0~3~~3.937~SDA~M 5863.5974 -2557.7291 L 5863.9574 -2558.0891 L 5864.1374 -2558.6291 L 5864.1374 -2559.3491 L 5863.9574 -2559.8791 L 5863.5974 -2560.2391 L 5863.2374 -2560.2391 L 5862.8774 -2560.0591 L 5862.6974 -2559.8791 L 5862.5274 -2559.5191 L 5862.1674 -2558.4491 L 5861.9874 -2558.0891 L 5861.8074 -2557.9091 L 5861.4474 -2557.7291 L 5860.9074 -2557.7291 L 5860.5574 -2558.0891 L 5860.3774 -2558.6291 L 5860.3774 -2559.3491 L 5860.5574 -2559.8791 L 5860.9074 -2560.2391 M 5864.1374 -2556.5491 L 5860.3774 -2556.5491 M 5864.1374 -2556.5491 L 5864.1374 -2555.2991 L 5863.9574 -2554.7591 L 5863.5974 -2554.4091 L 5863.2374 -2554.2291 L 5862.6974 -2554.0491 L 5861.8074 -2554.0491 L 5861.2674 -2554.2291 L 5860.9074 -2554.4091 L 5860.5574 -2554.7591 L 5860.3774 -2555.2991 L 5860.3774 -2556.5491 M 5864.1374 -2551.4391 L 5860.3774 -2552.8691 M 5864.1374 -2551.4391 L 5860.3774 -2549.9991 M 5861.6274 -2552.3291 L 5861.6274 -2550.5391~~rep3436~~0~","TEXT~L~5850.16~-2560.239~0.4724~270~0~3~~3.937~SCL~M 5853.5974 -2557.7291 L 5853.9574 -2558.0891 L 5854.1374 -2558.6291 L 5854.1374 -2559.3491 L 5853.9574 -2559.8791 L 5853.5974 -2560.2391 L 5853.2374 -2560.2391 L 5852.8774 -2560.0591 L 5852.6974 -2559.8791 L 5852.5274 -2559.5191 L 5852.1674 -2558.4491 L 5851.9874 -2558.0891 L 5851.8074 -2557.9091 L 5851.4474 -2557.7291 L 5850.9074 -2557.7291 L 5850.5574 -2558.0891 L 5850.3774 -2558.6291 L 5850.3774 -2559.3491 L 5850.5574 -2559.8791 L 5850.9074 -2560.2391 M 5853.2374 -2553.8691 L 5853.5974 -2554.0491 L 5853.9574 -2554.4091 L 5854.1374 -2554.7591 L 5854.1374 -2555.4791 L 5853.9574 -2555.8391 L 5853.5974 -2556.1991 L 5853.2374 -2556.3691 L 5852.6974 -2556.5491 L 5851.8074 -2556.5491 L 5851.2674 -2556.3691 L 5850.9074 -2556.1991 L 5850.5574 -2555.8391 L 5850.3774 -2555.4791 L 5850.3774 -2554.7591 L 5850.5574 -2554.4091 L 5850.9074 -2554.0491 L 5851.2674 -2553.8691 M 5854.1374 -2552.6891 L 5850.3774 -2552.6891 M 5850.3774 -2552.6891 L 5850.3774 -2550.5391~~rep3437~~0~","TEXT~L~5839.963~-2560.239~0.4724~270~0~3~~3.937~BAT+~M 5843.9405 -2560.2422 L 5840.1805 -2560.2422 M 5843.9405 -2560.2422 L 5843.9405 -2558.6322 L 5843.7605 -2558.0922 L 5843.5805 -2557.9122 L 5843.2205 -2557.7322 L 5842.8605 -2557.7322 L 5842.5005 -2557.9122 L 5842.3305 -2558.0922 L 5842.1505 -2558.6322 M 5842.1505 -2560.2422 L 5842.1505 -2558.6322 L 5841.9705 -2558.0922 L 5841.7905 -2557.9122 L 5841.4305 -2557.7322 L 5840.8905 -2557.7322 L 5840.5405 -2557.9122 L 5840.3605 -2558.0922 L 5840.1805 -2558.6322 L 5840.1805 -2560.2422 M 5843.9405 -2555.1222 L 5840.1805 -2556.5522 M 5843.9405 -2555.1222 L 5840.1805 -2553.6922 M 5841.4305 -2556.0122 L 5841.4305 -2554.2222 M 5843.9405 -2551.2522 L 5840.1805 -2551.2522 M 5843.9405 -2552.5122 L 5843.9405 -2550.0022 M 5843.4005 -2547.2122 L 5840.1805 -2547.2122 M 5841.7905 -2548.8222 L 5841.7905 -2545.6022~~rep3438~~0~","TEXT~L~5829.727~-2560.318~0.4724~270~0~3~~3.937~GND~M 5832.8055 -2557.6348 L 5833.1655 -2557.8148 L 5833.5255 -2558.1748 L 5833.6955 -2558.5248 L 5833.6955 -2559.2448 L 5833.5255 -2559.6048 L 5833.1655 -2559.9548 L 5832.8055 -2560.1348 L 5832.2655 -2560.3148 L 5831.3755 -2560.3148 L 5830.8355 -2560.1348 L 5830.4755 -2559.9548 L 5830.1255 -2559.6048 L 5829.9455 -2559.2448 L 5829.9455 -2558.5248 L 5830.1255 -2558.1748 L 5830.4755 -2557.8148 L 5830.8355 -2557.6348 L 5831.3755 -2557.6348 M 5831.3755 -2558.5248 L 5831.3755 -2557.6348 M 5833.6955 -2556.4548 L 5829.9455 -2556.4548 M 5833.6955 -2556.4548 L 5829.9455 -2553.9448 M 5833.6955 -2553.9448 L 5829.9455 -2553.9448 M 5833.6955 -2552.7648 L 5829.9455 -2552.7648 M 5833.6955 -2552.7648 L 5833.6955 -2551.5148 L 5833.5255 -2550.9748 L 5833.1655 -2550.6148 L 5832.8055 -2550.4348 L 5832.2655 -2550.2648 L 5831.3755 -2550.2648 L 5830.8355 -2550.4348 L 5830.4755 -2550.6148 L 5830.1255 -2550.9748 L 5829.9455 -2551.5148 L 5829.9455 -2552.7648~~rep3439~~0~","TEXT~L~5756.707~-2791.166~0.4724~270~0~3~~3.937~GND~M 5759.7862 -2788.4822 L 5760.1462 -2788.6622 L 5760.4962 -2789.0222 L 5760.6762 -2789.3722 L 5760.6762 -2790.0922 L 5760.4962 -2790.4522 L 5760.1462 -2790.8122 L 5759.7862 -2790.9822 L 5759.2462 -2791.1622 L 5758.3562 -2791.1622 L 5757.8162 -2790.9822 L 5757.4562 -2790.8122 L 5757.0962 -2790.4522 L 5756.9162 -2790.0922 L 5756.9162 -2789.3722 L 5757.0962 -2789.0222 L 5757.4562 -2788.6622 L 5757.8162 -2788.4822 L 5758.3562 -2788.4822 M 5758.3562 -2789.3722 L 5758.3562 -2788.4822 M 5760.6762 -2787.3022 L 5756.9162 -2787.3022 M 5760.6762 -2787.3022 L 5756.9162 -2784.7922 M 5760.6762 -2784.7922 L 5756.9162 -2784.7922 M 5760.6762 -2783.6122 L 5756.9162 -2783.6122 M 5760.6762 -2783.6122 L 5760.6762 -2782.3622 L 5760.4962 -2781.8222 L 5760.1462 -2781.4622 L 5759.7862 -2781.2922 L 5759.2462 -2781.1122 L 5758.3562 -2781.1122 L 5757.8162 -2781.2922 L 5757.4562 -2781.4622 L 5757.0962 -2781.8222 L 5756.9162 -2782.3622 L 5756.9162 -2783.6122~~rep2451~~0~","TEXT~L~5766.747~-2791.166~0.4724~270~0~3~~3.937~NC~M 5770.7155 -2791.1615 L 5766.9555 -2791.1615 M 5770.7155 -2791.1615 L 5766.9555 -2788.6615 M 5770.7155 -2788.6615 L 5766.9555 -2788.6615 M 5769.8255 -2784.7915 L 5770.1855 -2784.9715 L 5770.5355 -2785.3315 L 5770.7155 -2785.6915 L 5770.7155 -2786.4015 L 5770.5355 -2786.7615 L 5770.1855 -2787.1215 L 5769.8255 -2787.3015 L 5769.2855 -2787.4815 L 5768.3955 -2787.4815 L 5767.8555 -2787.3015 L 5767.4955 -2787.1215 L 5767.1355 -2786.7615 L 5766.9555 -2786.4015 L 5766.9555 -2785.6915 L 5767.1355 -2785.3315 L 5767.4955 -2784.9715 L 5767.8555 -2784.7915~~rep1~~0~","TEXT~L~5776.628~-2791.166~0.4724~270~0~3~~3.937~NC~M 5780.5974 -2791.1634 L 5776.8374 -2791.1634 M 5780.5974 -2791.1634 L 5776.8374 -2788.6634 M 5780.5974 -2788.6634 L 5776.8374 -2788.6634 M 5779.7074 -2784.7934 L 5780.0674 -2784.9734 L 5780.4174 -2785.3334 L 5780.5974 -2785.6934 L 5780.5974 -2786.4034 L 5780.4174 -2786.7634 L 5780.0674 -2787.1234 L 5779.7074 -2787.3034 L 5779.1674 -2787.4834 L 5778.2774 -2787.4834 L 5777.7374 -2787.3034 L 5777.3774 -2787.1234 L 5777.0174 -2786.7634 L 5776.8374 -2786.4034 L 5776.8374 -2785.6934 L 5777.0174 -2785.3334 L 5777.3774 -2784.9734 L 5777.7374 -2784.7934~~rep2~~0~","TEXT~L~5786.707~-2791.284~0.4724~270~0~3~~3.937~3.3V~M 5790.6781 -2790.9303 L 5790.6781 -2788.9603 L 5789.2481 -2790.0303 L 5789.2481 -2789.4903 L 5789.0681 -2789.1403 L 5788.8881 -2788.9603 L 5788.3481 -2788.7803 L 5787.9981 -2788.7803 L 5787.4581 -2788.9603 L 5787.0981 -2789.3203 L 5786.9181 -2789.8503 L 5786.9181 -2790.3903 L 5787.0981 -2790.9303 L 5787.2781 -2791.1003 L 5787.6381 -2791.2803 M 5787.8181 -2787.4203 L 5787.6381 -2787.6003 L 5787.4581 -2787.4203 L 5787.6381 -2787.2403 L 5787.8181 -2787.4203 M 5790.6781 -2785.7003 L 5790.6781 -2783.7303 L 5789.2481 -2784.8103 L 5789.2481 -2784.2703 L 5789.0681 -2783.9103 L 5788.8881 -2783.7303 L 5788.3481 -2783.5503 L 5787.9981 -2783.5503 L 5787.4581 -2783.7303 L 5787.0981 -2784.0903 L 5786.9181 -2784.6303 L 5786.9181 -2785.1603 L 5787.0981 -2785.7003 L 5787.2781 -2785.8803 L 5787.6381 -2786.0603 M 5790.6781 -2782.3703 L 5786.9181 -2780.9403 M 5790.6781 -2779.5103 L 5786.9181 -2780.9403~~rep2399~~0~","TEXT~L~5796.707~-2791.245~0.4724~270~0~3~~3.937~GND~M 5799.7875 -2788.5609 L 5800.1375 -2788.7409 L 5800.4975 -2789.1009 L 5800.6775 -2789.4509 L 5800.6775 -2790.1709 L 5800.4975 -2790.5309 L 5800.1375 -2790.8909 L 5799.7875 -2791.0609 L 5799.2475 -2791.2409 L 5798.3575 -2791.2409 L 5797.8175 -2791.0609 L 5797.4575 -2790.8909 L 5797.0975 -2790.5309 L 5796.9175 -2790.1709 L 5796.9175 -2789.4509 L 5797.0975 -2789.1009 L 5797.4575 -2788.7409 L 5797.8175 -2788.5609 L 5798.3575 -2788.5609 M 5798.3575 -2789.4509 L 5798.3575 -2788.5609 M 5800.6775 -2787.3809 L 5796.9175 -2787.3809 M 5800.6775 -2787.3809 L 5796.9175 -2784.8709 M 5800.6775 -2784.8709 L 5796.9175 -2784.8709 M 5800.6775 -2783.6909 L 5796.9175 -2783.6909 M 5800.6775 -2783.6909 L 5800.6775 -2782.4409 L 5800.4975 -2781.9009 L 5800.1375 -2781.5409 L 5799.7875 -2781.3709 L 5799.2475 -2781.1909 L 5798.3575 -2781.1909 L 5797.8175 -2781.3709 L 5797.4575 -2781.5409 L 5797.0975 -2781.9009 L 5796.9175 -2782.4409 L 5796.9175 -2783.6909~~rep2400~~0~","TEXT~L~5760.736~-2814.57~0.4724~90~0~3~~3.937~TDI~M 5756.7587 -2815.8247 L 5760.5187 -2815.8247 M 5756.7587 -2814.5747 L 5756.7587 -2817.0747 M 5756.7587 -2818.2547 L 5760.5187 -2818.2547 M 5756.7587 -2818.2547 L 5756.7587 -2819.5047 L 5756.9387 -2820.0447 L 5757.2987 -2820.4047 L 5757.6587 -2820.5847 L 5758.1987 -2820.7647 L 5759.0887 -2820.7647 L 5759.6287 -2820.5847 L 5759.9787 -2820.4047 L 5760.3387 -2820.0447 L 5760.5187 -2819.5047 L 5760.5187 -2818.2547 M 5756.7587 -2821.9447 L 5760.5187 -2821.9447~~rep2401~~0~","TEXT~L~5770.342~-2814.57~0.4724~90~0~3~~3.937~NC~M 5766.365 -2814.5684 L 5770.125 -2814.5684 M 5766.365 -2814.5684 L 5770.125 -2817.0784 M 5766.365 -2817.0784 L 5770.125 -2817.0784 M 5767.265 -2820.9384 L 5766.905 -2820.7584 L 5766.545 -2820.4084 L 5766.365 -2820.0484 L 5766.365 -2819.3284 L 5766.545 -2818.9684 L 5766.905 -2818.6184 L 5767.265 -2818.4384 L 5767.805 -2818.2584 L 5768.695 -2818.2584 L 5769.235 -2818.4384 L 5769.585 -2818.6184 L 5769.945 -2818.9684 L 5770.125 -2819.3284 L 5770.125 -2820.0484 L 5769.945 -2820.4084 L 5769.585 -2820.7584 L 5769.235 -2820.9384~~rep2410~~0~","TEXT~L~5780.815~-2814.57~0.4724~90~0~3~~3.937~TMS~M 5776.8374 -2815.826 L 5780.5974 -2815.826 M 5776.8374 -2814.566 L 5776.8374 -2817.076 M 5776.8374 -2818.256 L 5780.5974 -2818.256 M 5776.8374 -2818.256 L 5780.5974 -2819.686 M 5776.8374 -2821.116 L 5780.5974 -2819.686 M 5776.8374 -2821.116 L 5780.5974 -2821.116 M 5777.3774 -2824.806 L 5777.0174 -2824.446 L 5776.8374 -2823.916 L 5776.8374 -2823.196 L 5777.0174 -2822.656 L 5777.3774 -2822.296 L 5777.7374 -2822.296 L 5778.0974 -2822.476 L 5778.2774 -2822.656 L 5778.4474 -2823.016 L 5778.8074 -2824.086 L 5778.9874 -2824.446 L 5779.1674 -2824.626 L 5779.5274 -2824.806 L 5780.0574 -2824.806 L 5780.4174 -2824.446 L 5780.5974 -2823.916 L 5780.5974 -2823.196 L 5780.4174 -2822.656 L 5780.0574 -2822.296~~rep2413~~0~","TEXT~L~5790.185~-2814.412~0.4724~90~0~3~~3.937~TDO~M 5786.21 -2815.6684 L 5789.97 -2815.6684 M 5786.21 -2814.4084 L 5786.21 -2816.9184 M 5786.21 -2818.0984 L 5789.97 -2818.0984 M 5786.21 -2818.0984 L 5786.21 -2819.3484 L 5786.39 -2819.8884 L 5786.75 -2820.2484 L 5787.11 -2820.4284 L 5787.64 -2820.6084 L 5788.54 -2820.6084 L 5789.07 -2820.4284 L 5789.43 -2820.2484 L 5789.79 -2819.8884 L 5789.97 -2819.3484 L 5789.97 -2818.0984 M 5786.21 -2822.8584 L 5786.39 -2822.4984 L 5786.75 -2822.1384 L 5787.11 -2821.9684 L 5787.64 -2821.7884 L 5788.54 -2821.7884 L 5789.07 -2821.9684 L 5789.43 -2822.1384 L 5789.79 -2822.4984 L 5789.97 -2822.8584 L 5789.97 -2823.5784 L 5789.79 -2823.9284 L 5789.43 -2824.2884 L 5789.07 -2824.4684 L 5788.54 -2824.6484 L 5787.64 -2824.6484 L 5787.11 -2824.4684 L 5786.75 -2824.2884 L 5786.39 -2823.9284 L 5786.21 -2823.5784 L 5786.21 -2822.8584~~rep2414~~0~","TEXT~L~5800.224~-2814.491~0.4724~90~0~3~~3.937~TCK~M 5796.2481 -2815.7477 L 5800.0081 -2815.7477 M 5796.2481 -2814.4877 L 5796.2481 -2816.9977 M 5797.1481 -2820.8577 L 5796.7881 -2820.6877 L 5796.4281 -2820.3277 L 5796.2481 -2819.9677 L 5796.2481 -2819.2477 L 5796.4281 -2818.8977 L 5796.7881 -2818.5377 L 5797.1481 -2818.3577 L 5797.6781 -2818.1777 L 5798.5781 -2818.1777 L 5799.1181 -2818.3577 L 5799.4681 -2818.5377 L 5799.8281 -2818.8977 L 5800.0081 -2819.2477 L 5800.0081 -2819.9677 L 5799.8281 -2820.3277 L 5799.4681 -2820.6877 L 5799.1181 -2820.8577 M 5796.2481 -2822.0477 L 5800.0081 -2822.0477 M 5796.2481 -2824.5477 L 5798.7581 -2822.0477 M 5797.8581 -2822.9377 L 5800.0081 -2824.5477~~rep2416~~0~","TEXT~L~5744.685~-2753.72~0.8661~0~0~3~~5.9055~+~M 5747.1007 -2758.8717 L 5747.1007 -2754.0417 M 5744.6807 -2756.4617 L 5749.5207 -2756.4617~~rep2417~~0~","TEXT~L~5834.358~-2592.326~0.4724~90~0~3~~3.937~Vcoin~M 5830.3866 -2592.3286 L 5834.1466 -2593.7586 M 5830.3866 -2595.1886 L 5834.1466 -2593.7586 M 5832.1766 -2598.5186 L 5831.8166 -2598.1586 L 5831.6366 -2597.7986 L 5831.6366 -2597.2686 L 5831.8166 -2596.9086 L 5832.1766 -2596.5486 L 5832.7066 -2596.3686 L 5833.0666 -2596.3686 L 5833.6066 -2596.5486 L 5833.9666 -2596.9086 L 5834.1466 -2597.2686 L 5834.1466 -2597.7986 L 5833.9666 -2598.1586 L 5833.6066 -2598.5186 M 5831.6366 -2600.5886 L 5831.8166 -2600.2386 L 5832.1766 -2599.8786 L 5832.7066 -2599.6986 L 5833.0666 -2599.6986 L 5833.6066 -2599.8786 L 5833.9666 -2600.2386 L 5834.1466 -2600.5886 L 5834.1466 -2601.1286 L 5833.9666 -2601.4886 L 5833.6066 -2601.8486 L 5833.0666 -2602.0286 L 5832.7066 -2602.0286 L 5832.1766 -2601.8486 L 5831.8166 -2601.4886 L 5831.6366 -2601.1286 L 5831.6366 -2600.5886 M 5830.3866 -2603.2086 L 5830.5666 -2603.3886 L 5830.3866 -2603.5686 L 5830.2066 -2603.3886 L 5830.3866 -2603.2086 M 5831.6366 -2603.3886 L 5834.1466 -2603.3886 M 5831.6366 -2604.7486 L 5834.1466 -2604.7486 M 5832.3566 -2604.7486 L 5831.8166 -2605.2786 L 5831.6366 -2605.6386 L 5831.6366 -2606.1786 L 5831.8166 -2606.5386 L 5832.3566 -2606.7086 L 5834.1466 -2606.7086~~rep2419~~0~","TEXT~L~5843.61~-2592.404~0.4724~90~0~3~~3.937~3.3V~M 5839.6373 -2592.7653 L 5839.6373 -2594.7353 L 5841.0673 -2593.6553 L 5841.0673 -2594.1953 L 5841.2473 -2594.5553 L 5841.4273 -2594.7353 L 5841.9673 -2594.9053 L 5842.3173 -2594.9053 L 5842.8573 -2594.7353 L 5843.2173 -2594.3753 L 5843.3973 -2593.8353 L 5843.3973 -2593.2953 L 5843.2173 -2592.7653 L 5843.0373 -2592.5853 L 5842.6773 -2592.4053 M 5842.4973 -2596.2653 L 5842.6773 -2596.0953 L 5842.8573 -2596.2653 L 5842.6773 -2596.4453 L 5842.4973 -2596.2653 M 5839.6373 -2597.9853 L 5839.6373 -2599.9553 L 5841.0673 -2598.8853 L 5841.0673 -2599.4153 L 5841.2473 -2599.7753 L 5841.4273 -2599.9553 L 5841.9673 -2600.1353 L 5842.3173 -2600.1353 L 5842.8573 -2599.9553 L 5843.2173 -2599.5953 L 5843.3973 -2599.0653 L 5843.3973 -2598.5253 L 5843.2173 -2597.9853 L 5843.0373 -2597.8053 L 5842.6773 -2597.6253 M 5839.6373 -2601.3153 L 5843.3973 -2602.7453 M 5839.6373 -2604.1753 L 5843.3973 -2602.7453~~rep2420~~0~","TEXT~L~5853.334~-2592.247~0.4724~90~0~3~~3.937~SDA~M 5849.8942 -2594.7534 L 5849.5442 -2594.3934 L 5849.3642 -2593.8534 L 5849.3642 -2593.1434 L 5849.5442 -2592.6034 L 5849.8942 -2592.2434 L 5850.2542 -2592.2434 L 5850.6142 -2592.4234 L 5850.7942 -2592.6034 L 5850.9742 -2592.9634 L 5851.3242 -2594.0334 L 5851.5042 -2594.3934 L 5851.6842 -2594.5734 L 5852.0442 -2594.7534 L 5852.5842 -2594.7534 L 5852.9442 -2594.3934 L 5853.1142 -2593.8534 L 5853.1142 -2593.1434 L 5852.9442 -2592.6034 L 5852.5842 -2592.2434 M 5849.3642 -2595.9334 L 5853.1142 -2595.9334 M 5849.3642 -2595.9334 L 5849.3642 -2597.1834 L 5849.5442 -2597.7234 L 5849.8942 -2598.0834 L 5850.2542 -2598.2634 L 5850.7942 -2598.4434 L 5851.6842 -2598.4434 L 5852.2242 -2598.2634 L 5852.5842 -2598.0834 L 5852.9442 -2597.7234 L 5853.1142 -2597.1834 L 5853.1142 -2595.9334 M 5849.3642 -2601.0534 L 5853.1142 -2599.6234 M 5849.3642 -2601.0534 L 5853.1142 -2602.4834 M 5851.8642 -2600.1534 L 5851.8642 -2601.9434~~rep2421~~0~","TEXT~L~5863.334~-2592.247~0.4724~90~0~3~~3.937~SCL~M 5859.8942 -2594.7534 L 5859.5442 -2594.3934 L 5859.3642 -2593.8534 L 5859.3642 -2593.1434 L 5859.5442 -2592.6034 L 5859.8942 -2592.2434 L 5860.2542 -2592.2434 L 5860.6142 -2592.4234 L 5860.7942 -2592.6034 L 5860.9742 -2592.9634 L 5861.3242 -2594.0334 L 5861.5042 -2594.3934 L 5861.6842 -2594.5734 L 5862.0442 -2594.7534 L 5862.5842 -2594.7534 L 5862.9442 -2594.3934 L 5863.1142 -2593.8534 L 5863.1142 -2593.1434 L 5862.9442 -2592.6034 L 5862.5842 -2592.2434 M 5860.2542 -2598.6134 L 5859.8942 -2598.4434 L 5859.5442 -2598.0834 L 5859.3642 -2597.7234 L 5859.3642 -2597.0034 L 5859.5442 -2596.6534 L 5859.8942 -2596.2934 L 5860.2542 -2596.1134 L 5860.7942 -2595.9334 L 5861.6842 -2595.9334 L 5862.2242 -2596.1134 L 5862.5842 -2596.2934 L 5862.9442 -2596.6534 L 5863.1142 -2597.0034 L 5863.1142 -2597.7234 L 5862.9442 -2598.0834 L 5862.5842 -2598.4434 L 5862.2242 -2598.6134 M 5859.3642 -2599.8034 L 5863.1142 -2599.8034 M 5863.1142 -2599.8034 L 5863.1142 -2601.9434~~rep2422~~0~","TEXT~L~5873.531~-2592.247~0.4724~90~0~3~~3.937~BAT+~M 5869.5611 -2592.2465 L 5873.3111 -2592.2465 M 5869.5611 -2592.2465 L 5869.5611 -2593.8565 L 5869.7411 -2594.3965 L 5869.9111 -2594.5765 L 5870.2711 -2594.7565 L 5870.6311 -2594.7565 L 5870.9911 -2594.5765 L 5871.1711 -2594.3965 L 5871.3511 -2593.8565 M 5871.3511 -2592.2465 L 5871.3511 -2593.8565 L 5871.5211 -2594.3965 L 5871.7011 -2594.5765 L 5872.0611 -2594.7565 L 5872.6011 -2594.7565 L 5872.9611 -2594.5765 L 5873.1411 -2594.3965 L 5873.3111 -2593.8565 L 5873.3111 -2592.2465 M 5869.5611 -2597.3665 L 5873.3111 -2595.9365 M 5869.5611 -2597.3665 L 5873.3111 -2598.7965 M 5872.0611 -2596.4665 L 5872.0611 -2598.2565 M 5869.5611 -2601.2265 L 5873.3111 -2601.2265 M 5869.5611 -2599.9765 L 5869.5611 -2602.4865 M 5870.0911 -2605.2765 L 5873.3111 -2605.2765 M 5871.7011 -2603.6665 L 5871.7011 -2606.8865~~rep2424~~0~","TEXT~L~5883.768~-2592.168~0.4724~90~0~3~~3.937~GND~M 5880.6886 -2594.8516 L 5880.3286 -2594.6716 L 5879.9686 -2594.3116 L 5879.7986 -2593.9616 L 5879.7986 -2593.2416 L 5879.9686 -2592.8816 L 5880.3286 -2592.5216 L 5880.6886 -2592.3516 L 5881.2286 -2592.1716 L 5882.1186 -2592.1716 L 5882.6586 -2592.3516 L 5883.0186 -2592.5216 L 5883.3686 -2592.8816 L 5883.5486 -2593.2416 L 5883.5486 -2593.9616 L 5883.3686 -2594.3116 L 5883.0186 -2594.6716 L 5882.6586 -2594.8516 L 5882.1186 -2594.8516 M 5882.1186 -2593.9616 L 5882.1186 -2594.8516 M 5879.7986 -2596.0316 L 5883.5486 -2596.0316 M 5879.7986 -2596.0316 L 5883.5486 -2598.5416 M 5879.7986 -2598.5416 L 5883.5486 -2598.5416 M 5879.7986 -2599.7216 L 5883.5486 -2599.7216 M 5879.7986 -2599.7216 L 5879.7986 -2600.9716 L 5879.9686 -2601.5116 L 5880.3286 -2601.8716 L 5880.6886 -2602.0416 L 5881.2286 -2602.2216 L 5882.1186 -2602.2216 L 5882.6586 -2602.0416 L 5883.0186 -2601.8716 L 5883.3686 -2601.5116 L 5883.5486 -2600.9716 L 5883.5486 -2599.7216~~rep2426~~0~","TEXT~L~5879.138~-2560.16~0.4724~270~0~3~~3.937~Vcoin~M 5883.1124 -2560.1568 L 5879.3524 -2558.7268 M 5883.1124 -2557.2968 L 5879.3524 -2558.7268 M 5881.3224 -2553.9668 L 5881.6824 -2554.3268 L 5881.8524 -2554.6868 L 5881.8524 -2555.2168 L 5881.6824 -2555.5768 L 5881.3224 -2555.9368 L 5880.7824 -2556.1168 L 5880.4224 -2556.1168 L 5879.8924 -2555.9368 L 5879.5324 -2555.5768 L 5879.3524 -2555.2168 L 5879.3524 -2554.6868 L 5879.5324 -2554.3268 L 5879.8924 -2553.9668 M 5881.8524 -2551.8968 L 5881.6824 -2552.2468 L 5881.3224 -2552.6068 L 5880.7824 -2552.7868 L 5880.4224 -2552.7868 L 5879.8924 -2552.6068 L 5879.5324 -2552.2468 L 5879.3524 -2551.8968 L 5879.3524 -2551.3568 L 5879.5324 -2550.9968 L 5879.8924 -2550.6368 L 5880.4224 -2550.4568 L 5880.7824 -2550.4568 L 5881.3224 -2550.6368 L 5881.6824 -2550.9968 L 5881.8524 -2551.3568 L 5881.8524 -2551.8968 M 5883.1124 -2549.2768 L 5882.9324 -2549.0968 L 5883.1124 -2548.9268 L 5883.2924 -2549.0968 L 5883.1124 -2549.2768 M 5881.8524 -2549.0968 L 5879.3524 -2549.0968 M 5881.8524 -2547.7368 L 5879.3524 -2547.7368 M 5881.1424 -2547.7368 L 5881.6824 -2547.2068 L 5881.8524 -2546.8468 L 5881.8524 -2546.3068 L 5881.6824 -2545.9468 L 5881.1424 -2545.7768 L 5879.3524 -2545.7768~~rep2427~~0~","TEXT~L~5869.886~-2560.081~0.4724~270~0~3~~3.937~3.3V~M 5873.8591 -2559.7261 L 5873.8591 -2557.7561 L 5872.4291 -2558.8261 L 5872.4291 -2558.2961 L 5872.2491 -2557.9361 L 5872.0691 -2557.7561 L 5871.5291 -2557.5761 L 5871.1691 -2557.5761 L 5870.6391 -2557.7561 L 5870.2791 -2558.1161 L 5870.0991 -2558.6461 L 5870.0991 -2559.1861 L 5870.2791 -2559.7261 L 5870.4591 -2559.9061 L 5870.8191 -2560.0861 M 5870.9991 -2556.2161 L 5870.8191 -2556.3961 L 5870.6391 -2556.2161 L 5870.8191 -2556.0361 L 5870.9991 -2556.2161 M 5873.8591 -2554.4961 L 5873.8591 -2552.5261 L 5872.4291 -2553.6061 L 5872.4291 -2553.0661 L 5872.2491 -2552.7061 L 5872.0691 -2552.5261 L 5871.5291 -2552.3461 L 5871.1691 -2552.3461 L 5870.6391 -2552.5261 L 5870.2791 -2552.8861 L 5870.0991 -2553.4261 L 5870.0991 -2553.9661 L 5870.2791 -2554.4961 L 5870.4591 -2554.6761 L 5870.8191 -2554.8561 M 5873.8591 -2551.1661 L 5870.0991 -2549.7361 M 5873.8591 -2548.3061 L 5870.0991 -2549.7361~~rep2429~~0~","TEXT~L~5860.161~-2560.239~0.4724~270~0~3~~3.937~SDA~M 5863.5973 -2557.7291 L 5863.9573 -2558.0891 L 5864.1373 -2558.6291 L 5864.1373 -2559.3491 L 5863.9573 -2559.8791 L 5863.5973 -2560.2391 L 5863.2373 -2560.2391 L 5862.8773 -2560.0591 L 5862.6973 -2559.8791 L 5862.5273 -2559.5191 L 5862.1673 -2558.4491 L 5861.9873 -2558.0891 L 5861.8073 -2557.9091 L 5861.4473 -2557.7291 L 5860.9073 -2557.7291 L 5860.5573 -2558.0891 L 5860.3773 -2558.6291 L 5860.3773 -2559.3491 L 5860.5573 -2559.8791 L 5860.9073 -2560.2391 M 5864.1373 -2556.5491 L 5860.3773 -2556.5491 M 5864.1373 -2556.5491 L 5864.1373 -2555.2991 L 5863.9573 -2554.7591 L 5863.5973 -2554.4091 L 5863.2373 -2554.2291 L 5862.6973 -2554.0491 L 5861.8073 -2554.0491 L 5861.2673 -2554.2291 L 5860.9073 -2554.4091 L 5860.5573 -2554.7591 L 5860.3773 -2555.2991 L 5860.3773 -2556.5491 M 5864.1373 -2551.4391 L 5860.3773 -2552.8691 M 5864.1373 -2551.4391 L 5860.3773 -2549.9991 M 5861.6273 -2552.3291 L 5861.6273 -2550.5391~~rep2430~~0~","TEXT~L~5850.161~-2560.239~0.4724~270~0~3~~3.937~SCL~M 5853.5973 -2557.7291 L 5853.9573 -2558.0891 L 5854.1373 -2558.6291 L 5854.1373 -2559.3491 L 5853.9573 -2559.8791 L 5853.5973 -2560.2391 L 5853.2373 -2560.2391 L 5852.8773 -2560.0591 L 5852.6973 -2559.8791 L 5852.5273 -2559.5191 L 5852.1673 -2558.4491 L 5851.9873 -2558.0891 L 5851.8073 -2557.9091 L 5851.4473 -2557.7291 L 5850.9073 -2557.7291 L 5850.5573 -2558.0891 L 5850.3773 -2558.6291 L 5850.3773 -2559.3491 L 5850.5573 -2559.8791 L 5850.9073 -2560.2391 M 5853.2373 -2553.8691 L 5853.5973 -2554.0491 L 5853.9573 -2554.4091 L 5854.1373 -2554.7591 L 5854.1373 -2555.4791 L 5853.9573 -2555.8391 L 5853.5973 -2556.1991 L 5853.2373 -2556.3691 L 5852.6973 -2556.5491 L 5851.8073 -2556.5491 L 5851.2673 -2556.3691 L 5850.9073 -2556.1991 L 5850.5573 -2555.8391 L 5850.3773 -2555.4791 L 5850.3773 -2554.7591 L 5850.5573 -2554.4091 L 5850.9073 -2554.0491 L 5851.2673 -2553.8691 M 5854.1373 -2552.6891 L 5850.3773 -2552.6891 M 5850.3773 -2552.6891 L 5850.3773 -2550.5391~~rep2431~~0~","TEXT~L~5839.964~-2560.239~0.4724~270~0~3~~3.937~BAT+~M 5843.9404 -2560.2422 L 5840.1804 -2560.2422 M 5843.9404 -2560.2422 L 5843.9404 -2558.6322 L 5843.7604 -2558.0922 L 5843.5804 -2557.9122 L 5843.2204 -2557.7322 L 5842.8604 -2557.7322 L 5842.5004 -2557.9122 L 5842.3304 -2558.0922 L 5842.1504 -2558.6322 M 5842.1504 -2560.2422 L 5842.1504 -2558.6322 L 5841.9704 -2558.0922 L 5841.7904 -2557.9122 L 5841.4304 -2557.7322 L 5840.8904 -2557.7322 L 5840.5404 -2557.9122 L 5840.3604 -2558.0922 L 5840.1804 -2558.6322 L 5840.1804 -2560.2422 M 5843.9404 -2555.1222 L 5840.1804 -2556.5522 M 5843.9404 -2555.1222 L 5840.1804 -2553.6922 M 5841.4304 -2556.0122 L 5841.4304 -2554.2222 M 5843.9404 -2551.2522 L 5840.1804 -2551.2522 M 5843.9404 -2552.5122 L 5843.9404 -2550.0022 M 5843.4004 -2547.2122 L 5840.1804 -2547.2122 M 5841.7904 -2548.8222 L 5841.7904 -2545.6022~~rep2433~~0~","TEXT~L~5829.728~-2560.318~0.4724~270~0~3~~3.937~GND~M 5832.8054 -2557.6348 L 5833.1654 -2557.8148 L 5833.5254 -2558.1748 L 5833.6954 -2558.5248 L 5833.6954 -2559.2448 L 5833.5254 -2559.6048 L 5833.1654 -2559.9548 L 5832.8054 -2560.1348 L 5832.2654 -2560.3148 L 5831.3754 -2560.3148 L 5830.8354 -2560.1348 L 5830.4754 -2559.9548 L 5830.1254 -2559.6048 L 5829.9454 -2559.2448 L 5829.9454 -2558.5248 L 5830.1254 -2558.1748 L 5830.4754 -2557.8148 L 5830.8354 -2557.6348 L 5831.3754 -2557.6348 M 5831.3754 -2558.5248 L 5831.3754 -2557.6348 M 5833.6954 -2556.4548 L 5829.9454 -2556.4548 M 5833.6954 -2556.4548 L 5829.9454 -2553.9448 M 5833.6954 -2553.9448 L 5829.9454 -2553.9448 M 5833.6954 -2552.7648 L 5829.9454 -2552.7648 M 5833.6954 -2552.7648 L 5833.6954 -2551.5148 L 5833.5254 -2550.9748 L 5833.1654 -2550.6148 L 5832.8054 -2550.4348 L 5832.2654 -2550.2648 L 5831.3754 -2550.2648 L 5830.8354 -2550.4348 L 5830.4754 -2550.6148 L 5830.1254 -2550.9748 L 5829.9454 -2551.5148 L 5829.9454 -2552.7648~~rep2435~~0~","TEXT~L~5748.241~-2761.24~1~0~0~3~~3.5433~BAT+~M 5748.24 -2764.82L5748.24 -2761.43 M 5748.24 -2764.82L5749.69 -2764.82 L5750.17 -2764.65 L5750.34 -2764.49 L5750.5 -2764.17 L5750.5 -2763.85 L5750.34 -2763.53 L5750.17 -2763.37 L5749.69 -2763.21 M 5748.24 -2763.21L5749.69 -2763.21 L5750.17 -2763.04 L5750.34 -2762.88 L5750.5 -2762.56 L5750.5 -2762.08 L5750.34 -2761.76 L5750.17 -2761.59 L5749.69 -2761.43 L5748.24 -2761.43 M 5752.85 -2764.82L5751.56 -2761.43 M 5752.85 -2764.82L5754.14 -2761.43 M 5752.04 -2762.56L5753.65 -2762.56 M 5756.33 -2764.82L5756.33 -2761.43 M 5755.2 -2764.82L5757.45 -2764.82 M 5759.97 -2764.33L5759.97 -2761.43 M 5758.52 -2762.88L5761.42 -2762.88 ~~rep2436~~0~","ARC~1~1~GND~M 5500.51481 -2755.78549 A 1.64432 1.64432 0 0 0 5500.0332 -2754.62278~~rep8~0","ARC~1~1~GND~M 5500.0332 -2754.62278 A 1.64432 1.64432 0 0 0 5499.55159 -2755.78549~~rep9~0","ARC~1~1~GND~M 5500.46988 -2755.74441 A 1.21686 1.21686 0 0 0 5500.0332 -2754.81056~~rep10~0","ARC~1~1~GND~M 5500.0332 -2754.81056 A 1.21686 1.21686 0 0 0 5499.59652 -2755.74441~~rep11~0","ARC~1~1~U6-9~M 5473.06395 -2730.88725 A 2.26244 2.26244 0 0 0 5472.83793 -2729.17047~~rep12~0","ARC~1~1~U6-9~M 5472.61168 -2730.01483 A 1.0262 1.0262 0 0 0 5472.13355 -2730.63795~~rep13~0","ARC~1~1~U6-9~M 5472.95571 -2730.74619 A 1.64432 1.64432 0 0 0 5472.4741 -2729.58348~~rep14~0","ARC~1~1~U6-9~M 5472.4741 -2729.58348 A 1.64432 1.64432 0 0 0 5471.99249 -2730.74619~~rep15~0","ARC~1~1~U6-9~M 5473.06395 -2730.88725 A 2.26235 2.26235 0 0 0 5472.83794 -2729.17053~~rep16~0","ARC~1~1~U6-9~M 5472.61172 -2730.01478 A 1.02629 1.02629 0 0 0 5472.13355 -2730.63795~~rep17~0","ARC~1~1~U6-7~M 5472.5166 -2737.56745 A 4.05305 4.05305 0 0 0 5473.70371 -2734.70151~~rep18~0","ARC~1~1~U6-7~M 5472.70429 -2734.66237 A 1.32829 1.32829 0 0 0 5472.84479 -2736.18942~~rep19~0","ARC~0.7874~1~SDA~M 5850.2535 -2594.52435 A 2.18584 2.18584 0 0 0 5849.61331 -2596.06995~~rep20~0","ARC~0.7874~1~SDA~M 5849.8982 -2595.78505 A 1.61606 1.61606 0 0 0 5851.04091 -2595.3117~~rep21~0","ARC~1.1811~1~SDA~M 5850.45035 -2594.52434 A 1.7106 1.7106 0 0 0 5849.94935 -2595.7339~~rep22~0","ARC~1.1811~1~SDA~M 5850.23423 -2595.449 A 1.14083 1.14083 0 0 0 5851.04091 -2595.11485~~rep23~0","ARC~0.7874~1~SDA~M 5851.59767 -2593.96753 A 1.22903 1.22903 0 0 0 5851.2377 -2593.09847~~rep24~0","ARC~0.7874~1~SDA~M 5851.2377 -2592.14823 A 2.57287 2.57287 0 0 0 5850.48412 -2593.96752~~rep25~0","ARC~1.1811~1~SDA~M 5851.2377 -2592.62347 A 2.09763 2.09763 0 0 0 5850.62332 -2594.10672~~rep26~0","ARC~0.7874~1~SDA~M 5851.0409 -2594.5243 A 1.26226 1.26226 0 0 0 5850.11894 -2595.55875~~rep27~0","ARC~0.7874~1~SDA~M 5849.96878 -2595.58649 A 1.49715 1.49715 0 0 0 5851.0409 -2594.5243~~rep28~0","ARC~1.1811~1~SDA~M 5861.65528 -2574.69722 A 1.42571 1.42571 0 0 0 5861.2377 -2573.68909~~rep29~0","ARC~1.1811~1~SDA~M 5861.2377 -2573.68909 A 1.42571 1.42571 0 0 0 5860.82012 -2574.69722~~rep30~0","ARC~1.1811~1~+3V3~M 5842.30438 -2766.59548 A 1.42571 1.42571 0 0 0 5843.31251 -2766.1779~~rep31~0","ARC~1.1811~1~+3V3~M 5843.31251 -2766.1779 A 1.42571 1.42571 0 0 0 5842.30438 -2765.76032~~rep32~0","ARC~1~1~+3V3~M 5771.58671 -2628.72099 A 1.64432 1.64432 0 0 0 5771.1051 -2627.55828~~rep33~0","ARC~1~1~+3V3~M 5771.1051 -2627.55828 A 1.64432 1.64432 0 0 0 5770.62349 -2628.72099~~rep34~0","ARC~1~1~+3V3~M 5770.62349 -2629.68421 A 1.64432 1.64432 0 0 0 5771.1051 -2630.84692~~rep35~0","ARC~1~1~+3V3~M 5771.1051 -2630.84692 A 1.64432 1.64432 0 0 0 5771.58671 -2629.68421~~rep36~0","ARC~0.7874~1~+3V3~M 5811.55222 -2647.99938 A 1.90095 1.90095 0 0 0 5812.109 -2649.34355~~rep37~0","ARC~0.7874~1~+3V3~M 5812.109 -2649.34355 A 1.90095 1.90095 0 0 0 5812.66578 -2647.99938~~rep38~0","ARC~0.7874~1~SD_DAT3~M 5767.78928 -2749.25218 A 1.90095 1.90095 0 0 0 5769.13345 -2748.6954~~rep39~0","ARC~0.7874~1~SD_DAT3~M 5769.13345 -2748.6954 A 1.90095 1.90095 0 0 0 5767.78928 -2748.13862~~rep40~0","ARC~0.7874~1~SD_CMD~M 5720.15158 -2746.41758 A 2.04367 2.04367 0 0 0 5721.59667 -2745.819~~rep41~0","ARC~0.7874~1~SD_CMD~M 5721.39484 -2745.819 A 1.75824 1.75824 0 0 0 5720.15158 -2745.30402~~rep42~0","ARC~0.7874~1~SD_DAT2~M 5734.04918 -2752.00808 A 1.64045 1.64045 0 0 0 5735.20915 -2751.5276~~rep43~0","ARC~0.7874~1~SD_DAT2~M 5735.57756 -2751.5276 A 2.16146 2.16146 0 0 0 5734.04918 -2750.89452~~rep44~0","ARC~0.7874~1~SD_DAT2~M 5844.59322 -2778.41182 A 1.90095 1.90095 0 0 0 5843.24905 -2778.9686~~rep45~0","ARC~0.7874~1~SD_DAT2~M 5843.24905 -2778.9686 A 1.90095 1.90095 0 0 0 5844.59322 -2779.52538~~rep46~0","ARC~0.7874~1~SD_DAT3~M 5844.59322 -2774.08112 A 1.90095 1.90095 0 0 0 5843.24905 -2774.6379~~rep47~0","ARC~0.7874~1~SD_DAT3~M 5843.24905 -2774.6379 A 1.90095 1.90095 0 0 0 5844.59322 -2775.19468~~rep48~0","ARC~0.7874~1~SD_DAT3~M 5712.32502 -2617.36402 A 1.90095 1.90095 0 0 0 5710.98085 -2617.9208~~rep49~0","ARC~0.7874~1~SD_DAT3~M 5710.98085 -2617.9208 A 1.90095 1.90095 0 0 0 5712.32502 -2618.47758~~rep50~0","ARC~0.7874~1~SD_CMD~M 5844.80002 -2769.81912 A 1.90095 1.90095 0 0 0 5843.45585 -2770.3759~~rep51~0","ARC~0.7874~1~SD_CMD~M 5843.45585 -2770.3759 A 1.90095 1.90095 0 0 0 5844.80002 -2770.93268~~rep52~0","ARC~0.7874~1~SD_DAT2~M 5870.39178 -2779.52538 A 1.90095 1.90095 0 0 0 5871.73595 -2778.9686~~rep53~0","ARC~0.7874~1~SD_DAT2~M 5871.73595 -2778.9686 A 1.90095 1.90095 0 0 0 5870.39178 -2778.41182~~rep54~0","ARC~0.7874~1~SD_DAT3~M 5870.37608 -2775.25768 A 1.90095 1.90095 0 0 0 5871.72025 -2774.7009~~rep55~0","ARC~0.7874~1~SD_DAT3~M 5871.72025 -2774.7009 A 1.90095 1.90095 0 0 0 5870.37608 -2774.14412~~rep56~0","ARC~0.7874~1~SD_CMD~M 5870.42118 -2770.93268 A 1.90095 1.90095 0 0 0 5871.76535 -2770.3759~~rep57~0","ARC~0.7874~1~SD_CMD~M 5871.76535 -2770.3759 A 1.90095 1.90095 0 0 0 5870.42118 -2769.81912~~rep58~0","ARC~0.7874~1~SD_CLK~M 5713.06488 -2743.46478 A 2.04367 2.04367 0 0 0 5714.50997 -2742.8662~~rep59~0","ARC~0.7874~1~SD_CLK~M 5714.30814 -2742.8662 A 1.75824 1.75824 0 0 0 5713.06488 -2742.35122~~rep60~0","ARC~0.7874~1~SD_DAT0~M 5718.41928 -2740.90578 A 2.17819 2.17819 0 0 0 5719.95949 -2740.2678~~rep61~0","ARC~0.7874~1~SD_DAT0~M 5719.56742 -2740.2678 A 1.62372 1.62372 0 0 0 5718.41928 -2739.79222~~rep62~0","ARC~0.7874~1~SD_DAT1~M 5752.59248 -2738.30728 A 1.90095 1.90095 0 0 0 5753.93665 -2737.7505~~rep63~0","ARC~0.7874~1~SD_DAT1~M 5753.93665 -2737.7505 A 1.90095 1.90095 0 0 0 5752.59248 -2737.19372~~rep64~0","ARC~0.7874~1~SD_DAT1~M 5713.09712 -2627.38822 A 1.80126 1.80126 0 0 0 5711.82344 -2627.9158~~rep65~0","ARC~0.7874~1~SD_DAT1~M 5711.68245 -2627.9158 A 2.00065 2.00065 0 0 0 5713.09712 -2628.50178~~rep66~0","ARC~0.7874~1~SD_CD~M 5723.02558 -2735.70888 A 1.86135 1.86135 0 0 0 5724.34175 -2735.1637~~rep67~0","ARC~0.7874~1~SD_CD~M 5724.39776 -2735.1637 A 1.94056 1.94056 0 0 0 5723.02558 -2734.59532~~rep68~0","ARC~0.7874~1~SD_DAT0~M 5672.24738 -2638.46758 A 1.90095 1.90095 0 0 0 5673.59155 -2637.9108~~rep69~0","ARC~0.7874~1~SD_DAT0~M 5673.59155 -2637.9108 A 1.90095 1.90095 0 0 0 5672.24738 -2637.35402~~rep70~0","ARC~0.7874~1~SD_DAT0~M 5672.37251 -2638.3045 A 0.85902 0.85902 0 0 0 5672.89411 -2637.90426~~rep71~0","ARC~0.7874~1~SD_DAT0~M 5674.25993 -2637.53828 A 2.80083 2.80083 0 0 0 5672.09534 -2637.23538~~rep72~0","ARC~0.7874~1~SD_DAT0~M 5672.09534 -2638.58622 A 2.80083 2.80083 0 0 0 5674.25993 -2638.28332~~rep73~0","ARC~0.7874~1~SD_DAT0~M 5672.89411 -2637.91734 A 0.85902 0.85902 0 0 0 5672.37251 -2637.5171~~rep74~0","ARC~0.7874~1~SD_DAT0~M 5672.09534 -2638.58622 A 2.80083 2.80083 0 0 0 5674.25993 -2638.28332~~rep75~0","ARC~0.7874~1~SD_DAT0~M 5672.89411 -2637.91734 A 0.85902 0.85902 0 0 0 5672.37251 -2637.5171~~rep76~0","ARC~0.7874~1~SD_DAT0~M 5672.37251 -2638.3045 A 0.85902 0.85902 0 0 0 5672.89411 -2637.90426~~rep77~0","ARC~0.7874~1~SD_DAT0~M 5674.25993 -2637.53828 A 2.80083 2.80083 0 0 0 5672.09534 -2637.23538~~rep78~0","ARC~0.7874~1~SD_CMD~M 5672.24188 -2648.46258 A 1.90095 1.90095 0 0 0 5673.58605 -2647.9058~~rep79~0","ARC~0.7874~1~SD_CMD~M 5673.58605 -2647.9058 A 1.90095 1.90095 0 0 0 5672.24188 -2647.34902~~rep80~0","ARC~0.7874~1~SD_DAT2~M 5672.23188 -2628.47258 A 1.90095 1.90095 0 0 0 5673.57605 -2627.9158~~rep81~0","ARC~0.7874~1~SD_DAT2~M 5673.57605 -2627.9158 A 1.90095 1.90095 0 0 0 5672.23188 -2627.35902~~rep82~0","ARC~0.7874~1~SD_CD~M 5672.17868 -2618.47758 A 1.90095 1.90095 0 0 0 5673.52285 -2617.9208~~rep83~0","ARC~0.7874~1~SD_CD~M 5673.52285 -2617.9208 A 1.90095 1.90095 0 0 0 5672.17868 -2617.36402~~rep84~0","ARC~0.7874~1~SD_CLK~M 5672.35558 -2658.45758 A 1.90095 1.90095 0 0 0 5673.69975 -2657.9008~~rep85~0","ARC~0.7874~1~SD_CLK~M 5673.69975 -2657.9008 A 1.90095 1.90095 0 0 0 5672.35558 -2657.34402~~rep86~0","ARC~0.7874~1~SD_CLK~M 5672.48071 -2658.2945 A 0.95463 0.95463 0 0 0 5673.06036 -2657.84971~~rep87~0","ARC~0.7874~1~SD_CLK~M 5674.30681 -2657.51572 A 2.73275 2.73275 0 0 0 5672.20159 -2657.22422~~rep88~0","ARC~0.7874~1~SD_CLK~M 5672.20159 -2658.57738 A 2.73275 2.73275 0 0 0 5674.30681 -2658.28588~~rep89~0","ARC~0.7874~1~SD_CLK~M 5673.06036 -2657.95189 A 0.95463 0.95463 0 0 0 5672.48071 -2657.5071~~rep90~0","ARC~0.7874~1~SD_CLK~M 5672.20159 -2658.57738 A 2.73275 2.73275 0 0 0 5674.30681 -2658.28588~~rep91~0","ARC~0.7874~1~SD_CLK~M 5673.06036 -2657.95189 A 0.95463 0.95463 0 0 0 5672.48071 -2657.5071~~rep92~0","ARC~0.7874~1~SD_CLK~M 5672.48071 -2658.2945 A 0.95463 0.95463 0 0 0 5673.06036 -2657.84971~~rep93~0","ARC~0.7874~1~SD_CLK~M 5674.30681 -2657.51572 A 2.73275 2.73275 0 0 0 5672.20159 -2657.22422~~rep94~0","ARC~0.7874~1~SW_D~M 5501.12982 -2713.0237 A 1.90095 1.90095 0 0 0 5502.474 -2713.58045~~rep95~0","ARC~0.7874~1~SW_D~M 5502.47401 -2713.58044 A 1.90095 1.90095 0 0 0 5501.9172 -2712.23628~~rep96~0","ARC~0.7874~1~SW_D~M 5501.1298 -2712.2363 A 1.37637 1.37637 0 0 0 5502.18314 -2713.22846~~rep97~0","ARC~0.7874~1~SW_D~M 5502.12183 -2713.28951 A 1.37619 1.37619 0 0 0 5501.1298 -2712.2363~~rep98~0","ARC~0.7874~1~TP_U~M 5746.99472 -2722.90002 A 1.90095 1.90095 0 0 0 5745.65055 -2723.4568~~rep99~0","ARC~0.7874~1~TP_U~M 5745.65055 -2723.4568 A 1.90095 1.90095 0 0 0 5746.99472 -2724.01358~~rep100~0","ARC~0.7874~1~TP_U~M 5779.56498 -2724.01358 A 1.90095 1.90095 0 0 0 5780.90915 -2723.4568~~rep101~0","ARC~0.7874~1~TP_U~M 5780.90915 -2723.4568 A 1.90095 1.90095 0 0 0 5779.56498 -2722.90002~~rep102~0","ARC~0.7874~1~TP_U~M 5779.56498 -2722.90002 A 1.90095 1.90095 0 0 0 5779.0082 -2721.55585~~rep103~0","ARC~0.7874~1~TP_U~M 5779.0082 -2721.55585 A 1.90095 1.90095 0 0 0 5778.45142 -2722.90002~~rep104~0","ARC~0.7874~1~TP_L~M 5749.27822 -2720.14412 A 1.90095 1.90095 0 0 0 5747.93405 -2720.7009~~rep105~0","ARC~0.7874~1~TP_L~M 5747.93405 -2720.7009 A 1.90095 1.90095 0 0 0 5749.27822 -2721.25768~~rep106~0","ARC~0.7874~1~TP_L~M 5782.36028 -2721.25768 A 1.90095 1.90095 0 0 0 5783.70445 -2720.7009~~rep107~0","ARC~0.7874~1~TP_L~M 5783.70445 -2720.7009 A 1.90095 1.90095 0 0 0 5782.36028 -2720.14412~~rep108~0","ARC~0.7874~1~TP_D~M 5752.23092 -2717.58502 A 1.90095 1.90095 0 0 0 5750.88675 -2718.1418~~rep109~0","ARC~0.7874~1~TP_D~M 5750.88675 -2718.1418 A 1.90095 1.90095 0 0 0 5752.23092 -2718.69858~~rep110~0","ARC~0.7874~1~TP_R~M 5754.98692 -2714.75042 A 1.90095 1.90095 0 0 0 5753.64275 -2715.3072~~rep111~0","ARC~0.7874~1~TP_R~M 5753.64275 -2715.3072 A 1.90095 1.90095 0 0 0 5754.98692 -2715.86398~~rep112~0","ARC~0.7874~1~H1_CPLD_TCK~M 5671.13978 -2694.64348 A 1.90095 1.90095 0 0 0 5672.48395 -2694.0867~~rep113~0","ARC~0.7874~1~H1_CPLD_TCK~M 5672.48395 -2694.0867 A 1.90095 1.90095 0 0 0 5671.13978 -2693.52992~~rep114~0","ARC~0.7874~1~PP_CPLD_TMS~M 5709.04728 -2640.93406 A 0.62703 0.62703 0 0 0 5708.3159 -2640.64951~~rep115~0","ARC~0.7874~1~PP_CPLD_TMS~M 5709.48759 -2640.92453 A 2.99497 2.99497 0 0 0 5707.66902 -2639.5291~~rep116~0","ARC~0.7874~1~PP_CPLD_TMS~M 5709.38762 -2640.90457 A 1.23081 1.23081 0 0 0 5708.48401 -2640.29991~~rep117~0","ARC~0.7874~1~PP_CPLD_TMS~M 5708.484 -2640.29992 A 1.23097 1.23097 0 0 0 5708.5559 -2641.38483~~rep118~0","ARC~0.7874~1~PP_CPLD_TMS~M 5709.2838 -2640.8977 A 1.90095 1.90095 0 0 0 5707.93963 -2640.34092~~rep119~0","ARC~0.7874~1~PP_CPLD_TMS~M 5707.93962 -2640.34093 A 1.90095 1.90095 0 0 0 5708.4964 -2641.6851~~rep120~0","ARC~0.7874~1~PP_CPLD_TMS~M 5709.38767 -2640.90458 A 1.23081 1.23081 0 0 0 5708.48412 -2640.29993~~rep121~0","ARC~0.7874~1~PP_CPLD_TMS~M 5708.48412 -2640.29994 A 1.23069 1.23069 0 0 0 5708.55594 -2641.38474~~rep122~0","ARC~0.7874~1~PP_CPLD_TMS~M 5709.04731 -2640.93405 A 0.62696 0.62696 0 0 0 5708.31605 -2640.64952~~rep123~0","ARC~0.7874~1~PP_CPLD_TMS~M 5709.48759 -2640.92453 A 2.99456 2.99456 0 0 0 5707.66928 -2639.52929~~rep124~0","ARC~0.7874~1~PP_CPLD_TMS~M 5709.2838 -2641.6851 A 1.37619 1.37619 0 0 0 5708.23059 -2640.69307~~rep125~0","ARC~0.7874~1~PP_CPLD_TMS~M 5708.29177 -2640.63189 A 1.37619 1.37619 0 0 0 5709.2838 -2641.6851~~rep126~0","ARC~0.7874~1~PP_CPLD_TMS~M 5715.23028 -2710.27578 A 1.90095 1.90095 0 0 0 5716.57445 -2709.719~~rep127~0","ARC~0.7874~1~PP_CPLD_TMS~M 5716.57445 -2709.719 A 1.90095 1.90095 0 0 0 5715.23028 -2709.16222~~rep128~0","ARC~0.7874~1~H1_CPLD_TCK~M 5671.13978 -2688.54108 A 2.23725 2.23725 0 0 0 5672.72175 -2687.8858~~rep129~0","ARC~0.7874~1~H1_CPLD_TCK~M 5672.24615 -2687.8858 A 1.56465 1.56465 0 0 0 5671.13978 -2687.42752~~rep130~0","ARC~0.7874~1~PP_CPLD_TDO~M 5709.04512 -2650.97415 A 0.62027 0.62027 0 0 0 5708.31993 -2650.69319~~rep131~0","ARC~0.7874~1~PP_CPLD_TDO~M 5709.4876 -2650.96394 A 2.99041 2.99041 0 0 0 5707.67182 -2649.57061~~rep132~0","ARC~0.7874~1~PP_CPLD_TDO~M 5709.28382 -2650.9371 A 1.90095 1.90095 0 0 0 5707.93965 -2650.38031~~rep133~0","ARC~0.7874~1~PP_CPLD_TDO~M 5707.93964 -2650.3803 A 1.90095 1.90095 0 0 0 5708.4964 -2651.72446~~rep134~0","ARC~0.7874~1~PP_CPLD_TDO~M 5709.04511 -2650.97414 A 0.62009 0.62009 0 0 0 5708.32013 -2650.69327~~rep135~0","ARC~0.7874~1~PP_CPLD_TDO~M 5709.48759 -2650.96393 A 2.98994 2.98994 0 0 0 5707.67208 -2649.57084~~rep136~0","ARC~0.7874~1~PP_CPLD_TDO~M 5709.39288 -2650.94469 A 1.25868 1.25868 0 0 0 5708.47719 -2650.32747~~rep137~0","ARC~0.7874~1~PP_CPLD_TDO~M 5708.4772 -2650.32749 A 1.25882 1.25882 0 0 0 5708.55391 -2651.42911~~rep138~0","ARC~0.7874~1~PP_CPLD_TDO~M 5709.39295 -2650.9447 A 1.25878 1.25878 0 0 0 5708.47731 -2650.32746~~rep139~0","ARC~0.7874~1~PP_CPLD_TDO~M 5708.47731 -2650.32749 A 1.2585 1.2585 0 0 0 5708.55394 -2651.42901~~rep140~0","ARC~0.7874~1~PP_CPLD_TDO~M 5709.2838 -2651.7245 A 1.37619 1.37619 0 0 0 5708.23059 -2650.73247~~rep141~0","ARC~0.7874~1~PP_CPLD_TDO~M 5708.29164 -2650.67116 A 1.37637 1.37637 0 0 0 5709.2838 -2651.7245~~rep142~0","ARC~0.7874~1~PP_CPLD_TDO~M 5726.37198 -2701.10258 A 1.90095 1.90095 0 0 0 5727.71615 -2700.5458~~rep143~0","ARC~0.7874~1~PP_CPLD_TDO~M 5727.71615 -2700.5458 A 1.90095 1.90095 0 0 0 5726.37198 -2699.98902~~rep144~0","ARC~1.1811~1~NETK2_3~M 5476.77348 -2761.31142 A 1.42571 1.42571 0 0 0 5476.3559 -2760.30329~~rep145~0","ARC~1.1811~1~NETK2_3~M 5476.3559 -2760.30329 A 1.42571 1.42571 0 0 0 5475.93832 -2761.31142~~rep146~0","ARC~1.1811~1~NETK2_3~M 5476.65118 -2761.21757 A 1.42552 1.42552 0 0 0 5475.98699 -2760.35198~~rep147~0","ARC~1.1811~1~NETK2_3~M 5475.98692 -2760.35172 A 1.42591 1.42591 0 0 0 5475.84447 -2761.43373~~rep148~0","ARC~1.1811~1~NETK2_3~M 5476.86733 -2761.43373 A 1.4259 1.4259 0 0 0 5476.72489 -2760.35173~~rep149~0","ARC~1.1811~1~NETK2_3~M 5476.72482 -2760.35197 A 1.42553 1.42553 0 0 0 5476.06062 -2761.21757~~rep150~0","ARC~1.1811~1~NETK2_3~M 5476.86733 -2761.43372 A 1.42598 1.42598 0 0 0 5476.72487 -2760.35166~~rep151~0","ARC~1.1811~1~NETK2_3~M 5476.72478 -2760.35202 A 1.42545 1.42545 0 0 0 5476.06063 -2761.21756~~rep152~0","ARC~1.1811~1~NETK2_3~M 5476.65117 -2761.21757 A 1.42578 1.42578 0 0 0 5475.98686 -2760.35183~~rep153~0","ARC~1.1811~1~NETK2_3~M 5475.98689 -2760.35191 A 1.42565 1.42565 0 0 0 5475.84447 -2761.43372~~rep154~0","ARC~0.7874~1~RESET#~M 5530.2123 -2588.85683 A 1.09229 1.09229 0 0 0 5529.38345 -2588.74771~~rep155~0","ARC~0.7874~1~RESET#~M 5528.82218 -2588.42366 A 1.6332 1.6332 0 0 0 5529.63198 -2589.68918~~rep156~0","ARC~0.7874~1~RESET#~M 5530.4161 -2588.83 A 1.90095 1.90095 0 0 0 5529.07193 -2588.27322~~rep157~0","ARC~0.7874~1~RESET#~M 5529.07192 -2588.27323 A 1.90095 1.90095 0 0 0 5529.6287 -2589.6174~~rep158~0","ARC~0.7874~1~RESET#~M 5530.21231 -2588.85683 A 1.09262 1.09262 0 0 0 5529.38321 -2588.74767~~rep159~0","ARC~0.7874~1~RESET#~M 5528.82219 -2588.42376 A 1.63321 1.63321 0 0 0 5529.63198 -2589.68921~~rep160~0","ARC~0.7874~1~RESET#~M 5530.4161 -2589.6174 A 1.37619 1.37619 0 0 0 5529.36289 -2588.62537~~rep161~0","ARC~0.7874~1~RESET#~M 5529.42407 -2588.56419 A 1.37619 1.37619 0 0 0 5530.4161 -2589.6174~~rep162~0","ARC~0.7874~1~RESET#~M 5717.76642 -2587.75158 A 1.90095 1.90095 0 0 0 5718.3232 -2589.09575~~rep163~0","ARC~0.7874~1~RESET#~M 5718.3232 -2589.09575 A 1.90095 1.90095 0 0 0 5718.87998 -2587.75158~~rep164~0","ARC~0.7874~1~MCU_LCD_RD~M 5540.8816 -2589.01433 A 1.05876 1.05876 0 0 0 5540.07819 -2588.90856~~rep165~0","ARC~0.7874~1~MCU_LCD_RD~M 5539.20045 -2588.4018 A 2.32985 2.32985 0 0 0 5540.31502 -2589.93773~~rep166~0","ARC~0.7874~1~MCU_LCD_RD~M 5540.68607 -2589.09628 A 0.76504 0.76504 0 0 0 5539.91556 -2589.09946~~rep167~0","ARC~0.7874~1~MCU_LCD_RD~M 5539.91556 -2589.09946 A 0.76498 0.76498 0 0 0 5540.29802 -2589.76833~~rep168~0","ARC~0.7874~1~MCU_LCD_RD~M 5541.0854 -2588.9875 A 1.90095 1.90095 0 0 0 5539.74123 -2588.43072~~rep169~0","ARC~0.7874~1~MCU_LCD_RD~M 5539.74122 -2588.43073 A 1.90095 1.90095 0 0 0 5540.298 -2589.7749~~rep170~0","ARC~0.7874~1~MCU_LCD_RD~M 5540.686 -2589.09631 A 0.76488 0.76488 0 0 0 5539.91559 -2589.09953~~rep171~0","ARC~0.7874~1~MCU_LCD_RD~M 5539.91558 -2589.09954 A 0.76495 0.76495 0 0 0 5540.29802 -2589.76836~~rep172~0","ARC~0.7874~1~MCU_LCD_RD~M 5540.88161 -2589.01433 A 1.05887 1.05887 0 0 0 5540.07812 -2588.90855~~rep173~0","ARC~0.7874~1~MCU_LCD_RD~M 5539.2005 -2588.40185 A 2.32975 2.32975 0 0 0 5540.31502 -2589.93772~~rep174~0","ARC~0.7874~1~MCU_LCD_RD~M 5541.0854 -2589.7749 A 1.37637 1.37637 0 0 0 5540.03206 -2588.78274~~rep175~0","ARC~0.7874~1~MCU_LCD_RD~M 5540.09324 -2588.72156 A 1.37637 1.37637 0 0 0 5541.0854 -2589.7749~~rep176~0","ARC~0.7874~1~MCU_LCD_RD~M 5721.45196 -2590.33745 A 1.83465 1.83465 0 0 0 5722.0029 -2591.64819~~rep177~0","ARC~0.7874~1~MCU_LCD_RD~M 5722.0029 -2591.64819 A 1.83465 1.83465 0 0 0 5722.55384 -2590.33745~~rep178~0","ARC~0.7874~1~MCU_LCD_TE~M 5540.23518 -2555.24712 A 0.91321 0.91321 0 0 0 5539.79699 -2556.22044~~rep179~0","ARC~0.7874~1~MCU_LCD_TE~M 5540.24612 -2554.88601 A 3.17889 3.17889 0 0 0 5538.765 -2556.81625~~rep180~0","ARC~0.7874~1~MCU_LCD_TE~M 5540.24613 -2554.88601 A 1.90114 1.90114 0 0 0 5539.36034 -2556.04039~~rep181~0","ARC~0.7874~1~MCU_LCD_TE~M 5539.36057 -2556.04025 A 1.90076 1.90076 0 0 0 5540.8029 -2555.85037~~rep182~0","ARC~0.7874~1~MCU_LCD_TE~M 5540.2193 -2555.0898 A 1.90095 1.90095 0 0 0 5539.66252 -2556.43397~~rep183~0","ARC~0.7874~1~MCU_LCD_TE~M 5539.66253 -2556.43398 A 1.90095 1.90095 0 0 0 5541.0067 -2555.8772~~rep184~0","ARC~0.7874~1~MCU_LCD_TE~M 5540.24613 -2554.88601 A 2.54259 2.54259 0 0 0 5539.06148 -2556.42989~~rep185~0","ARC~0.7874~1~MCU_LCD_TE~M 5539.84731 -2555.97618 A 1.25932 1.25932 0 0 0 5540.8029 -2555.85037~~rep186~0","ARC~0.7874~1~MCU_LCD_TE~M 5541.0067 -2555.0898 A 1.37637 1.37637 0 0 0 5540.01454 -2556.14314~~rep187~0","ARC~0.7874~1~MCU_LCD_TE~M 5539.95336 -2556.08196 A 1.37637 1.37637 0 0 0 5541.0067 -2555.0898~~rep188~0","ARC~0.7874~1~MCU_LCD_TE~M 5723.78532 -2566.70958 A 1.90095 1.90095 0 0 0 5724.3421 -2568.05375~~rep189~0","ARC~0.7874~1~MCU_LCD_TE~M 5724.3421 -2568.05375 A 1.90095 1.90095 0 0 0 5724.89888 -2566.70958~~rep190~0","ARC~0.7874~1~MCU_IO_STBX~M 5609.64595 -2555.55589 A 2.50888 2.50888 0 0 0 5608.44644 -2557.2064~~rep191~0","ARC~0.7874~1~MCU_IO_STBX~M 5609.55389 -2556.56704 A 0.86767 0.86767 0 0 0 5610.2123 -2556.48037~~rep192~0","ARC~0.7874~1~MCU_IO_STBX~M 5609.62881 -2555.70664 A 0.83416 0.83416 0 0 0 5609.21184 -2556.41511~~rep193~0","ARC~0.7874~1~MCU_IO_STBX~M 5609.21184 -2556.4151 A 0.83421 0.83421 0 0 0 5610.03388 -2556.40821~~rep194~0","ARC~0.7874~1~MCU_IO_STBX~M 5609.6287 -2555.71979 A 1.90095 1.90095 0 0 0 5609.07191 -2557.06395~~rep195~0","ARC~0.7874~1~MCU_IO_STBX~M 5609.0719 -2557.06396 A 1.90095 1.90095 0 0 0 5610.41609 -2556.5072~~rep196~0","ARC~0.7874~1~MCU_IO_STBX~M 5609.65553 -2555.51601 A 2.25969 2.25969 0 0 0 5608.60268 -2556.8881~~rep197~0","ARC~0.7874~1~MCU_IO_STBX~M 5609.04205 -2556.63444 A 1.54221 1.54221 0 0 0 5610.21231 -2556.48037~~rep198~0","ARC~0.7874~1~MCU_IO_STBX~M 5610.4161 -2555.7198 A 1.37619 1.37619 0 0 0 5609.42407 -2556.77301~~rep199~0","ARC~0.7874~1~MCU_IO_STBX~M 5609.36289 -2556.71183 A 1.37619 1.37619 0 0 0 5610.4161 -2555.7198~~rep200~0","ARC~0.7874~1~MCU_IO_STBX~M 5727.19162 -2564.64348 A 1.90095 1.90095 0 0 0 5727.7484 -2565.98765~~rep201~0","ARC~0.7874~1~MCU_IO_STBX~M 5727.7484 -2565.98765 A 1.90095 1.90095 0 0 0 5728.30518 -2564.64348~~rep202~0","ARC~0.7874~1~MCU_IO_STBX~M 5727.19162 -2564.64348 A 1.90095 1.90095 0 0 0 5727.7484 -2565.98765~~rep203~0","ARC~0.7874~1~MCU_IO_STBX~M 5727.7484 -2565.98765 A 1.90095 1.90095 0 0 0 5728.30518 -2564.64348~~rep204~0","ARC~0.7874~1~MCU_ADDR~M 5607.46898 -2592.64332 A 2.08839 2.08839 0 0 0 5606.8573 -2591.16661~~rep205~0","ARC~0.7874~1~MCU_ADDR~M 5606.8573 -2591.43169 A 1.71351 1.71351 0 0 0 5606.35542 -2592.64332~~rep206~0","ARC~0.7874~1~P2_8~M 5627.50828 -2594.65122 A 1.90095 1.90095 0 0 0 5626.9515 -2593.30705~~rep207~0","ARC~0.7874~1~P2_8~M 5626.9515 -2593.30705 A 1.90095 1.90095 0 0 0 5626.39472 -2594.65122~~rep208~0","ARC~0.7874~1~REF_EN~M 5753.4476 -2549.6961 A 1.90095 1.90095 0 0 0 5752.10343 -2549.13932~~rep209~0","ARC~0.7874~1~REF_EN~M 5752.10342 -2549.13933 A 1.90095 1.90095 0 0 0 5752.6602 -2550.4835~~rep210~0","ARC~0.7874~1~REF_EN~M 5753.4476 -2550.4835 A 1.37619 1.37619 0 0 0 5752.39439 -2549.49147~~rep211~0","ARC~0.7874~1~REF_EN~M 5752.45557 -2549.43029 A 1.37619 1.37619 0 0 0 5753.4476 -2550.4835~~rep212~0","ARC~0.7874~1~REF_EN~M 5752.89082 -2563.52068 A 1.90095 1.90095 0 0 0 5753.4476 -2564.86485~~rep213~0","ARC~0.7874~1~REF_EN~M 5753.4476 -2564.86485 A 1.90095 1.90095 0 0 0 5754.00438 -2563.52068~~rep214~0","ARC~0.7874~1~MCU_LCD_WR~M 5617.3059 -2592.00639 A 1.38375 1.38375 0 0 0 5616.66117 -2591.16617~~rep215~0","ARC~0.7874~1~MCU_LCD_WR~M 5616.47186 -2590.45966 A 2.41815 2.41815 0 0 0 5616.23029 -2592.2946~~rep216~0","ARC~0.7874~1~MCU_LCD_WR~M 5617.3059 -2592.0064 A 1.38365 1.38365 0 0 0 5616.66122 -2591.16624~~rep217~0","ARC~0.7874~1~MCU_LCD_WR~M 5616.47187 -2590.45959 A 2.41825 2.41825 0 0 0 5616.23029 -2592.2946~~rep218~0","ARC~0.7874~1~MCU_LCD_WR~M 5617.57774 -2592.26751 A 2.36205 2.36205 0 0 0 5617.29265 -2590.3939~~rep219~0","ARC~0.7874~1~MCU_LCD_WR~M 5617.04415 -2591.32135 A 1.12818 1.12818 0 0 0 5616.5185 -2592.00639~~rep220~0","ARC~0.7874~1~MCU_LCD_WR~M 5617.46898 -2592.13152 A 1.90095 1.90095 0 0 0 5616.9122 -2590.78735~~rep221~0","ARC~0.7874~1~MCU_LCD_WR~M 5616.9122 -2590.78735 A 1.90095 1.90095 0 0 0 5616.35542 -2592.13152~~rep222~0","ARC~0.7874~1~MCU_LCD_WR~M 5617.57776 -2592.26756 A 2.36226 2.36226 0 0 0 5617.29272 -2590.39388~~rep223~0","ARC~0.7874~1~MCU_LCD_WR~M 5617.04423 -2591.32124 A 1.12836 1.12836 0 0 0 5616.5185 -2592.00639~~rep224~0","ARC~0.7874~1~MCU_LCD_WR~M 5784.42622 -2593.24508 A 1.90095 1.90095 0 0 0 5784.983 -2594.58925~~rep225~0","ARC~0.7874~1~MCU_LCD_WR~M 5784.983 -2594.58925 A 1.90095 1.90095 0 0 0 5785.53978 -2593.24508~~rep226~0","ARC~0.7874~1~MCU_DIR~M 5620.08771 -2555.52642 A 0.74776 0.74776 0 0 0 5619.73842 -2556.36423~~rep227~0","ARC~0.7874~1~MCU_DIR~M 5620.08864 -2555.1223 A 3.07435 3.07435 0 0 0 5618.6562 -2556.98905~~rep228~0","ARC~0.7874~1~MCU_DIR~M 5620.08563 -2555.13386 A 1.80548 1.80548 0 0 0 5619.23751 -2556.25665~~rep229~0","ARC~0.7874~1~MCU_DIR~M 5619.2375 -2556.25666 A 1.80576 1.80576 0 0 0 5620.63396 -2556.08351~~rep230~0","ARC~0.7874~1~MCU_DIR~M 5620.0618 -2555.32609 A 1.90095 1.90095 0 0 0 5619.50501 -2556.67026~~rep231~0","ARC~0.7874~1~MCU_DIR~M 5619.50501 -2556.67026 A 1.90095 1.90095 0 0 0 5620.84919 -2556.1135~~rep232~0","ARC~0.7874~1~MCU_DIR~M 5620.08863 -2555.12231 A 2.37689 2.37689 0 0 0 5618.98118 -2556.56557~~rep233~0","ARC~0.7874~1~MCU_DIR~M 5619.56408 -2556.22904 A 1.42501 1.42501 0 0 0 5620.64541 -2556.08668~~rep234~0","ARC~0.7874~1~MCU_DIR~M 5620.8492 -2555.3261 A 1.37619 1.37619 0 0 0 5619.85717 -2556.37931~~rep235~0","ARC~0.7874~1~MCU_DIR~M 5619.79586 -2556.31826 A 1.37637 1.37637 0 0 0 5620.8492 -2555.3261~~rep236~0","ARC~0.7874~1~MCU_DIR~M 5788.26482 -2568.26478 A 1.90095 1.90095 0 0 0 5788.8216 -2569.60895~~rep237~0","ARC~0.7874~1~MCU_DIR~M 5788.8216 -2569.60895 A 1.90095 1.90095 0 0 0 5789.37838 -2568.26478~~rep238~0","ARC~1.1811~1~SCL~M 5821.53718 -2601.67418 A 1.42571 1.42571 0 0 0 5822.54531 -2601.2566~~rep239~0","ARC~1.1811~1~SCL~M 5822.54531 -2601.2566 A 1.42571 1.42571 0 0 0 5821.53718 -2600.83902~~rep240~0","ARC~0.7874~1~SCL~M 5821.67638 -2600.69982 A 1.90471 1.90471 0 0 0 5821.1185 -2599.35299~~rep241~0","ARC~0.7874~1~SCL~M 5821.1185 -2599.3583 A 1.8972 1.8972 0 0 0 5820.56282 -2600.69982~~rep242~0","ARC~0.7874~1~SCL~M 5821.67638 -2600.69982 A 1.90471 1.90471 0 0 0 5821.1185 -2599.35299~~rep243~0","ARC~0.7874~1~SCL~M 5821.1185 -2599.3583 A 1.8972 1.8972 0 0 0 5820.56282 -2600.69982~~rep244~0","ARC~1.1811~1~NETM1_2~M 5551.41152 -2552.33678 A 1.42571 1.42571 0 0 0 5551.8291 -2553.34491~~rep245~0","ARC~1.1811~1~NETM1_2~M 5551.8291 -2553.34491 A 1.42571 1.42571 0 0 0 5552.24668 -2552.33678~~rep246~0","ARC~1.1811~1~NETM1_2~M 5551.41152 -2552.33678 A 1.42571 1.42571 0 0 0 5551.8291 -2553.34491~~rep247~0","ARC~1.1811~1~NETM1_2~M 5551.8291 -2553.34491 A 1.42571 1.42571 0 0 0 5552.24668 -2552.33678~~rep248~0","ARC~1~1~I2S0_WS~M 5587.23001 -2617.22689 A 1.64432 1.64432 0 0 0 5586.7484 -2616.06418~~rep249~0","ARC~1~1~I2S0_WS~M 5586.7484 -2616.06418 A 1.64432 1.64432 0 0 0 5586.26679 -2617.22689~~rep250~0","ARC~1.9685~1~VBAT~M 5807.8114 -2568.30971 A 2.39071 2.39071 0 0 0 5808.9253 -2569.76137~~rep251~0","ARC~1.9685~1~VBAT~M 5807.64832 -2568.18458 A 1.90095 1.90095 0 0 0 5808.2051 -2569.52875~~rep252~0","ARC~1.9685~1~VBAT~M 5808.2051 -2569.52875 A 1.90095 1.90095 0 0 0 5808.76188 -2568.18458~~rep253~0","ARC~1.9685~1~VBAT~M 5807.8114 -2568.30971 A 2.39077 2.39077 0 0 0 5808.92533 -2569.7614~~rep254~0","ARC~1.9685~1~VBAT~M 5497.34082 -2607.7876 A 1.81338 1.81338 0 0 0 5498.71685 -2607.96876~~rep255~0","ARC~1.9685~1~VBAT~M 5498.63531 -2607.34941 A 1.62649 1.62649 0 0 0 5497.48521 -2607.8258~~rep256~0","ARC~1.9685~1~VBAT~M 5498.63531 -2607.34941 A 1.62649 1.62649 0 0 0 5497.48521 -2607.8258~~rep257~0","ARC~1.9685~1~VBAT~M 5497.34114 -2607.78765 A 1.81296 1.81296 0 0 0 5498.71685 -2607.96876~~rep258~0","ARC~1~1~I2S0_MCLK~M 5597.34391 -2620.06569 A 1.64432 1.64432 0 0 0 5596.8623 -2618.90298~~rep259~0","ARC~1~1~I2S0_MCLK~M 5596.8623 -2618.90298 A 1.64432 1.64432 0 0 0 5596.38069 -2620.06569~~rep260~0","ARC~1~1~I2S0_TX_SDA~M 5577.35391 -2611.52769 A 1.64432 1.64432 0 0 0 5576.8723 -2610.36498~~rep261~0","ARC~1~1~I2S0_TX_SDA~M 5576.8723 -2610.36498 A 1.64432 1.64432 0 0 0 5576.39069 -2611.52769~~rep262~0","ARC~1~1~I2S0_SCK~M 5592.26941 -2608.32929 A 1.64432 1.64432 0 0 0 5591.7878 -2607.16658~~rep263~0","ARC~1~1~I2S0_SCK~M 5591.7878 -2607.16658 A 1.64432 1.64432 0 0 0 5591.30619 -2608.32929~~rep264~0","ARC~1~1~+3V3~M 5812.48201 -2711.57621 A 1.64432 1.64432 0 0 0 5813.64472 -2711.0946~~rep265~0","ARC~1~1~+3V3~M 5813.64472 -2711.0946 A 1.64432 1.64432 0 0 0 5812.48201 -2710.61299~~rep266~0","ARC~1~1~NETR20_1~M 5644.5055 -2799.3156 A 1.64432 1.64432 0 0 0 5643.34279 -2798.83399~~rep267~0","ARC~1~1~NETR20_1~M 5643.34279 -2798.83399 A 1.64432 1.64432 0 0 0 5643.8244 -2799.9967~~rep268~0","ARC~1~1~NETR20_1~M 5644.90831 -2808.43111 A 1.64432 1.64432 0 0 0 5646.07102 -2807.9495~~rep269~0","ARC~1~1~NETR20_1~M 5646.07102 -2807.9495 A 1.64432 1.64432 0 0 0 5644.90831 -2807.46789~~rep270~0","ARC~1~1~NETR20_1~M 5644.42671 -2807.2684 A 1.64432 1.64432 0 0 0 5643.264 -2806.78678~~rep271~0","ARC~1~1~NETR20_1~M 5643.264 -2806.78678 A 1.64432 1.64432 0 0 0 5643.7456 -2807.94948~~rep272~0","ARC~1~1~I2S0_WS~M 5658.59079 -2807.46789 A 1.64432 1.64432 0 0 0 5657.42808 -2807.9495~~rep273~0","ARC~1~1~I2S0_WS~M 5657.42808 -2807.9495 A 1.64432 1.64432 0 0 0 5658.59079 -2808.43111~~rep274~0","ARC~1~1~H1_CPLD_TDI~M 5668.51209 -2802.42849 A 1.64432 1.64432 0 0 0 5667.34938 -2802.9101~~rep275~0","ARC~1~1~H1_CPLD_TDI~M 5667.34938 -2802.9101 A 1.64432 1.64432 0 0 0 5668.51209 -2803.39171~~rep276~0","ARC~1~1~H1_CPLD_TDI~M 5669.47531 -2698.39171 A 1.64432 1.64432 0 0 0 5670.63802 -2697.9101~~rep277~0","ARC~1~1~H1_CPLD_TDI~M 5670.63802 -2697.9101 A 1.64432 1.64432 0 0 0 5669.47531 -2697.42849~~rep278~0","ARC~1~1~I2S0_SCK~M 5665.36239 -2792.38909 A 1.77884 1.77884 0 0 0 5664.10456 -2792.9101~~rep279~0","ARC~1~1~I2S0_SCK~M 5664.2948 -2792.9101 A 1.5098 1.5098 0 0 0 5665.36239 -2793.35231~~rep280~0","ARC~1~1~I2S0_TX_SDA~M 5661.97659 -2797.50719 A 1.51014 1.51014 0 0 0 5660.90876 -2797.9495~~rep281~0","ARC~1~1~I2S0_TX_SDA~M 5660.719 -2797.9495 A 1.7785 1.7785 0 0 0 5661.97659 -2798.47041~~rep282~0","ARC~1~1~I2S0_MCLK~M 5655.51989 -2772.60379 A 1.64432 1.64432 0 0 0 5654.35718 -2773.0854~~rep283~0","ARC~1~1~I2S0_MCLK~M 5654.35718 -2773.0854 A 1.64432 1.64432 0 0 0 5655.51989 -2773.56701~~rep284~0","ARC~1~1~RHPOUT~M 5520.32309 -2769.10041 A 1.64432 1.64432 0 0 0 5520.8047 -2770.26312~~rep285~0","ARC~1~1~RHPOUT~M 5520.8047 -2770.26312 A 1.64432 1.64432 0 0 0 5521.28631 -2769.10041~~rep286~0","ARC~1~1~RHPOUT~M 5623.8362 -2819.0243 A 3.56048 3.56048 0 0 0 5626.35384 -2820.06714~~rep287~0","ARC~1~1~LHPOUT~M 5521.48311 -2788.76709 A 1.64432 1.64432 0 0 0 5521.0015 -2787.60438~~rep288~0","ARC~1~1~LHPOUT~M 5521.0015 -2787.60438 A 1.64432 1.64432 0 0 0 5520.51989 -2788.76709~~rep289~0","ARC~1~1~NETK2_1~M 5571.81909 -2816.06891 A 1.64432 1.64432 0 0 0 5572.3007 -2817.23162~~rep290~0","ARC~1~1~NETK2_1~M 5572.3007 -2817.23162 A 1.64432 1.64432 0 0 0 5572.78231 -2816.06891~~rep291~0","ARC~1~1~RHPOUT_SPK~M 5519.14145 -2756.81905 A 1.64467 1.64467 0 0 0 5517.89345 -2756.98335~~rep292~0","ARC~1~1~RHPOUT_SPK~M 5517.89392 -2756.98348 A 1.64397 1.64397 0 0 0 5518.89215 -2757.74945~~rep293~0","ARC~1~1~RHPOUT_SPK~M 5519.00039 -2756.92729 A 1.64432 1.64432 0 0 0 5517.83768 -2757.4089~~rep294~0","ARC~1~1~RHPOUT_SPK~M 5517.83768 -2757.4089 A 1.64432 1.64432 0 0 0 5519.00039 -2757.89051~~rep295~0","ARC~1~1~RHPOUT_SPK~M 5574.86901 -2802.05311 A 1.68188 1.68188 0 0 0 5576.05828 -2801.5605~~rep296~0","ARC~1~1~RHPOUT_SPK~M 5576.00516 -2801.5605 A 1.60676 1.60676 0 0 0 5574.86901 -2801.08989~~rep297~0","ARC~1.1811~1~+3V3~M 5671.56372 -2789.54368 A 1.30656 1.30656 0 0 0 5671.9464 -2790.46756~~rep298~0","ARC~1.1811~1~+3V3~M 5671.9464 -2790.63607 A 1.54487 1.54487 0 0 0 5672.39888 -2789.54368~~rep299~0","ARC~1~1~+3V3~M 5640.29291 -2807.4259 A 1.64432 1.64432 0 0 0 5639.13021 -2806.94428~~rep300~0","ARC~1~1~+3V3~M 5639.1302 -2806.94427 A 1.64432 1.64432 0 0 0 5639.6118 -2808.10697~~rep301~0","ARC~1~1~+3V3~M 5616.11019 -2815.26079 A 1.64432 1.64432 0 0 0 5614.94748 -2815.7424~~rep302~0","ARC~1~1~+3V3~M 5614.94748 -2815.7424 A 1.64432 1.64432 0 0 0 5616.11019 -2816.22401~~rep303~0","ARC~0.7874~1~SCL~M 5597.97 -2794.603 A 1.6519 1.6519 0 0 0 5599.78049 -2794.95679~~rep304~0","ARC~0.7874~1~SCL~M 5598.27622 -2795.32842 A 2.12727 2.12727 0 0 0 5600.60772 -2795.78402~~rep305~0","ARC~0.7874~1~SCL~M 5598.62878 -2795.03429 A 0.95363 0.95363 0 0 0 5599.42663 -2794.603~~rep306~0","ARC~0.7874~1~SCL~M 5599.42663 -2794.603 A 0.95363 0.95363 0 0 0 5598.62878 -2794.17171~~rep307~0","ARC~0.7874~1~SDA~M 5595.73158 -2798.30938 A 1.90095 1.90095 0 0 0 5597.07575 -2797.7526~~rep308~0","ARC~0.7874~1~SDA~M 5597.07575 -2797.7526 A 1.90095 1.90095 0 0 0 5595.73158 -2797.19582~~rep309~0","ARC~1.1811~1~+3V3~M 5672.36398 -2815.28782 A 1.42571 1.42571 0 0 0 5671.9464 -2814.27969~~rep310~0","ARC~1.1811~1~+3V3~M 5671.9464 -2814.27969 A 1.42571 1.42571 0 0 0 5671.52882 -2815.28782~~rep311~0","ARC~0.7874~1~SDA~M 5740.06123 -2796.01293 A 1.76711 1.76711 0 0 0 5738.81169 -2796.5305~~rep312~0","ARC~0.7874~1~SDA~M 5738.62241 -2796.5305 A 2.03479 2.03479 0 0 0 5740.06122 -2797.12648~~rep313~0","ARC~0.7874~1~H1_CPLD_TCK~M 5722.6354 -2702.521 A 1.90095 1.90095 0 0 0 5721.29123 -2701.96422~~rep314~0","ARC~0.7874~1~H1_CPLD_TCK~M 5721.29122 -2701.96423 A 1.90095 1.90095 0 0 0 5721.848 -2703.3084~~rep315~0","ARC~0.7874~1~H1_CPLD_TCK~M 5722.6354 -2704.0958 A 1.90095 1.90095 0 0 0 5723.97957 -2704.65258~~rep316~0","ARC~0.7874~1~H1_CPLD_TCK~M 5723.97958 -2704.65257 A 1.90095 1.90095 0 0 0 5723.4228 -2703.3084~~rep317~0","ARC~0.7874~1~H1_CPLD_TCK~M 5722.6354 -2703.3084 A 1.37637 1.37637 0 0 0 5723.68874 -2704.30056~~rep318~0","ARC~0.7874~1~H1_CPLD_TCK~M 5723.62756 -2704.36174 A 1.37637 1.37637 0 0 0 5722.6354 -2703.3084~~rep319~0","ARC~0.7874~1~H1_CPLD_TCK~M 5722.6354 -2703.3084 A 1.37619 1.37619 0 0 0 5721.58219 -2702.31637~~rep320~0","ARC~0.7874~1~H1_CPLD_TCK~M 5721.64337 -2702.25519 A 1.37619 1.37619 0 0 0 5722.6354 -2703.3084~~rep321~0","ARC~1~1~H1_CPLD_TCK~M 5762.91101 -2757.64161 A 1.36845 1.36845 0 0 0 5763.87865 -2757.2408~~rep322~0","ARC~1~1~H1_CPLD_TCK~M 5764.26879 -2757.2408 A 1.92019 1.92019 0 0 0 5762.91101 -2756.67839~~rep323~0","ARC~1~1~H1_CPLD_TCK~M 5805.36239 -2756.75919 A 1.64432 1.64432 0 0 0 5804.19968 -2757.2408~~rep324~0","ARC~1~1~H1_CPLD_TCK~M 5804.19968 -2757.2408 A 1.64432 1.64432 0 0 0 5805.36239 -2757.72241~~rep325~0","ARC~0.7874~1~H1_CPLD_TDI~M 5718.9283 -2706.9201 A 1.90095 1.90095 0 0 0 5720.27247 -2707.47688~~rep326~0","ARC~0.7874~1~H1_CPLD_TDI~M 5720.27248 -2707.47687 A 1.90095 1.90095 0 0 0 5719.7157 -2706.1327~~rep327~0","ARC~0.7874~1~H1_CPLD_TDI~M 5718.9283 -2706.1327 A 1.37619 1.37619 0 0 0 5719.98151 -2707.12473~~rep328~0","ARC~0.7874~1~H1_CPLD_TDI~M 5719.92046 -2707.18604 A 1.37637 1.37637 0 0 0 5718.9283 -2706.1327~~rep329~0","ARC~0.7874~1~H1_CPLD_TDI~M 5718.92829 -2705.3453 A 1.90095 1.90095 0 0 0 5717.58411 -2704.78854~~rep330~0","ARC~0.7874~1~H1_CPLD_TDI~M 5717.58411 -2704.78854 A 1.90095 1.90095 0 0 0 5718.1409 -2706.13271~~rep331~0","ARC~0.7874~1~H1_CPLD_TDI~M 5718.9283 -2706.1327 A 1.37637 1.37637 0 0 0 5717.87496 -2705.14054~~rep332~0","ARC~0.7874~1~H1_CPLD_TDI~M 5717.93627 -2705.07949 A 1.37619 1.37619 0 0 0 5718.9283 -2706.1327~~rep333~0","ARC~0.7874~1~H1_CPLD_TDI~M 5753.64432 -2755.07898 A 1.90095 1.90095 0 0 0 5754.2011 -2756.42315~~rep334~0","ARC~0.7874~1~H1_CPLD_TDI~M 5754.2011 -2756.42315 A 1.90095 1.90095 0 0 0 5754.75788 -2755.07898~~rep335~0","ARC~1~1~H1_CPLD_TDI~M 5753.71949 -2755.00381 A 1.64432 1.64432 0 0 0 5754.2011 -2756.16652~~rep336~0","ARC~1~1~H1_CPLD_TDI~M 5754.2011 -2756.16652 A 1.64432 1.64432 0 0 0 5754.68271 -2755.00381~~rep337~0","ARC~0.7874~1~PP_CPLD_TMS~M 5756.84448 -2762.75618 A 1.90095 1.90095 0 0 0 5758.18865 -2762.1994~~rep338~0","ARC~0.7874~1~PP_CPLD_TMS~M 5758.18865 -2762.1994 A 1.90095 1.90095 0 0 0 5756.84448 -2761.64262~~rep339~0","ARC~0.7874~1~PP_CPLD_TMS~M 5782.30572 -2761.64262 A 1.90095 1.90095 0 0 0 5780.96155 -2762.1994~~rep340~0","ARC~0.7874~1~PP_CPLD_TMS~M 5780.96155 -2762.1994 A 1.90095 1.90095 0 0 0 5782.30572 -2762.75618~~rep341~0","ARC~0.7874~1~SDA~M 5824.31308 -2598.23068 A 1.90095 1.90095 0 0 0 5825.65725 -2597.6739~~rep342~0","ARC~0.7874~1~SDA~M 5825.65725 -2597.6739 A 1.90095 1.90095 0 0 0 5824.31308 -2597.11712~~rep343~0","ARC~1.1811~1~SDA~M 5824.17388 -2598.09148 A 1.42571 1.42571 0 0 0 5825.18201 -2597.6739~~rep344~0","ARC~1.1811~1~SDA~M 5825.18201 -2597.6739 A 1.42571 1.42571 0 0 0 5824.17388 -2597.25632~~rep345~0","ARC~0.7874~1~SDA~M 5824.31308 -2597.11712 A 1.90095 1.90095 0 0 0 5823.7563 -2595.77295~~rep346~0","ARC~0.7874~1~SDA~M 5823.7563 -2595.77295 A 1.90095 1.90095 0 0 0 5823.19952 -2597.11712~~rep347~0","ARC~1~1~VIN~M 5485.84172 -2736.2941 A 3.12268 3.12268 0 0 0 5488.04979 -2737.20871~~rep348~0","ARC~1~1~VIN~M 5489.01301 -2737.20871 A 3.12268 3.12268 0 0 0 5491.22108 -2736.2941~~rep349~0","ARC~1~1~VIN~M 5487.96065 -2736.35542 A 0.73384 0.73384 0 0 0 5486.97879 -2736.59049~~rep350~0","ARC~1~1~VIN~M 5490.08401 -2736.59049 A 0.73384 0.73384 0 0 0 5489.10215 -2736.35542~~rep351~0","ARC~1~1~VIN~M 5483.11951 -2736.2941 A 4.91819 4.91819 0 0 0 5486.5972 -2737.7346~~rep352~0","ARC~1~1~VIN~M 5480.7053 -2736.2941 A 7.3324 7.3324 0 0 0 5485.89009 -2738.44171~~rep353~0","ARC~1~1~VIN~M 5486.19542 -2737.30221 A 3.8905 3.8905 0 0 0 5483.24324 -2736.91356~~rep354~0","ARC~1~1~VIN~M 5484.45775 -2736.49945 A 2.69583 2.69583 0 0 0 5485.7138 -2738.13638~~rep355~0","ARC~1~1~VIN~M 5495.49069 -2749.17721 A 1.64432 1.64432 0 0 0 5495.9723 -2750.33992~~rep356~0","ARC~1~1~VIN~M 5495.9723 -2750.33992 A 1.64432 1.64432 0 0 0 5496.45391 -2749.17721~~rep357~0","ARC~1~1~VIN~M 5495.49069 -2749.17721 A 1.64432 1.64432 0 0 0 5495.9723 -2750.33992~~rep358~0","ARC~1~1~VIN~M 5495.9723 -2750.33992 A 1.64432 1.64432 0 0 0 5496.45391 -2749.17721~~rep359~0","ARC~1.9685~1~VIN~M 5526.06836 -2714.3256 A 6.94646 6.94646 0 0 0 5521.15647 -2712.29103~~rep360~0","ARC~1.9685~1~VIN~M 5520.96377 -2713.83286 A 2.79947 2.79947 0 0 0 5523.79494 -2713.81428~~rep361~0","ARC~1~1~LHPOUT~M 5652.64739 -2820.57809 A 1.5098 1.5098 0 0 0 5651.5798 -2821.0203~~rep362~0","ARC~1~1~LHPOUT~M 5651.38956 -2821.0203 A 1.77884 1.77884 0 0 0 5652.64739 -2821.54131~~rep363~0","ARC~1.9685~1~+3V3~M 5789.50546 -2796.76834 A 5.10787 5.10787 0 0 0 5788.0094 -2793.15653~~rep364~0","ARC~1.9685~1~+3V3~M 5788.0094 -2793.15653 A 5.10787 5.10787 0 0 0 5786.51334 -2796.76834~~rep365~0","ARC~1~1~H1_CPLD_TDI~M 5758.0094 -2806.66401 A 3.86368 3.86368 0 0 0 5755.27737 -2805.53236~~rep366~0","ARC~1~1~H1_CPLD_TDI~M 5758.0094 -2805.66401 A 6.2779 6.2779 0 0 0 5753.57025 -2803.82526~~rep367~0","ARC~1~1~H1_CPLD_TDI~M 5755.27736 -2805.53237 A 3.86368 3.86368 0 0 0 5756.40901 -2808.2644~~rep368~0","ARC~1~1~H1_CPLD_TDI~M 5753.57026 -2803.82525 A 6.2779 6.2779 0 0 0 5755.40901 -2808.2644~~rep369~0","ARC~0.7874~1~SW_U~M 5612.11931 -2653.04845 A 6.17809 6.17809 0 0 0 5616.48789 -2654.85795~~rep370~0","ARC~0.7874~1~SW_U~M 5612.11931 -2653.83585 A 8.07904 8.07904 0 0 0 5617.83207 -2656.20212~~rep371~0","ARC~0.7874~1~SW_U~M 5612.11931 -2654.62325 A 9.98 9.98 0 0 0 5619.17625 -2657.54629~~rep372~0","ARC~0.7874~1~SW_U~M 5616.48789 -2654.85795 A 6.17809 6.17809 0 0 0 5614.67835 -2650.48939~~rep373~0","ARC~0.7874~1~SW_U~M 5617.83207 -2656.20212 A 8.07904 8.07904 0 0 0 5615.46575 -2650.48939~~rep374~0","ARC~0.7874~1~SW_U~M 5619.17626 -2657.5463 A 9.98 9.98 0 0 0 5616.25315 -2650.48939~~rep375~0","ARC~0.7874~1~SW_SEL~M 5550.06652 -2678.35602 A 6.17775 6.17775 0 0 0 5554.43485 -2676.5466~~rep376~0","ARC~0.7874~1~SW_SEL~M 5550.6233 -2678.9128 A 8.0787 8.0787 0 0 0 5556.3358 -2676.5466~~rep377~0","ARC~0.7874~1~SW_SEL~M 5551.18007 -2679.46957 A 9.97966 9.97966 0 0 0 5558.23676 -2676.5466~~rep378~0","ARC~0.7874~1~SW_SEL~M 5554.43533 -2676.5466 A 6.17843 6.17843 0 0 0 5550.06652 -2674.73698~~rep379~0","ARC~0.7874~1~SW_SEL~M 5556.33629 -2676.5466 A 8.07939 8.07939 0 0 0 5550.6233 -2674.1802~~rep380~0","ARC~0.7874~1~SW_SEL~M 5558.23724 -2676.5466 A 9.98034 9.98034 0 0 0 5551.18007 -2673.62343~~rep381~0","ARC~0.7874~1~SW_L~M 5538.7378 -2619.87375 A 4.12053 4.12053 0 0 0 5542.14726 -2621.05072~~rep382~0","ARC~0.7874~1~SW_L~M 5538.83254 -2620.65544 A 5.38839 5.38839 0 0 0 5543.29107 -2622.19454~~rep383~0","ARC~0.7874~1~SW_L~M 5538.92729 -2621.43712 A 6.65625 6.65625 0 0 0 5544.43488 -2623.33837~~rep384~0","ARC~0.7874~1~SW_L~M 5542.14726 -2621.05072 A 4.12053 4.12053 0 0 0 5540.97035 -2617.64124~~rep385~0","ARC~0.7874~1~SW_L~M 5543.29107 -2622.19455 A 5.38839 5.38839 0 0 0 5541.75204 -2617.73599~~rep386~0","ARC~0.7874~1~SW_L~M 5544.43487 -2623.33837 A 6.65625 6.65625 0 0 0 5542.53371 -2617.83075~~rep387~0","ARC~0.7874~1~SW_ROT_B~M 5580.43295 -2708.25863 A 4.01322 4.01322 0 0 0 5583.61109 -2706.696~~rep388~0","ARC~0.7874~1~SW_ROT_B~M 5581.05651 -2708.73944 A 5.24805 5.24805 0 0 0 5585.21253 -2706.696~~rep389~0","ARC~0.7874~1~SW_ROT_B~M 5581.68006 -2709.22025 A 6.48289 6.48289 0 0 0 5586.81397 -2706.696~~rep390~0","ARC~0.7874~1~SW_ROT_B~M 5583.61109 -2706.696 A 4.01322 4.01322 0 0 0 5580.43295 -2705.13337~~rep391~0","ARC~0.7874~1~SW_ROT_B~M 5585.21253 -2706.696 A 5.24805 5.24805 0 0 0 5581.05651 -2704.65256~~rep392~0","ARC~0.7874~1~SW_ROT_B~M 5586.81397 -2706.696 A 6.48289 6.48289 0 0 0 5581.68006 -2704.17175~~rep393~0","ARC~0.7874~1~SW_R~M 5568.63503 -2746.31073 A 6.17813 6.17813 0 0 0 5573.00363 -2744.5012~~rep394~0","ARC~0.7874~1~SW_R~M 5569.19181 -2746.86751 A 8.07908 8.07908 0 0 0 5574.90458 -2744.5012~~rep395~0","ARC~0.7874~1~SW_R~M 5569.74858 -2747.42428 A 9.98003 9.98003 0 0 0 5576.80553 -2744.5012~~rep396~0","ARC~0.7874~1~SW_R~M 5573.00358 -2744.5012 A 6.17806 6.17806 0 0 0 5568.63503 -2742.69169~~rep397~0","ARC~0.7874~1~SW_R~M 5574.90453 -2744.5012 A 8.07901 8.07901 0 0 0 5569.19181 -2742.13491~~rep398~0","ARC~0.7874~1~SW_R~M 5576.80548 -2744.5012 A 9.97996 9.97996 0 0 0 5569.74858 -2741.57814~~rep399~0","ARC~0.7874~1~SW_ROT_A~M 5529.38222 -2707.78172 A 6.17809 6.17809 0 0 0 5533.75079 -2705.9722~~rep400~0","ARC~0.7874~1~SW_ROT_A~M 5529.939 -2708.3385 A 8.07904 8.07904 0 0 0 5535.65174 -2705.9722~~rep401~0","ARC~0.7874~1~SW_ROT_A~M 5530.49577 -2708.89527 A 9.98 9.98 0 0 0 5537.5527 -2705.9722~~rep402~0","ARC~0.7874~1~SW_ROT_A~M 5533.75079 -2705.9722 A 6.17809 6.17809 0 0 0 5529.38222 -2704.16268~~rep403~0","ARC~0.7874~1~SW_ROT_A~M 5535.65174 -2705.9722 A 8.07904 8.07904 0 0 0 5529.939 -2703.6059~~rep404~0","ARC~0.7874~1~SW_ROT_A~M 5537.5527 -2705.9722 A 9.98 9.98 0 0 0 5530.49577 -2703.04913~~rep405~0","ARC~1.1811~1~NETK2_3~M 5678.52994 -2547.40144 A 3.32667 3.32667 0 0 0 5676.17763 -2548.3758~~rep406~0","ARC~1.1811~1~NETK2_3~M 5677.69478 -2546.56628 A 6.17809 6.17809 0 0 0 5673.32621 -2548.3758~~rep407~0","ARC~1.1811~1~NETK2_3~M 5676.17763 -2548.3758 A 3.32667 3.32667 0 0 0 5678.52994 -2549.35016~~rep408~0","ARC~1.1811~1~NETK2_3~M 5673.32621 -2548.3758 A 6.17809 6.17809 0 0 0 5677.69478 -2550.18532~~rep409~0","ARC~1~1~NETM1_2~M 5700.67074 -2549.54224 A 3.98249 3.98249 0 0 0 5703.48679 -2548.3758~~rep410~0","ARC~1~1~NETM1_2~M 5701.37785 -2550.24935 A 6.3967 6.3967 0 0 0 5705.901 -2548.3758~~rep411~0","ARC~1~1~NETM1_2~M 5703.48679 -2548.3758 A 3.98249 3.98249 0 0 0 5700.67074 -2547.20936~~rep412~0","ARC~1~1~NETM1_2~M 5705.901 -2548.3758 A 6.3967 6.3967 0 0 0 5701.37785 -2546.50225~~rep413~0","ARC~1.1811~1~NETK2_1~M 5687.9295 -2548.3758 A 3.8019 3.8019 0 0 0 5686.81595 -2551.06415~~rep414~0","ARC~1.1811~1~NETK2_1~M 5686.7484 -2548.3758 A 6.65333 6.65333 0 0 0 5684.79968 -2553.08041~~rep415~0","ARC~1.1811~1~NETK2_1~M 5686.81595 -2551.06415 A 3.8019 3.8019 0 0 0 5689.5043 -2549.9506~~rep416~0","ARC~1.1811~1~NETK2_1~M 5684.79969 -2553.08042 A 6.65333 6.65333 0 0 0 5689.5043 -2551.1317~~rep417~0","ARC~1.1811~1~NETM1_2~M 5546.61457 -2596.33858 A 2.41433 2.41433 0 0 0 5548.71873 -2595.1081~~rep418~0","ARC~1.1811~1~NETM1_2~M 5548.71873 -2595.1081 A 2.41433 2.41433 0 0 0 5546.61457 -2593.87762~~rep419~0","ARC~1~1~U6-9~M 5472.4741 -2730.52831 A 3.32921 3.32921 0 0 0 5473.4492 -2728.1742~~rep420~0","ARC~1~1~LED1-1~M 5473.4492 -2722.1242 A 2.11956 2.11956 0 0 0 5474.94796 -2721.5034~~rep421~0","ARC~1~1~LED1-1~M 5474.94796 -2721.5034 A 2.11956 2.11956 0 0 0 5473.4492 -2720.8826~~rep422~0","ARC~1~1~U6-7~M 5473.4492 -2737.6278 A 3.18411 3.18411 0 0 0 5472.5166 -2735.37629~~rep423~0","ARC~1~1~U6-7~M 5472.5166 -2736.88179 A 1.05501 1.05501 0 0 0 5472.20759 -2737.62779~~rep424~0","ARC~1~1~U6-7~M 5473.3001 -2737.50814 A 1.06012 1.06012 0 0 0 5472.84569 -2736.33965~~rep425~0","ARC~1~1~LED2-1~M 5472.82837 -2745.17655 A 1.36679 1.36679 0 0 0 5473.79482 -2745.5769~~rep426~0","ARC~1~1~LED2-1~M 5474.23633 -2746.01843 A 1.89783 1.89783 0 0 0 5473.69818 -2744.41813~~rep427~0","ARC~1~1~LED2-1~M 5472.78259 -2744.18547 A 1.64559 1.64559 0 0 0 5474.37655 -2744.3861~~rep428~0","ARC~1~1~LED2-1~M 5473.15791 -2745.11237 A 2.74401 2.74401 0 0 0 5475.81582 -2745.44692~~rep429~0","ARC~1~1~LED2-1~M 5472.9598 -2745.16666 A 1.71729 1.71729 0 0 0 5474.23571 -2745.48223~~rep430~0","ARC~1~1~LED2-1~M 5474.58388 -2745.73884 A 2.20191 2.20191 0 0 0 5473.70123 -2744.20389~~rep431~0","ARC~1~1~LED2-1~M 5474.07083 -2746.0185 A 2.71197 2.71197 0 0 0 5471.95158 -2744.99873~~rep432~0","ARC~1~1~LED2-1~M 5476.14901 -2746.0185 A 4.37137 4.37137 0 0 0 5472.73303 -2744.37476~~rep433~0","ARC~1~1~LED2-1~M 5478.22718 -2746.0185 A 6.03077 6.03077 0 0 0 5473.51447 -2743.75078~~rep434~0","ARC~0.7874~1~U6-15~M 5500.75162 -2722.48798 A 1.42571 1.42571 0 0 0 5501.1692 -2723.49611~~rep435~0","ARC~0.7874~1~U6-15~M 5501.1692 -2723.49611 A 1.42571 1.42571 0 0 0 5501.58678 -2722.48798~~rep436~0","ARC~0.7874~1~VBUS~M 5479.81989 -2708.07002 A 2.29857 2.29857 0 0 0 5476.64887 -2707.99415~~rep437~0","ARC~0.7874~1~VBUS~M 5479.29039 -2707.48724 A 2.33815 2.33815 0 0 0 5476.06476 -2707.41007~~rep438~0","ARC~0.7874~1~VBUS~M 5478.76088 -2706.90447 A 2.37772 2.37772 0 0 0 5475.48066 -2706.82599~~rep439~0","ARC~0.7874~1~VBUS~M 5478.23137 -2706.32169 A 2.4173 2.4173 0 0 0 5474.89655 -2706.24191~~rep440~0","ARC~0.7874~1~VBUS~M 5477.70187 -2705.73892 A 2.45687 2.45687 0 0 0 5474.31246 -2705.65783~~rep441~0","ARC~0.7874~1~VBUS~M 5477.17237 -2705.15615 A 2.49645 2.49645 0 0 0 5473.72836 -2705.07376~~rep442~0","ARC~1~1~LED2-1~M 5477.98527 -2745.40228 A 1.81812 1.81812 0 0 0 5476.60565 -2745.58391~~rep443~0","ARC~1~1~LED2-1~M 5477.88498 -2745.67608 A 1.16908 1.16908 0 0 0 5477.05832 -2746.0185~~rep444~0","ARC~1~1~LED2-1~M 5477.05832 -2746.0185 A 1.16908 1.16908 0 0 0 5477.88498 -2746.36092~~rep445~0","ARC~1~1~LED2-1~M 5477.88498 -2745.67608 A 1.16908 1.16908 0 0 0 5477.05832 -2746.0185~~rep446~0","ARC~1~1~LED2-1~M 5477.05832 -2746.0185 A 1.16908 1.16908 0 0 0 5477.88498 -2746.36092~~rep447~0","ARC~1~1~VIN~M 5482.07216 -2745.40381 A 1.33858 1.33858 0 0 0 5481.45361 -2744.58711~~rep448~0","ARC~1~1~VIN~M 5481.51419 -2744.81903 A 0.99959 0.99959 0 0 0 5481.40956 -2745.57689~~rep449~0","ARC~1~1~VIN~M 5482.07216 -2745.40381 A 1.3386 1.3386 0 0 0 5481.4536 -2744.58709~~rep450~0","ARC~1~1~VIN~M 5481.51419 -2744.81904 A 0.99957 0.99957 0 0 0 5481.40956 -2745.57689~~rep451~0","ARC~1~1~VIN~M 5482.16982 -2745.47923 A 1.16908 1.16908 0 0 0 5481.8274 -2744.65257~~rep452~0","ARC~1~1~VIN~M 5481.8274 -2744.65257 A 1.16908 1.16908 0 0 0 5481.48498 -2745.47923~~rep453~0","ARC~1~1~U6-4~M 5511.32582 -2745.71543 A 1.16908 1.16908 0 0 0 5510.9834 -2744.88877~~rep454~0","ARC~1~1~U6-4~M 5510.9834 -2744.88877 A 1.16908 1.16908 0 0 0 5510.64098 -2745.71543~~rep455~0","ARC~0.7874~1~U6-16~M 5520.29022 -2725.24662 A 1.42537 1.42537 0 0 0 5519.28233 -2725.6641~~rep456~0","ARC~0.7874~1~U6-16~M 5519.28184 -2725.6641 A 1.42606 1.42606 0 0 0 5520.29022 -2726.08178~~rep457~0","ARC~1~1~U6-16~M 5520.36538 -2725.32178 A 1.16874 1.16874 0 0 0 5519.53896 -2725.6641~~rep458~0","ARC~1~1~U6-16~M 5519.53848 -2725.6641 A 1.16942 1.16942 0 0 0 5520.36538 -2726.00662~~rep459~0","ARC~1~1~U6-12~M 5480.84889 -2717.3813 A 1.97241 1.97241 0 0 0 5482.24359 -2717.95901~~rep460~0","ARC~0.7874~1~U6-14~M 5495.75162 -2722.44868 A 1.42571 1.42571 0 0 0 5496.1692 -2723.45681~~rep461~0","ARC~0.7874~1~U6-14~M 5496.1692 -2723.45681 A 1.42571 1.42571 0 0 0 5496.58678 -2722.44868~~rep462~0","ARC~0.7874~1~U6-1~M 5520.60512 -2730.67962 A 1.42571 1.42571 0 0 0 5519.59699 -2731.0972~~rep463~0","ARC~0.7874~1~U6-1~M 5519.59699 -2731.0972 A 1.42571 1.42571 0 0 0 5520.60512 -2731.51478~~rep464~0","ARC~1.9685~1~VBAT~M 5812.06321 -2583.26815 A 7.23623 7.23623 0 0 0 5808.2051 -2576.86883~~rep465~0","ARC~1.9685~1~VBAT~M 5812.98217 -2581.52732 A 8.95983 8.95983 0 0 0 5808.2051 -2573.60374~~rep466~0","ARC~1.9685~1~VBAT~M 5813.90114 -2579.78649 A 10.68343 10.68343 0 0 0 5808.2051 -2570.33865~~rep467~0","ARC~1.9685~1~VBAT~M 5814.8201 -2578.04565 A 12.40703 12.40703 0 0 0 5808.2051 -2567.07356~~rep468~0","ARC~1~1~NETM1_2~M 5711.98782 -2547.55232 A 2.81153 2.81153 0 0 0 5709.99977 -2548.3758~~rep469~0","ARC~1~1~NETM1_2~M 5711.28071 -2546.84521 A 5.22575 5.22575 0 0 0 5707.58555 -2548.3758~~rep470~0","ARC~1~1~NETM1_2~M 5710.57361 -2546.13811 A 7.63996 7.63996 0 0 0 5705.17134 -2548.3758~~rep471~0","ARC~1~1~NETK2_1~M 5717.4964 -2549.01689 A 1.98145 1.98145 0 0 0 5718.53162 -2547.27597~~rep472~0","ARC~1~1~NETK2_1~M 5717.4964 -2550.69858 A 2.89548 2.89548 0 0 0 5719.00917 -2548.15459~~rep473~0","ARC~1.1811~1~NETK2_1~M 5669.1221 -2552.8689 A 1.63324 1.63324 0 0 0 5671.04119 -2552.65947~~rep474~0","ARC~1.1811~1~NETK2_1~M 5669.91937 -2553.74032 A 2.1429 2.1429 0 0 0 5672.43733 -2553.46554~~rep475~0","ARC~1.1811~1~NETK2_1~M 5671.91752 -2554.0268 A 3.95332 3.95332 0 0 0 5669.1221 -2552.8689~~rep476~0","ARC~1.1811~1~NETK2_1~M 5674.76895 -2554.0268 A 6.80475 6.80475 0 0 0 5669.95727 -2552.03373~~rep477~0","ARC~1.1811~1~NETK2_1~M 5669.7124 -2553.89191 A 1.18224 1.18224 0 0 0 5670.89439 -2553.89205~~rep478~0","ARC~1.1811~1~NETK2_1~M 5670.8944 -2553.89205 A 1.18239 1.18239 0 0 0 5670.3032 -2552.86848~~rep479~0","ARC~1.1811~1~NETK2_3~M 5662.63446 -2552.03374 A 2.85143 2.85143 0 0 0 5661.7993 -2550.01747~~rep480~0","ARC~1.1811~1~NETK2_3~M 5661.7993 -2550.01747 A 2.85143 2.85143 0 0 0 5660.96414 -2552.03374~~rep481~0","ARC~1~1~+3V3~M 5770.57923 -2623.41608 A 1.16908 1.16908 0 0 0 5769.75257 -2623.7585~~rep482~0","ARC~1~1~+3V3~M 5769.75257 -2623.7585 A 1.16908 1.16908 0 0 0 5770.57923 -2624.10092~~rep483~0","ARC~1~1~+3V3~M 5770.77608 -2624.10092 A 1.12333 1.12333 0 0 0 5771.1051 -2624.89523~~rep484~0","ARC~1~1~+3V3~M 5771.1051 -2624.95993 A 1.21483 1.21483 0 0 0 5771.46092 -2624.10092~~rep485~0","ARC~1~1~H1_CPLD_TDI~M 5675.63321 -2696.84241 A 3.64531 3.64531 0 0 0 5673.05559 -2697.9101~~rep486~0","ARC~1~1~H1_CPLD_TDI~M 5673.19706 -2697.9101 A 3.44524 3.44524 0 0 0 5675.63321 -2698.91919~~rep487~0","ARC~0.7874~1~H1_CPLD_TCK~M 5675.55805 -2686.77225 A 3.8019 3.8019 0 0 0 5672.8697 -2687.8858~~rep488~0","ARC~0.7874~1~H1_CPLD_TCK~M 5672.8697 -2687.8858 A 3.8019 3.8019 0 0 0 5675.55805 -2688.99935~~rep489~0","ARC~0.7874~1~SD_CLK~M 5675.55805 -2656.78725 A 3.8019 3.8019 0 0 0 5672.8697 -2657.9008~~rep490~0","ARC~0.7874~1~SD_CLK~M 5672.8697 -2657.9008 A 3.8019 3.8019 0 0 0 5675.55805 -2659.01435~~rep491~0","ARC~0.7874~1~PP_CPLD_TDO~M 5707.5404 -2649.98106 A 1.97379 1.97379 0 0 0 5707.083 -2647.9058~~rep492~0","ARC~0.7874~1~PP_CPLD_TDO~M 5708.41202 -2650.8527 A 2.54496 2.54496 0 0 0 5707.82225 -2648.17691~~rep493~0","ARC~0.7874~1~PP_CPLD_TDO~M 5709.28364 -2651.72434 A 3.11612 3.11612 0 0 0 5708.56151 -2648.44803~~rep494~0","ARC~0.7874~1~PP_CPLD_TDO~M 5707.62286 -2647.3326 A 2.70672 2.70672 0 0 0 5708.46293 -2649.54544~~rep495~0","ARC~0.7874~1~SD_CMD~M 5675.5581 -2646.79225 A 3.8019 3.8019 0 0 0 5672.86975 -2647.9058~~rep496~0","ARC~0.7874~1~SD_CMD~M 5672.86975 -2647.9058 A 3.8019 3.8019 0 0 0 5675.5581 -2649.01935~~rep497~0","ARC~0.7874~1~PP_CPLD_TMS~M 5707.53308 -2639.93438 A 1.93121 1.93121 0 0 0 5707.083 -2637.9108~~rep498~0","ARC~0.7874~1~PP_CPLD_TMS~M 5708.40837 -2640.80968 A 2.51051 2.51051 0 0 0 5707.82328 -2638.17909~~rep499~0","ARC~0.7874~1~PP_CPLD_TMS~M 5709.28367 -2641.68498 A 3.08981 3.08981 0 0 0 5708.56357 -2638.44738~~rep500~0","ARC~0.7874~1~PP_CPLD_TMS~M 5707.64666 -2637.361 A 2.90419 2.90419 0 0 0 5708.46117 -2639.63799~~rep501~0","ARC~0.7874~1~SD_DAT0~M 5675.55805 -2636.79725 A 3.8019 3.8019 0 0 0 5672.8697 -2637.9108~~rep502~0","ARC~0.7874~1~SD_DAT0~M 5672.8697 -2637.9108 A 3.8019 3.8019 0 0 0 5675.55805 -2639.02435~~rep503~0","ARC~0.7874~1~SD_DAT1~M 5708.19655 -2629.02935 A 3.8019 3.8019 0 0 0 5710.8849 -2627.9158~~rep504~0","ARC~0.7874~1~SD_DAT1~M 5710.8849 -2627.9158 A 3.8019 3.8019 0 0 0 5708.19655 -2626.80225~~rep505~0","ARC~0.7874~1~SD_DAT2~M 5675.55805 -2626.80225 A 3.8019 3.8019 0 0 0 5672.8697 -2627.9158~~rep506~0","ARC~0.7874~1~SD_DAT2~M 5672.8697 -2627.9158 A 3.8019 3.8019 0 0 0 5675.55805 -2629.02935~~rep507~0","ARC~0.7874~1~SD_DAT3~M 5708.19655 -2619.03435 A 3.8019 3.8019 0 0 0 5710.8849 -2617.9208~~rep508~0","ARC~0.7874~1~SD_DAT3~M 5710.8849 -2617.9208 A 3.8019 3.8019 0 0 0 5708.19655 -2616.80725~~rep509~0","ARC~0.7874~1~SD_CD~M 5675.55805 -2616.80725 A 3.8019 3.8019 0 0 0 5672.8697 -2617.9208~~rep510~0","ARC~0.7874~1~SD_CD~M 5672.8697 -2617.9208 A 3.8019 3.8019 0 0 0 5675.55805 -2619.03435~~rep511~0","ARC~1.9685~1~+3V3~M 5681.69827 -2607.22983 A 2.37619 2.37619 0 0 0 5681.0023 -2605.54961~~rep512~0","ARC~1.9685~1~+3V3~M 5681.0023 -2605.54961 A 2.37619 2.37619 0 0 0 5680.30633 -2607.22983~~rep513~0","ARC~1.9685~1~+3V3~M 5681.69827 -2607.22983 A 2.37619 2.37619 0 0 0 5681.0023 -2605.54961~~rep514~0","ARC~1.9685~1~+3V3~M 5681.0023 -2605.54961 A 2.37619 2.37619 0 0 0 5680.30633 -2607.22983~~rep515~0","ARC~1~1~CLKIN~M 5514.03204 -2560.3554 A 4.59066 4.59066 0 0 0 5517.27813 -2561.69997~~rep516~0","ARC~1~1~CLKIN~M 5511.61783 -2560.3554 A 7.00487 7.00487 0 0 0 5516.57102 -2562.40708~~rep517~0","ARC~1~1~CLKIN~M 5509.20361 -2560.3554 A 9.41909 9.41909 0 0 0 5515.86391 -2563.11419~~rep518~0","ARC~0.7874~1~RESET#~M 5526.8973 -2588.1565 A 1.71014 1.71014 0 0 0 5529.12198 -2588.32329~~rep519~0","ARC~0.7874~1~RESET#~M 5527.36483 -2588.79007 A 1.84812 1.84812 0 0 0 5529.76901 -2588.97031~~rep520~0","ARC~0.7874~1~RESET#~M 5527.83237 -2589.42363 A 1.9861 1.9861 0 0 0 5530.41604 -2589.61734~~rep521~0","ARC~0.7874~1~MCU_LCD_RD~M 5536.45048 -2587.50474 A 2.06063 2.06063 0 0 0 5539.06382 -2587.75331~~rep522~0","ARC~0.7874~1~MCU_LCD_RD~M 5536.8923 -2588.1565 A 2.24357 2.24357 0 0 0 5539.73764 -2588.42715~~rep523~0","ARC~0.7874~1~MCU_LCD_RD~M 5537.33412 -2588.80826 A 2.4265 2.4265 0 0 0 5540.41146 -2589.10097~~rep524~0","ARC~0.7874~1~MCU_LCD_RD~M 5537.77594 -2589.46002 A 2.60944 2.60944 0 0 0 5541.08529 -2589.7748~~rep525~0","ARC~0.7874~1~MCU_LCD_TE~M 5538.96161 -2557.13489 A 2.2556 2.2556 0 0 0 5536.8923 -2557.7451~~rep526~0","ARC~0.7874~1~MCU_LCD_TE~M 5539.98408 -2556.11242 A 3.18963 3.18963 0 0 0 5537.05789 -2556.97531~~rep527~0","ARC~0.7874~1~MCU_LCD_TE~M 5541.00655 -2555.08995 A 4.12365 4.12365 0 0 0 5537.22348 -2556.20552~~rep528~0","ARC~0.7874~1~MCU_LCD_TE~M 5537.62258 -2558.03954 A 2.68954 2.68954 0 0 0 5539.56989 -2556.41196~~rep529~0","ARC~0.7874~1~MCU_LCD_TE~M 5538.66219 -2556.60056 A 1.20512 1.20512 0 0 0 5537.75605 -2556.42832~~rep530~0","ARC~1.9685~1~+3V3~M 5566.18133 -2588.85247 A 2.37619 2.37619 0 0 0 5566.8773 -2590.53269~~rep531~0","ARC~1.9685~1~+3V3~M 5566.8773 -2590.53269 A 2.37619 2.37619 0 0 0 5567.57327 -2588.85247~~rep532~0","ARC~1~1~I2S0_TX_SDA~M 5575.83391 -2589.19489 A 3.54527 3.54527 0 0 0 5576.8723 -2591.70177~~rep533~0","ARC~1~1~I2S0_TX_SDA~M 5576.8723 -2591.70177 A 3.54527 3.54527 0 0 0 5577.91069 -2589.19489~~rep534~0","ARC~1~1~I2S0_MCLK~M 5595.82391 -2589.19489 A 3.54527 3.54527 0 0 0 5596.8623 -2591.70177~~rep535~0","ARC~1~1~I2S0_MCLK~M 5596.8623 -2591.70177 A 3.54527 3.54527 0 0 0 5597.90069 -2589.19489~~rep536~0","ARC~1~1~I2S0_WS~M 5585.82891 -2589.19489 A 3.13932 3.13932 0 0 0 5586.7484 -2591.41472~~rep537~0","ARC~1~1~I2S0_WS~M 5586.7484 -2591.98882 A 3.95122 3.95122 0 0 0 5587.90569 -2589.19489~~rep538~0","ARC~0.7874~1~MCU_ADDR~M 5605.74375 -2589.27005 A 3.8019 3.8019 0 0 0 5606.8573 -2591.9584~~rep539~0","ARC~0.7874~1~MCU_ADDR~M 5606.8573 -2591.9584 A 3.8019 3.8019 0 0 0 5607.97085 -2589.27005~~rep540~0","ARC~0.7874~1~MCU_LCD_WR~M 5616.29553 -2588.71327 A 2.10546 2.10546 0 0 0 5616.9122 -2590.20206~~rep541~0","ARC~0.7874~1~MCU_LCD_WR~M 5615.73875 -2589.27005 A 4.00641 4.00641 0 0 0 5616.9122 -2592.10301~~rep542~0","ARC~0.7874~1~MCU_LCD_WR~M 5616.9122 -2591.81379 A 3.59739 3.59739 0 0 0 5617.96585 -2589.27005~~rep543~0","ARC~1~1~I2S0_SCK~M 5586.10912 -2567.66414 A 1.56744 1.56744 0 0 0 5586.8673 -2569.00651~~rep544~0","ARC~1~1~I2S0_SCK~M 5586.8673 -2569.00651 A 1.56744 1.56744 0 0 0 5587.62548 -2567.66414~~rep545~0","ARC~0.7874~1~MCU_IO_STBX~M 5609.58924 -2556.54663 A 2.21186 2.21186 0 0 0 5607.16392 -2557.01986~~rep546~0","ARC~0.7874~1~MCU_IO_STBX~M 5610.416 -2555.7199 A 2.68622 2.68622 0 0 0 5607.47054 -2556.29461~~rep547~0","ARC~0.7874~1~MCU_DIR~M 5618.97142 -2557.20383 A 2.14382 2.14382 0 0 0 5616.8523 -2557.7451~~rep548~0","ARC~0.7874~1~MCU_DIR~M 5619.91024 -2556.26504 A 2.86943 2.86943 0 0 0 5617.07386 -2556.98951~~rep549~0","ARC~0.7874~1~MCU_DIR~M 5620.84905 -2555.32625 A 3.59504 3.59504 0 0 0 5617.29542 -2556.23393~~rep550~0","ARC~0.7874~1~MCU_DIR~M 5618.67326 -2556.68354 A 1.20526 1.20526 0 0 0 5617.77594 -2556.46961~~rep551~0","ARC~0.7874~1~P2_8~M 5625.89375 -2589.27005 A 3.61139 3.61139 0 0 0 5626.9515 -2591.82369~~rep552~0","ARC~0.7874~1~P2_8~M 5626.9515 -2590.19216 A 2.09146 2.09146 0 0 0 5627.56407 -2588.71327~~rep553~0","ARC~0.7874~1~P2_8~M 5626.9515 -2592.09312 A 3.99242 3.99242 0 0 0 5628.12085 -2589.27005~~rep554~0","ARC~0.7874~1~SDA~M 5629.67251 -2557.48699 A 3.58049 3.58049 0 0 0 5626.96968 -2558.5316~~rep555~0","ARC~0.7874~1~SDA~M 5630.93079 -2556.22871 A 5.19753 5.19753 0 0 0 5627.0073 -2557.7451~~rep556~0","ARC~0.7874~1~SDA~M 5632.18906 -2554.97044 A 6.81456 6.81456 0 0 0 5627.04492 -2556.9586~~rep557~0","ARC~0.7874~1~SDA~M 5633.44734 -2553.71216 A 8.4316 8.4316 0 0 0 5627.08253 -2556.17209~~rep558~0","ARC~0.7874~1~SCL~M 5638.38589 -2559.893 A 3.53149 3.53149 0 0 0 5635.88875 -2558.85865~~rep559~0","ARC~0.7874~1~SCL~M 5640.28684 -2559.893 A 5.43244 5.43244 0 0 0 5636.44552 -2558.30188~~rep560~0","ARC~0.7874~1~SCL~M 5642.18779 -2559.893 A 7.33339 7.33339 0 0 0 5637.0023 -2557.7451~~rep561~0","ARC~0.7874~1~SCL~M 5644.08874 -2559.893 A 9.23434 9.23434 0 0 0 5637.55908 -2557.18832~~rep562~0","ARC~0.7874~1~SCL~M 5645.98969 -2559.893 A 11.13529 11.13529 0 0 0 5638.11585 -2556.63155~~rep563~0","ARC~0.7874~1~SCL~M 5637.0023 -2557.7451 A 1.61682 1.61682 0 0 0 5639.22301 -2557.4337~~rep564~0","ARC~0.7874~1~SCL~M 5637.62183 -2558.23109 A 1.64809 1.64809 0 0 0 5639.88549 -2557.91367~~rep565~0","ARC~0.7874~1~SCL~M 5638.24136 -2558.71708 A 1.67936 1.67936 0 0 0 5640.54796 -2558.39364~~rep566~0","ARC~0.7874~1~SCL~M 5637.3834 -2558.43413 A 2.2438 2.2438 0 0 0 5639.65494 -2558.49261~~rep567~0","ARC~0.7874~1~SCL~M 5637.76449 -2559.12317 A 2.99195 2.99195 0 0 0 5640.79343 -2559.20114~~rep568~0","ARC~0.7874~1~SCL~M 5639.06339 -2558.12446 A 1.1834 1.1834 0 0 0 5638.53609 -2557.38805~~rep569~0","ARC~0.7874~1~SCL~M 5637.41159 -2559.26578 A 3.78733 3.78733 0 0 0 5640.28957 -2559.64303~~rep570~0","ARC~0.7874~1~SCL~M 5640.28954 -2559.64302 A 3.78709 3.78709 0 0 0 5638.52391 -2557.33926~~rep571~0","ARC~3.937~1~VIN~M 5517.95276 -2710.47922 A 3.82319 3.82319 0 0 0 5516.833 -2707.7758~~rep572~0","ARC~0.7874~1~TP_U~M 5517.94655 -2698.89435 A 3.8019 3.8019 0 0 0 5520.6349 -2697.7808~~rep573~0","ARC~0.7874~1~TP_U~M 5520.6349 -2697.7808 A 3.8019 3.8019 0 0 0 5517.94655 -2696.66725~~rep574~0","ARC~0.7874~1~TP_L~M 5517.9465 -2688.89935 A 3.8019 3.8019 0 0 0 5520.63485 -2687.7858~~rep575~0","ARC~0.7874~1~TP_L~M 5520.63485 -2687.7858 A 3.8019 3.8019 0 0 0 5517.9465 -2686.67225~~rep576~0","ARC~0.7874~1~TP_D~M 5517.94655 -2678.90435 A 3.8019 3.8019 0 0 0 5520.6349 -2677.7908~~rep577~0","ARC~0.7874~1~TP_D~M 5520.6349 -2677.7908 A 3.8019 3.8019 0 0 0 5517.94655 -2676.67725~~rep578~0","ARC~0.7874~1~TP_R~M 5517.94655 -2668.90935 A 3.8019 3.8019 0 0 0 5520.6349 -2667.7958~~rep579~0","ARC~0.7874~1~TP_R~M 5520.6349 -2667.7958 A 3.8019 3.8019 0 0 0 5517.94655 -2666.68225~~rep580~0","ARC~0.7874~1~MCU_D7~M 5517.94655 -2658.91435 A 3.8019 3.8019 0 0 0 5520.6349 -2657.8008~~rep581~0","ARC~0.7874~1~MCU_D7~M 5520.6349 -2657.8008 A 3.8019 3.8019 0 0 0 5517.94655 -2656.68725~~rep582~0","ARC~3.937~1~VBUS~M 5489.6731 -2710.38122 A 3.68462 3.68462 0 0 0 5490.7523 -2707.7758~~rep583~0","ARC~1~1~VBUSCTRL~M 5485.38321 -2686.74741 A 3.54527 3.54527 0 0 0 5482.87633 -2687.7858~~rep584~0","ARC~1~1~VBUSCTRL~M 5482.87633 -2687.7858 A 3.54527 3.54527 0 0 0 5485.38321 -2688.82419~~rep585~0","ARC~0.7874~1~MCU_D3~M 5517.94655 -2638.92435 A 3.8019 3.8019 0 0 0 5520.6349 -2637.8108~~rep586~0","ARC~0.7874~1~MCU_D3~M 5520.6349 -2637.8108 A 3.8019 3.8019 0 0 0 5517.94655 -2636.69725~~rep587~0","ARC~0.7874~1~MCU_D1~M 5517.94655 -2628.92935 A 3.8019 3.8019 0 0 0 5520.6349 -2627.8158~~rep588~0","ARC~0.7874~1~MCU_D1~M 5520.6349 -2627.8158 A 3.8019 3.8019 0 0 0 5517.94655 -2626.70225~~rep589~0","ARC~1.9685~1~+3V3~M 5485.72563 -2617.12483 A 2.37619 2.37619 0 0 0 5484.04541 -2617.8208~~rep590~0","ARC~1.9685~1~+3V3~M 5484.04541 -2617.8208 A 2.37619 2.37619 0 0 0 5485.72563 -2618.51677~~rep591~0","ARC~1.9685~1~+3V3~M 5495.77897 -2618.51677 A 2.37619 2.37619 0 0 0 5497.45919 -2617.8208~~rep592~0","ARC~1.9685~1~+3V3~M 5497.45919 -2617.8208 A 2.37619 2.37619 0 0 0 5495.77897 -2617.12483~~rep593~0","ARC~1.9685~1~VBAT~M 5495.77897 -2608.52177 A 3.0522 3.0522 0 0 0 5497.9372 -2607.6278~~rep594~0","ARC~1.9685~1~LHPOUT~M 5512.62117 -2780.24467 A 5.22796 5.22796 0 0 0 5508.92444 -2781.7759~~rep595~0","ARC~1.9685~1~LHPOUT~M 5508.92492 -2781.7759 A 5.22728 5.22728 0 0 0 5512.62117 -2783.30693~~rep596~0","ARC~1.9685~1~LHPOUT~M 5517.52954 -2784.7495 A 4.57929 4.57929 0 0 0 5514.29149 -2783.40826~~rep597~0","ARC~1.9685~1~LHPOUT~M 5522.28192 -2784.7495 A 9.33167 9.33167 0 0 0 5515.68343 -2782.01632~~rep598~0","ARC~1~1~RHPOUT_SPK~M 5513.92585 -2758.72095 A 4.47962 4.47962 0 0 0 5517.09342 -2757.4089~~rep599~0","ARC~1~1~RHPOUT_SPK~M 5517.16798 -2757.4089 A 5.37385 5.37385 0 0 0 5513.25382 -2755.71712~~rep600~0","ARC~1~1~RHPOUT_SPK~M 5519.4816 -2757.4089 A 7.55029 7.55029 0 0 0 5513.98219 -2755.03194~~rep601~0","ARC~1.9685~1~LHPOUT~M 5506.63343 -2783.30693 A 5.22728 5.22728 0 0 0 5510.32968 -2781.7759~~rep602~0","ARC~1.9685~1~LHPOUT~M 5510.33016 -2781.7759 A 5.22796 5.22796 0 0 0 5506.63343 -2780.24467~~rep603~0","ARC~1.9685~1~RHPOUT~M 5488.17117 -2758.37858 A 5.22762 5.22762 0 0 0 5489.7023 -2762.07507~~rep604~0","ARC~1.9685~1~RHPOUT~M 5489.7023 -2762.07507 A 5.22762 5.22762 0 0 0 5491.23343 -2758.37858~~rep605~0","ARC~1.1811~1~NETK2_3~M 5475.08567 -2757.61769 A 2.42145 2.42145 0 0 0 5476.3559 -2759.74798~~rep606~0","ARC~1.1811~1~NETK2_3~M 5474.52414 -2758.65677 A 3.49189 3.49189 0 0 0 5476.3559 -2761.72878~~rep607~0","ARC~1.1811~1~NETK2_3~M 5476.3559 -2761.72879 A 3.59345 3.59345 0 0 0 5478.1623 -2758.6112~~rep608~0","ARC~1.1811~1~NETC1_1~M 5512.34259 -2594.75546 A 3.61676 3.61676 0 0 0 5513.4019 -2597.31288~~rep609~0","ARC~1.1811~1~NETC1_1~M 5510.32634 -2592.73918 A 6.46819 6.46819 0 0 0 5512.2208 -2597.31285~~rep610~0","ARC~1.1811~1~NETC1_1~M 5515.02446 -2598.14806 A 2.44821 2.44821 0 0 0 5516.75561 -2597.431~~rep611~0","ARC~1.1811~1~NETC1_1~M 5517.32585 -2597.431 A 3.25465 3.25465 0 0 0 5515.02446 -2596.47774~~rep612~0","ARC~1.1811~1~NETC1_1~M 5513.4019 -2597.3129 A 3.89545 3.89545 0 0 0 5511.5869 -2594.94756~~rep613~0","ARC~1.1811~1~NETC1_1~M 5513.6172 -2596.15159 A 0.89304 0.89304 0 0 0 5512.91738 -2595.50464~~rep614~0","ARC~1.1811~1~NETC1_1~M 5512.91738 -2595.50465 A 0.89304 0.89304 0 0 0 5512.63479 -2596.41482~~rep615~0","ARC~1.1811~1~GND~M 5559.62014 -2816.77087 A 2.24901 2.24901 0 0 0 5559.84482 -2818.47746~~rep616~0","ARC~1.1811~1~GND~M 5560.2251 -2818.18565 A 1.42571 1.42571 0 0 0 5559.21697 -2817.76807~~rep617~0","ARC~1.1811~1~GND~M 5560.17647 -2818.18867 A 1.49592 1.49592 0 0 0 5558.6962 -2817.45216~~rep618~0","ARC~1.1811~1~GND~M 5559.66832 -2819.13613 A 2.90831 2.90831 0 0 0 5558.8165 -2817.07964~~rep619~0","ARC~1.1811~1~GND~M 5560.50349 -2818.30096 A 5.75974 5.75974 0 0 0 5558.8165 -2814.22821~~rep620~0","ARC~1.1811~1~GND~M 5560.20112 -2819.36639 A 1.42811 1.42811 0 0 0 5558.8165 -2817.93894~~rep621~0","ARC~1.1811~1~GND~M 5560.23709 -2818.18583 A 1.46521 1.46521 0 0 0 5558.8165 -2816.7213~~rep622~0","ARC~1~1~RHPOUT_SPK~M 5580.30473 -2801.21808 A 1.16908 1.16908 0 0 0 5579.47807 -2801.5605~~rep623~0","ARC~1~1~RHPOUT_SPK~M 5579.47807 -2801.5605 A 1.16908 1.16908 0 0 0 5580.30473 -2801.90292~~rep624~0","ARC~1~1~NETK2_1~M 5581.24963 -2820.19448 A 1.3036 1.3036 0 0 0 5580.32785 -2820.5763~~rep625~0","ARC~1~1~NETK2_1~M 5580.51809 -2820.5763 A 1.03456 1.03456 0 0 0 5581.24963 -2820.87932~~rep626~0","ARC~1~1~NETK2_1~M 5582.32817 -2820.87932 A 1.03456 1.03456 0 0 0 5583.05971 -2820.5763~~rep627~0","ARC~1~1~NETK2_1~M 5583.24995 -2820.5763 A 1.3036 1.3036 0 0 0 5582.32817 -2820.19448~~rep628~0","ARC~1~1~MICIN~M 5582.13132 -2816.59448 A 1.16908 1.16908 0 0 0 5581.7889 -2815.76782~~rep629~0","ARC~1~1~MICIN~M 5581.7889 -2815.76782 A 1.16908 1.16908 0 0 0 5581.44648 -2816.59448~~rep630~0","ARC~1~1~NETC9_1~M 5645.89371 -2813.19201 A 3.07003 3.07003 0 0 0 5643.72287 -2814.0912~~rep631~0","ARC~1~1~NETC9_1~M 5643.72287 -2814.0912 A 3.07003 3.07003 0 0 0 5645.89371 -2814.99039~~rep632~0","ARC~1~1~LHPOUT~M 5647.69209 -2821.91949 A 3.07003 3.07003 0 0 0 5649.86293 -2821.0203~~rep633~0","ARC~1~1~LHPOUT~M 5649.86293 -2821.0203 A 3.07003 3.07003 0 0 0 5647.69209 -2820.12111~~rep634~0","ARC~1~1~NETC9_1~M 5639.13689 -2815.06919 A 3.33907 3.33907 0 0 0 5641.49797 -2814.0912~~rep635~0","ARC~1~1~NETC9_1~M 5641.11749 -2814.0912 A 2.80099 2.80099 0 0 0 5639.13689 -2813.27081~~rep636~0","ARC~1~1~NETC9_1~M 5638.9238 -2812.70562 A 1.49002 1.49002 0 0 0 5638.2377 -2811.45108~~rep637~0","ARC~1~1~NETC9_1~M 5638.2377 -2811.45108 A 1.49002 1.49002 0 0 0 5637.5516 -2812.70562~~rep638~0","ARC~1~1~NETU1_16~M 5615.22987 -2821.03218 A 1.15006 1.15006 0 0 0 5614.35718 -2821.14707~~rep639~0","ARC~1~1~NETU1_16~M 5614.3312 -2821.14011 A 1.1881 1.1881 0 0 0 5615.05262 -2821.69368~~rep640~0","ARC~1~1~NETU1_16~M 5615.12958 -2821.10913 A 1.1754 1.1754 0 0 0 5614.29845 -2821.4534~~rep641~0","ARC~1~1~NETU1_16~M 5614.30738 -2821.4534 A 1.16277 1.16277 0 0 0 5615.12958 -2821.79397~~rep642~0","ARC~1~1~NETU1_16~M 5611.27903 -2821.4534 A 2.71494 2.71494 0 0 0 5609.17807 -2820.45801~~rep643~0","ARC~1~1~NETU1_16~M 5613.38973 -2821.4534 A 4.44247 4.44247 0 0 0 5609.95192 -2819.82465~~rep644~0","ARC~1~1~NETU1_16~M 5615.50043 -2821.4534 A 6.17 6.17 0 0 0 5610.72577 -2819.19128~~rep645~0","ARC~1~1~NETU1_16~M 5610.64089 -2819.09751 A 3.14139 3.14139 0 0 0 5609.7208 -2816.87621~~rep646~0","ARC~1~1~NETU1_16~M 5609.7208 -2816.97712 A 2.99868 2.99868 0 0 0 5608.84251 -2819.09751~~rep647~0","ARC~1~1~NETU1_16~M 5610.2126 -2821.17795 A 1.24162 1.24162 0 0 0 5611.55031 -2821.45332~~rep648~0","ARC~1~1~NETU1_16~M 5611.55031 -2821.45331 A 1.84574 1.84574 0 0 0 5611.01185 -2820.05848~~rep649~0","ARC~1~1~MICBIAS~M 5597.3913 -2817.13371 A 1.64432 1.64432 0 0 0 5597.87292 -2815.971~~rep650~0","ARC~1~1~MICBIAS~M 5594.96427 -2816.9763 A 1.70648 1.70648 0 0 0 5596.17093 -2817.47612~~rep651~0","ARC~0.7874~1~NETR23_1~M 5857.87738 -2770.98987 A 1.42571 1.42571 0 0 0 5857.4598 -2769.98174~~rep652~0","ARC~0.7874~1~NETR23_1~M 5857.4598 -2769.98174 A 1.42571 1.42571 0 0 0 5857.04222 -2770.98987~~rep653~0","ARC~0.7874~1~NETR23_1~M 5857.04222 -2772.21873 A 1.42571 1.42571 0 0 0 5857.4598 -2773.22686~~rep654~0","ARC~0.7874~1~NETR23_1~M 5857.4598 -2773.22686 A 1.42571 1.42571 0 0 0 5857.87738 -2772.21873~~rep655~0","ARC~0.7874~1~NETR23_1~M 5858.32706 -2779.48814 A 2.961 2.961 0 0 0 5857.4598 -2777.3944~~rep656~0","ARC~0.7874~1~NETR23_1~M 5857.4598 -2776.87727 A 3.69233 3.69233 0 0 0 5856.37834 -2779.48814~~rep657~0","ARC~1~1~VIN~M 5480.52467 -2737.45947 A 3.97881 3.97881 0 0 0 5483.33811 -2736.2941~~rep658~0","ARC~1~1~VIN~M 5481.23178 -2738.16658 A 6.39303 6.39303 0 0 0 5485.75233 -2736.2941~~rep659~0","ARC~1~1~VIN~M 5483.06917 -2736.2941 A 2.59847 2.59847 0 0 0 5481.23177 -2735.53303~~rep660~0","ARC~1~1~VIN~M 5479.5825 -2740.72132 A 2.05616 2.05616 0 0 0 5479.81957 -2738.02599~~rep661~0","ARC~1~1~VIN~M 5480.25715 -2741.64588 A 2.21113 2.21113 0 0 0 5480.51208 -2738.7474~~rep662~0","ARC~1~1~VIN~M 5480.93178 -2742.57044 A 2.3661 2.3661 0 0 0 5481.20459 -2739.46881~~rep663~0","ARC~1~1~VIN~M 5479.62747 -2739.96527 A 1.65225 1.65225 0 0 0 5480.70706 -2740.62379~~rep664~0","ARC~1~1~VIN~M 5481.22743 -2741.3369 A 1.58966 1.58966 0 0 0 5481.31579 -2739.35242~~rep665~0","ARC~1~1~VIN~M 5480.62922 -2737.2397 A 3.21848 3.21848 0 0 0 5481.8274 -2739.74509~~rep666~0","ARC~1~1~VIN~M 5480.0015 -2738.01814 A 4.90462 4.90462 0 0 0 5481.8274 -2741.83609~~rep667~0","ARC~1~1~VIN~M 5479.37378 -2738.79658 A 6.59076 6.59076 0 0 0 5481.8274 -2743.92709~~rep668~0","ARC~1~1~VIN~M 5478.74606 -2739.57501 A 8.2769 8.2769 0 0 0 5481.8274 -2746.01808~~rep669~0","ARC~1.9685~1~GND~M 5480.88936 -2726.87544 A 3.32667 3.32667 0 0 0 5479.915 -2724.52313~~rep670~0","ARC~1.9685~1~GND~M 5479.915 -2724.52313 A 3.32667 3.32667 0 0 0 5478.94064 -2726.87544~~rep671~0","ARC~1~1~BAT+~M 5522.31088 -2737.7468 A 4.19139 4.19139 0 0 0 5519.3471 -2736.51922~~rep672~0","ARC~1~1~BAT+~M 5522.31087 -2736.7468 A 6.6056 6.6056 0 0 0 5517.63997 -2734.81215~~rep673~0","ARC~1~1~BAT+~M 5519.74986 -2736.92197 A 2.38589 2.38589 0 0 0 5520.4487 -2738.60904~~rep674~0","ARC~1~1~BAT+~M 5520.79634 -2738.16333 A 2.59096 2.59096 0 0 0 5518.68908 -2739.2468~~rep675~0","ARC~1~1~BAT+~M 5518.68908 -2739.2468 A 2.59096 2.59096 0 0 0 5520.79634 -2740.33027~~rep676~0","ARC~1~1~+3V3~M 5618.9425 -2784.7495 A 1.64432 1.64432 0 0 0 5618.46089 -2785.91221~~rep677~0","ARC~1~1~+3V3~M 5619.08433 -2784.40708 A 1.16908 1.16908 0 0 0 5618.25767 -2784.7495~~rep678~0","ARC~1~1~+3V3~M 5618.25767 -2784.7495 A 1.16908 1.16908 0 0 0 5619.08433 -2785.09192~~rep679~0","ARC~1~1~+3V3~M 5619.08433 -2784.40708 A 1.16908 1.16908 0 0 0 5618.25767 -2784.7495~~rep680~0","ARC~1~1~+3V3~M 5618.25767 -2784.7495 A 1.16908 1.16908 0 0 0 5619.08433 -2785.09192~~rep681~0","ARC~1.9685~1~+3V3~M 5680.06654 -2595.54586 A 3.19488 3.19488 0 0 0 5681.0023 -2597.80498~~rep682~0","ARC~1.9685~1~+3V3~M 5681.0023 -2597.99135 A 3.45845 3.45845 0 0 0 5682.01526 -2595.54586~~rep683~0","ARC~1.9685~1~+3V3~M 5680.06654 -2595.54586 A 3.19488 3.19488 0 0 0 5681.0023 -2597.80498~~rep684~0","ARC~1.9685~1~+3V3~M 5681.0023 -2597.99135 A 3.45845 3.45845 0 0 0 5682.01526 -2595.54586~~rep685~0","ARC~1.9685~1~+3V3~M 5659.70788 -2785.06982 A 1.90095 1.90095 0 0 0 5659.1511 -2783.72565~~rep686~0","ARC~1.9685~1~+3V3~M 5659.1511 -2783.72565 A 1.90095 1.90095 0 0 0 5658.59432 -2785.06982~~rep687~0","ARC~1.9685~1~+3V3~M 5659.2692 -2783.44053 A 2.30417 2.30417 0 0 0 5658.59432 -2785.06982~~rep688~0","ARC~1~1~+3V3~M 5775.15 -2718.77723 A 2.01342 2.01342 0 0 0 5774.56028 -2720.20093~~rep689~0","ARC~1~1~+3V3~M 5774.56028 -2721.27947 A 2.01342 2.01342 0 0 0 5775.15 -2722.70317~~rep690~0","ARC~1~1~+3V3~M 5765.90967 -2624.17972 A 1.43812 1.43812 0 0 0 5766.92657 -2623.7585~~rep691~0","ARC~1~1~+3V3~M 5764.6893 -2623.8373 A 1.64432 1.64432 0 0 0 5764.20769 -2625.00001~~rep692~0","ARC~1.9685~1~+3V3~M 5775.27368 -2728.85608 A 1.90095 1.90095 0 0 0 5776.61785 -2728.2993~~rep693~0","ARC~1.9685~1~+3V3~M 5776.61785 -2728.2993 A 1.90095 1.90095 0 0 0 5775.27368 -2727.74252~~rep694~0","ARC~1~1~+3V3~M 5775.61609 -2727.40011 A 1.59134 1.59134 0 0 0 5775.15 -2726.27486~~rep695~0","ARC~1~1~+3V3~M 5775.15 -2724.18367 A 4.54873 4.54873 0 0 0 5773.81771 -2727.40011~~rep696~0","ARC~1.9685~1~+3V3~M 5478.77758 -2618.34428 A 1.78726 1.78726 0 0 0 5480.04136 -2617.8208~~rep697~0","ARC~1.9685~1~+3V3~M 5480.20215 -2617.8208 A 2.01465 2.01465 0 0 0 5478.77758 -2617.23072~~rep698~0","ARC~1.1811~1~NETJ1_1~M 5527.48348 -2819.43997 A 1.90095 1.90095 0 0 0 5526.9267 -2818.0958~~rep699~0","ARC~1.1811~1~NETJ1_1~M 5526.9267 -2818.0958 A 1.90095 1.90095 0 0 0 5526.36992 -2819.43997~~rep700~0","ARC~1.1811~1~NETJ1_2~M 5535.7286 -2822.5558 A 4.5893 4.5893 0 0 0 5532.48347 -2821.21163~~rep701~0","ARC~1.1811~1~NETJ1_2~M 5532.45106 -2822.3558 A 1.46609 1.46609 0 0 0 5534.16044 -2822.17983~~rep702~0","ARC~3.1496~1~AGND~M 5741.3953 -2769.7561 A 5.25816 5.25816 0 0 0 5739.85522 -2773.47418~~rep703~0","ARC~3.1496~1~AGND~M 5738.2457 -2769.7561 A 12.86196 12.86196 0 0 0 5734.47852 -2778.85088~~rep704~0","ARC~3.1496~1~AGND~M 5735.0961 -2769.7561 A 20.46577 20.46577 0 0 0 5729.10181 -2784.22758~~rep705~0","ARC~1.1811~1~GND~M 5817.76959 -2627.90491 A 2.91987 2.91987 0 0 0 5818.6248 -2629.96957~~rep706~0","ARC~1.1811~1~GND~M 5818.6248 -2629.96957 A 2.91987 2.91987 0 0 0 5819.48001 -2627.90491~~rep707~0","ARC~0.7874~1~NETQ1_3~M 5814.48717 -2636.27473 A 3.84382 3.84382 0 0 0 5815.613 -2638.99272~~rep708~0","ARC~0.7874~1~NETQ1_3~M 5813.9304 -2636.8315 A 5.74477 5.74477 0 0 0 5815.613 -2640.89367~~rep709~0","ARC~0.7874~1~NETQ1_3~M 5815.613 -2637.57075 A 1.04545 1.04545 0 0 0 5815.91921 -2636.83151~~rep710~0","ARC~1~1~NETR7_1~M 5812.04404 -2624.73046 A 3.13848 3.13848 0 0 0 5811.1248 -2622.51122~~rep711~0","ARC~1~1~NETR7_1~M 5811.1248 -2622.51122 A 3.13848 3.13848 0 0 0 5810.20556 -2624.73046~~rep712~0","ARC~0.7874~1~VBUS~M 5478.81227 -2690.94602 A 1.42571 1.42571 0 0 0 5477.80414 -2691.3636~~rep713~0","ARC~0.7874~1~VBUS~M 5477.80414 -2691.3636 A 1.42571 1.42571 0 0 0 5478.81227 -2691.78118~~rep714~0","ARC~1~1~VBUSCTRL~M 5479.96597 -2688.10602 A 1.09329 1.09329 0 0 0 5480.73904 -2687.7858~~rep715~0","ARC~1~1~VBUSCTRL~M 5480.84623 -2687.7858 A 1.24488 1.24488 0 0 0 5479.96597 -2687.42118~~rep716~0","ARC~1~1~CLKIN~M 5506.89397 -2560.69782 A 1.16908 1.16908 0 0 0 5507.72063 -2560.3554~~rep717~0","ARC~1~1~CLKIN~M 5507.72063 -2560.3554 A 1.16908 1.16908 0 0 0 5506.89397 -2560.01298~~rep718~0","ARC~1~1~NETR2_2~M 5506.01228 -2564.29782 A 1.16908 1.16908 0 0 0 5506.3547 -2565.12448~~rep719~0","ARC~1~1~NETR2_2~M 5506.3547 -2565.12448 A 1.16908 1.16908 0 0 0 5506.69712 -2564.29782~~rep720~0","ARC~1.9685~1~+3V3~M 5522.42347 -2612.7481 A 3.51383 3.51383 0 0 0 5524.90812 -2613.77728~~rep721~0","ARC~1.9685~1~+3V3~M 5526.02168 -2613.77728 A 3.51383 3.51383 0 0 0 5528.50633 -2612.7481~~rep722~0","ARC~1.1811~1~NETC1_1~M 5525.4649 -2605.1103 A 3.54479 3.54479 0 0 0 5522.95835 -2604.07206~~rep723~0","ARC~1.1811~1~NETC1_1~M 5523.65172 -2604.76541 A 2.15807 2.15807 0 0 0 5524.2838 -2606.2914~~rep724~0","ARC~0.7874~1~NETX1_1~M 5491.45733 -2588.42808 A 1.42571 1.42571 0 0 0 5492.46546 -2588.0105~~rep725~0","ARC~0.7874~1~NETX1_1~M 5492.46546 -2588.0105 A 1.42571 1.42571 0 0 0 5491.45733 -2587.59292~~rep726~0","ARC~0.7874~1~REF_EN~M 5491.26048 -2583.99292 A 1.42571 1.42571 0 0 0 5490.8429 -2582.98479~~rep727~0","ARC~0.7874~1~REF_EN~M 5490.8429 -2582.98479 A 1.42571 1.42571 0 0 0 5490.42532 -2583.99292~~rep728~0","ARC~1~1~LCD_BACKLIGHT~M 5806.07547 -2620.3864 A 1.64433 1.64433 0 0 0 5807.23819 -2619.9048~~rep729~0","ARC~1~1~NETR7_1~M 5811.18062 -2619.56612 A 1.16908 1.16908 0 0 0 5812.00728 -2619.2237~~rep730~0","ARC~1~1~NETR7_1~M 5812.00728 -2619.2237 A 1.16908 1.16908 0 0 0 5811.18062 -2618.88128~~rep731~0","ARC~1~1~NETR7_1~M 5810.49578 -2619.76297 A 2.1476 2.1476 0 0 0 5811.1248 -2621.28155~~rep732~0","ARC~1.1811~1~GND~M 5822.8229 -2622.4126 A 3.69333 3.69333 0 0 0 5821.74345 -2619.67064~~rep733~0","ARC~1.1811~1~GND~M 5821.14124 -2619.99054 A 2.24868 2.24868 0 0 0 5822.1401 -2621.39209~~rep734~0","ARC~1~1~NETR7_1~M 5817.40758 -2618.92063 A 1.03473 1.03473 0 0 0 5816.67592 -2619.2237~~rep735~0","ARC~1~1~NETR7_1~M 5816.48592 -2619.2237 A 1.30343 1.30343 0 0 0 5817.40758 -2619.60547~~rep736~0","ARC~0.7874~1~+3V3~M 5812.52658 -2651.49432 A 1.42571 1.42571 0 0 0 5812.109 -2650.48619~~rep737~0","ARC~0.7874~1~+3V3~M 5812.109 -2650.48619 A 1.42571 1.42571 0 0 0 5811.69142 -2651.49432~~rep738~0","ARC~1~1~+3V3~M 5811.56973 -2651.56948 A 1.16908 1.16908 0 0 0 5810.74307 -2651.9119~~rep739~0","ARC~1~1~+3V3~M 5810.74307 -2651.9119 A 1.16908 1.16908 0 0 0 5811.56973 -2652.25432~~rep740~0","ARC~0.7874~1~NETR9_1~M 5812.24861 -2655.32355 A 1.65174 1.65174 0 0 0 5813.89687 -2655.73596~~rep741~0","ARC~0.7874~1~NETR9_1~M 5812.47757 -2656.07693 A 2.35262 2.35262 0 0 0 5814.82523 -2656.66434~~rep742~0","ARC~0.7874~1~NETR9_1~M 5813.22632 -2656.05206 A 1.47247 1.47247 0 0 0 5812.17136 -2655.65565~~rep743~0","ARC~0.7874~1~NETR9_1~M 5812.73587 -2655.91666 A 1.28659 1.28659 0 0 0 5813.67272 -2655.5119~~rep744~0","ARC~0.7874~1~NETR9_1~M 5813.67272 -2655.5119 A 1.28659 1.28659 0 0 0 5812.73587 -2655.10714~~rep745~0","ARC~1.9685~1~GND~M 5806.22042 -2705.76808 A 1.84241 1.84241 0 0 0 5807.5232 -2705.22845~~rep746~0","ARC~0.7874~1~NETR10_1~M 5810.98401 -2704.69556 A 1.99751 1.99751 0 0 0 5812.39646 -2704.1105~~rep747~0","ARC~0.7874~1~NETR10_1~M 5811.54078 -2705.25233 A 3.89846 3.89846 0 0 0 5814.29741 -2704.1105~~rep748~0","ARC~0.7874~1~NETR10_1~M 5812.31987 -2704.11054 A 0.86941 0.86941 0 0 0 5811.35858 -2704.29314~~rep749~0","ARC~0.7874~1~NETR10_1~M 5813.00315 -2704.40802 A 1.45033 1.45033 0 0 0 5811.45735 -2704.34783~~rep750~0","ARC~1~1~H1_CPLD_TDI~M 5655.38802 -2803.25252 A 1.16908 1.16908 0 0 0 5656.21468 -2802.9101~~rep751~0","ARC~1~1~H1_CPLD_TDI~M 5656.21468 -2802.9101 A 1.16908 1.16908 0 0 0 5655.38802 -2802.56768~~rep752~0","ARC~1~1~I2S0_RX_SDA~M 5651.10318 -2802.56768 A 1.16908 1.16908 0 0 0 5650.27652 -2802.9101~~rep753~0","ARC~1~1~I2S0_RX_SDA~M 5650.27652 -2802.9101 A 1.16908 1.16908 0 0 0 5651.10318 -2803.25252~~rep754~0","ARC~1.1811~1~NETR13_2~M 5580.844 -2794.06292 A 1.08517 1.08517 0 0 0 5581.16184 -2793.29559~~rep755~0","ARC~1.1811~1~NETR12_2~M 5579.34928 -2789.3385 A 1.21917 1.21917 0 0 0 5580.21136 -2789.69559~~rep756~0","ARC~1~1~NETK2_1~M 5577.28877 -2820.87932 A 1.03456 1.03456 0 0 0 5578.02031 -2820.5763~~rep757~0","ARC~1~1~NETK2_1~M 5578.21055 -2820.5763 A 1.3036 1.3036 0 0 0 5577.28877 -2820.19448~~rep758~0","ARC~1~1~NETK2_1~M 5576.21023 -2820.19448 A 1.16908 1.16908 0 0 0 5575.38357 -2820.5369~~rep759~0","ARC~1~1~NETK2_1~M 5575.38357 -2820.5369 A 1.16908 1.16908 0 0 0 5576.21023 -2820.87932~~rep760~0","ARC~1~1~MICBIAS~M 5587.36757 -2817.31872 A 1.16908 1.16908 0 0 0 5588.19423 -2816.9763~~rep761~0","ARC~1~1~MICBIAS~M 5588.19423 -2816.9763 A 1.16908 1.16908 0 0 0 5587.36757 -2816.63388~~rep762~0","ARC~1~1~NETK2_1~M 5586.28903 -2820.23388 A 1.16908 1.16908 0 0 0 5585.46237 -2820.5763~~rep763~0","ARC~1~1~NETK2_1~M 5585.46237 -2820.5763 A 1.16908 1.16908 0 0 0 5586.28903 -2820.91872~~rep764~0","ARC~1~1~NETR18_1~M 5651.14258 -2792.56768 A 1.16908 1.16908 0 0 0 5650.31592 -2792.9101~~rep765~0","ARC~1~1~NETR18_1~M 5650.31592 -2792.9101 A 1.16908 1.16908 0 0 0 5651.14258 -2793.25252~~rep766~0","ARC~1~1~I2S0_SCK~M 5655.42742 -2793.25252 A 1.16908 1.16908 0 0 0 5656.25408 -2792.9101~~rep767~0","ARC~1~1~I2S0_SCK~M 5656.25408 -2792.9101 A 1.16908 1.16908 0 0 0 5655.42742 -2792.56768~~rep768~0","ARC~1~1~NETR19_1~M 5651.10318 -2797.60708 A 1.16908 1.16908 0 0 0 5650.27652 -2797.9495~~rep769~0","ARC~1~1~NETR19_1~M 5650.27652 -2797.9495 A 1.16908 1.16908 0 0 0 5651.10318 -2798.29192~~rep770~0","ARC~1~1~I2S0_TX_SDA~M 5655.38802 -2798.29192 A 1.16908 1.16908 0 0 0 5656.21468 -2797.9495~~rep771~0","ARC~1~1~I2S0_TX_SDA~M 5656.21468 -2797.9495 A 1.16908 1.16908 0 0 0 5655.38802 -2797.60708~~rep772~0","ARC~1~1~I2S0_WS~M 5655.38802 -2808.29192 A 1.16908 1.16908 0 0 0 5656.21468 -2807.9495~~rep773~0","ARC~1~1~I2S0_WS~M 5656.21468 -2807.9495 A 1.16908 1.16908 0 0 0 5655.38802 -2807.60708~~rep774~0","ARC~1~1~NETR20_1~M 5651.10318 -2807.60708 A 1.16908 1.16908 0 0 0 5650.27652 -2807.9495~~rep775~0","ARC~1~1~NETR20_1~M 5650.27652 -2807.9495 A 1.16908 1.16908 0 0 0 5651.10318 -2808.29192~~rep776~0","ARC~1~1~I2S0_MCLK~M 5608.3755 -2781.1889 A 1.64432 1.64432 0 0 0 5608.85711 -2780.02619~~rep777~0","ARC~1~1~I2S0_MCLK~M 5608.3755 -2781.1889 A 1.64432 1.64432 0 0 0 5608.85711 -2780.02619~~rep778~0","ARC~1~1~I2S0_MCLK_R~M 5607.35198 -2785.13132 A 1.36677 1.36677 0 0 0 5607.7523 -2786.09777~~rep779~0","ARC~1~1~I2S0_MCLK_R~M 5607.7523 -2785.8182 A 0.9714 0.9714 0 0 0 5608.03682 -2785.13132~~rep780~0","ARC~1~1~NETU1_21~M 5590.42742 -2803.56752 A 1.16908 1.16908 0 0 0 5591.25408 -2803.2251~~rep781~0","ARC~1~1~NETU1_21~M 5591.25408 -2803.2251 A 1.16908 1.16908 0 0 0 5590.42742 -2802.88268~~rep782~0","ARC~0.7874~1~NETR23_1~M 5857.95728 -2766.39863 A 1.18723 1.18723 0 0 0 5858.79678 -2766.0509~~rep783~0","ARC~0.7874~1~NETR23_1~M 5859.13405 -2766.0509 A 1.6642 1.6642 0 0 0 5857.95728 -2765.56347~~rep784~0","ARC~0.7874~1~NETR23_1~M 5857.12212 -2766.79233 A 1.15292 1.15292 0 0 0 5857.4598 -2767.60757~~rep785~0","ARC~0.7874~1~NETR23_1~M 5857.4598 -2767.99336 A 1.69851 1.69851 0 0 0 5857.95728 -2766.79233~~rep786~0","ARC~0.7874~1~NETJ2_5~M 5859.94768 -2761.7259 A 2.75913 2.75913 0 0 0 5857.99668 -2760.91777~~rep787~0","ARC~0.7874~1~NETJ2_5~M 5858.0669 -2761.66821 A 0.66473 0.66473 0 0 0 5858.94835 -2761.46721~~rep788~0","ARC~0.7874~1~SD_CLK~M 5853.56152 -2760.72092 A 1.42571 1.42571 0 0 0 5852.55339 -2761.1385~~rep789~0","ARC~0.7874~1~SD_CLK~M 5852.55339 -2761.1385 A 1.42571 1.42571 0 0 0 5853.56152 -2761.55608~~rep790~0","ARC~1~1~MICBIAS~M 5589.96427 -2816.9763 A 1.70648 1.70648 0 0 0 5591.17093 -2817.47612~~rep791~0","ARC~1~1~MICBIAS~M 5592.24947 -2817.47612 A 1.70648 1.70648 0 0 0 5593.45613 -2816.9763~~rep792~0","ARC~1~1~GND~M 5499.68508 -2750.75932 A 1.18854 1.18854 0 0 0 5500.0332 -2751.59974~~rep793~0","ARC~1~1~GND~M 5500.0332 -2751.57222 A 1.14962 1.14962 0 0 0 5500.36992 -2750.75932~~rep794~0","ARC~1~1~U6-6~M 5500.56677 -2746.47448 A 1.43795 1.43795 0 0 0 5500.1456 -2745.4577~~rep795~0","ARC~1~1~U6-5~M 5505.36982 -2746.23828 A 1.16908 1.16908 0 0 0 5505.0274 -2745.41162~~rep796~0","ARC~1~1~U6-5~M 5505.0274 -2745.41162 A 1.16908 1.16908 0 0 0 5504.68498 -2746.23828~~rep797~0","ARC~1~1~VIN~M 5504.68508 -2750.52312 A 1.16908 1.16908 0 0 0 5505.0275 -2751.34978~~rep798~0","ARC~1~1~VIN~M 5505.0275 -2751.34978 A 1.16908 1.16908 0 0 0 5505.36992 -2750.52312~~rep799~0","ARC~1~1~VIN~M 5504.68508 -2750.52312 A 1.16908 1.16908 0 0 0 5505.0275 -2751.34978~~rep800~0","ARC~1~1~VIN~M 5505.0275 -2751.34978 A 1.16908 1.16908 0 0 0 5505.36992 -2750.52312~~rep801~0","ARC~1.9685~1~VIN~M 5562.75834 -2806.59604 A 2.87617 2.87617 0 0 0 5563.60075 -2808.6298~~rep802~0","ARC~1.1811~1~NETU5_2~M 5563.38555 -2788.99885 A 1.47134 1.47134 0 0 0 5562.34516 -2789.4298~~rep803~0","ARC~1.1811~1~NETU5_2~M 5562.34516 -2789.4298 A 1.47134 1.47134 0 0 0 5563.38555 -2789.86075~~rep804~0","ARC~1.1811~1~NETU5_2~M 5559.24745 -2789.86075 A 1.47134 1.47134 0 0 0 5560.28784 -2789.4298~~rep805~0","ARC~1.1811~1~NETU5_2~M 5560.28784 -2789.4298 A 1.47134 1.47134 0 0 0 5559.24745 -2788.99885~~rep806~0","ARC~1.1811~1~NETR12_2~M 5569.24745 -2789.86075 A 1.78306 1.78306 0 0 0 5570.50826 -2789.3385~~rep807~0","ARC~1.1811~1~NETR12_2~M 5570.06742 -2789.3385 A 1.15962 1.15962 0 0 0 5569.24744 -2788.99886~~rep808~0","ARC~1.1811~1~NETJ1_2~M 5569.24745 -2808.19885 A 1.47134 1.47134 0 0 0 5568.8165 -2807.15846~~rep809~0","ARC~1.1811~1~NETJ1_2~M 5568.8165 -2807.15846 A 1.47134 1.47134 0 0 0 5568.38555 -2808.19885~~rep810~0","ARC~1.1811~1~NETJ1_2~M 5568.38555 -2814.66075 A 1.47134 1.47134 0 0 0 5568.8165 -2815.70114~~rep811~0","ARC~1.1811~1~NETJ1_2~M 5568.8165 -2815.70114 A 1.47134 1.47134 0 0 0 5569.24745 -2814.66075~~rep812~0","ARC~1.1811~1~NETJ1_1~M 5553.38555 -2814.66075 A 1.47134 1.47134 0 0 0 5553.8165 -2815.70114~~rep813~0","ARC~1.1811~1~NETJ1_1~M 5553.8165 -2815.70114 A 1.47134 1.47134 0 0 0 5554.24745 -2814.66075~~rep814~0","ARC~1.1811~1~GND~M 5558.51177 -2814.7576 A 1.47284 1.47284 0 0 0 5559.198 -2815.65192~~rep815~0","ARC~1.1811~1~GND~M 5559.19746 -2815.64987 A 1.46984 1.46984 0 0 0 5559.3443 -2814.53453~~rep816~0","ARC~1.1811~1~GND~M 5557.16071 -2806.10371 A 3.57243 3.57243 0 0 0 5558.20705 -2808.6298~~rep817~0","ARC~1.1811~1~GND~M 5558.38555 -2814.66075 A 1.47134 1.47134 0 0 0 5558.8165 -2815.70114~~rep818~0","ARC~1.1811~1~GND~M 5558.8165 -2815.70114 A 1.47134 1.47134 0 0 0 5559.24745 -2814.66075~~rep819~0","ARC~1.1811~1~NETC1_1~M 5506.45759 -2589.85205 A 2.36993 2.36993 0 0 0 5508.13338 -2590.5462~~rep820~0","ARC~1.1811~1~NETC1_1~M 5509.49027 -2591.9031 A 5.08372 5.08372 0 0 0 5508.0013 -2588.30836~~rep821~0","ARC~1.1811~1~NETR2_2~M 5507.54916 -2577.27309 A 4.07814 4.07814 0 0 0 5506.3547 -2574.38941~~rep822~0","ARC~1.1811~1~NETR2_2~M 5506.3547 -2574.88625 A 3.3755 3.3755 0 0 0 5505.36604 -2577.27309~~rep823~0","ARC~0.7874~1~NETX1_1~M 5498.33362 -2587.24067 A 2.62836 2.62836 0 0 0 5496.47509 -2588.0105~~rep824~0","ARC~0.7874~1~NETX1_1~M 5497.77685 -2586.6839 A 4.52931 4.52931 0 0 0 5494.57414 -2588.0105~~rep825~0","ARC~0.7874~1~NETX1_1~M 5495.03694 -2588.0105 A 3.87481 3.87481 0 0 0 5497.77684 -2589.14541~~rep826~0","ARC~0.7874~1~SD_CMD~M 5874.55003 -2769.67993 A 2.37619 2.37619 0 0 0 5872.86981 -2770.3759~~rep827~0","ARC~0.7874~1~SD_CMD~M 5872.86981 -2770.3759 A 2.37619 2.37619 0 0 0 5874.55003 -2771.07187~~rep828~0","ARC~0.7874~1~SD_DAT3~M 5874.55003 -2774.00493 A 2.37619 2.37619 0 0 0 5872.86981 -2774.7009~~rep829~0","ARC~0.7874~1~SD_DAT3~M 5872.86981 -2774.7009 A 2.37619 2.37619 0 0 0 5874.55003 -2775.39687~~rep830~0","ARC~0.7874~1~SD_DAT2~M 5874.55003 -2778.32993 A 2.18056 2.18056 0 0 0 5873.00814 -2778.9686~~rep831~0","ARC~0.7874~1~SD_DAT2~M 5872.73148 -2778.9686 A 2.57182 2.57182 0 0 0 5874.55003 -2779.72187~~rep832~0","ARC~0.7874~1~SD_CD~M 5874.55003 -2743.72993 A 2.37619 2.37619 0 0 0 5872.86981 -2744.4259~~rep833~0","ARC~0.7874~1~SD_CD~M 5872.86981 -2744.4259 A 2.37619 2.37619 0 0 0 5874.55003 -2745.12187~~rep834~0","ARC~0.7874~1~SD_DAT1~M 5874.55003 -2748.05493 A 2.37619 2.37619 0 0 0 5872.86981 -2748.7509~~rep835~0","ARC~0.7874~1~SD_DAT1~M 5872.86981 -2748.7509 A 2.37619 2.37619 0 0 0 5874.55003 -2749.44687~~rep836~0","ARC~0.7874~1~SD_DAT0~M 5874.55003 -2752.37993 A 2.37619 2.37619 0 0 0 5872.86981 -2753.0759~~rep837~0","ARC~0.7874~1~SD_DAT0~M 5872.86981 -2753.0759 A 2.37619 2.37619 0 0 0 5874.55003 -2753.77187~~rep838~0","ARC~0.7874~1~NETJ2_5~M 5874.55003 -2761.02993 A 2.37619 2.37619 0 0 0 5872.86981 -2761.7259~~rep839~0","ARC~0.7874~1~NETJ2_5~M 5872.86981 -2761.7259 A 2.37619 2.37619 0 0 0 5874.55003 -2762.42187~~rep840~0","ARC~0.7874~1~NETR23_1~M 5874.55003 -2765.35493 A 2.37619 2.37619 0 0 0 5872.86981 -2766.0509~~rep841~0","ARC~0.7874~1~NETR23_1~M 5872.86981 -2766.0509 A 2.37619 2.37619 0 0 0 5874.55003 -2766.74687~~rep842~0","ARC~1~1~LED1-1~M 5488.05272 -2729.24288 A 1.16908 1.16908 0 0 0 5487.7103 -2728.41622~~rep843~0","ARC~1~1~LED1-1~M 5487.7103 -2728.41622 A 1.16908 1.16908 0 0 0 5487.36788 -2729.24288~~rep844~0","ARC~1~1~VIN~M 5488.02803 -2733.22004 A 1.1854 1.1854 0 0 0 5486.84532 -2734.3256~~rep845~0","ARC~1~1~VIN~M 5487.0303 -2733.15269 A 1.25762 1.25762 0 0 0 5485.77554 -2734.3256~~rep846~0","ARC~3.1496~1~AGND~M 5725.52657 -2794.06268 A 3.18263 3.18263 0 0 0 5724.5944 -2791.81222~~rep847~0","ARC~3.1496~1~AGND~M 5724.5944 -2798.09878 A 3.18263 3.18263 0 0 0 5725.52657 -2795.84832~~rep848~0","ARC~1.1811~1~SCL~M 5850.68092 -2570.43543 A 1.90095 1.90095 0 0 0 5851.2377 -2571.7796~~rep849~0","ARC~1.1811~1~SCL~M 5851.2377 -2571.7796 A 1.90095 1.90095 0 0 0 5851.79448 -2570.43543~~rep850~0","ARC~0.7874~1~SDA~M 5850.54173 -2588.29112 A 2.37619 2.37619 0 0 0 5851.2377 -2589.97134~~rep851~0","ARC~0.7874~1~SDA~M 5851.2377 -2589.97134 A 2.37619 2.37619 0 0 0 5851.93367 -2588.29112~~rep852~0","ARC~1.1811~1~SDA~M 5850.68092 -2588.15193 A 1.90095 1.90095 0 0 0 5851.2377 -2589.4961~~rep853~0","ARC~1.1811~1~SDA~M 5851.2377 -2589.4961 A 1.90095 1.90095 0 0 0 5851.79448 -2588.15193~~rep854~0","ARC~1.1811~1~SDA~M 5860.68092 -2570.43543 A 1.90095 1.90095 0 0 0 5861.2377 -2571.7796~~rep855~0","ARC~1.1811~1~SDA~M 5861.2377 -2571.7796 A 1.90095 1.90095 0 0 0 5861.79448 -2570.43543~~rep856~0","ARC~1.1811~1~SCL~M 5859.53159 -2580.25909 A 3.13667 3.13667 0 0 0 5860.4503 -2582.47705~~rep857~0","ARC~0.7874~1~SCL~M 5860.54173 -2588.29112 A 2.37619 2.37619 0 0 0 5861.2377 -2589.97134~~rep858~0","ARC~0.7874~1~SCL~M 5861.2377 -2589.97134 A 2.37619 2.37619 0 0 0 5861.93367 -2588.29112~~rep859~0","ARC~0.7874~1~SCL~M 5860.54173 -2588.29112 A 2.37619 2.37619 0 0 0 5861.2377 -2589.97134~~rep860~0","ARC~0.7874~1~SCL~M 5861.2377 -2589.97134 A 2.37619 2.37619 0 0 0 5861.93367 -2588.29112~~rep861~0","ARC~1.1811~1~SCL~M 5860.68092 -2588.15193 A 1.90095 1.90095 0 0 0 5861.2377 -2589.4961~~rep862~0","ARC~1.1811~1~SCL~M 5861.2377 -2589.4961 A 1.90095 1.90095 0 0 0 5861.79448 -2588.15193~~rep863~0","ARC~1.9685~1~BAT+~M 5872.91776 -2583.35604 A 2.37565 2.37565 0 0 0 5871.23726 -2584.05185~~rep864~0","ARC~1.9685~1~BAT+~M 5876.27688 -2579.99693 A 7.1235 7.1235 0 0 0 5871.23781 -2582.08335~~rep865~0","ARC~1.9685~1~BAT+~M 5871.57865 -2582.6739 A 2.24901 2.24901 0 0 0 5872.94426 -2581.62602~~rep866~0","ARC~1~1~~M 5781.87771 -2619.93849 A 3.54527 3.54527 0 0 0 5782.9161 -2622.44537~~rep867~0","ARC~1~1~~M 5782.9161 -2622.44537 A 3.54527 3.54527 0 0 0 5783.95449 -2619.93849~~rep868~0","ARC~0.7874~1~~M 5756.21195 -2624.60755 A 3.8019 3.8019 0 0 0 5757.3255 -2627.2959~~rep869~0","ARC~0.7874~1~~M 5757.3255 -2627.2959 A 3.8019 3.8019 0 0 0 5758.43905 -2624.60755~~rep870~0","ARC~0.7874~1~GPS_TX_READY~M 5798.92547 -2628.3411 A 1.77145 1.77145 0 0 0 5799.6341 -2629.7583~~rep871~0","ARC~0.7874~1~GPS_TX_READY~M 5799.6341 -2629.7583 A 1.77145 1.77145 0 0 0 5800.34273 -2628.3411~~rep872~0","ARC~0.7874~1~GPS_TIMEPULSE~M 5795.53124 -2624.68806 A 2.85143 2.85143 0 0 0 5796.3664 -2626.70433~~rep873~0","ARC~0.7874~1~GPS_TIMEPULSE~M 5796.3664 -2626.70433 A 2.85143 2.85143 0 0 0 5797.20156 -2624.68806~~rep874~0","ARC~1~1~U1-10~M 5630.63689 -2812.87711 A 3.07003 3.07003 0 0 0 5629.7377 -2810.70627~~rep875~0","ARC~1~1~U1-10~M 5629.7377 -2810.70627 A 3.07003 3.07003 0 0 0 5628.83851 -2812.87711~~rep876~0","ARC~1~1~RHPOUT~M 5628.67362 -2820.40281 A 1.53893 1.53893 0 0 0 5627.38588 -2821.0991~~rep877~0","ARC~1~1~RHPOUT~M 5627.38588 -2821.0991 A 1.53893 1.53893 0 0 0 5628.67362 -2821.79539~~rep878~0","ARC~1.1811~1~GND~M 5543.52188 -2680.70094 A 6.2992 6.2992 0 0 0 5552.71121 -2672.09239~~rep879~0","ARC~1.1811~1~SCL~M 5851.2378 -2571.7796 A 1.9009 1.9009 0 0 0 5851.79456 -2570.43546~~rep880~0","ARC~1.1811~1~SCL~M 5850.68094 -2570.43546 A 1.9009 1.9009 0 0 0 5851.2377 -2571.7796~~rep881~0","ARC~1.1811~1~SDA~M 5851.2378 -2589.4961 A 1.9009 1.9009 0 0 0 5851.79456 -2588.15196~~rep882~0","ARC~1.1811~1~SDA~M 5850.68094 -2588.15196 A 1.9009 1.9009 0 0 0 5851.2377 -2589.4961~~rep883~0","ARC~0.7874~1~SDA~M 5851.2378 -2589.9714 A 2.3761 2.3761 0 0 0 5851.93374 -2588.29124~~rep884~0","ARC~0.7874~1~SDA~M 5850.54176 -2588.29124 A 2.3761 2.3761 0 0 0 5851.2377 -2589.9714~~rep885~0","ARC~1.1811~1~SDA~M 5861.2378 -2571.7796 A 1.9009 1.9009 0 0 0 5861.79456 -2570.43546~~rep886~0","ARC~1.1811~1~SDA~M 5860.68094 -2570.43546 A 1.9009 1.9009 0 0 0 5861.2377 -2571.7796~~rep887~0","ARC~1.1811~1~SCL~M 5861.2378 -2589.4961 A 1.9009 1.9009 0 0 0 5861.79456 -2588.15196~~rep888~0","ARC~1.1811~1~SCL~M 5860.68094 -2588.15196 A 1.9009 1.9009 0 0 0 5861.2377 -2589.4961~~rep889~0","ARC~0.7874~1~SCL~M 5861.2378 -2589.9714 A 2.3761 2.3761 0 0 0 5861.93374 -2588.29124~~rep890~0","ARC~0.7874~1~SCL~M 5860.54176 -2588.29124 A 2.3761 2.3761 0 0 0 5861.2377 -2589.9714~~rep891~0","ARC~0.7874~1~SCL~M 5861.2378 -2589.9714 A 2.3761 2.3761 0 0 0 5861.93374 -2588.29124~~rep892~0","ARC~0.7874~1~SCL~M 5860.54176 -2588.29124 A 2.3761 2.3761 0 0 0 5861.2377 -2589.9714~~rep893~0","ARC~1.9685~1~BAT+~M 5876.27831 -2579.99541 A 7.1285 7.1285 0 0 0 5871.2377 -2582.0833~~rep894~0","ARC~1.9685~1~BAT+~M 5872.91793 -2583.35583 A 2.3762 2.3762 0 0 0 5871.2377 -2584.0518~~rep895~0","ARC~1~1~GND~M 5500.0332 -2751.5722 A 1.1496 1.1496 0 0 0 5500.36991 -2750.75931~~rep896~0","ARC~1~1~GND~M 5499.685 -2750.7593 A 1.1885 1.1885 0 0 0 5500.0331 -2751.5997~~rep897~0","ARC~1~1~U6-6~M 5500.56675 -2746.47445 A 1.4379 1.4379 0 0 0 5500.1456 -2745.4577~~rep898~0","ARC~0.7874~1~VBUS~M 5478.15547 -2706.36447 A 4.2216 4.2216 0 0 0 5473.95998 -2705.30522~~rep899~0","ARC~0.7874~1~VBUS~M 5478.38118 -2707.11884 A 3.5101 3.5101 0 0 0 5474.89278 -2706.23812~~rep900~0","ARC~0.7874~1~VBUS~M 5478.60698 -2707.87321 A 2.7986 2.7986 0 0 0 5475.82569 -2707.17101~~rep901~0","ARC~1.1811~1~NETC1_1~M 5510.32627 -2592.73933 A 6.468 6.468 0 0 0 5512.2207 -2597.3129~~rep902~0","ARC~1.1811~1~NETC1_1~M 5512.34262 -2594.75558 A 3.6166 3.6166 0 0 0 5513.4019 -2597.3129~~rep903~0","ARC~1.1811~1~NETC1_1~M 5517.3258 -2597.4309 A 3.2546 3.2546 0 0 0 5515.02445 -2596.47765~~rep904~0","ARC~1.1811~1~NETC1_1~M 5515.02446 -2598.14806 A 2.4482 2.4482 0 0 0 5516.7556 -2597.431~~rep905~0","ARC~0.7874~1~U6-14~M 5496.1692 -2723.4568 A 1.4257 1.4257 0 0 0 5496.58678 -2722.44868~~rep906~0","ARC~0.7874~1~U6-14~M 5495.75162 -2722.44868 A 1.4257 1.4257 0 0 0 5496.1692 -2723.4568~~rep907~0","ARC~0.7874~1~U6-15~M 5501.1692 -2723.4962 A 1.4257 1.4257 0 0 0 5501.58678 -2722.48808~~rep908~0","ARC~0.7874~1~U6-15~M 5500.75162 -2722.48808 A 1.4257 1.4257 0 0 0 5501.1692 -2723.4962~~rep909~0","ARC~1~1~LED1-1~M 5487.7102 -2728.4162 A 1.169 1.169 0 0 0 5487.36781 -2729.24281~~rep910~0","ARC~1~1~LED1-1~M 5488.05279 -2729.24281 A 1.169 1.169 0 0 0 5487.7104 -2728.4162~~rep911~0","ARC~1~1~VIN~M 5487.03034 -2733.1526 A 1.2576 1.2576 0 0 0 5485.7756 -2734.3255~~rep912~0","ARC~1~1~VIN~M 5488.02801 -2733.22004 A 1.1854 1.1854 0 0 0 5486.8453 -2734.3256~~rep913~0","ARC~1~1~LED2-1~M 5477.0584 -2746.0186 A 1.169 1.169 0 0 0 5477.88501 -2746.36099~~rep914~0","ARC~1~1~LED2-1~M 5477.88501 -2745.67601 A 1.169 1.169 0 0 0 5477.0584 -2746.0184~~rep915~0","ARC~1~1~LED2-1~M 5477.0584 -2746.0186 A 1.169 1.169 0 0 0 5477.88501 -2746.36099~~rep916~0","ARC~1~1~LED2-1~M 5477.88501 -2745.67601 A 1.169 1.169 0 0 0 5477.0584 -2746.0184~~rep917~0","ARC~1~1~VIN~M 5481.8274 -2744.6525 A 1.169 1.169 0 0 0 5481.48501 -2745.47911~~rep918~0","ARC~1~1~VIN~M 5482.16989 -2745.47911 A 1.169 1.169 0 0 0 5481.8275 -2744.6525~~rep919~0","ARC~1~1~VIN~M 5478.74606 -2739.57503 A 8.2769 8.2769 0 0 0 5481.8274 -2746.0181~~rep920~0","ARC~1~1~VIN~M 5479.3738 -2738.79663 A 6.5907 6.5907 0 0 0 5481.8274 -2743.9271~~rep921~0","ARC~1~1~VIN~M 5480.00151 -2738.01816 A 4.9046 4.9046 0 0 0 5481.8274 -2741.8361~~rep922~0","ARC~1~1~VIN~M 5480.62925 -2737.23977 A 3.2184 3.2184 0 0 0 5481.8274 -2739.7451~~rep923~0","ARC~1~1~VIN~M 5483.0691 -2736.294 A 2.5982 2.5982 0 0 0 5481.2319 -2735.533~~rep924~0","ARC~1~1~VIN~M 5481.23182 -2738.16662 A 6.3932 6.3932 0 0 0 5485.7525 -2736.2941~~rep925~0","ARC~1~1~VIN~M 5480.52472 -2737.45952 A 3.979 3.979 0 0 0 5483.3383 -2736.2941~~rep926~0","ARC~1~1~U6-4~M 5510.9833 -2744.8888 A 1.169 1.169 0 0 0 5510.64091 -2745.71541~~rep927~0","ARC~1~1~U6-4~M 5511.32579 -2745.71541 A 1.169 1.169 0 0 0 5510.9834 -2744.8888~~rep928~0","ARC~1~1~BAT+~M 5518.689 -2739.2468 A 2.5911 2.5911 0 0 0 5520.79635 -2740.3303~~rep929~0","ARC~1~1~BAT+~M 5520.79635 -2738.1633 A 2.5911 2.5911 0 0 0 5518.689 -2739.2468~~rep930~0","ARC~1~1~U6-16~M 5519.5387 -2725.6642 A 1.169 1.169 0 0 0 5520.36531 -2726.00659~~rep931~0","ARC~1~1~U6-16~M 5520.36531 -2725.32171 A 1.169 1.169 0 0 0 5519.5387 -2725.6641~~rep932~0","ARC~0.7874~1~U6-16~M 5519.2821 -2725.6642 A 1.4257 1.4257 0 0 0 5520.29022 -2726.08178~~rep933~0","ARC~0.7874~1~U6-16~M 5520.29022 -2725.24652 A 1.4257 1.4257 0 0 0 5519.2821 -2725.6641~~rep934~0","ARC~1~1~U6-12~M 5480.8489 -2717.3814 A 1.9723 1.9723 0 0 0 5482.24353 -2717.95907~~rep935~0","ARC~0.7874~1~U6-1~M 5519.597 -2731.0972 A 1.4257 1.4257 0 0 0 5520.60512 -2731.51478~~rep936~0","ARC~0.7874~1~U6-1~M 5520.60512 -2730.67962 A 1.4257 1.4257 0 0 0 5519.597 -2731.0972~~rep937~0","ARC~1.1811~1~NETK2_1~M 5674.7691 -2554.0268 A 6.8049 6.8049 0 0 0 5669.95731 -2552.03369~~rep938~0","ARC~1.1811~1~NETK2_1~M 5671.9177 -2554.0268 A 3.9535 3.9535 0 0 0 5669.12215 -2552.86885~~rep939~0","ARC~1.1811~1~NETK2_3~M 5661.7993 -2550.0174 A 2.8515 2.8515 0 0 0 5660.96411 -2552.03371~~rep940~0","ARC~1.1811~1~NETK2_3~M 5662.63453 -2552.03367 A 2.8513 2.8513 0 0 0 5661.7994 -2550.0175~~rep941~0","ARC~1.9685~1~VBAT~M 5814.82014 -2578.04565 A 12.4071 12.4071 0 0 0 5808.2051 -2567.0735~~rep942~0","ARC~1.9685~1~VBAT~M 5813.90118 -2579.7865 A 10.6835 10.6835 0 0 0 5808.2051 -2570.3386~~rep943~0","ARC~1.9685~1~VBAT~M 5812.98221 -2581.52734 A 8.9599 8.9599 0 0 0 5808.2051 -2573.6037~~rep944~0","ARC~1.9685~1~VBAT~M 5812.06325 -2583.26818 A 7.2363 7.2363 0 0 0 5808.2051 -2576.8688~~rep945~0","ARC~1~1~+3V3~M 5764.6893 -2623.8373 A 1.6443 1.6443 0 0 0 5764.2077 -2625~~rep946~0","ARC~1~1~+3V3~M 5765.90975 -2624.17975 A 1.4379 1.4379 0 0 0 5766.9265 -2623.7586~~rep947~0","ARC~1~1~NETK2_1~M 5583.2499 -2820.5763 A 1.3035 1.3035 0 0 0 5582.32819 -2820.19451~~rep948~0","ARC~1~1~NETK2_1~M 5582.32823 -2820.87933 A 1.0346 1.0346 0 0 0 5583.0598 -2820.5763~~rep949~0","ARC~1~1~NETK2_1~M 5580.518 -2820.5763 A 1.0346 1.0346 0 0 0 5581.24957 -2820.87933~~rep950~0","ARC~1~1~NETK2_1~M 5581.24961 -2820.19451 A 1.3035 1.3035 0 0 0 5580.3279 -2820.5763~~rep951~0","ARC~1~1~MICIN~M 5581.7888 -2815.7678 A 1.169 1.169 0 0 0 5581.44641 -2816.59441~~rep952~0","ARC~1~1~MICIN~M 5582.13139 -2816.59441 A 1.169 1.169 0 0 0 5581.789 -2815.7678~~rep953~0","ARC~0.7874~1~SD_CMD~M 5872.8698 -2770.376 A 2.3761 2.3761 0 0 0 5874.54996 -2771.07194~~rep954~0","ARC~0.7874~1~SD_CMD~M 5874.54996 -2769.67986 A 2.3761 2.3761 0 0 0 5872.8698 -2770.3758~~rep955~0","ARC~0.7874~1~SD_DAT3~M 5872.8698 -2774.701 A 2.3761 2.3761 0 0 0 5874.54996 -2775.39694~~rep956~0","ARC~0.7874~1~SD_DAT3~M 5874.54996 -2774.00486 A 2.3761 2.3761 0 0 0 5872.8698 -2774.7008~~rep957~0","ARC~0.7874~1~SD_DAT2~M 5872.7314 -2778.9686 A 2.5719 2.5719 0 0 0 5874.55001 -2779.72189~~rep958~0","ARC~0.7874~1~SD_DAT2~M 5874.54998 -2778.32988 A 2.1804 2.1804 0 0 0 5873.0082 -2778.9685~~rep959~0","ARC~0.7874~1~SD_CD~M 5872.8698 -2744.426 A 2.3761 2.3761 0 0 0 5874.54996 -2745.12194~~rep960~0","ARC~0.7874~1~SD_CD~M 5874.54996 -2743.72986 A 2.3761 2.3761 0 0 0 5872.8698 -2744.4258~~rep961~0","ARC~0.7874~1~SD_DAT1~M 5872.8698 -2748.751 A 2.3761 2.3761 0 0 0 5874.54996 -2749.44694~~rep962~0","ARC~0.7874~1~SD_DAT1~M 5874.54996 -2748.05486 A 2.3761 2.3761 0 0 0 5872.8698 -2748.7508~~rep963~0","ARC~0.7874~1~SD_DAT0~M 5872.8698 -2753.076 A 2.3761 2.3761 0 0 0 5874.54996 -2753.77194~~rep964~0","ARC~0.7874~1~SD_DAT0~M 5874.54996 -2752.37986 A 2.3761 2.3761 0 0 0 5872.8698 -2753.0758~~rep965~0","ARC~0.7874~1~NETJ2_5~M 5872.8698 -2761.726 A 2.3761 2.3761 0 0 0 5874.54996 -2762.42194~~rep966~0","ARC~0.7874~1~NETJ2_5~M 5874.54996 -2761.02986 A 2.3761 2.3761 0 0 0 5872.8698 -2761.7258~~rep967~0","ARC~0.7874~1~NETR23_1~M 5872.8698 -2766.051 A 2.3761 2.3761 0 0 0 5874.54996 -2766.74694~~rep968~0","ARC~0.7874~1~NETR23_1~M 5874.54996 -2765.35486 A 2.3761 2.3761 0 0 0 5872.8698 -2766.0508~~rep969~0","ARC~1~1~RHPOUT_SPK~M 5579.4781 -2801.5606 A 1.169 1.169 0 0 0 5580.30471 -2801.90299~~rep970~0","ARC~1~1~RHPOUT_SPK~M 5580.30471 -2801.21801 A 1.169 1.169 0 0 0 5579.4781 -2801.5604~~rep971~0","ARC~1~1~H1_CPLD_TDI~M 5673.197 -2697.9101 A 3.4454 3.4454 0 0 0 5675.63327 -2698.91923~~rep972~0","ARC~1~1~H1_CPLD_TDI~M 5675.63317 -2696.84247 A 3.6451 3.6451 0 0 0 5673.0557 -2697.9101~~rep973~0","ARC~0.7874~1~H1_CPLD_TCK~M 5672.8697 -2687.8858 A 3.8019 3.8019 0 0 0 5675.55805 -2688.99935~~rep974~0","ARC~0.7874~1~H1_CPLD_TCK~M 5675.55805 -2686.77225 A 3.8019 3.8019 0 0 0 5672.8697 -2687.8858~~rep975~0","ARC~0.7874~1~SD_CLK~M 5672.8697 -2657.9008 A 3.8019 3.8019 0 0 0 5675.55805 -2659.01435~~rep976~0","ARC~0.7874~1~SD_CLK~M 5675.55805 -2656.78725 A 3.8019 3.8019 0 0 0 5672.8697 -2657.9008~~rep977~0","ARC~0.7874~1~PP_CPLD_TDO~M 5709.28378 -2651.72432 A 3.1161 3.1161 0 0 0 5708.56162 -2648.44803~~rep978~0","ARC~0.7874~1~PP_CPLD_TDO~M 5708.41218 -2650.85272 A 2.5449 2.5449 0 0 0 5707.82239 -2648.17699~~rep979~0","ARC~0.7874~1~PP_CPLD_TDO~M 5707.54051 -2649.98109 A 1.9738 1.9738 0 0 0 5707.08308 -2647.90582~~rep980~0","ARC~0.7874~1~SD_CMD~M 5672.8697 -2647.9058 A 3.8019 3.8019 0 0 0 5675.55805 -2649.01935~~rep981~0","ARC~0.7874~1~SD_CMD~M 5675.55805 -2646.79225 A 3.8019 3.8019 0 0 0 5672.8697 -2647.9058~~rep982~0","ARC~0.7874~1~PP_CPLD_TMS~M 5709.28375 -2641.68495 A 3.0897 3.0897 0 0 0 5708.56368 -2638.44746~~rep983~0","ARC~0.7874~1~PP_CPLD_TMS~M 5708.40848 -2640.80962 A 2.5104 2.5104 0 0 0 5707.82341 -2638.17915~~rep984~0","ARC~0.7874~1~PP_CPLD_TMS~M 5707.53311 -2639.93429 A 1.9311 1.9311 0 0 0 5707.08305 -2637.91083~~rep985~0","ARC~0.7874~1~SD_DAT0~M 5672.8697 -2637.9108 A 3.8019 3.8019 0 0 0 5675.55805 -2639.02435~~rep986~0","ARC~0.7874~1~SD_DAT0~M 5675.55805 -2636.79725 A 3.8019 3.8019 0 0 0 5672.8697 -2637.9108~~rep987~0","ARC~0.7874~1~SD_DAT2~M 5672.8697 -2627.9158 A 3.8019 3.8019 0 0 0 5675.55805 -2629.02935~~rep988~0","ARC~0.7874~1~SD_DAT2~M 5675.55805 -2626.80225 A 3.8019 3.8019 0 0 0 5672.8697 -2627.9158~~rep989~0","ARC~0.7874~1~SD_DAT3~M 5710.8849 -2617.9208 A 3.8019 3.8019 0 0 0 5708.19655 -2616.80725~~rep990~0","ARC~0.7874~1~SD_DAT3~M 5708.19655 -2619.03435 A 3.8019 3.8019 0 0 0 5710.8849 -2617.9208~~rep991~0","ARC~0.7874~1~SD_CD~M 5672.8697 -2617.9208 A 3.8019 3.8019 0 0 0 5675.55805 -2619.03435~~rep992~0","ARC~0.7874~1~SD_CD~M 5675.55805 -2616.80725 A 3.8019 3.8019 0 0 0 5672.8697 -2617.9208~~rep993~0","ARC~1.9685~1~+3V3~M 5681.0022 -2605.5497 A 2.3761 2.3761 0 0 0 5680.30626 -2607.22986~~rep994~0","ARC~1.9685~1~+3V3~M 5681.69834 -2607.22986 A 2.3761 2.3761 0 0 0 5681.0024 -2605.5497~~rep995~0","ARC~1.9685~1~+3V3~M 5681.0023 -2605.5497 A 2.3761 2.3761 0 0 0 5680.30636 -2607.22986~~rep996~0","ARC~1.9685~1~+3V3~M 5681.69827 -2607.22983 A 2.3762 2.3762 0 0 0 5681.0023 -2605.5496~~rep997~0","ARC~3.937~1~VBUS~M 5489.6732 -2710.3813 A 3.6846 3.6846 0 0 0 5490.75239 -2707.77589~~rep998~0","ARC~1~1~VBUSCTRL~M 5482.8764 -2687.7859 A 3.5452 3.5452 0 0 0 5485.38323 -2688.82427~~rep999~0","ARC~1~1~VBUSCTRL~M 5485.38323 -2686.74743 A 3.5452 3.5452 0 0 0 5482.8764 -2687.7858~~rep1000~0","ARC~1.9685~1~+3V3~M 5497.4592 -2617.8208 A 2.3761 2.3761 0 0 0 5495.77904 -2617.12486~~rep1001~0","ARC~1.9685~1~+3V3~M 5495.77904 -2618.51684 A 2.3761 2.3761 0 0 0 5497.4592 -2617.8209~~rep1002~0","ARC~1.9685~1~+3V3~M 5484.0454 -2617.8209 A 2.3761 2.3761 0 0 0 5485.72556 -2618.51684~~rep1003~0","ARC~1.9685~1~+3V3~M 5485.72556 -2617.12486 A 2.3761 2.3761 0 0 0 5484.0454 -2617.8208~~rep1004~0","ARC~1.9685~1~VBAT~M 5495.77907 -2608.52187 A 3.0522 3.0522 0 0 0 5497.9373 -2607.6279~~rep1005~0","ARC~1.9685~1~LHPOUT~M 5508.9247 -2781.7759 A 5.2275 5.2275 0 0 0 5512.6211 -2783.307~~rep1006~0","ARC~1.9685~1~LHPOUT~M 5512.62117 -2780.24467 A 5.2276 5.2276 0 0 0 5508.9247 -2781.7758~~rep1007~0","ARC~1.9685~1~LHPOUT~M 5510.33 -2781.7758 A 5.2276 5.2276 0 0 0 5506.63353 -2780.24467~~rep1008~0","ARC~1.9685~1~LHPOUT~M 5506.6335 -2783.307 A 5.2275 5.2275 0 0 0 5510.3299 -2781.7759~~rep1009~0","ARC~1.1811~1~NETK2_3~M 5476.3559 -2761.7287 A 3.5931 3.5931 0 0 0 5478.16223 -2758.61136~~rep1010~0","ARC~1.1811~1~NETK2_3~M 5474.52414 -2758.65685 A 3.4917 3.4917 0 0 0 5476.3558 -2761.7287~~rep1011~0","ARC~1.1811~1~NETK2_3~M 5475.08565 -2757.61775 A 2.4213 2.4213 0 0 0 5476.3558 -2759.7479~~rep1012~0","ARC~1~1~+3V3~M 5774.56025 -2721.27955 A 2.0132 2.0132 0 0 0 5775.1499 -2722.7031~~rep1013~0","ARC~1~1~+3V3~M 5775.1499 -2718.7774 A 2.0132 2.0132 0 0 0 5774.56025 -2720.20095~~rep1014~0","ARC~1~1~+3V3~M 5618.2576 -2784.7496 A 1.169 1.169 0 0 0 5619.08421 -2785.09199~~rep1015~0","ARC~1~1~+3V3~M 5619.08421 -2784.40701 A 1.169 1.169 0 0 0 5618.2576 -2784.7494~~rep1016~0","ARC~1~1~+3V3~M 5618.2576 -2784.7496 A 1.169 1.169 0 0 0 5619.08421 -2785.09199~~rep1017~0","ARC~1~1~+3V3~M 5619.08421 -2784.40701 A 1.169 1.169 0 0 0 5618.2576 -2784.7494~~rep1018~0","ARC~1~1~+3V3~M 5618.9424 -2784.7495 A 1.6443 1.6443 0 0 0 5618.4608 -2785.9122~~rep1019~0","ARC~1.9685~1~+3V3~M 5526.0217 -2613.7774 A 3.5139 3.5139 0 0 0 5528.5064 -2612.7482~~rep1020~0","ARC~1.9685~1~+3V3~M 5522.4234 -2612.7482 A 3.5139 3.5139 0 0 0 5524.9081 -2613.7774~~rep1021~0","ARC~1~1~+3V3~M 5810.7431 -2651.912 A 1.169 1.169 0 0 0 5811.56971 -2652.25439~~rep1022~0","ARC~1~1~+3V3~M 5811.56971 -2651.56941 A 1.169 1.169 0 0 0 5810.7431 -2651.9118~~rep1023~0","ARC~0.7874~1~+3V3~M 5812.109 -2650.4862 A 1.4257 1.4257 0 0 0 5811.69142 -2651.49432~~rep1024~0","ARC~0.7874~1~+3V3~M 5812.52658 -2651.49432 A 1.4257 1.4257 0 0 0 5812.109 -2650.4862~~rep1025~0","ARC~1~1~U6-5~M 5505.0274 -2745.4116 A 1.169 1.169 0 0 0 5504.68501 -2746.23821~~rep1026~0","ARC~1~1~U6-5~M 5505.36989 -2746.23821 A 1.169 1.169 0 0 0 5505.0275 -2745.4116~~rep1027~0","ARC~1~1~CLKIN~M 5507.7206 -2560.3553 A 1.169 1.169 0 0 0 5506.89399 -2560.01291~~rep1028~0","ARC~1~1~CLKIN~M 5506.89399 -2560.69779 A 1.169 1.169 0 0 0 5507.7206 -2560.3554~~rep1029~0","ARC~1.1811~1~GND~M 5560.23716 -2818.18582 A 1.4652 1.4652 0 0 0 5558.8166 -2816.7213~~rep1030~0","ARC~1.1811~1~GND~M 5560.20119 -2819.36634 A 1.4281 1.4281 0 0 0 5558.8166 -2817.9389~~rep1031~0","ARC~1.1811~1~GND~M 5560.50354 -2818.30096 A 5.7599 5.7599 0 0 0 5558.8165 -2814.2281~~rep1032~0","ARC~1.1811~1~GND~M 5559.66845 -2819.13615 A 2.9084 2.9084 0 0 0 5558.8166 -2817.0796~~rep1033~0","ARC~1.1811~1~GND~M 5560.2251 -2818.1857 A 1.4257 1.4257 0 0 0 5559.21698 -2817.76812~~rep1034~0","ARC~1.1811~1~GND~M 5818.6248 -2629.9696 A 2.9198 2.9198 0 0 0 5819.47999 -2627.90499~~rep1035~0","ARC~1.1811~1~GND~M 5817.76951 -2627.90499 A 2.9198 2.9198 0 0 0 5818.6247 -2629.9696~~rep1036~0","ARC~1.1811~1~GND~M 5822.82281 -2622.41249 A 3.6932 3.6932 0 0 0 5821.7434 -2619.67063~~rep1037~0","ARC~1~1~H1_CPLD_TDI~M 5656.2147 -2802.91 A 1.169 1.169 0 0 0 5655.38809 -2802.56761~~rep1038~0","ARC~1~1~H1_CPLD_TDI~M 5655.38809 -2803.25259 A 1.169 1.169 0 0 0 5656.2147 -2802.9102~~rep1039~0","ARC~1~1~I2S0_MCLK~M 5608.3756 -2781.1889 A 1.6443 1.6443 0 0 0 5608.8572 -2780.0262~~rep1040~0","ARC~1~1~I2S0_MCLK~M 5608.3756 -2781.1889 A 1.6443 1.6443 0 0 0 5608.8572 -2780.0262~~rep1041~0","ARC~1~1~I2S0_MCLK_R~M 5607.7523 -2785.8183 A 0.9715 0.9715 0 0 0 5608.03685 -2785.13135~~rep1042~0","ARC~1~1~I2S0_MCLK_R~M 5607.35203 -2785.13127 A 1.3666 1.3666 0 0 0 5607.7523 -2786.0976~~rep1043~0","ARC~1~1~I2S0_RX_SDA~M 5650.2765 -2802.9102 A 1.169 1.169 0 0 0 5651.10311 -2803.25259~~rep1044~0","ARC~1~1~I2S0_RX_SDA~M 5651.10311 -2802.56761 A 1.169 1.169 0 0 0 5650.2765 -2802.91~~rep1045~0","ARC~1~1~LCD_BACKLIGHT~M 5806.0755 -2620.3864 A 1.6443 1.6443 0 0 0 5807.2382 -2619.9048~~rep1046~0","ARC~1~1~MICBIAS~M 5588.1942 -2816.9762 A 1.169 1.169 0 0 0 5587.36759 -2816.63381~~rep1047~0","ARC~1~1~MICBIAS~M 5587.36759 -2817.31869 A 1.169 1.169 0 0 0 5588.1942 -2816.9763~~rep1048~0","ARC~1~1~MICBIAS~M 5592.24955 -2817.47615 A 1.7066 1.7066 0 0 0 5593.4563 -2816.9763~~rep1049~0","ARC~1~1~MICBIAS~M 5589.9641 -2816.9763 A 1.7066 1.7066 0 0 0 5591.17085 -2817.47615~~rep1050~0","ARC~0.7874~1~NETJ2_5~M 5859.9477 -2761.7259 A 2.7591 2.7591 0 0 0 5857.99672 -2760.91778~~rep1051~0","ARC~1~1~NETK2_1~M 5575.3836 -2820.537 A 1.169 1.169 0 0 0 5576.21021 -2820.87939~~rep1052~0","ARC~1~1~NETK2_1~M 5576.21021 -2820.19441 A 1.169 1.169 0 0 0 5575.3836 -2820.5368~~rep1053~0","ARC~1~1~NETK2_1~M 5578.2105 -2820.5763 A 1.3035 1.3035 0 0 0 5577.28879 -2820.19451~~rep1054~0","ARC~1~1~NETK2_1~M 5577.28883 -2820.87933 A 1.0346 1.0346 0 0 0 5578.0204 -2820.5763~~rep1055~0","ARC~1~1~NETK2_1~M 5585.4624 -2820.5763 A 1.169 1.169 0 0 0 5586.28901 -2820.91869~~rep1056~0","ARC~1~1~NETK2_1~M 5586.28901 -2820.23381 A 1.169 1.169 0 0 0 5585.4624 -2820.5762~~rep1057~0","ARC~1~1~NETR2_2~M 5506.3548 -2565.1244 A 1.169 1.169 0 0 0 5506.69719 -2564.29779~~rep1058~0","ARC~1~1~NETR2_2~M 5506.01221 -2564.29779 A 1.169 1.169 0 0 0 5506.3546 -2565.1244~~rep1059~0","ARC~1~1~NETR7_1~M 5811.1247 -2622.5112 A 3.1384 3.1384 0 0 0 5810.20548 -2624.73038~~rep1060~0","ARC~1~1~NETR7_1~M 5812.04402 -2624.73038 A 3.1384 3.1384 0 0 0 5811.1248 -2622.5112~~rep1061~0","ARC~1~1~NETR7_1~M 5810.49578 -2619.76302 A 2.1476 2.1476 0 0 0 5811.1248 -2621.2816~~rep1062~0","ARC~1~1~NETR7_1~M 5812.0072 -2619.2236 A 1.169 1.169 0 0 0 5811.18059 -2618.88121~~rep1063~0","ARC~1~1~NETR7_1~M 5811.18059 -2619.56619 A 1.169 1.169 0 0 0 5812.0072 -2619.2238~~rep1064~0","ARC~1~1~NETR7_1~M 5816.4858 -2619.2238 A 1.3034 1.3034 0 0 0 5817.40744 -2619.60556~~rep1065~0","ARC~1~1~NETR7_1~M 5817.40754 -2618.92064 A 1.0347 1.0347 0 0 0 5816.6759 -2619.2237~~rep1066~0","ARC~0.7874~1~NETR9_1~M 5813.6727 -2655.5118 A 1.2865 1.2865 0 0 0 5812.73591 -2655.10707~~rep1067~0","ARC~0.7874~1~NETR9_1~M 5812.73591 -2655.91673 A 1.2865 1.2865 0 0 0 5813.6727 -2655.512~~rep1068~0","ARC~0.7874~1~NETR9_1~M 5812.47759 -2656.07697 A 2.3525 2.3525 0 0 0 5814.82517 -2656.66433~~rep1069~0","ARC~0.7874~1~NETR9_1~M 5812.24861 -2655.32368 A 1.6516 1.6516 0 0 0 5813.89676 -2655.73604~~rep1070~0","ARC~0.7874~1~NETR10_1~M 5811.54081 -2705.25231 A 3.8984 3.8984 0 0 0 5814.2974 -2704.1105~~rep1071~0","ARC~0.7874~1~NETR10_1~M 5810.98402 -2704.69562 A 1.9974 1.9974 0 0 0 5812.3964 -2704.1106~~rep1072~0","ARC~0.7874~1~NETR23_1~M 5857.4598 -2773.2268 A 1.4257 1.4257 0 0 0 5857.87738 -2772.21868~~rep1073~0","ARC~0.7874~1~NETR23_1~M 5857.04222 -2772.21868 A 1.4257 1.4257 0 0 0 5857.4598 -2773.2268~~rep1074~0","ARC~0.7874~1~NETR23_1~M 5857.4598 -2769.9817 A 1.4257 1.4257 0 0 0 5857.04222 -2770.98982~~rep1075~0","ARC~0.7874~1~NETR23_1~M 5857.87738 -2770.98982 A 1.4257 1.4257 0 0 0 5857.4598 -2769.9817~~rep1076~0","ARC~0.7874~1~NETR23_1~M 5857.4599 -2767.9934 A 1.6985 1.6985 0 0 0 5857.95738 -2766.79238~~rep1077~0","ARC~0.7874~1~NETR23_1~M 5857.12205 -2766.79235 A 1.1528 1.1528 0 0 0 5857.4597 -2767.6075~~rep1078~0","ARC~0.7874~1~NETR23_1~M 5859.1341 -2766.0509 A 1.6643 1.6643 0 0 0 5857.95726 -2765.56344~~rep1079~0","ARC~0.7874~1~NETR23_1~M 5857.95729 -2766.39859 A 1.1871 1.1871 0 0 0 5858.7967 -2766.0509~~rep1080~0","ARC~1~1~VIN~M 5505.0275 -2751.3498 A 1.169 1.169 0 0 0 5505.36989 -2750.52319~~rep1081~0","ARC~1~1~VIN~M 5504.68501 -2750.52319 A 1.169 1.169 0 0 0 5505.0274 -2751.3498~~rep1082~0","ARC~1~1~VIN~M 5505.0275 -2751.3498 A 1.169 1.169 0 0 0 5505.36989 -2750.52319~~rep1083~0","ARC~1~1~VIN~M 5504.68501 -2750.52319 A 1.169 1.169 0 0 0 5505.0274 -2751.3498~~rep1084~0","ARC~1~1~NETU1_16~M 5614.3074 -2821.4535 A 1.1627 1.1627 0 0 0 5615.12955 -2821.79405~~rep1085~0","ARC~1~1~NETU1_16~M 5615.12953 -2821.10913 A 1.1754 1.1754 0 0 0 5614.2984 -2821.4534~~rep1086~0","ARC~0.7874~1~NETX1_1~M 5492.4654 -2588.0105 A 1.4257 1.4257 0 0 0 5491.45728 -2587.59292~~rep1087~0","ARC~0.7874~1~NETX1_1~M 5491.45728 -2588.42808 A 1.4257 1.4257 0 0 0 5492.4654 -2588.0105~~rep1088~0","ARC~0.7874~1~REF_EN~M 5490.8428 -2582.9848 A 1.4257 1.4257 0 0 0 5490.42522 -2583.99292~~rep1089~0","ARC~0.7874~1~REF_EN~M 5491.26048 -2583.99292 A 1.4257 1.4257 0 0 0 5490.8429 -2582.9848~~rep1090~0","ARC~0.7874~1~SD_CLK~M 5852.5534 -2761.1385 A 1.4257 1.4257 0 0 0 5853.56152 -2761.55608~~rep1091~0","ARC~0.7874~1~SD_CLK~M 5853.56152 -2760.72092 A 1.4257 1.4257 0 0 0 5852.5534 -2761.1385~~rep1092~0","ARC~0.7874~1~VBUS~M 5477.8042 -2691.3637 A 1.4257 1.4257 0 0 0 5478.81232 -2691.78128~~rep1093~0","ARC~0.7874~1~VBUS~M 5478.81232 -2690.94602 A 1.4257 1.4257 0 0 0 5477.8042 -2691.3636~~rep1094~0","ARC~1~1~VBUSCTRL~M 5480.8463 -2687.7858 A 1.2448 1.2448 0 0 0 5479.96609 -2687.42121~~rep1095~0","ARC~1~1~VBUSCTRL~M 5479.96609 -2688.10609 A 1.0932 1.0932 0 0 0 5480.7391 -2687.7859~~rep1096~0","ARC~1~1~I2S0_WS~M 5656.2147 -2807.9494 A 1.169 1.169 0 0 0 5655.38809 -2807.60701~~rep1097~0","ARC~1~1~I2S0_WS~M 5655.38809 -2808.29189 A 1.169 1.169 0 0 0 5656.2147 -2807.9495~~rep1098~0","ARC~1~1~NETR20_1~M 5650.2765 -2807.9495 A 1.169 1.169 0 0 0 5651.10311 -2808.29189~~rep1099~0","ARC~1~1~NETR20_1~M 5651.10311 -2807.60701 A 1.169 1.169 0 0 0 5650.2765 -2807.9494~~rep1100~0","ARC~1~1~NETU1_21~M 5591.2541 -2803.225 A 1.169 1.169 0 0 0 5590.42749 -2802.88261~~rep1101~0","ARC~1~1~NETU1_21~M 5590.42749 -2803.56759 A 1.169 1.169 0 0 0 5591.2541 -2803.2252~~rep1102~0","ARC~1.9685~1~+3V3~M 5480.2024 -2617.8208 A 2.0149 2.0149 0 0 0 5478.77765 -2617.23065~~rep1103~0","ARC~1.9685~1~+3V3~M 5478.77767 -2618.34427 A 1.7869 1.7869 0 0 0 5480.0412 -2617.8209~~rep1104~0","ARC~1.9685~1~+3V3~M 5776.6178 -2728.2992 A 1.9009 1.9009 0 0 0 5775.27366 -2727.74244~~rep1105~0","ARC~1.9685~1~+3V3~M 5775.27366 -2728.85606 A 1.9009 1.9009 0 0 0 5776.6178 -2728.2993~~rep1106~0","ARC~1.9685~1~+3V3~M 5659.1511 -2783.7257 A 1.9009 1.9009 0 0 0 5658.59434 -2785.06984~~rep1107~0","ARC~1.9685~1~+3V3~M 5659.70796 -2785.06984 A 1.9009 1.9009 0 0 0 5659.1512 -2783.7257~~rep1108~0","ARC~1.9685~1~+3V3~M 5659.2692 -2783.4405 A 2.3042 2.3042 0 0 0 5658.59432 -2785.06982~~rep1109~0","ARC~1~1~NETU1_16~M 5609.7208 -2816.977 A 2.9989 2.9989 0 0 0 5608.84244 -2819.09754~~rep1110~0","ARC~1~1~NETU1_16~M 5610.64091 -2819.09749 A 3.1411 3.1411 0 0 0 5609.7209 -2816.8764~~rep1111~0","ARC~1~1~NETU1_16~M 5611.55035 -2821.45325 A 1.8459 1.8459 0 0 0 5611.01188 -2820.05841~~rep1112~0","ARC~1~1~NETU1_16~M 5610.21263 -2821.17807 A 1.2415 1.2415 0 0 0 5611.55027 -2821.45343~~rep1113~0","ARC~1~1~+3V3~M 5769.7525 -2623.7586 A 1.169 1.169 0 0 0 5770.57911 -2624.10099~~rep1114~0","ARC~1~1~+3V3~M 5770.57911 -2623.41611 A 1.169 1.169 0 0 0 5769.7525 -2623.7585~~rep1115~0","ARC~1~1~+3V3~M 5771.1051 -2624.9599 A 1.2147 1.2147 0 0 0 5771.46088 -2624.10098~~rep1116~0","ARC~1~1~+3V3~M 5770.77606 -2624.10094 A 1.1234 1.1234 0 0 0 5771.1051 -2624.8953~~rep1117~0","ARC~1~1~NETR19_1~M 5650.2765 -2797.9495 A 1.169 1.169 0 0 0 5651.10311 -2798.29189~~rep1118~0","ARC~1~1~NETR19_1~M 5651.10311 -2797.60701 A 1.169 1.169 0 0 0 5650.2765 -2797.9494~~rep1119~0","ARC~1~1~I2S0_TX_SDA~M 5656.2147 -2797.9494 A 1.169 1.169 0 0 0 5655.38809 -2797.60701~~rep1120~0","ARC~1~1~I2S0_TX_SDA~M 5655.38809 -2798.29189 A 1.169 1.169 0 0 0 5656.2147 -2797.9495~~rep1121~0","ARC~1~1~NETR18_1~M 5650.3159 -2792.9102 A 1.169 1.169 0 0 0 5651.14251 -2793.25259~~rep1122~0","ARC~1~1~NETR18_1~M 5651.14251 -2792.56761 A 1.169 1.169 0 0 0 5650.3159 -2792.91~~rep1123~0","ARC~1~1~I2S0_SCK~M 5656.2541 -2792.91 A 1.169 1.169 0 0 0 5655.42749 -2792.56761~~rep1124~0","ARC~1~1~I2S0_SCK~M 5655.42749 -2793.25259 A 1.169 1.169 0 0 0 5656.2541 -2792.9102~~rep1125~0","ARC~0.7874~1~RESET#~M 5527.83244 -2589.42372 A 1.986 1.986 0 0 0 5530.41601 -2589.61739~~rep1126~0","ARC~0.7874~1~RESET#~M 5527.36489 -2588.79015 A 1.848 1.848 0 0 0 5529.76893 -2588.97037~~rep1127~0","ARC~0.7874~1~RESET#~M 5526.89737 -2588.15661 A 1.7101 1.7101 0 0 0 5529.12202 -2588.32338~~rep1128~0","ARC~0.7874~1~MCU_LCD_RD~M 5537.77604 -2589.46011 A 2.6093 2.6093 0 0 0 5541.08525 -2589.77485~~rep1129~0","ARC~0.7874~1~MCU_LCD_RD~M 5537.33417 -2588.8083 A 2.4264 2.4264 0 0 0 5540.41142 -2589.10098~~rep1130~0","ARC~0.7874~1~MCU_LCD_RD~M 5536.8923 -2588.15659 A 2.2435 2.2435 0 0 0 5539.73759 -2588.42721~~rep1131~0","ARC~0.7874~1~MCU_LCD_RD~M 5536.45053 -2587.50478 A 2.0606 2.0606 0 0 0 5539.06386 -2587.75334~~rep1132~0","ARC~0.7874~1~MCU_LCD_TE~M 5540.49312 -2555.60332 A 4.6542 4.6542 0 0 0 5536.93719 -2556.95895~~rep1133~0","ARC~0.7874~1~MCU_LCD_TE~M 5539.25027 -2556.84617 A 3.0862 3.0862 0 0 0 5536.89234 -2557.7451~~rep1134~0","ARC~1.9685~1~+3V3~M 5566.8774 -2590.5327 A 2.3761 2.3761 0 0 0 5567.57334 -2588.85254~~rep1135~0","ARC~1.9685~1~+3V3~M 5566.18126 -2588.85254 A 2.3761 2.3761 0 0 0 5566.8772 -2590.5327~~rep1136~0","ARC~1~1~I2S0_TX_SDA~M 5576.8724 -2591.7018 A 3.5452 3.5452 0 0 0 5577.91077 -2589.19497~~rep1137~0","ARC~1~1~I2S0_TX_SDA~M 5575.83393 -2589.19497 A 3.5452 3.5452 0 0 0 5576.8723 -2591.7018~~rep1138~0","ARC~1~1~I2S0_MCLK~M 5596.8624 -2591.7018 A 3.5452 3.5452 0 0 0 5597.90077 -2589.19497~~rep1139~0","ARC~1~1~I2S0_MCLK~M 5595.82393 -2589.19497 A 3.5452 3.5452 0 0 0 5596.8623 -2591.7018~~rep1140~0","ARC~1~1~I2S0_WS~M 5586.7484 -2591.9889 A 3.9513 3.9513 0 0 0 5587.90571 -2589.19491~~rep1141~0","ARC~1~1~I2S0_WS~M 5585.82895 -2589.19495 A 3.1392 3.1392 0 0 0 5586.7484 -2591.4147~~rep1142~0","ARC~0.7874~1~MCU_ADDR~M 5606.8573 -2591.9584 A 3.8019 3.8019 0 0 0 5607.97085 -2589.27005~~rep1143~0","ARC~0.7874~1~MCU_ADDR~M 5605.74375 -2589.27005 A 3.8019 3.8019 0 0 0 5606.8573 -2591.9584~~rep1144~0","ARC~0.7874~1~MCU_LCD_WR~M 5616.9122 -2591.814 A 3.5976 3.5976 0 0 0 5617.96591 -2589.27011~~rep1145~0","ARC~0.7874~1~MCU_LCD_WR~M 5615.73881 -2589.27009 A 4.0062 4.0062 0 0 0 5616.9122 -2592.1029~~rep1146~0","ARC~0.7874~1~MCU_LCD_WR~M 5616.2955 -2588.7134 A 2.1052 2.1052 0 0 0 5616.9121 -2590.202~~rep1147~0","ARC~1~1~I2S0_SCK~M 5586.8674 -2569.0065 A 1.5672 1.5672 0 0 0 5587.62551 -2567.6643~~rep1148~0","ARC~1~1~I2S0_SCK~M 5586.10919 -2567.6643 A 1.5672 1.5672 0 0 0 5586.8673 -2569.0065~~rep1149~0","ARC~0.7874~1~MCU_IO_STBX~M 5610.1288 -2556.007 A 3.5006 3.5006 0 0 0 5607.0035 -2556.97142~~rep1150~0","ARC~0.7874~1~MCU_IO_STBX~M 5609.07505 -2557.06075 A 2.484 2.484 0 0 0 5606.85736 -2557.7451~~rep1151~0","ARC~0.7874~1~MCU_DIR~M 5620.46816 -2555.70706 A 4.3635 4.3635 0 0 0 5616.93341 -2556.96191~~rep1152~0","ARC~0.7874~1~MCU_DIR~M 5619.29848 -2556.87668 A 3.0196 3.0196 0 0 0 5616.85238 -2557.74505~~rep1153~0","ARC~0.7874~1~SCL~M 5645.9896 -2559.893 A 11.1351 11.1351 0 0 0 5638.1159 -2556.6316~~rep1154~0","ARC~0.7874~1~SCL~M 5644.0886 -2559.8929 A 9.2341 9.2341 0 0 0 5637.55911 -2557.18829~~rep1155~0","ARC~0.7874~1~SCL~M 5642.1877 -2559.893 A 7.3332 7.3332 0 0 0 5637.00234 -2557.74516~~rep1156~0","ARC~0.7874~1~SCL~M 5640.2867 -2559.8929 A 5.4322 5.4322 0 0 0 5636.44555 -2558.30185~~rep1157~0","ARC~0.7874~1~SCL~M 5638.3858 -2559.893 A 3.5313 3.5313 0 0 0 5635.88879 -2558.85871~~rep1158~0","ARC~1.9685~1~+3V3~M 5681.0024 -2597.9913 A 3.4583 3.4583 0 0 0 5682.01531 -2595.54591~~rep1159~0","ARC~1.9685~1~+3V3~M 5680.06644 -2595.54596 A 3.1949 3.1949 0 0 0 5681.0022 -2597.8051~~rep1160~0","ARC~1.9685~1~+3V3~M 5681.0024 -2597.9913 A 3.4583 3.4583 0 0 0 5682.01531 -2595.54591~~rep1161~0","ARC~1.9685~1~+3V3~M 5680.06654 -2595.54596 A 3.1949 3.1949 0 0 0 5681.0023 -2597.8051~~rep1162~0","ARC~1.1811~1~NETJ1_1~M 5526.9267 -2818.0958 A 1.9009 1.9009 0 0 0 5526.36994 -2819.43994~~rep1163~0","ARC~1.1811~1~NETJ1_1~M 5527.48356 -2819.43994 A 1.9009 1.9009 0 0 0 5526.9268 -2818.0958~~rep1164~0","ARC~1.1811~1~NETJ1_2~M 5535.7286 -2822.5558 A 4.5893 4.5893 0 0 0 5532.48347 -2821.21163~~rep1165~0","ARC~1.9685~1~VIN~M 5562.75831 -2806.59609 A 2.8761 2.8761 0 0 0 5563.6007 -2808.6298~~rep1166~0","ARC~1.1811~1~NETU5_2~M 5562.3452 -2789.4298 A 1.4713 1.4713 0 0 0 5563.38557 -2789.86073~~rep1167~0","ARC~1.1811~1~NETU5_2~M 5563.38547 -2788.99877 A 1.4713 1.4713 0 0 0 5562.3451 -2789.4297~~rep1168~0","ARC~1.1811~1~NETU5_2~M 5560.2879 -2789.4297 A 1.4713 1.4713 0 0 0 5559.24753 -2788.99877~~rep1169~0","ARC~1.1811~1~NETU5_2~M 5559.24743 -2789.86073 A 1.4713 1.4713 0 0 0 5560.2878 -2789.4298~~rep1170~0","ARC~1.1811~1~NETR12_2~M 5570.0673 -2789.3384 A 1.1595 1.1595 0 0 0 5569.24741 -2788.99879~~rep1171~0","ARC~1.1811~1~NETR12_2~M 5569.24746 -2789.86076 A 1.7831 1.7831 0 0 0 5570.5083 -2789.3385~~rep1172~0","ARC~1.1811~1~NETJ1_2~M 5568.8165 -2815.7011 A 1.4713 1.4713 0 0 0 5569.24743 -2814.66073~~rep1173~0","ARC~1.1811~1~NETJ1_2~M 5568.38547 -2814.66073 A 1.4713 1.4713 0 0 0 5568.8164 -2815.7011~~rep1174~0","ARC~1.1811~1~NETJ1_2~M 5568.8164 -2807.1584 A 1.4713 1.4713 0 0 0 5568.38547 -2808.19877~~rep1175~0","ARC~1.1811~1~NETJ1_2~M 5569.24743 -2808.19877 A 1.4713 1.4713 0 0 0 5568.8165 -2807.1584~~rep1176~0","ARC~1.1811~1~NETJ1_1~M 5553.8165 -2815.7011 A 1.4713 1.4713 0 0 0 5554.24743 -2814.66073~~rep1177~0","ARC~1.1811~1~NETJ1_1~M 5553.38547 -2814.66073 A 1.4713 1.4713 0 0 0 5553.8164 -2815.7011~~rep1178~0","ARC~1.1811~1~GND~M 5558.8165 -2815.7011 A 1.4713 1.4713 0 0 0 5559.24743 -2814.66073~~rep1179~0","ARC~1.1811~1~GND~M 5558.38547 -2814.66073 A 1.4713 1.4713 0 0 0 5558.8164 -2815.7011~~rep1180~0","ARC~1.1811~1~GND~M 5557.1607 -2806.1038 A 3.5723 3.5723 0 0 0 5558.207 -2808.6298~~rep1181~0","ARC~1.1811~1~NETR13_2~M 5580.8441 -2794.0627 A 1.0849 1.0849 0 0 0 5581.16186 -2793.29556~~rep1182~0","ARC~1.1811~1~NETR12_2~M 5579.3492 -2789.3385 A 1.2192 1.2192 0 0 0 5580.2113 -2789.6956~~rep1183~0","ARC~0.7874~1~GPS_TX_READY~M 5799.6342 -2629.7583 A 1.7714 1.7714 0 0 0 5800.34281 -2628.34114~~rep1184~0","ARC~0.7874~1~GPS_TX_READY~M 5798.92549 -2628.34114 A 1.7714 1.7714 0 0 0 5799.6341 -2629.7583~~rep1185~0","ARC~0.7874~1~GPS_TIMEPULSE~M 5796.3664 -2626.7043 A 2.8514 2.8514 0 0 0 5797.20156 -2624.68806~~rep1186~0","ARC~0.7874~1~GPS_TIMEPULSE~M 5795.53124 -2624.68806 A 2.8514 2.8514 0 0 0 5796.3664 -2626.7043~~rep1187~0","ARC~3.1496~1~AGND~M 5724.5945 -2798.0988 A 3.1826 3.1826 0 0 0 5725.52666 -2795.84836~~rep1188~0","ARC~3.1496~1~AGND~M 5725.52666 -2794.06264 A 3.1826 3.1826 0 0 0 5724.5945 -2791.8122~~rep1189~0","ARC~1~1~MICBIAS~M 5597.3913 -2817.1337 A 1.6443 1.6443 0 0 0 5597.8729 -2815.971~~rep1190~0","ARC~1~1~MICBIAS~M 5594.9641 -2816.9763 A 1.7067 1.7067 0 0 0 5596.17092 -2817.47618~~rep1191~0","ARC~1~1~U6-7~M 5472.5166 -2736.8819 A 1.0549 1.0549 0 0 0 5472.20763 -2737.62783~~rep1192~0","ARC~1~1~U6-7~M 5473.44923 -2737.62787 A 3.1842 3.1842 0 0 0 5472.5166 -2735.3763~~rep1193~0","ARC~1~1~LED2-1~M 5474.23639 -2746.01831 A 1.8976 1.8976 0 0 0 5473.69827 -2744.41815~~rep1194~0","ARC~1~1~LED2-1~M 5472.8284 -2745.1766 A 1.3667 1.3667 0 0 0 5473.7948 -2745.5769~~rep1195~0","ARC~1~1~LED2-1~M 5478.2272 -2746.0184 A 6.0308 6.0308 0 0 0 5473.51453 -2743.75075~~rep1196~0","ARC~1~1~LED2-1~M 5476.149 -2746.0184 A 4.3713 4.3713 0 0 0 5472.73312 -2744.37474~~rep1197~0","ARC~1~1~LED2-1~M 5474.0707 -2746.0184 A 2.7118 2.7118 0 0 0 5471.95161 -2744.99873~~rep1198~0","ARC~1~1~U6-9~M 5472.4741 -2730.5284 A 3.3293 3.3293 0 0 0 5473.44923 -2728.17423~~rep1199~0","ARC~1~1~LED1-1~M 5474.948 -2721.5033 A 2.1195 2.1195 0 0 0 5473.44929 -2720.88251~~rep1200~0","ARC~1~1~LED1-1~M 5473.44929 -2722.12419 A 2.1195 2.1195 0 0 0 5474.948 -2721.5034~~rep1201~0","ARC~0.7874~1~SW_ROT_B~M 5586.814 -2706.696 A 6.4829 6.4829 0 0 0 5581.68008 -2704.17175~~rep1202~0","ARC~0.7874~1~SW_ROT_B~M 5585.2126 -2706.6959 A 5.248 5.248 0 0 0 5581.05662 -2704.65248~~rep1203~0","ARC~0.7874~1~SW_ROT_B~M 5583.6111 -2706.696 A 4.0132 4.0132 0 0 0 5580.43298 -2705.13338~~rep1204~0","ARC~0.7874~1~SW_ROT_B~M 5581.68008 -2709.22025 A 6.4829 6.4829 0 0 0 5586.814 -2706.696~~rep1205~0","ARC~0.7874~1~SW_ROT_B~M 5581.05662 -2708.73952 A 5.248 5.248 0 0 0 5585.2126 -2706.6961~~rep1206~0","ARC~0.7874~1~SW_ROT_B~M 5580.43298 -2708.25862 A 4.0132 4.0132 0 0 0 5583.6111 -2706.696~~rep1207~0","ARC~0.7874~1~SW_ROT_A~M 5537.5527 -2705.9722 A 9.98 9.98 0 0 0 5530.49577 -2703.04913~~rep1208~0","ARC~0.7874~1~SW_ROT_A~M 5535.6518 -2705.9721 A 8.079 8.079 0 0 0 5529.93908 -2703.60582~~rep1209~0","ARC~0.7874~1~SW_ROT_A~M 5533.7508 -2705.9722 A 6.1781 6.1781 0 0 0 5529.38222 -2704.16268~~rep1210~0","ARC~0.7874~1~SW_ROT_A~M 5530.49577 -2708.89527 A 9.98 9.98 0 0 0 5537.5527 -2705.9722~~rep1211~0","ARC~0.7874~1~SW_ROT_A~M 5529.93908 -2708.33858 A 8.079 8.079 0 0 0 5535.6518 -2705.9723~~rep1212~0","ARC~0.7874~1~SW_ROT_A~M 5529.38222 -2707.78172 A 6.1781 6.1781 0 0 0 5533.7508 -2705.9722~~rep1213~0","ARC~1.9685~1~VBAT+~M 5691.09711 -2810.25549 A 5.7028 5.7028 0 0 0 5689.4268 -2806.223~~rep1214~0","ARC~1~1~GND~M 5500.0332 -2754.8105 A 1.217 1.217 0 0 0 5499.5965 -2755.74443~~rep1215~0","ARC~1~1~GND~M 5500.4699 -2755.74443 A 1.217 1.217 0 0 0 5500.0332 -2754.8105~~rep1216~0","ARC~1~1~GND~M 5500.0331 -2754.6228 A 1.6443 1.6443 0 0 0 5499.5515 -2755.7855~~rep1217~0","ARC~1~1~GND~M 5500.5148 -2755.7855 A 1.6443 1.6443 0 0 0 5500.0332 -2754.6228~~rep1218~0","ARC~1~1~U6-9~M 5472.4741 -2729.5835 A 1.6443 1.6443 0 0 0 5471.9925 -2730.7462~~rep1219~0","ARC~1~1~U6-9~M 5472.9557 -2730.7462 A 1.6443 1.6443 0 0 0 5472.4741 -2729.5835~~rep1220~0","ARC~1~1~U6-7~M 5472.5167 -2737.5675 A 4.0531 4.0531 0 0 0 5473.70383 -2734.70153~~rep1221~0","ARC~0.7874~1~SDA~M 5851.2377 -2592.1481 A 2.573 2.573 0 0 0 5850.48409 -2593.96749~~rep1222~0","ARC~0.7874~1~SDA~M 5851.59771 -2593.96749 A 1.2288 1.2288 0 0 0 5851.2378 -2593.0986~~rep1223~0","ARC~1.1811~1~SDA~M 5851.2377 -2592.6233 A 2.0978 2.0978 0 0 0 5850.62327 -2594.10667~~rep1224~0","ARC~0.7874~1~SDA~M 5849.89836 -2595.78496 A 1.6158 1.6158 0 0 0 5851.0409 -2595.3117~~rep1225~0","ARC~0.7874~1~SDA~M 5850.2534 -2594.5243 A 2.186 2.186 0 0 0 5849.61314 -2596.07004~~rep1226~0","ARC~1.1811~1~SDA~M 5850.23444 -2595.44894 A 1.1405 1.1405 0 0 0 5851.0409 -2595.1149~~rep1227~0","ARC~1.1811~1~SDA~M 5850.4503 -2594.5243 A 1.7108 1.7108 0 0 0 5849.94922 -2595.73402~~rep1228~0","ARC~1.1811~1~SDA~M 5861.2377 -2573.6891 A 1.4257 1.4257 0 0 0 5860.82012 -2574.69722~~rep1229~0","ARC~1.1811~1~SDA~M 5861.65538 -2574.69722 A 1.4257 1.4257 0 0 0 5861.2378 -2573.6891~~rep1230~0","ARC~1.1811~1~+3V3~M 5843.3125 -2766.1779 A 1.4257 1.4257 0 0 0 5842.30438 -2765.76032~~rep1231~0","ARC~1.1811~1~+3V3~M 5842.30438 -2766.59548 A 1.4257 1.4257 0 0 0 5843.3125 -2766.1779~~rep1232~0","ARC~1~1~+3V3~M 5771.1051 -2627.5583 A 1.6443 1.6443 0 0 0 5770.6235 -2628.721~~rep1233~0","ARC~1~1~+3V3~M 5771.5867 -2628.721 A 1.6443 1.6443 0 0 0 5771.1051 -2627.5583~~rep1234~0","ARC~1~1~+3V3~M 5771.1051 -2630.8469 A 1.6443 1.6443 0 0 0 5771.5867 -2629.6842~~rep1235~0","ARC~1~1~+3V3~M 5770.6235 -2629.6842 A 1.6443 1.6443 0 0 0 5771.1051 -2630.8469~~rep1236~0","ARC~0.7874~1~+3V3~M 5812.1091 -2649.3435 A 1.9009 1.9009 0 0 0 5812.66586 -2647.99936~~rep1237~0","ARC~0.7874~1~+3V3~M 5811.55224 -2647.99936 A 1.9009 1.9009 0 0 0 5812.109 -2649.3435~~rep1238~0","ARC~0.7874~1~SD_DAT3~M 5769.1335 -2748.6954 A 1.9009 1.9009 0 0 0 5767.78936 -2748.13864~~rep1239~0","ARC~0.7874~1~SD_DAT3~M 5767.78936 -2749.25226 A 1.9009 1.9009 0 0 0 5769.1335 -2748.6955~~rep1240~0","ARC~0.7874~1~SD_CMD~M 5721.3948 -2745.8189 A 1.7582 1.7582 0 0 0 5720.15156 -2745.30394~~rep1241~0","ARC~0.7874~1~SD_CMD~M 5720.15156 -2746.41756 A 2.0436 2.0436 0 0 0 5721.5966 -2745.819~~rep1242~0","ARC~0.7874~1~SD_DAT2~M 5735.5776 -2751.5275 A 2.1614 2.1614 0 0 0 5734.04926 -2750.89444~~rep1243~0","ARC~0.7874~1~SD_DAT2~M 5734.04916 -2752.00806 A 1.6404 1.6404 0 0 0 5735.2091 -2751.5276~~rep1244~0","ARC~0.7874~1~SD_DAT2~M 5843.249 -2778.9686 A 1.9009 1.9009 0 0 0 5844.59314 -2779.52536~~rep1245~0","ARC~0.7874~1~SD_DAT2~M 5844.59314 -2778.41174 A 1.9009 1.9009 0 0 0 5843.249 -2778.9685~~rep1246~0","ARC~0.7874~1~SD_DAT3~M 5843.249 -2774.6379 A 1.9009 1.9009 0 0 0 5844.59314 -2775.19466~~rep1247~0","ARC~0.7874~1~SD_DAT3~M 5844.59314 -2774.08104 A 1.9009 1.9009 0 0 0 5843.249 -2774.6378~~rep1248~0","ARC~0.7874~1~SD_DAT3~M 5710.9808 -2617.9209 A 1.9009 1.9009 0 0 0 5712.32494 -2618.47766~~rep1249~0","ARC~0.7874~1~SD_DAT3~M 5712.32494 -2617.36404 A 1.9009 1.9009 0 0 0 5710.9808 -2617.9208~~rep1250~0","ARC~0.7874~1~SD_CMD~M 5843.4559 -2770.376 A 1.9009 1.9009 0 0 0 5844.80004 -2770.93276~~rep1251~0","ARC~0.7874~1~SD_CMD~M 5844.80004 -2769.81914 A 1.9009 1.9009 0 0 0 5843.4559 -2770.3759~~rep1252~0","ARC~0.7874~1~SD_DAT2~M 5871.7359 -2778.9685 A 1.9009 1.9009 0 0 0 5870.39176 -2778.41174~~rep1253~0","ARC~0.7874~1~SD_DAT2~M 5870.39176 -2779.52536 A 1.9009 1.9009 0 0 0 5871.7359 -2778.9686~~rep1254~0","ARC~0.7874~1~SD_DAT3~M 5871.7202 -2774.7009 A 1.9009 1.9009 0 0 0 5870.37606 -2774.14414~~rep1255~0","ARC~0.7874~1~SD_DAT3~M 5870.37606 -2775.25776 A 1.9009 1.9009 0 0 0 5871.7202 -2774.701~~rep1256~0","ARC~0.7874~1~SD_CMD~M 5871.7653 -2770.3759 A 1.9009 1.9009 0 0 0 5870.42116 -2769.81914~~rep1257~0","ARC~0.7874~1~SD_CMD~M 5870.42116 -2770.93276 A 1.9009 1.9009 0 0 0 5871.7653 -2770.376~~rep1258~0","ARC~0.7874~1~SD_CLK~M 5714.3082 -2742.8662 A 1.7582 1.7582 0 0 0 5713.06496 -2742.35124~~rep1259~0","ARC~0.7874~1~SD_CLK~M 5713.06496 -2743.46486 A 2.0436 2.0436 0 0 0 5714.51 -2742.8663~~rep1260~0","ARC~0.7874~1~SD_DAT1~M 5711.6827 -2627.9159 A 2.0003 2.0003 0 0 0 5713.09713 -2628.50177~~rep1261~0","ARC~0.7874~1~SD_DAT1~M 5713.09705 -2627.38815 A 1.8015 1.8015 0 0 0 5711.8232 -2627.9158~~rep1262~0","ARC~0.7874~1~SD_CD~M 5724.3977 -2735.1636 A 1.9404 1.9404 0 0 0 5723.02563 -2734.59527~~rep1263~0","ARC~0.7874~1~SD_CD~M 5723.02559 -2735.70889 A 1.8614 1.8614 0 0 0 5724.3418 -2735.1637~~rep1264~0","ARC~0.7874~1~SD_DAT0~M 5673.5916 -2637.9108 A 1.9009 1.9009 0 0 0 5672.24746 -2637.35404~~rep1265~0","ARC~0.7874~1~SD_DAT0~M 5672.24746 -2638.46766 A 1.9009 1.9009 0 0 0 5673.5916 -2637.9109~~rep1266~0","ARC~0.7874~1~SD_CMD~M 5673.5861 -2647.9058 A 1.9009 1.9009 0 0 0 5672.24196 -2647.34904~~rep1267~0","ARC~0.7874~1~SD_CMD~M 5672.24196 -2648.46266 A 1.9009 1.9009 0 0 0 5673.5861 -2647.9059~~rep1268~0","ARC~0.7874~1~SD_DAT2~M 5673.5761 -2627.9158 A 1.9009 1.9009 0 0 0 5672.23196 -2627.35904~~rep1269~0","ARC~0.7874~1~SD_DAT2~M 5672.23196 -2628.47266 A 1.9009 1.9009 0 0 0 5673.5761 -2627.9159~~rep1270~0","ARC~0.7874~1~SD_CD~M 5673.5229 -2617.9208 A 1.9009 1.9009 0 0 0 5672.17876 -2617.36404~~rep1271~0","ARC~0.7874~1~SD_CD~M 5672.17876 -2618.47766 A 1.9009 1.9009 0 0 0 5673.5229 -2617.9209~~rep1272~0","ARC~0.7874~1~SD_CLK~M 5673.6997 -2657.9008 A 1.9009 1.9009 0 0 0 5672.35556 -2657.34404~~rep1273~0","ARC~0.7874~1~SD_CLK~M 5672.35556 -2658.45766 A 1.9009 1.9009 0 0 0 5673.6997 -2657.9009~~rep1274~0","ARC~0.7874~1~SW_D~M 5502.47406 -2713.58044 A 1.9009 1.9009 0 0 0 5501.9173 -2712.2363~~rep1275~0","ARC~0.7874~1~SW_D~M 5501.1298 -2713.0237 A 1.9009 1.9009 0 0 0 5502.47394 -2713.58046~~rep1276~0","ARC~0.7874~1~TP_U~M 5745.6506 -2723.4568 A 1.9009 1.9009 0 0 0 5746.99474 -2724.01356~~rep1277~0","ARC~0.7874~1~TP_U~M 5746.99474 -2722.89994 A 1.9009 1.9009 0 0 0 5745.6506 -2723.4567~~rep1278~0","ARC~0.7874~1~TP_U~M 5780.9092 -2723.4567 A 1.9009 1.9009 0 0 0 5779.56506 -2722.89994~~rep1279~0","ARC~0.7874~1~TP_U~M 5779.56506 -2724.01356 A 1.9009 1.9009 0 0 0 5780.9092 -2723.4568~~rep1280~0","ARC~0.7874~1~TP_U~M 5779.0082 -2721.5558 A 1.9009 1.9009 0 0 0 5778.45144 -2722.89994~~rep1281~0","ARC~0.7874~1~TP_U~M 5779.56506 -2722.89994 A 1.9009 1.9009 0 0 0 5779.0083 -2721.5558~~rep1282~0","ARC~0.7874~1~TP_L~M 5747.934 -2720.7009 A 1.9009 1.9009 0 0 0 5749.27814 -2721.25766~~rep1283~0","ARC~0.7874~1~TP_L~M 5749.27814 -2720.14404 A 1.9009 1.9009 0 0 0 5747.934 -2720.7008~~rep1284~0","ARC~0.7874~1~TP_D~M 5750.8868 -2718.1419 A 1.9009 1.9009 0 0 0 5752.23094 -2718.69866~~rep1285~0","ARC~0.7874~1~TP_D~M 5752.23094 -2717.58504 A 1.9009 1.9009 0 0 0 5750.8868 -2718.1418~~rep1286~0","ARC~0.7874~1~H1_CPLD_TCK~M 5672.484 -2694.0866 A 1.9009 1.9009 0 0 0 5671.13986 -2693.52984~~rep1287~0","ARC~0.7874~1~H1_CPLD_TCK~M 5671.13986 -2694.64346 A 1.9009 1.9009 0 0 0 5672.484 -2694.0867~~rep1288~0","ARC~0.7874~1~PP_CPLD_TMS~M 5707.93964 -2640.34096 A 1.9009 1.9009 0 0 0 5708.4964 -2641.6851~~rep1289~0","ARC~0.7874~1~PP_CPLD_TMS~M 5709.2838 -2640.8977 A 1.9009 1.9009 0 0 0 5707.93966 -2640.34094~~rep1290~0","ARC~0.7874~1~PP_CPLD_TMS~M 5716.5744 -2709.719 A 1.9009 1.9009 0 0 0 5715.23026 -2709.16224~~rep1291~0","ARC~0.7874~1~PP_CPLD_TMS~M 5715.23026 -2710.27586 A 1.9009 1.9009 0 0 0 5716.5744 -2709.7191~~rep1292~0","ARC~0.7874~1~H1_CPLD_TCK~M 5672.2462 -2687.8858 A 1.5647 1.5647 0 0 0 5671.13979 -2687.42751~~rep1293~0","ARC~0.7874~1~H1_CPLD_TCK~M 5671.13983 -2688.54113 A 2.2371 2.2371 0 0 0 5672.7217 -2687.8859~~rep1294~0","ARC~0.7874~1~PP_CPLD_TDO~M 5707.93964 -2650.38036 A 1.9009 1.9009 0 0 0 5708.4964 -2651.7245~~rep1295~0","ARC~0.7874~1~PP_CPLD_TDO~M 5709.2838 -2650.937 A 1.9009 1.9009 0 0 0 5707.93966 -2650.38024~~rep1296~0","ARC~0.7874~1~PP_CPLD_TDO~M 5727.7162 -2700.5458 A 1.9009 1.9009 0 0 0 5726.37206 -2699.98904~~rep1297~0","ARC~0.7874~1~PP_CPLD_TDO~M 5726.37206 -2701.10266 A 1.9009 1.9009 0 0 0 5727.7162 -2700.5459~~rep1298~0","ARC~1.1811~1~NETK2_3~M 5476.3558 -2760.3033 A 1.4257 1.4257 0 0 0 5475.93822 -2761.31142~~rep1299~0","ARC~1.1811~1~NETK2_3~M 5476.77348 -2761.31142 A 1.4257 1.4257 0 0 0 5476.3559 -2760.3033~~rep1300~0","ARC~0.7874~1~RESET#~M 5529.07194 -2588.27326 A 1.9009 1.9009 0 0 0 5529.6287 -2589.6174~~rep1301~0","ARC~0.7874~1~RESET#~M 5530.4161 -2588.83 A 1.9009 1.9009 0 0 0 5529.07196 -2588.27324~~rep1302~0","ARC~0.7874~1~RESET#~M 5718.3232 -2589.0957 A 1.9009 1.9009 0 0 0 5718.87996 -2587.75156~~rep1303~0","ARC~0.7874~1~RESET#~M 5717.76634 -2587.75156 A 1.9009 1.9009 0 0 0 5718.3231 -2589.0957~~rep1304~0","ARC~0.7874~1~MCU_LCD_RD~M 5539.74114 -2588.43076 A 1.9009 1.9009 0 0 0 5540.2979 -2589.7749~~rep1305~0","ARC~0.7874~1~MCU_LCD_RD~M 5541.0854 -2588.9874 A 1.9009 1.9009 0 0 0 5539.74126 -2588.43064~~rep1306~0","ARC~0.7874~1~MCU_LCD_RD~M 5722.0029 -2591.6482 A 1.8346 1.8346 0 0 0 5722.55383 -2590.3375~~rep1307~0","ARC~0.7874~1~MCU_LCD_RD~M 5721.45187 -2590.3375 A 1.8346 1.8346 0 0 0 5722.0028 -2591.6482~~rep1308~0","ARC~0.7874~1~MCU_LCD_TE~M 5539.66256 -2556.43406 A 1.9009 1.9009 0 0 0 5541.0067 -2555.8773~~rep1309~0","ARC~0.7874~1~MCU_LCD_TE~M 5540.2192 -2555.0898 A 1.9009 1.9009 0 0 0 5539.66244 -2556.43394~~rep1310~0","ARC~0.7874~1~MCU_LCD_TE~M 5724.3421 -2568.0538 A 1.9009 1.9009 0 0 0 5724.89886 -2566.70966~~rep1311~0","ARC~0.7874~1~MCU_LCD_TE~M 5723.78524 -2566.70966 A 1.9009 1.9009 0 0 0 5724.342 -2568.0538~~rep1312~0","ARC~0.7874~1~MCU_IO_STBX~M 5609.07196 -2557.06396 A 1.9009 1.9009 0 0 0 5610.4161 -2556.5072~~rep1313~0","ARC~0.7874~1~MCU_IO_STBX~M 5609.6287 -2555.7198 A 1.9009 1.9009 0 0 0 5609.07194 -2557.06394~~rep1314~0","ARC~0.7874~1~MCU_IO_STBX~M 5727.7484 -2565.9876 A 1.9009 1.9009 0 0 0 5728.30516 -2564.64346~~rep1315~0","ARC~0.7874~1~MCU_IO_STBX~M 5727.19154 -2564.64346 A 1.9009 1.9009 0 0 0 5727.7483 -2565.9876~~rep1316~0","ARC~0.7874~1~MCU_IO_STBX~M 5727.7484 -2565.9876 A 1.9009 1.9009 0 0 0 5728.30516 -2564.64346~~rep1317~0","ARC~0.7874~1~MCU_IO_STBX~M 5727.19154 -2564.64346 A 1.9009 1.9009 0 0 0 5727.7483 -2565.9876~~rep1318~0","ARC~0.7874~1~MCU_ADDR~M 5606.8573 -2591.4315 A 1.7137 1.7137 0 0 0 5606.35537 -2592.64327~~rep1319~0","ARC~0.7874~1~MCU_ADDR~M 5607.46899 -2592.64321 A 2.0881 2.0881 0 0 0 5606.8574 -2591.1667~~rep1320~0","ARC~0.7874~1~P2_8~M 5626.9515 -2593.307 A 1.9009 1.9009 0 0 0 5626.39474 -2594.65114~~rep1321~0","ARC~0.7874~1~P2_8~M 5627.50836 -2594.65114 A 1.9009 1.9009 0 0 0 5626.9516 -2593.307~~rep1322~0","ARC~0.7874~1~REF_EN~M 5752.10344 -2549.13936 A 1.9009 1.9009 0 0 0 5752.6602 -2550.4835~~rep1323~0","ARC~0.7874~1~REF_EN~M 5753.4476 -2549.6961 A 1.9009 1.9009 0 0 0 5752.10346 -2549.13934~~rep1324~0","ARC~0.7874~1~REF_EN~M 5753.4477 -2564.8648 A 1.9009 1.9009 0 0 0 5754.00446 -2563.52066~~rep1325~0","ARC~0.7874~1~REF_EN~M 5752.89084 -2563.52066 A 1.9009 1.9009 0 0 0 5753.4476 -2564.8648~~rep1326~0","ARC~0.7874~1~MCU_LCD_WR~M 5616.9121 -2590.7873 A 1.9009 1.9009 0 0 0 5616.35534 -2592.13144~~rep1327~0","ARC~0.7874~1~MCU_LCD_WR~M 5617.46896 -2592.13144 A 1.9009 1.9009 0 0 0 5616.9122 -2590.7873~~rep1328~0","ARC~0.7874~1~MCU_LCD_WR~M 5784.9831 -2594.5892 A 1.9009 1.9009 0 0 0 5785.53986 -2593.24506~~rep1329~0","ARC~0.7874~1~MCU_LCD_WR~M 5784.42624 -2593.24506 A 1.9009 1.9009 0 0 0 5784.983 -2594.5892~~rep1330~0","ARC~0.7874~1~MCU_DIR~M 5619.50506 -2556.67026 A 1.9009 1.9009 0 0 0 5620.8492 -2556.1135~~rep1331~0","ARC~0.7874~1~MCU_DIR~M 5620.0617 -2555.3261 A 1.9009 1.9009 0 0 0 5619.50494 -2556.67024~~rep1332~0","ARC~0.7874~1~MCU_DIR~M 5788.8217 -2569.6089 A 1.9009 1.9009 0 0 0 5789.37846 -2568.26476~~rep1333~0","ARC~0.7874~1~MCU_DIR~M 5788.26484 -2568.26476 A 1.9009 1.9009 0 0 0 5788.8216 -2569.6089~~rep1334~0","ARC~0.7874~1~SCL~M 5821.1184 -2599.3585 A 1.8969 1.8969 0 0 0 5820.56281 -2600.69981~~rep1335~0","ARC~0.7874~1~SCL~M 5821.67643 -2600.69977 A 1.9049 1.9049 0 0 0 5821.1185 -2599.3528~~rep1336~0","ARC~0.7874~1~SCL~M 5821.1184 -2599.3585 A 1.8969 1.8969 0 0 0 5820.56281 -2600.69981~~rep1337~0","ARC~0.7874~1~SCL~M 5821.67643 -2600.69977 A 1.9049 1.9049 0 0 0 5821.1185 -2599.3528~~rep1338~0","ARC~1.1811~1~SCL~M 5822.5453 -2601.2566 A 1.4257 1.4257 0 0 0 5821.53718 -2600.83902~~rep1339~0","ARC~1.1811~1~SCL~M 5821.53718 -2601.67418 A 1.4257 1.4257 0 0 0 5822.5453 -2601.2566~~rep1340~0","ARC~1.1811~1~NETM1_2~M 5551.8291 -2553.3449 A 1.4257 1.4257 0 0 0 5552.24668 -2552.33678~~rep1341~0","ARC~1.1811~1~NETM1_2~M 5551.41152 -2552.33678 A 1.4257 1.4257 0 0 0 5551.8291 -2553.3449~~rep1342~0","ARC~1.1811~1~NETM1_2~M 5551.8291 -2553.3449 A 1.4257 1.4257 0 0 0 5552.24668 -2552.33678~~rep1343~0","ARC~1.1811~1~NETM1_2~M 5551.41152 -2552.33678 A 1.4257 1.4257 0 0 0 5551.8291 -2553.3449~~rep1344~0","ARC~1~1~I2S0_WS~M 5586.7484 -2616.0642 A 1.6443 1.6443 0 0 0 5586.2668 -2617.2269~~rep1345~0","ARC~1~1~I2S0_WS~M 5587.23 -2617.2269 A 1.6443 1.6443 0 0 0 5586.7484 -2616.0642~~rep1346~0","ARC~1.9685~1~VBAT~M 5808.2051 -2569.5288 A 1.9009 1.9009 0 0 0 5808.76186 -2568.18466~~rep1347~0","ARC~1.9685~1~VBAT~M 5807.64824 -2568.18466 A 1.9009 1.9009 0 0 0 5808.205 -2569.5288~~rep1348~0","ARC~1.9685~1~VBAT~M 5498.63531 -2607.34941 A 1.6265 1.6265 0 0 0 5497.4852 -2607.8258~~rep1349~0","ARC~1.9685~1~VBAT~M 5498.63531 -2607.34941 A 1.6265 1.6265 0 0 0 5497.4852 -2607.8258~~rep1350~0","ARC~1~1~I2S0_MCLK~M 5596.8623 -2618.903 A 1.6443 1.6443 0 0 0 5596.3807 -2620.0657~~rep1351~0","ARC~1~1~I2S0_MCLK~M 5597.3439 -2620.0657 A 1.6443 1.6443 0 0 0 5596.8623 -2618.903~~rep1352~0","ARC~1~1~I2S0_TX_SDA~M 5576.8723 -2610.3649 A 1.6443 1.6443 0 0 0 5576.3907 -2611.5276~~rep1353~0","ARC~1~1~I2S0_TX_SDA~M 5577.3539 -2611.5276 A 1.6443 1.6443 0 0 0 5576.8723 -2610.3649~~rep1354~0","ARC~1~1~I2S0_SCK~M 5591.7877 -2607.1666 A 1.6443 1.6443 0 0 0 5591.3061 -2608.3293~~rep1355~0","ARC~1~1~I2S0_SCK~M 5592.2694 -2608.3293 A 1.6443 1.6443 0 0 0 5591.7878 -2607.1666~~rep1356~0","ARC~1~1~+3V3~M 5813.6447 -2711.0945 A 1.6443 1.6443 0 0 0 5812.482 -2710.6129~~rep1357~0","ARC~1~1~+3V3~M 5812.482 -2711.5762 A 1.6443 1.6443 0 0 0 5813.6447 -2711.0946~~rep1358~0","ARC~1~1~NETR20_1~M 5643.3427 -2798.834 A 1.6443 1.6443 0 0 0 5643.8243 -2799.9967~~rep1359~0","ARC~1~1~NETR20_1~M 5644.5055 -2799.3156 A 1.6443 1.6443 0 0 0 5643.3428 -2798.834~~rep1360~0","ARC~1~1~NETR20_1~M 5643.264 -2806.7868 A 1.6443 1.6443 0 0 0 5643.7456 -2807.9495~~rep1361~0","ARC~1~1~NETR20_1~M 5644.4267 -2807.2683 A 1.6443 1.6443 0 0 0 5643.264 -2806.7867~~rep1362~0","ARC~1~1~NETR20_1~M 5646.071 -2807.9494 A 1.6443 1.6443 0 0 0 5644.9083 -2807.4678~~rep1363~0","ARC~1~1~NETR20_1~M 5644.9083 -2808.4311 A 1.6443 1.6443 0 0 0 5646.071 -2807.9495~~rep1364~0","ARC~1~1~I2S0_WS~M 5657.4281 -2807.9495 A 1.6443 1.6443 0 0 0 5658.5908 -2808.4311~~rep1365~0","ARC~1~1~I2S0_WS~M 5658.5908 -2807.4678 A 1.6443 1.6443 0 0 0 5657.4281 -2807.9494~~rep1366~0","ARC~1~1~H1_CPLD_TDI~M 5667.3493 -2802.9101 A 1.6443 1.6443 0 0 0 5668.512 -2803.3917~~rep1367~0","ARC~1~1~H1_CPLD_TDI~M 5668.512 -2802.4285 A 1.6443 1.6443 0 0 0 5667.3493 -2802.9101~~rep1368~0","ARC~1~1~H1_CPLD_TDI~M 5670.638 -2697.9101 A 1.6443 1.6443 0 0 0 5669.4753 -2697.4285~~rep1369~0","ARC~1~1~H1_CPLD_TDI~M 5669.4753 -2698.3917 A 1.6443 1.6443 0 0 0 5670.638 -2697.9101~~rep1370~0","ARC~1~1~I2S0_SCK~M 5664.2947 -2792.9101 A 1.5099 1.5099 0 0 0 5665.36236 -2793.35234~~rep1371~0","ARC~1~1~I2S0_SCK~M 5665.36243 -2792.38913 A 1.7787 1.7787 0 0 0 5664.1047 -2792.9101~~rep1372~0","ARC~1~1~I2S0_TX_SDA~M 5660.7188 -2797.9495 A 1.7787 1.7787 0 0 0 5661.97653 -2798.47047~~rep1373~0","ARC~1~1~I2S0_TX_SDA~M 5661.97659 -2797.50719 A 1.5098 1.5098 0 0 0 5660.909 -2797.9494~~rep1374~0","ARC~1~1~I2S0_MCLK~M 5654.3572 -2773.0854 A 1.6443 1.6443 0 0 0 5655.5199 -2773.567~~rep1375~0","ARC~1~1~I2S0_MCLK~M 5655.5199 -2772.6038 A 1.6443 1.6443 0 0 0 5654.3572 -2773.0854~~rep1376~0","ARC~1~1~RHPOUT~M 5520.8047 -2770.2631 A 1.6443 1.6443 0 0 0 5521.2863 -2769.1004~~rep1377~0","ARC~1~1~RHPOUT~M 5520.3231 -2769.1004 A 1.6443 1.6443 0 0 0 5520.8047 -2770.2631~~rep1378~0","ARC~1~1~LHPOUT~M 5521.0015 -2787.6044 A 1.6443 1.6443 0 0 0 5520.5199 -2788.7671~~rep1379~0","ARC~1~1~LHPOUT~M 5521.4831 -2788.7671 A 1.6443 1.6443 0 0 0 5521.0015 -2787.6044~~rep1380~0","ARC~1~1~NETK2_1~M 5572.3008 -2817.2316 A 1.6443 1.6443 0 0 0 5572.7824 -2816.0689~~rep1381~0","ARC~1~1~NETK2_1~M 5571.8191 -2816.0689 A 1.6443 1.6443 0 0 0 5572.3007 -2817.2316~~rep1382~0","ARC~1~1~RHPOUT_SPK~M 5517.8377 -2757.4089 A 1.6443 1.6443 0 0 0 5519.0004 -2757.8905~~rep1383~0","ARC~1~1~RHPOUT_SPK~M 5519.0004 -2756.9273 A 1.6443 1.6443 0 0 0 5517.8377 -2757.4089~~rep1384~0","ARC~1~1~RHPOUT_SPK~M 5576.0051 -2801.5605 A 1.6067 1.6067 0 0 0 5574.86899 -2801.08991~~rep1385~0","ARC~1~1~RHPOUT_SPK~M 5574.86902 -2802.05322 A 1.6819 1.6819 0 0 0 5576.0583 -2801.5606~~rep1386~0","ARC~1.1811~1~+3V3~M 5671.9464 -2790.6359 A 1.5447 1.5447 0 0 0 5672.39883 -2789.54363~~rep1387~0","ARC~1.1811~1~+3V3~M 5671.56368 -2789.54362 A 1.3067 1.3067 0 0 0 5671.9464 -2790.4676~~rep1388~0","ARC~1~1~+3V3~M 5639.1301 -2806.9443 A 1.6443 1.6443 0 0 0 5639.6117 -2808.107~~rep1389~0","ARC~1~1~+3V3~M 5640.2929 -2807.4258 A 1.6443 1.6443 0 0 0 5639.1302 -2806.9442~~rep1390~0","ARC~0.7874~1~SCL~M 5599.4267 -2794.603 A 0.9536 0.9536 0 0 0 5598.62887 -2794.17172~~rep1391~0","ARC~0.7874~1~SCL~M 5598.62887 -2795.03438 A 0.9536 0.9536 0 0 0 5599.4267 -2794.6031~~rep1392~0","ARC~0.7874~1~SCL~M 5598.27623 -2795.32845 A 2.1272 2.1272 0 0 0 5600.60766 -2795.78404~~rep1393~0","ARC~0.7874~1~SCL~M 5597.97012 -2794.60313 A 1.6518 1.6518 0 0 0 5599.7805 -2794.9569~~rep1394~0","ARC~1.1811~1~+3V3~M 5671.9464 -2814.2797 A 1.4257 1.4257 0 0 0 5671.52882 -2815.28782~~rep1395~0","ARC~1.1811~1~+3V3~M 5672.36398 -2815.28782 A 1.4257 1.4257 0 0 0 5671.9464 -2814.2797~~rep1396~0","ARC~0.7874~1~SDA~M 5738.6225 -2796.5305 A 2.0347 2.0347 0 0 0 5740.06125 -2797.12645~~rep1397~0","ARC~0.7874~1~SDA~M 5740.06113 -2796.01283 A 1.7671 1.7671 0 0 0 5738.8116 -2796.5304~~rep1398~0","ARC~0.7874~1~H1_CPLD_TCK~M 5721.29124 -2701.96426 A 1.9009 1.9009 0 0 0 5721.848 -2703.3084~~rep1399~0","ARC~0.7874~1~H1_CPLD_TCK~M 5722.6354 -2702.521 A 1.9009 1.9009 0 0 0 5721.29126 -2701.96424~~rep1400~0","ARC~0.7874~1~H1_CPLD_TCK~M 5723.97966 -2704.65254 A 1.9009 1.9009 0 0 0 5723.4229 -2703.3084~~rep1401~0","ARC~0.7874~1~H1_CPLD_TCK~M 5722.6354 -2704.0959 A 1.9009 1.9009 0 0 0 5723.97954 -2704.65266~~rep1402~0","ARC~1~1~H1_CPLD_TCK~M 5804.1997 -2757.2408 A 1.6443 1.6443 0 0 0 5805.3624 -2757.7224~~rep1403~0","ARC~1~1~H1_CPLD_TCK~M 5805.3624 -2756.7592 A 1.6443 1.6443 0 0 0 5804.1997 -2757.2408~~rep1404~0","ARC~0.7874~1~H1_CPLD_TDI~M 5717.58404 -2704.78856 A 1.9009 1.9009 0 0 0 5718.1408 -2706.1327~~rep1405~0","ARC~0.7874~1~H1_CPLD_TDI~M 5718.9283 -2705.3453 A 1.9009 1.9009 0 0 0 5717.58416 -2704.78854~~rep1406~0","ARC~0.7874~1~H1_CPLD_TDI~M 5720.27246 -2707.47684 A 1.9009 1.9009 0 0 0 5719.7157 -2706.1327~~rep1407~0","ARC~0.7874~1~H1_CPLD_TDI~M 5718.9283 -2706.9202 A 1.9009 1.9009 0 0 0 5720.27244 -2707.47696~~rep1408~0","ARC~0.7874~1~H1_CPLD_TDI~M 5754.2011 -2756.4231 A 1.9009 1.9009 0 0 0 5754.75786 -2755.07896~~rep1409~0","ARC~0.7874~1~H1_CPLD_TDI~M 5753.64424 -2755.07896 A 1.9009 1.9009 0 0 0 5754.201 -2756.4231~~rep1410~0","ARC~1~1~H1_CPLD_TDI~M 5754.2011 -2756.1665 A 1.6443 1.6443 0 0 0 5754.6827 -2755.0038~~rep1411~0","ARC~1~1~H1_CPLD_TDI~M 5753.7194 -2755.0038 A 1.6443 1.6443 0 0 0 5754.201 -2756.1665~~rep1412~0","ARC~0.7874~1~PP_CPLD_TMS~M 5758.1886 -2762.1993 A 1.9009 1.9009 0 0 0 5756.84446 -2761.64254~~rep1413~0","ARC~0.7874~1~PP_CPLD_TMS~M 5756.84446 -2762.75616 A 1.9009 1.9009 0 0 0 5758.1886 -2762.1994~~rep1414~0","ARC~0.7874~1~PP_CPLD_TMS~M 5780.9615 -2762.1994 A 1.9009 1.9009 0 0 0 5782.30564 -2762.75616~~rep1415~0","ARC~0.7874~1~PP_CPLD_TMS~M 5782.30564 -2761.64254 A 1.9009 1.9009 0 0 0 5780.9615 -2762.1993~~rep1416~0","ARC~0.7874~1~SDA~M 5823.7562 -2595.7729 A 1.9009 1.9009 0 0 0 5823.19944 -2597.11704~~rep1417~0","ARC~0.7874~1~SDA~M 5824.31306 -2597.11704 A 1.9009 1.9009 0 0 0 5823.7563 -2595.7729~~rep1418~0","ARC~0.7874~1~SDA~M 5825.6572 -2597.6738 A 1.9009 1.9009 0 0 0 5824.31306 -2597.11704~~rep1419~0","ARC~0.7874~1~SDA~M 5824.31306 -2598.23066 A 1.9009 1.9009 0 0 0 5825.6572 -2597.6739~~rep1420~0","ARC~1.1811~1~SDA~M 5825.182 -2597.6739 A 1.4257 1.4257 0 0 0 5824.17388 -2597.25632~~rep1421~0","ARC~1.1811~1~SDA~M 5824.17388 -2598.09148 A 1.4257 1.4257 0 0 0 5825.182 -2597.6739~~rep1422~0","ARC~1~1~VIN~M 5489.01308 -2737.20878 A 3.1229 3.1229 0 0 0 5491.2213 -2736.2941~~rep1423~0","ARC~1~1~VIN~M 5485.8415 -2736.2941 A 3.1229 3.1229 0 0 0 5488.04972 -2737.20878~~rep1424~0","ARC~1~1~VIN~M 5480.7053 -2736.2941 A 7.3324 7.3324 0 0 0 5485.89009 -2738.44171~~rep1425~0","ARC~1~1~VIN~M 5483.1196 -2736.2942 A 4.9181 4.9181 0 0 0 5486.59722 -2737.73468~~rep1426~0","ARC~1~1~VIN~M 5495.9724 -2750.34 A 1.6443 1.6443 0 0 0 5496.454 -2749.1773~~rep1427~0","ARC~1~1~VIN~M 5495.4907 -2749.1773 A 1.6443 1.6443 0 0 0 5495.9723 -2750.34~~rep1428~0","ARC~1~1~VIN~M 5495.9724 -2750.34 A 1.6443 1.6443 0 0 0 5496.454 -2749.1773~~rep1429~0","ARC~1~1~VIN~M 5495.4907 -2749.1773 A 1.6443 1.6443 0 0 0 5495.9723 -2750.34~~rep1430~0","ARC~1.9685~1~VIN~M 5526.0683 -2714.3255 A 6.9463 6.9463 0 0 0 5521.15652 -2712.29098~~rep1431~0","TRACK~1~1~U1-10~5623.5003 -2807.5952 5627.3819 -2807.5952 5629.7377 -2809.951 5629.7377 -2814.17~rep2412~0","TRACK~1~1~RHPOUT~5623.8362 -2818.3432 5624.6299 -2818.3432 5627.3858 -2821.0991 5629.7377 -2821.0991~rep2415~0","TRACK~1~1~NETC9_1~5623.5003 -2805.6266 5632.4133 -2805.6266 5638.2377 -2811.451 5638.2377 -2814.17 5638.3165 -2814.0912 5646.7929 -2814.0912~rep2418~0","TRACK~1~1~LHPOUT~5646.7929 -2821.0203 5653.0896 -2821.0203 5653.129 -2821.0597~rep2423~0","TRACK~5.90551~1~VBAT+~5689.4267 -2811.9259 5689.4267 -2770.6887 5698.2333 -2761.8821 5740.411 -2761.8821~rep2425~0","TRACK~5.9055~1~BAT+~5522.3109 -2739.2468 5544.3068 -2739.2468 5547.8126 -2742.7526 5558.6393 -2753.5794 5575.8035 -2753.5794 5662.806 -2753.5794 5679.4267 -2770.2001 5679.4267 -2811.9259~rep2428~0","TRACK~1.9685~1~GND~5803.9254 -2708.0631 5806.9569 -2705.0316 5807.5232 -2705.0316~rep2432~0","TRACK~1.9685~1~+3V3~5681.0023 -2607.9259 5681.0023 -2593.9723 5681.0023 -2607.9258 5678.0293 -2604.9528 5672.6145 -2604.9528 5680.449 -2604.9528~rep2434~0","TRACK~1~1~H1_CPLD_TCK~5762.5102 -2757.2408 5798.0094 -2757.2408~rep2438~0","TRACK~0.7874~1~H1_CPLD_TDI~5754.2011 -2757.8293 5752.6263 -2759.4041 5754.2011 -2757.8293 5754.2011 -2754.5222~rep2439~0","TRACK~1.1811~1~GND~5821.35 -2619.4599 5821.35 -2620.9397 5822.823 -2622.4127~rep2440~0","TRACK~1.9685~1~+3V3~5659.1511 -2777.0312 5659.1511 -2785.6266~rep2442~0","TRACK~1.9685~1~+3V3~5618.0094 -2784.7495 5621.9181 -2784.7495 5627.9307 -2778.7369 5629.8026 -2776.8649 5638.473 -2776.8649 5659.7201 -2776.8649 5671.9813 -2789.1261 5661.5921 -2778.7369 5662.3118 -2779.4566~rep2443~0","TRACK~1~1~I2S0_MCLK~5613.9259 -2774.9574 5607.6944 -2781.1889 5615.7979 -2773.0854 5656.0015 -2773.0854~rep2445~0","TRACK~0.7874~1~GND~5496.2086 -2740.8216 5496.2086 -2738.3413 5497.5865 -2736.9634~rep2450~0","TRACK~0.7874~1~VBUS~5479.4267 -2691.3636 5476.139 -2691.3636 5473.7282 -2693.7744 5473.7282 -2705.0736 5476.4305 -2707.7758 5478.9236 -2707.7758~rep2452~0","TRACK~3.1496~1~AGND~5720.6967 -2804.3649 5720.6967 -2809.5224~rep2457~0","TRACK~3.1496~1~AGND~5701.9566 -2798.1051 5707.8621 -2804.0106 5721.3267 -2804.0106 5724.5944 -2800.7429 5724.5944 -2788.735 5740.411 -2772.9184 5740.411 -2769.7561~rep2458~0","TRACK~0.7874~1~U9-7~5716.7599 -2796.5305 5720.0376 -2796.5305~rep2464~0","TRACK~0.7874~1~VBAT+~5717.2318 -2791.8055 5720.0376 -2791.8055~rep2465~0","TRACK~0.7874~1~SCL~5729.6236 -2794.9555 5733.5708 -2794.9555 5734.3927 -2794.1335 5736.8598 -2794.1335~rep2466~0","TRACK~0.7874~1~SCL~5733.5708 -2794.9555 5734.1723 -2794.3539~rep2469~0","TRACK~0.7874~1~SDA~5729.6236 -2796.5305 5740.5788 -2796.5305~rep2470~0","TRACK~3.937~1~VIN~5512.5023 -2707.7758 5515.2494 -2707.7758 5520.4605 -2712.987~rep2471~0","TRACK~1.9685~1~VIN~5541.4054 -2785.2431 5549.8992 -2793.7369 5563.8165 -2807.6542~rep2473~0","TRACK~1.9685~1~VIN~5520.4605 -2712.987 5521.7991 -2714.3256 5541.2873 -2714.3256~rep2474~0","TRACK~0.7874~1~SW_D~5501.1298 -2712.2363 5503.3766 -2714.483 5515.7361 -2714.483 5519.5917 -2718.3387 5523.1679 -2718.3387 5581.6281 -2718.3387 5587.6933 -2712.2735 5599.3074 -2712.2735 5617.3805 -2730.3465 5753.024 -2730.3465 5769.1366 -2714.2339 5769.1366 -2702.3142~rep2476~0","TRACK~0.7874~1~U6-7~5486.2873 -2746.2153 5495.2243 -2746.2153 5498.1771 -2743.2626 5498.1771 -2740.8216 5498.1771 -2743.2626~rep2480~0","TRACK~0.7874~1~U6-9~5486.2479 -2743.0657 5491.4841 -2743.0657 5493.6495 -2740.9004 5493.6495 -2738.2626~rep2483~0","TRACK~0.7874~1~U6-1~5504.6731 -2732.3571 5515.4211 -2732.3571 5516.681 -2731.0972 5521.0227 -2731.0972~rep2489~0","TRACK~0.7874~1~U6-16~5502.1141 -2729.798 5503.807 -2729.798 5507.5865 -2729.798 5508.3345 -2730.546 5514.1219 -2730.546 5519.0038 -2725.6641 5520.7078 -2725.6641~rep2492~0","TRACK~0.7874~1~U6-15~5501.1692 -2722.0704 5501.1692 -2725.113 5500.1456 -2726.1366 5500.1456 -2729.798~rep2498~0","TRACK~0.7874~1~U6-14~5496.1692 -2722.0311 5496.1692 -2723.7744 5498.1771 -2725.7823 5498.1771 -2729.798~rep2501~0","TRACK~1.9685~1~VBUS~5489.6731 -2719.9161 5489.6731 -2721.4122 5495.7755 -2727.5146 5495.7755 -2728.1838~rep2504~0","TRACK~3.937~1~VBUS~5489.6731 -2707.7758 5489.6731 -2719.9161~rep2507~0","TRACK~3.937~1~VBUS~5478.9236 -2707.7758 5490.7523 -2707.7758~rep2508~0","TRACK~1~1~BAT+~5504.6731 -2734.3256 5517.1534 -2734.3256 5519.9487 -2737.1208~rep2509~0","TRACK~1~1~BAT+~5510.618 -2736.2941 5510.618 -2736.3728 5516.0904 -2741.8453~rep2510~0","TRACK~1~1~BAT+~5504.6731 -2736.2941 5515.7361 -2736.2941 5518.6889 -2739.2468 5522.3109 -2739.2468~rep2512~0","TRACK~1~1~LED2-1~5475.3818 -2746.0185 5478.2274 -2746.0185 5474.2364 -2746.0185 5472.5166 -2744.2986~rep2516~0","TRACK~1~1~VIN~5481.8274 -2738.409 5481.8274 -2746.0185~rep2517~0","TRACK~1~1~VIN~5485.7755 -2734.3256 5493.6495 -2734.3256~rep2518~0","TRACK~1~1~VIN~5479.9487 -2736.2941 5493.6495 -2736.2941~rep2519~0","TRACK~1~1~U6-12~5483.9645 -2719.6799 5493.6495 -2729.3649 5493.6495 -2732.3571~rep2520~0","TRACK~1~1~U6-6~5500.1456 -2740.8216 5500.1456 -2746.6988~rep2522~0","TRACK~1~1~U6-5~5502.1141 -2740.8216 5503.3739 -2740.8216 5505.0274 -2742.4752 5505.0274 -2746.5807~rep2523~0","TRACK~1~1~U6-4~5504.6731 -2738.2626 5508.492 -2738.2626 5510.9834 -2740.7539 5510.9834 -2746.2547~rep2526~0","TRACK~1~1~VBUSCTRL~5479.4489 -2687.7858 5490.7523 -2687.7858~rep2529~0","TRACK~0.7874~1~GPS_RESET#~5793.3349 -2620.6639 5793.3349 -2628.3805 5790.7901 -2630.9252 5790.7901 -2638.5741~rep2530~0","TRACK~0.7874~1~GPS_TIMEPULSE~5796.3664 -2623.8529 5796.3664 -2629.0104 5792.7586 -2632.6182 5792.7586 -2638.5741~rep2533~0","TRACK~0.7874~1~GPS_TX_READY~5799.6341 -2627.3962 5799.6341 -2629.7584 5794.7271 -2634.6654 5794.7271 -2638.5741~rep2536~0","TRACK~1.9685~1~+3V3~5758.3721 -2766.1779 5823.1796 -2766.1779~rep2539~0","TRACK~1.1811~1~+3V3~5671.9464 -2788.6188 5671.9464 -2815.7054~rep2540~0","TRACK~1~1~+3V3~5812.0004 -2711.0946 5814.6381 -2711.0946 5817.6683 -2708.0644 5821.8523 -2708.0644~rep2541~0","TRACK~1.9685~1~+3V3~5478.2542 -2617.8208 5498.463 -2617.8208 5503.5358 -2612.7481 5529.9531 -2612.7481 5537.7484 -2604.9528 5566.8773 -2604.9528 5566.8773 -2583.8258~rep2544~0","TRACK~1~1~+3V3~5815.6914 -2710.0413 5821.8522 -2710.0413~rep2546~0","TRACK~1.9685~1~+3V3~5659.2692 -2778.7369 5659.2692 -2786.0991~rep2547~0","TRACK~0.7874~1~PP_CPLD_TMS~5756.2877 -2762.1994 5782.8625 -2762.1994~rep2550~0","TRACK~0.7874~1~H1_CPLD_TDI~5681.0023 -2697.8808 5680.15 -2697.8808 5684.2692 -2702.0001 5714.7956 -2702.0001 5718.9283 -2706.1327 5721.7248 -2708.9292 5750.0319 -2708.9292 5751.42 -2707.541 5751.42 -2702.3142~rep2551~0","TRACK~0.7874~1~PP_CPLD_TMS~5714.6735 -2709.719 5717.1538 -2709.719 5718.4112 -2710.9765 5750.9374 -2710.9765 5753.3885 -2708.5253 5753.3885 -2702.3142~rep2553~0","TRACK~0.7874~1~SD_CD~5722.4803 -2735.1637 5821.5025 -2735.1637 5830.7648 -2744.4259 5876.8208 -2744.4259~rep2556~0","TRACK~0.7874~1~SD_DAT2~5733.5687 -2751.5276 5814.4807 -2751.5276 5841.9216 -2778.9686 5845.15 -2778.9686~rep2557~0","TRACK~0.7874~1~SD_DAT0~5717.9436 -2740.2678 5818.7326 -2740.2678 5831.5407 -2753.0759 5876.8208 -2753.0759~rep2558~0","TRACK~0.7874~1~SD_CMD~5719.6366 -2745.819 5816.4098 -2745.819 5840.9667 -2770.3759 5845.3568 -2770.3759~rep2559~0","TRACK~0.7874~1~SD_CLK~5712.5499 -2742.8662 5817.3547 -2742.8662 5835.627 -2761.1385 5853.9791 -2761.1385~rep2560~0","TRACK~0.7874~1~PP_CPLD_TDO~5725.8152 -2700.5458 5732.787 -2700.5458 5734.5554 -2702.3142 5747.3452 -2702.3142~rep2561~0","TRACK~0.7874~1~H1_CPLD_TCK~5670.583 -2694.0867 5713.4137 -2694.0867 5722.6354 -2703.3084 5726.2877 -2706.9607 5726.4845 -2707.1576 5748.9295 -2707.1576 5749.4515 -2706.6355 5749.4515 -2702.3142~rep2564~0","TRACK~0.7874~1~SD_DAT1~5752.0357 -2737.7505 5820.3099 -2737.7505 5831.3102 -2748.7509 5876.8208 -2748.7509~rep2569~0","TRACK~0.7874~1~SD_DAT3~5815.3862 -2748.693 5841.3311 -2774.6379 5845.15 -2774.6379~rep2571~0","TRACK~0.7874~1~SD_DAT3~5767.2325 -2748.6954 5815.3886 -2748.6954~rep2572~0","TRACK~1.9685~1~+3V3~5774.3232 -2728.2993 5796.2852 -2728.2993~rep2573~0","TRACK~1~1~+3V3~5778.9791 -2682.5804 5778.9791 -2711.1237 5775.15 -2714.9528 5775.15 -2729.3623~rep2574~0","TRACK~1.1811~1~GND~5495.1017 -2582.6642 5495.1017 -2584.2468~rep2576~0","TRACK~1~1~GND~5611.6893 -2811.5322 5611.6893 -2815.8689 5613.7083 -2817.8879 5614.5632 -2817.8879~rep2577~0","TRACK~1~1~+3V3~5613.6578 -2811.5322 5613.6578 -2814.6878 5614.7124 -2815.7424 5616.5918 -2815.7424~rep2580~0","TRACK~1~1~GND~5619.5634 -2811.5322 5619.5634 -2816.105~rep2583~0","TRACK~1~1~GND~5597.4297 -2799.7211 5603.8153 -2799.7211~rep2584~0","TRACK~1.1811~1~GND~5555.8944 -2804.8374 5558.8165 -2807.7595 5558.8165 -2811.4298 5558.8165 -2817.3676 5560.2251 -2818.7762~rep2585~0","TRACK~0.7874~1~GND~5613.6578 -2791.8471 5613.6578 -2787.5767 5614.0724 -2787.1621~rep2589~0","TRACK~1~1~+3V3~5619.6236 -2784.7495 5615.6264 -2788.7467 5615.6264 -2791.8471~rep2592~0","TRACK~1~1~+3V3~5611.6893 -2791.8471 5611.6893 -2786.2381 5613.1779 -2784.7495 5618.0094 -2784.7495~rep2594~0","TRACK~1~1~NETU1_21~5590.085 -2803.2251 5598.2062 -2803.2251 5599.7417 -2801.6896 5603.8153 -2801.6896~rep2597~0","TRACK~0.7874~1~SDA~5595.1748 -2797.7526 5603.8153 -2797.7526~rep2602~0","TRACK~0.7874~1~SCL~5597.97 -2794.603 5599.4267 -2794.603 5600.6078 -2795.7841 5603.8153 -2795.7841~rep2603~0","TRACK~1~1~+3V3~5623.5003 -2803.6581 5635.8441 -2803.6581 5640.2929 -2808.107~rep2606~0","TRACK~1~1~I2S0_MCLK_R~5607.7523 -2784.8467 5607.7523 -2791.8471~rep2608~0","TRACK~1.1811~1~NETJ1_1~5553.8165 -2811.4298 5553.8165 -2816.5518 5550.844 -2819.5243 5538.7574 -2819.5243 5534.4661 -2815.2329 5528.3637 -2815.2329 5526.9267 -2816.6699 5526.9267 -2821.7684~rep2609~0","TRACK~1.1811~1~NETJ1_2~5575.7653 -2792.9385 5575.7653 -2795.1936 5568.8165 -2802.1424 5568.8165 -2820.1345 5566.3952 -2822.5558 5531.7496 -2822.5558~rep2616~0","TRACK~1.9685~1~VIN~5563.8251 -2807.6628 5563.8251 -2818.7762~rep2619~0","TRACK~1.1811~1~NETR12_2~5568.9078 -2789.3385 5580.6079 -2789.3385~rep2620~0","TRACK~1.1811~1~NETR13_2~5580.844 -2793.1746 5580.844 -2797.9605~rep2621~0","TRACK~1~1~RHPOUT_SPK~5574.3984 -2801.5605 5580.844 -2801.5605~rep2624~0","TRACK~1.1811~1~NETU5_2~5558.8165 -2789.4298 5563.8165 -2789.4298~rep2625~0","TRACK~1.9685~1~NETU5_2~5558.8165 -2781.4447 5558.8165 -2789.4298~rep2626~0","TRACK~1.9685~1~LHPOUT~5514.8094 -2784.7495 5526.5133 -2784.7495 5526.5152 -2784.7476 5529.5944 -2784.7476~rep2628~0","TRACK~1~1~NETK2_1~5576.7889 -2820.5763 5586.8283 -2820.5763~rep2629~0","TRACK~1~1~NETK2_1~5572.3007 -2815.5873 5572.3007 -2818.6581 5574.1795 -2820.5369 5576.7495 -2820.5369~rep2630~0","TRACK~1~1~LHPOUT~5521.0015 -2784.7495 5521.0015 -2789.2487~rep2633~0","TRACK~1~1~RHPOUT~5520.8047 -2768.6188 5520.8047 -2772.7242~rep2634~0","TRACK~1.9685~1~RHPOUT~5489.7023 -2755.0758 5489.7023 -2767.044 5495.8834 -2773.2251 5514.1905 -2773.2251 5515.0456 -2772.3699 5529.5175 -2772.3699~rep2635~0","TRACK~1~1~NETU1_16~5609.7208 -2811.5322 5609.7208 -2819.6239 5611.5504 -2821.4534 5615.5007 -2821.4534~rep2640~0","TRACK~1~1~I2S0_SCK~5655.085 -2792.9101 5665.8047 -2792.9101~rep2643~0","TRACK~1~1~I2S0_TX_SDA~5655.0456 -2797.9495 5662.4188 -2797.9495~rep2644~0","TRACK~1~1~I2S0_TX_SDA~5576.8723 -2583.8258 5576.8723 -2612.0093~rep2645~0","TRACK~1~1~H1_CPLD_TDI~5668.9937 -2697.9101 5680.1207 -2697.9101~rep2646~0","TRACK~1~1~H1_CPLD_TDI~5655.0456 -2802.9101 5668.9937 -2802.9101~rep2647~0","TRACK~1~1~I2S0_WS~5655.0456 -2807.9495 5659.0724 -2807.9495~rep2649~0","TRACK~1~1~MICBIAS~5596.7102 -2817.1337 5602.3118 -2811.5322 5607.7523 -2811.5322~rep2650~0","TRACK~1~1~MICBIAS~5586.8283 -2816.9763 5596.5527 -2816.9763~rep2652~0","TRACK~1~1~MICIN~5603.8153 -2807.5952 5584.5448 -2807.5952 5581.7889 -2810.3511 5581.7889 -2816.9369~rep2653~0","TRACK~1~1~NETR18_1~5619.5634 -2791.8471 5645.4503 -2791.8471 5646.5133 -2792.9101 5651.485 -2792.9101~rep2656~0","TRACK~1~1~NETR20_1~5623.5003 -2797.7526 5642.2614 -2797.7526 5644.5055 -2799.9967~rep2659~0","TRACK~1~1~NETR19_1~5623.5003 -2795.7841 5644.4661 -2795.7841 5646.6314 -2797.9495 5651.4456 -2797.9495~rep2661~0","TRACK~1~1~I2S0_RX_SDA~5623.5003 -2799.7211 5639.2693 -2799.7211 5642.4582 -2802.9101 5651.4456 -2802.9101~rep2664~0","TRACK~1~1~NETR20_1~5623.5003 -2801.6896 5638.1669 -2801.6896 5644.4267 -2807.9495 5651.4456 -2807.9495~rep2667~0","TRACK~1.1811~1~NETK2_3~5476.3559 -2754.8294 5476.3559 -2761.729~rep2670~0","TRACK~1.1811~1~NETM1_2~5551.8291 -2591.9979 5551.8291 -2551.9192 5551.8291 -2591.9979 5548.7189 -2595.1081 5544.4275 -2595.1081~rep2671~0","TRACK~1.1811~1~GND~5818.6248 -2626.3497 5818.6248 -2632.3026~rep2674~0","TRACK~1.1811~1~NETR2_2~5506.3547 -2563.9554 5506.3547 -2578.4586~rep2675~0","TRACK~0.7874~1~NETX1_1~5490.8429 -2588.0105 5498.9066 -2588.0105~rep2676~0","TRACK~0.7874~1~REF_EN~5753.4476 -2550.4835 5742.5421 -2539.578 5520.8492 -2539.578 5490.8429 -2569.5844 5490.8429 -2584.4105~rep2677~0","TRACK~1.9685~1~VBAT~5490.9503 -2607.6278 5498.9137 -2607.6278~rep2679~0","TRACK~1.1811~1~GND~5818.7405 -2630.6213 5821.6419 -2630.6213~rep2680~0","TRACK~0.7874~1~GND~5775.0421 -2631.7372 5775.0421 -2638.5741 5775.0421 -2644.4661~rep2681~0","TRACK~0.7874~1~GND~5765.1996 -2632.9307 5765.1996 -2638.5741 5765.1996 -2644.1781~rep2682~0","TRACK~0.7874~1~GND~5739.176 -2654.7158 5760.2059 -2654.7158~rep2685~0","TRACK~0.7874~1~GND~5760.027 -2652.7473 5802.9948 -2652.7473~rep2686~0","TRACK~0.7874~1~GND~5739.176 -2682.2749 5769.8327 -2682.2749~rep2687~0","TRACK~0.7874~1~GND~5775.0421 -2696.3845 5775.0421 -2702.3142~rep2688~0","TRACK~0.7874~1~GND~5777.0106 -2684.8496 5777.0106 -2702.3142~rep2689~0","TRACK~0.7874~1~GND~5765.1531 -2680.3064 5802.9948 -2680.3064~rep2690~0","TRACK~0.7874~1~GND~5821.8523 -2648.7567 5827.5323 -2648.7567~rep2691~0","TRACK~0.7874~1~GND~5821.8523 -2696.2028 5828.1692 -2696.2028~rep2692~0","TRACK~0.7874~1~GND~5821.8523 -2690.2721 5828.8527 -2690.2721~rep2693~0","TRACK~0.7874~1~GND~5821.8523 -2712.0182 5827.4867 -2712.0182~rep2694~0","TRACK~0.7874~1~LCD_TE~5788.8216 -2702.3142 5788.8216 -2707.7583 5792.3547 -2711.2914 5807.5122 -2711.2914 5810.4523 -2708.3512 5813.5232 -2708.3512 5815.7871 -2706.0874 5821.8523 -2706.0874~rep2697~0","TRACK~1~1~CLKIN~5506.3547 -2560.3554 5515.1818 -2560.3554 5516.9023 -2562.0758~rep2701~0","TRACK~1~1~NETR2_2~5506.3547 -2563.9554 5506.3547 -2574.1632~rep2703~0","TRACK~1~1~I2S0_SCK~5586.8673 -2562.0758 5586.8673 -2569.0066 5591.7878 -2573.927 5591.7878 -2608.8109~rep2704~0","TRACK~1.9685~1~LHPOUT~5505.1023 -2781.7759 5514.1523 -2781.7759~rep2706~0","TRACK~1~1~LHPOUT~5514.1523 -2781.7758 5514.92 -2781.7758~rep2707~0","TRACK~1.9685~1~VBAT~5490.7523 -2607.8258 5496.9047 -2607.8258~rep2708~0","TRACK~1.1811~1~NETC1_1~5506.6939 -2589.1067 5515.0181 -2597.431 5520.9326 -2597.431 5520.9326 -2602.0463 5524.9787 -2606.0924~rep2709~0","TRACK~1~1~I2S0_MCLK~5596.8623 -2583.8258 5596.8623 -2620.5473~rep2713~0","TRACK~1~1~I2S0_WS~5586.7484 -2583.9448 5586.7484 -2617.7085~rep2714~0","TRACK~0.7874~1~LCD_DB5~5802.9948 -2678.3379 5821.7797 -2678.3379~rep2717~0","TRACK~0.7874~1~LCD_DB6~5802.9948 -2676.3694 5821.788 -2676.3694~rep2718~0","TRACK~0.7874~1~LCD_DB7~5802.9948 -2674.4009 5821.7964 -2674.4009~rep2719~0","TRACK~0.7874~1~LCD_DB8~5803.0422 -2672.4797 5821.8523 -2672.4797~rep2720~0","TRACK~0.7874~1~LCD_DB9~5802.9948 -2670.4639 5821.8133 -2670.4639~rep2721~0","TRACK~0.7874~1~LCD_DB10~5802.9948 -2668.4954 5821.8217 -2668.4954~rep2722~0","TRACK~0.7874~1~LCD_DB11~5802.9948 -2666.5268 5821.8301 -2666.5268~rep2723~0","TRACK~0.7874~1~LCD_DB12~5802.9948 -2664.5583 5821.8385 -2664.5583~rep2724~0","TRACK~0.7874~1~LCD_DB13~5802.9948 -2662.5898 5821.847 -2662.5898~rep2725~0","TRACK~0.7874~1~LCD_DB14~5802.9948 -2660.6213 5821.8491 -2660.6213~rep2726~0","TRACK~0.7874~1~LCD_DB15~5802.9948 -2658.6528 5821.8407 -2658.6528~rep2727~0","TRACK~0.7874~1~NETR9_1~5812.109 -2655.5119 5813.6728 -2655.5119 5814.8253 -2656.6644 5821.8523 -2656.6644~rep2728~0","TRACK~0.7874~1~NETQ1_3~5813.9011 -2634.6646 5815.613 -2636.3765 5815.613 -2653.3182 5816.9822 -2654.6874 5821.8523 -2654.6874~rep2731~0","TRACK~0.7874~1~NETQ1_3~5815.7927 -2652.7105 5821.8523 -2652.7105~rep2735~0","TRACK~0.7874~1~NETQ1_3~5815.7566 -2650.7336 5821.8523 -2650.7336~rep2736~0","TRACK~0.7874~1~LCD_DB4~5802.9948 -2684.2434 5809.4122 -2684.2434 5813.2682 -2680.3874 5821.8523 -2680.3874~rep2737~0","TRACK~0.7874~1~LCD_DB3~5802.9948 -2686.2119 5809.924 -2686.2119 5813.7715 -2682.3644 5821.8523 -2682.3644~rep2740~0","TRACK~0.7874~1~LCD-DB2~5802.9948 -2688.1804 5810.5539 -2688.1804 5814.393 -2684.3413 5821.8523 -2684.3413~rep2743~0","TRACK~0.7874~1~LCD_DB1~5802.9948 -2690.1489 5811.0657 -2690.1489 5814.8964 -2686.3182 5821.8523 -2686.3182~rep2746~0","TRACK~0.7874~1~LCD-DB0~5802.9948 -2692.1174 5812.1287 -2692.1174 5815.951 -2688.2951 5821.8523 -2688.2951~rep2749~0","TRACK~0.7874~1~LCD_RESET#~5802.9948 -2694.0859 5813.3098 -2694.0859 5815.1467 -2692.249 5821.8523 -2692.249~rep2752~0","TRACK~0.7874~1~MCU_DIR~5788.8216 -2567.708 5788.8216 -2638.5741~rep2755~0","TRACK~0.7874~1~SCL~5821.1185 -2600.3904 5821.1185 -2573.4694 5807.5421 -2559.893 5637.109 -2559.893 5637.0023 -2559.9997 5637.0023 -2562.0758~rep2756~0","TRACK~0.7874~1~SDA~5851.2377 -2585.0361 5851.2377 -2594.4455 5848.0094 -2597.6739 5823.7563 -2597.6739 5823.7563 -2593.2394 5823.7563 -2572.4851 5808.4476 -2557.1765 5650.4161 -2557.1765 5646.9515 -2553.7119 5633.4476 -2553.7119 5627.0073 -2560.1522 5627.0073 -2562.0758~rep2759~0","TRACK~0.7874~1~MCU_DIR~5620.8492 -2555.3261 5616.8523 -2559.3229 5616.8523 -2562.0758~rep2764~0","TRACK~0.7874~1~MCU_LCD_WR~5784.983 -2592.6883 5784.983 -2608.515 5786.8531 -2610.3851 5786.8531 -2638.5741~rep2766~0","TRACK~0.7874~1~MCU_LCD_WR~5616.9122 -2583.8857 5616.9122 -2592.6883~rep2769~0","TRACK~0.7874~1~REF_EN~5753.4476 -2562.9639 5753.4476 -2583.2001 5761.2626 -2591.015 5761.2626 -2638.5741~rep2770~0","TRACK~0.7874~1~REF_EN~5492.9358 -2567.4914 5520.8492 -2539.578~rep2775~0","TRACK~0.7874~1~P2_8~5626.9515 -2583.8816 5626.9515 -2595.208~rep2776~0","TRACK~0.7874~1~MCU_IO_STBX~5610.4161 -2555.7198 5606.8573 -2559.2785 5606.8573 -2562.0758~rep2777~0","TRACK~0.7874~1~MCU_LCD_TE~5541.0067 -2555.0898 5536.8923 -2559.2042 5536.8923 -2562.0758~rep2779~0","TRACK~0.7874~1~MCU_ADDR~5606.8573 -2583.8258 5606.8573 -2593.1452~rep2781~0","TRACK~0.7874~1~MCU_LCD_RD~5536.8923 -2583.8258 5536.8923 -2585.5818 5541.0854 -2589.7749~rep2782~0","TRACK~0.7874~1~RESET#~5526.8973 -2583.8258 5526.8973 -2586.0986 5530.4161 -2589.6174~rep2784~0","TRACK~0.7874~1~SW_L~5538.4299 -2617.3333 5544.4352 -2623.3387 5602.3547 -2623.3387 5613.8507 -2611.8426 5714.7956 -2611.8426 5714.7956 -2611.9607 5720.4255 -2617.5906 5720.4255 -2664.6765 5728.1815 -2672.4324 5739.176 -2672.4324~rep2786~0","TRACK~0.7874~1~MCU_D1~5512.5023 -2627.8158 5543.5074 -2627.8158 5545.2681 -2626.0552 5603.6145 -2626.0552 5615.6618 -2614.0079 5713.3389 -2614.0079 5718.2996 -2618.9686 5718.2996 -2665.5032 5727.1972 -2674.4009 5739.176 -2674.4009~rep2790~0","TRACK~0.7874~1~MCU_D0~5490.7523 -2627.8158 5494.8578 -2631.9213 5543.3783 -2631.9213 5546.1736 -2629.1261 5604.52 -2629.1261 5612.1185 -2621.5276 5711.2523 -2621.5276 5716.4098 -2626.6851 5716.4098 -2666.8024 5725.9767 -2676.3694 5739.176 -2676.3694~rep2795~0","TRACK~0.7874~1~MCU_D2~5490.7523 -2637.8108 5494.6733 -2633.8898 5573.2996 -2633.8898 5603.2208 -2663.8111 5710.5043 -2663.8111 5712.1578 -2665.4646 5712.1578 -2668.6536 5723.8106 -2680.3064 5739.176 -2680.3064~rep2801~0","TRACK~0.7874~1~MCU_D3~5512.5023 -2637.8108 5572.8505 -2637.8108 5598.0397 -2663 5606.7641 -2671.7245 5711.4098 -2671.7245 5725.8972 -2686.2119 5739.176 -2686.2119~rep2803~0","TRACK~0.7874~1~MCU_D5~5512.5023 -2647.8058 5516.2609 -2644.0473 5575.0712 -2644.0473 5604.835 -2673.8111 5710.2287 -2673.8111 5724.598 -2688.1804 5739.176 -2688.1804~rep2804~0","TRACK~0.7874~1~MCU_D4~5489.5988 -2647.2363 5493.7326 -2651.3702 5563.024 -2651.3702 5564.4451 -2652.7913 5576.9588 -2665.305 5590.961 -2665.305 5607.223 -2681.567 5714.7169 -2681.567 5723.2987 -2690.1489 5739.176 -2690.1489~rep2806~0","TRACK~0.7874~1~MCU_D6~5490.7523 -2657.8008 5495.0177 -2653.5355 5561.0948 -2653.5355 5575.6596 -2668.1003 5589.1478 -2668.1003 5604.7799 -2683.7324 5713.6933 -2683.7324 5722.0783 -2692.1174 5739.176 -2692.1174~rep2807~0","TRACK~0.7874~1~MCU_D7~5512.5023 -2657.8008 5561.6988 -2657.8008 5574.7541 -2670.8562 5587.1027 -2670.8562 5607.7742 -2691.5276 5718.3783 -2691.5276 5720.9366 -2694.0859 5739.176 -2694.0859~rep2809~0","TRACK~0.7874~1~PP_CPLD_TDO~5702.7523 -2647.9058 5705.4652 -2647.9058 5709.2838 -2651.7245~rep2810~0","TRACK~0.7874~1~H1_CPLD_TCK~5670.6815 -2687.8858 5681.0023 -2687.8858~rep2812~0","TRACK~0.7874~1~PP_CPLD_TMS~5702.7523 -2637.9108 5705.5095 -2637.9108 5709.2838 -2641.6851~rep2813~0","TRACK~0.7874~1~P2_8~5733.4964 -2595.189 5733.4964 -2659.2835 5734.8342 -2660.6213 5739.176 -2660.6213~rep2815~0","TRACK~0.7874~1~MCU_ADDR~5731.2129 -2598.0631 5731.2129 -2659.8733 5733.9295 -2662.5898 5739.176 -2662.5898~rep2818~0","TRACK~0.7874~1~MCU_IO_STBX~5727.7484 -2571.0158 5727.7484 -2564.0867 5727.7484 -2571.0158 5728.6933 -2571.9607 5728.6933 -2592.0788 5728.6933 -2660.4639 5732.7877 -2664.5583 5739.176 -2664.5583~rep2821~0","TRACK~0.7874~1~MCU_LCD_TE~5724.3421 -2566.1528 5724.3421 -2570.7985 5725.3468 -2571.8032 5725.3468 -2590.2678 5726.6066 -2591.5276 5726.6066 -2661.4481 5731.6854 -2666.5268 5739.176 -2666.5268~rep2825~0","TRACK~0.7874~1~MCU_LCD_RD~5722.0029 -2589.7749 5722.0029 -2591.6483 5724.3626 -2594.0079 5724.3626 -2662.3143 5730.5437 -2668.4954 5739.176 -2668.4954~rep2832~0","TRACK~0.7874~1~RESET#~5718.3232 -2587.1948 5718.3232 -2591.5119 5719.4019 -2592.5906 5722.4334 -2595.6221 5722.4334 -2663.5347 5729.3626 -2670.4639 5739.176 -2670.4639~rep2835~0","TRACK~0.7874~1~SW_U~5612.1193 -2650.4894 5623.1576 -2661.5276 5711.2129 -2661.5276 5714.3232 -2664.6379 5714.3232 -2667.9056 5724.7555 -2678.3379 5739.176 -2678.3379~rep2852~0","TRACK~0.7874~1~SW_SEL~5763.2311 -2702.3142 5763.2311 -2707.4623 5757.9059 -2712.7875 5654.4649 -2712.7875 5636.0375 -2694.3601 5606.0791 -2694.3601 5588.2655 -2676.5466 5576.5468 -2676.5466 5548.257 -2676.5466~rep2889~0","TRACK~0.7874~1~TP_U~5512.5023 -2697.7808 5531.915 -2697.7808 5533.5358 -2699.4016 5584.5594 -2699.4016 5596.5931 -2699.4016 5602.2602 -2705.0688 5628.8722 -2705.0688 5647.2602 -2723.4568 5747.5515 -2723.4568~rep2891~0","TRACK~0.7874~1~TP_R~5512.5023 -2667.7958 5525.3552 -2667.7958 5540.4255 -2682.8662 5579.1657 -2682.8662 5590.7663 -2682.8662 5605.1736 -2697.2735 5634.0297 -2697.2735 5652.0633 -2715.3072 5755.5437 -2715.3072~rep2893~0","TRACK~0.7874~1~TP_D~5512.5023 -2677.7908 5531.0195 -2677.7908 5538.4177 -2685.189 5578.0633 -2685.189 5589.4277 -2685.189 5603.835 -2699.5963 5632.2186 -2699.5963 5650.7641 -2718.1418 5752.7877 -2718.1418~rep2895~0","TRACK~0.7874~1~TP_D~5784.8846 -2702.3142 5784.8846 -2712.9741 5784.3626 -2713.4961 5784.3626 -2718.1024~rep2899~0","TRACK~0.7874~1~TP_L~5782.9161 -2702.3142 5782.9161 -2712.3442 5781.8035 -2713.4568 5781.8035 -2720.7009 5795.438 -2720.7009 5796.2129 -2719.9259 5821.8523 -2719.9259~rep2902~0","TRACK~0.7874~1~TP_U~5780.9476 -2702.3142 5780.9476 -2711.9111 5779.0082 -2713.8505 5779.0082 -2723.4568 5795.898 -2723.4568 5797.1185 -2722.2363 5824.5594 -2722.2363 5825.8491 -2720.9466 5825.8491 -2718.7622 5825.0359 -2717.949 5821.8523 -2717.949~rep2905~0","TRACK~0.7874~1~TP_L~5512.5023 -2687.7858 5576.8806 -2687.7858 5588.4025 -2687.7858 5603.087 -2702.4703 5630.4864 -2702.4703 5648.7169 -2720.7009 5749.835 -2720.7009~rep2907~0","TRACK~0.7874~1~SW_ROT_B~5765.1996 -2702.3142 5765.1996 -2710.9662 5750.0318 -2726.1339 5619.5852 -2726.1339 5600.1473 -2706.696 5586.8144 -2706.696 5578.4064 -2706.696~rep2911~0","TRACK~0.7874~1~SW_ROT_A~5767.1681 -2702.3142 5767.1681 -2712.5016 5751.5673 -2728.1024 5618.286 -2728.1024 5599.9767 -2709.7932 5585.7248 -2709.7932 5581.8249 -2713.693 5574.9531 -2713.693 5567.2323 -2705.9722 5527.5727 -2705.9722~rep2914~0","TRACK~0.7874~1~SW_R~5773.0736 -2702.3142 5773.0736 -2713.5253 5754.2051 -2732.3938 5594.1657 -2732.3938 5582.0583 -2744.5012 5566.8255 -2744.5012~rep2918~0","TRACK~0.7874~1~TP_R~5786.8035 -2715.3465 5787.4291 -2715.9721 5821.8523 -2715.9721~rep2923~0","TRACK~0.7874~1~TP_R~5786.8531 -2702.3142 5786.8531 -2715.4938~rep2924~0","TRACK~0.7874~1~TP_D~5790.4649 -2713.5355 5804.4019 -2713.5355 5804.8615 -2713.9951 5821.8523 -2713.9951~rep2936~0","TRACK~0.7874~1~LCD_RD#~5794.7271 -2702.3142 5796.5681 -2702.3142 5800.7026 -2698.1797 5821.8523 -2698.1797~rep2939~0","TRACK~0.7874~1~LCD_WR#~5792.7586 -2702.3142 5792.7586 -2706.1048 5793.8114 -2707.1576 5797.1972 -2707.1576 5804.1981 -2700.1567 5821.8523 -2700.1567~rep2942~0","TRACK~0.7874~1~LCD_RS~5790.7901 -2702.3142 5790.7901 -2706.8135 5793.2602 -2709.2835 5798.2208 -2709.2835 5805.3708 -2702.1336 5821.8523 -2702.1336~rep2947~0","TRACK~0.7874~1~NETR10_1~5811.1232 -2705.3072 5812.3199 -2704.1105 5821.8523 -2704.1105~rep2952~0","TRACK~0.7874~1~SD_CLK~5671.7988 -2657.9008 5681.0023 -2657.9008~rep2957~0","TRACK~0.7874~1~SD_DAT2~5671.6751 -2627.9158 5681.0023 -2627.9158~rep2958~0","TRACK~0.7874~1~SD_CD~5671.6219 -2617.9208 5681.0023 -2617.9208~rep2959~0","TRACK~0.7874~1~SD_DAT0~5671.6906 -2637.9108 5681.0023 -2637.9108~rep2960~0","TRACK~0.7874~1~SD_CMD~5671.6851 -2647.9058 5681.0023 -2647.9058~rep2961~0","TRACK~0.7874~1~SD_DAT1~5702.7523 -2627.9158 5713.6248 -2627.9158~rep2964~0","TRACK~0.7874~1~NETJ2_5~5857.5791 -2761.1385 5858.1665 -2761.7259 5876.8208 -2761.7259~rep2968~0","TRACK~0.7874~1~NETR23_1~5857.6667 -2766.0509 5876.8208 -2766.0509~rep2970~0","TRACK~0.7874~1~NETR23_1~5857.4598 -2766.2578 5857.4598 -2780.3554~rep2973~0","TRACK~0.7874~1~SD_CMD~5869.8644 -2770.3759 5876.8208 -2770.3759~rep2974~0","TRACK~0.7874~1~SD_DAT3~5869.8193 -2774.7009 5876.8208 -2774.7009~rep2975~0","TRACK~0.7874~1~SD_DAT2~5869.835 -2778.9686 5876.7634 -2778.9686~rep2976~0","TRACK~0.7874~1~SD_DAT3~5702.7523 -2617.9208 5712.8818 -2617.9208~rep2977~0","TRACK~0.7874~1~+3V3~5812.109 -2647.4426 5812.109 -2651.9119~rep2989~0","TRACK~1~1~~5782.9161 -2618.9001 5782.9161 -2638.5741~rep2990~0","TRACK~1~1~+3V3~5739.176 -2656.6843 5761.45 -2656.6843 5763.4185 -2654.7158 5806.7649 -2654.7158 5809.5688 -2651.9119 5812.109 -2651.9119~rep2991~0","TRACK~1~1~+3V3~5771.1051 -2684.2434 5771.1051 -2702.3142~rep2993~0","TRACK~1~1~+3V3~5739.176 -2684.2434 5771.0767 -2684.2434 5773.0453 -2682.2749 5802.9948 -2682.2749~rep2994~0","TRACK~1~1~NETR7_1~5810.8382 -2619.2237 5817.5137 -2619.2237~rep3001~0","TRACK~1~1~NETR7_1~5811.1248 -2619.5103 5811.1248 -2626.3497~rep3002~0","TRACK~1~1~LCD_BACKLIGHT~5807.2382 -2619.2237 5802.9948 -2623.467 5802.9948 -2646.8418~rep3003~0","TRACK~1.1811~1~+3V3~5841.8868 -2766.1779 5853.9397 -2766.1779~rep3005~0","TRACK~1.1811~1~NETK2_3~5661.7993 -2552.8689 5661.7993 -2549.4437 5662.8672 -2548.3758 5679.5043 -2548.3758~rep3006~0","TRACK~1.1811~1~NETK2_1~5669.7862 -2554.0268 5683.8533 -2554.0268 5689.5043 -2548.3758~rep3009~0","TRACK~1.1811~1~GND~5654.1847 -2544.5846 5676.3666 -2544.5846~rep3011~0","TRACK~1.1811~1~GND~5656.2879 -2549.0894 5660.7926 -2544.5846~rep3012~0","TRACK~1.1811~1~GND~5651.5635 -2555.0111 5657.469 -2555.0111~rep3013~0","TRACK~0.7874~1~~5757.3255 -2623.494 5757.3255 -2638.5741~rep3021~0","TRACK~1~1~+3V3~5771.1051 -2623.7719 5771.1051 -2629.2026 5771.1051 -2638.5741~rep3022~0","TRACK~1~1~+3V3~5771.1185 -2623.7585 5765.4492 -2623.7585 5763.2311 -2625.9766 5763.2311 -2638.5741~rep3024~0","TRACK~1~1~NETM1_2~5699.5043 -2548.3758 5710.5279 -2548.3758~rep3027~0","TRACK~1~1~NETK2_1~5683.8533 -2554.0268 5714.1682 -2554.0268 5717.4964 -2550.6987 5717.4964 -2548.3365~rep3028~0","TRACK~1.1811~1~GND~5510.3635 -2581.8846 5510.3635 -2584.9507~rep3031~0","TRACK~1.9685~1~VBAT~5808.2051 -2567.6278 5808.2051 -2583.9664~rep3035~0","TRACK~1.1811~1~GND~5807.5531 -2630.6213 5811.012 -2630.6213~rep3087~0","TRACK~1~1~U6-16~5519.0038 -2725.6641 5520.7078 -2725.6641~rep3088~0","TRACK~0.7874~1~SCL~5861.2377 -2595.233 5861.2377 -2585.0361 5861.2377 -2595.233 5856.0803 -2600.3904~rep3096~0","TRACK~1.9685~1~+3V3~5860.5752 -2603.494 5866.159 -2597.9101 5866.159 -2577.477 5871.2377 -2572.3983 5871.2377 -2567.3196~rep3100~0","TRACK~1.9685~1~VBAT~5881.2377 -2554.3668 5881.2377 -2567.3196~rep3104~0","TRACK~1.9685~1~BAT+~5841.2377 -2558.9337 5841.2377 -2567.3196~rep3105~0","TRACK~1.9685~1~BAT+~5876.2771 -2558.9337 5876.2771 -2579.9967 5871.2377 -2585.0361~rep3106~0","TRACK~1.9685~1~VBAT~5836.0015 -2554.4455 5836.0015 -2575.3511 5831.2377 -2580.1148 5831.2377 -2585.0361~rep3108~0","TRACK~1.9685~1~+3V3~5807.644 -2604.9574 5814.4661 -2604.9574 5859.1118 -2604.9574 5866.159 -2597.9101~rep3111~0","TRACK~1.9685~1~+3V3~5841.2377 -2585.0361 5841.2377 -2593.7369~rep3114~0","TRACK~1.1811~1~SCL~5851.2377 -2567.3196 5851.2377 -2571.9652 5861.2377 -2581.9652 5861.2377 -2595.233 5855.2141 -2601.2566 5821.1196 -2601.2566~rep3115~0","TRACK~0.7874~1~SCL~5821.1185 -2595.8629 5821.1185 -2601.2554~rep3120~0","TRACK~1.1811~1~SDA~5823.7563 -2597.6739 5848.0094 -2597.6739 5851.2377 -2594.4455 5851.2377 -2585.0361~rep3121~0","TRACK~1.1811~1~SDA~5861.2377 -2567.3196 5861.2377 -2575.1148~rep3124~0","TRACK~1~1~H1_CPLD_TCK~5792.1039 -2757.2408 5805.844 -2757.2408~rep3125~0","TRACK~1.9685~1~+3V3~5788.0094 -2766.5322 5788.0094 -2776.9652 5788.0094 -2798.2644~rep3126~0","TRACK~1~1~PP_CPLD_TDO~5763.6499 -2753.971 5788.0094 -2753.971 5793.2435 -2753.971~rep3127~0","TRACK~1~1~H1_CPLD_TDI~5754.2011 -2754.5222 5754.2011 -2757.8293 5751.3165 -2760.7138 5751.3165 -2801.5715 5758.0094 -2808.2644~rep3129~0","TRACK~1~1~U6-7~5473.2221 -2734.2199 5472.5166 -2734.9254 5472.5166 -2738.2486~rep3136~0","TRACK~1~1~U6-9~5472.4741 -2727.5534 5472.4741 -2731.2278~rep3138~0","TRACK~1~1~U6-12~5480.8489 -2716.7002 5480.9848 -2716.7002 5488.8878 -2724.6033~rep3139~0","TRACK~1~1~LED1-1~5472.8284 -2721.5034 5475.0332 -2721.5034 5476.8836 -2719.653 5480.6631 -2719.653 5482.5135 -2721.5034 5487.7103 -2726.7002 5487.7103 -2729.5853~rep3141~0","TRACK~1~1~RHPOUT_SPK~5512.0523 -2755.0758 5514.3854 -2757.4089 5519.482 -2757.4089~rep3143~0","TRACK~1~1~VIN~5505.0275 -2756.5091 5505.0275 -2750.1807 5505.0275 -2757.9658 5503.3521 -2759.6412 5498.4977 -2759.6412 5495.9723 -2757.1158 5495.9723 -2748.6956 5495.9723 -2756.104~rep3145~0","TRACK~1~1~GND~5500.0332 -2750.4226 5500.0332 -2754.8105~rep3147~0","TRACK~1.9685~1~GND~5478.8796 -2722.2396 5479.915 -2723.275 5479.915 -2728.4876~rep3157~0","PAD~ELLIPSE~5793.335~-2620.664~3.1496~3.1496~1~GPS_RESET#~22~0~~0~rep1944~0~~Y~0~0~0.2~5793.335,-2620.664","PAD~ELLIPSE~5796.366~-2623.853~3.1496~3.1496~1~GPS_TIMEPULSE~21~0~~0~rep1945~0~~Y~0~0~0.2~5796.366,-2623.853","PAD~ELLIPSE~5799.634~-2627.396~3.1496~3.1496~1~GPS_TX_READY~20~0~~0~rep1946~0~~Y~0~0~0.2~5799.634,-2627.396","PAD~ELLIPSE~5521.41~-2547.633~3.937~3.937~1~~19~0~~0~rep1947~0~~Y~0~0~0.2~5521.41,-2547.633","PAD~ELLIPSE~5506.868~-2812.241~3.937~3.937~1~~18~0~~0~rep1948~0~~Y~0~0~0.2~5506.868,-2812.241","PAD~ELLIPSE~5903.443~-2803.691~3.937~3.937~1~~17~0~~0~rep1949~0~~Y~0~0~0.2~5903.443,-2803.691","PAD~ELLIPSE~5900.622~-2562.118~3.937~3.937~1~~16~0~~0~rep1950~0~~Y~0~0~0.2~5900.622,-2562.118","PAD~ELLIPSE~5757.326~-2623.494~3.937~3.937~1~~15~0~~0~rep1951~0~~Y~0~0~0.2~5757.326,-2623.494","PAD~ELLIPSE~5782.916~-2618.9~3.937~3.937~1~~14~0~~0~rep1952~0~~Y~0~0~0.2~5782.916,-2618.9","RECT~5551.671~-2671.886~1.861~2.126~1~rep3441~0~0~~~GND~","RECT~5549.86~-2670.863~4.055~1.577~1~rep3442~0~0~~~GND~","RECT~5543.206~-2670.745~3.543~1.459~1~rep3443~0~0~~~GND~","RECT~5542.183~-2672.241~1.969~2.955~1~rep3444~0~0~~~GND~","RECT~5541.553~-2673.264~1.457~3.978~1~rep3445~0~0~~~GND~","RECT~5728.335~-2800.271~2.559~2.363~1~rep3446~0~0~~~GND~","RECT~5741.484~-2774.64~3.543~4.685~1~rep3447~0~0~~~AGND~","RECT~5736.445~-2776.963~6.378~8.74~1~rep3448~0~0~~~AGND~","RECT~5727.035~-2783.577~17.992~8.937~1~rep3449~0~0~~~AGND~","RECT~5727.035~-2788.026~17.992~4.449~1~rep3450~0~0~~~AGND~","RECT~5729.988~-2788.026~15.039~13.386~1~rep3451~0~0~~~AGND~","RECT~5714.358~-2804.955~11.772~4.764~1~rep3452~0~0~~~AGND~","RECT~5718.807~-2804.011~2.047~5.945~1~rep3453~0~0~~~AGND~","RECT~5709.555~-2797.436~7.284~2.244~1~rep3454~0~0~~~U9-7~","RECT~5691.051~-2792.2~30.118~4.173~1~rep3455~0~0~~~VBAT+~","RECT~5514.713~-2740.9~3.107~1.024~1~rep3456~0~0~~~BAT+~","RECT~5513.689~-2739.877~4.13~1.5~1~rep3457~0~0~~~BAT+~","RECT~5512.744~-2738.814~4.803~2.008~1~rep3458~0~0~~~BAT+~","RECT~5511.878~-2737.948~5.669~1.81~1~rep3459~0~0~~~BAT+~","RECT~5517.547~-2736.806~1.418~0.668~1~rep3460~0~0~~~BAT+~","RECT~5517.547~-2741.845~6.654~5.039~1~rep3461~0~0~~~BAT+~","RECT~5515.933~-2742.318~2.441~8.465~1~rep3462~0~0~~~BAT+~","RECT~5509.398~-2736.294~6.536~2.441~1~rep3463~0~0~~~BAT+~","RECT~5479.161~-2739.877~5.276~2.362~1~rep3464~0~0~~~VIN~","RECT~5479.752~-2739.129~6.969~4.803~1~rep3465~0~0~~~VIN~","RECT~5483.413~-2740.428~6.339~1.142~1~rep3466~0~0~~~VIN~","RECT~5483.413~-2739.286~6.378~5.472~1~rep3467~0~0~~~VIN~","RECT~5484.279~-2736.294~5.512~2.48~1~rep3468~0~0~~~VIN~","RECT~5494.477~-2579.955~3.7~2.323~1~rep3469~0~0~~~GND~","RECT~5473.217~-2781.126~5.708~8.572~1~rep3470~0~0~~~GND~","RECT~5474.004~-2790.939~4.843~9.814~1~rep3471~0~0~~~GND~","RECT~5476.652~-2784.837~11.919~7.52~1~rep3472~0~0~~~GND~","RECT~5528.768~-2781.373~1.693~5.206~1~rep3473~0~0~~~GND~","RECT~5523.413~-2781.373~1.142~6.181~1~rep3474~0~0~~~GND~","RECT~5522.98~-2776.845~7.284~1.535~1~rep3475~0~0~~~GND~","RECT~5522.862~-2781.924~7.047~1.535~1~rep3476~0~0~~~GND~","RECT~5935.189~-2815.425~3.148~6.536~1~rep3477~0~0~~~GND~","RECT~5923.89~-2821.016~13.5~22.99~1~rep3478~0~0~~~GND~","RECT~5920.583~-2825.425~10.901~3.74~1~rep3479~0~0~~~GND~","RECT~5912.587~-2824.01~21.894~17.404~1~rep3480~0~0~~~GND~","RECT~5931.095~-2543.575~4.803~5.433~1~rep3481~0~0~~~GND~","RECT~5929.874~-2559.444~8.032~17.877~1~rep3482~0~0~~~GND~","RECT~5909.559~-2562.987~23.106~26.467~1~rep3483~0~0~~~GND~","RECT~5478.453~-2825.782~20.749~26.575~1~rep3484~0~0~~~GND~","RECT~5471.637~-2812.16~10.32~11.929~1~rep3485~0~0~~~GND~","RECT~5472.004~-2819.286~9.48~9.488~1~rep3486~0~0~~~GND~","RECT~5473.792~-2822.829~9.07~6.771~1~rep3487~0~0~~~GND~","RECT~5478.861~-2547.475~20.341~11.653~1~rep3488~0~0~~~GND~","RECT~5478.972~-2563.105~14.325~26.102~1~rep3489~0~0~~~GND~","RECT~5492.429~-2551.963~6.772~6.142~1~rep3490~0~0~~~GND~","RECT~5491.524~-2558.766~2.953~8.811~1~rep3491~0~0~~~GND~","RECT~5493.296~-2556.766~2.205~6.772~1~rep3492~0~0~~~GND~","RECT~5494.477~-2555.743~2.047~5.787~1~rep3493~0~0~~~GND~","RECT~5494.477~-2553.472~2.726~3.517~1~rep3494~0~0~~~GND~","RECT~5472.744~-2560.625~10.118~19.173~1~rep3495~0~0~~~GND~","RECT~5474.634~-2542.632~5.354~3.898~1~rep3496~0~0~~~GND~","RECT~5476.288~-2540.231~2.835~3.31~1~rep3497~0~0~~~GND~","RECT~5657.547~-2544.585~18.819~2.841~1~rep3498~0~0~~~GND~","RECT~5656.288~-2546.57~3.228~2.047~1~rep3499~0~0~~~GND~","RECT~5705.737~-2803.223~8.621~3.032~1~rep3500~0~0~~~AGND~","RECT~5729.477~-2802.75~0.039~0.078~1~rep3501~0~0~~~GND~","RECT~5729.083~-2815.742~6.496~12.992~1~rep3502~0~0~~~GND~","COPPERAREA~1~1~GND~M 5469.1211 -2828.9504 L 5941.1202 -2828.9504 L 5941.1202 -2532.951 L 5469.1211 -2532.951 L 5469.1211 -2828.9504 L5469.1211,-2829.9504 L5468.1211,-2830.9504 Z~1~solid~gge9684~spoke~none~[[\"M 5611.95256 -2808.64425 L 5611.80364 -2808.6155 5611.57536 -2808.6155 5611.42644 -2808.64425 5611.29894 -2808.72638 5611.21117 -2808.85008 5611.17576 -2808.99755 5611.19781 -2809.14761 5611.26411 -2809.33709 5611.29202 -2809.58477 5611.34416 -2809.74183 5611.45542 -2809.86434 5611.60675 -2809.93133 5611.77225 -2809.93133 5611.92358 -2809.86434 5612.03484 -2809.74183 5612.08698 -2809.58477 5612.11489 -2809.33709 5612.18119 -2809.14761 5612.20324 -2808.99755 5612.16783 -2808.85008 5612.08006 -2808.72638 5611.95256 -2808.64425 Z \",\"M 5606.49792 -2799.24282 L 5606.35045 -2799.20741 5606.20039 -2799.22946 5606.00991 -2799.29611 5605.76223 -2799.32402 5605.60517 -2799.37616 5605.48266 -2799.48742 5605.41567 -2799.63875 5605.41567 -2799.80425 5605.48266 -2799.95558 5605.60517 -2800.06684 5605.76223 -2800.11898 5606.00991 -2800.14689 5606.20039 -2800.21354 5606.35045 -2800.23559 5606.49792 -2800.20018 5606.62162 -2800.11241 5606.70375 -2799.98491 5606.7325 -2799.83599 5606.7325 -2799.60701 5606.70375 -2799.45809 5606.62162 -2799.33059 5606.49792 -2799.24282 Z \",\"M 5613.89158 -2793.51466 L 5613.74025 -2793.44767 5613.57475 -2793.44767 5613.42342 -2793.51466 5613.31216 -2793.63717 5613.26002 -2793.79423 5613.23211 -2794.04191 5613.16546 -2794.23239 5613.14341 -2794.38245 5613.17882 -2794.52992 5613.26659 -2794.65362 5613.39409 -2794.73575 5613.54301 -2794.7645 5613.77199 -2794.7645 5613.92091 -2794.73575 5614.04841 -2794.65362 5614.13618 -2794.52992 5614.17159 -2794.38245 5614.14954 -2794.23239 5614.08289 -2794.04191 5614.05498 -2793.79423 5614.00284 -2793.63717 5613.89158 -2793.51466 Z \",\"M 5613.97319 -2786.2695 L 5613.82012 -2786.29995 5613.69035 -2786.38666 5613.32646 -2786.75055 5613.23975 -2786.88032 5613.2093 -2787.03339 5613.2093 -2789.51895 5613.26002 -2789.89977 5613.31216 -2790.05683 5613.42342 -2790.17934 5613.57475 -2790.24633 5613.74025 -2790.24633 5613.89158 -2790.17934 5614.00284 -2790.05683 5614.05498 -2789.89977 5614.1064 -2789.51694 5614.1064 -2788.76635 5614.1375 -2788.45054 5614.22389 -2788.16576 5614.36418 -2787.90331 5614.56549 -2787.658 5615.27115 -2786.95234 5615.35786 -2786.82257 5615.38831 -2786.6695 5615.35786 -2786.51643 5615.27115 -2786.38666 5615.14138 -2786.29995 5614.98831 -2786.2695 5613.97319 -2786.2695 Z \",\"M 5656.89992 -2778.8996 L 5656.74685 -2778.86915 5641.29859 -2778.86915 5641.12954 -2778.90663 5641.0753 -2778.93192 5640.70495 -2779.03116 5640.323 -2779.06457 5639.94105 -2779.03116 5639.5707 -2778.93192 5639.51646 -2778.90663 5639.34741 -2778.86915 5638.50981 -2778.86915 5638.3554 -2778.90016 5638.22492 -2778.98837 5638.13861 -2779.12012 5638.10986 -2779.27497 5638.14311 -2779.42892 5638.23321 -2779.5581 5638.39714 -2779.71503 5638.774 -2780.14083 5638.86763 -2780.2617 5639.18769 -2780.7359 5639.26476 -2780.86794 5639.52023 -2781.37983 5639.57942 -2781.5208 5639.76595 -2782.06163 5639.80625 -2782.20911 5639.92061 -2782.7694 5639.94154 -2782.92393 5639.98196 -2783.51805 5639.98215 -2783.67399 5639.94473 -2784.24461 5639.92478 -2784.39619 5639.81321 -2784.9573 5639.77366 -2785.10499 5639.58986 -2785.64676 5639.53139 -2785.78802 5639.2785 -2786.3012 5639.20211 -2786.43363 5638.88446 -2786.90944 5638.79144 -2787.03078 5638.41445 -2787.4611 5638.3064 -2787.56927 5637.87651 -2787.94675 5637.75528 -2788.0399 5637.27983 -2788.35809 5637.14748 -2788.43464 5636.63459 -2788.6881 5636.4934 -2788.74674 5635.95183 -2788.93115 5635.80419 -2788.97086 5635.2432 -2789.08307 5635.09165 -2789.10319 5634.52082 -2789.14128 5634.36793 -2789.14146 5633.79701 -2789.10477 5633.6454 -2789.08502 5633.08414 -2788.97419 5632.9364 -2788.93483 5632.39439 -2788.75174 5632.25305 -2788.69345 5631.73954 -2788.44124 5631.60701 -2788.36502 5631.13079 -2788.04799 5631.00933 -2787.95513 5630.57851 -2787.57871 5630.4702 -2787.4708 5630.09216 -2787.0414 5629.99885 -2786.92029 5629.68004 -2786.44526 5629.60332 -2786.31302 5629.34918 -2785.80046 5629.29036 -2785.65934 5629.10524 -2785.11802 5629.06533 -2784.97043 5628.95239 -2784.40959 5628.93207 -2784.25806 5628.89324 -2783.68728 5628.89285 -2783.53439 5628.92879 -2782.96342 5628.94835 -2782.81179 5629.05845 -2782.25038 5629.09761 -2782.10259 5629.27999 -2781.56034 5629.33809 -2781.41893 5629.48598 -2781.11683 5629.52614 -2780.96239 5629.50273 -2780.80454 5629.41948 -2780.6684 5629.28964 -2780.57564 5629.13386 -2780.54102 5628.97695 -2780.57006 5628.84387 -2780.65812 5623.34149 -2786.16055 5623.20616 -2786.28455 5623.06747 -2786.39097 5622.92003 -2786.4849 5622.76497 -2786.56562 5622.60346 -2786.63252 5622.43674 -2786.68509 5622.26607 -2786.72293 5622.09275 -2786.74574 5621.90937 -2786.75375 5619.93464 -2786.75375 5619.78157 -2786.7842 5619.6518 -2786.87091 5618.27719 -2788.24552 5618.18449 -2788.39063 5618.16139 -2788.56126 5618.21215 -2788.7258 5618.32739 -2788.85375 5618.48573 -2788.9214 5618.65784 -2788.91622 5618.76749 -2788.88856 5619.03431 -2788.8585 5620.09169 -2788.8585 5620.34056 -2788.88654 5620.55561 -2788.96179 5620.74853 -2789.08301 5620.90964 -2789.24412 5621.03086 -2789.43704 5621.10511 -2789.64925 5621.13604 -2789.96598 5621.17675 -2790.10672 5621.2654 -2790.22337 5621.39011 -2790.30027 5621.53415 -2790.3271 5645.43065 -2790.3271 5645.74646 -2790.3582 5646.03124 -2790.44459 5646.29369 -2790.58488 5646.539 -2790.78619 5647.02575 -2791.27294 5647.15552 -2791.35965 5647.30859 -2791.3901 5649.29846 -2791.3901 5649.43057 -2791.36765 5649.54786 -2791.30283 5649.63715 -2791.20291 5649.70526 -2791.09452 5649.86637 -2790.93341 5650.05929 -2790.81219 5650.27434 -2790.73694 5650.52321 -2790.7089 5652.44679 -2790.7089 5652.69566 -2790.73694 5652.91071 -2790.81219 5653.07219 -2790.91365 5653.21064 -2790.96799 5653.35936 -2790.96799 5653.49781 -2790.91365 5653.65929 -2790.81219 5653.87434 -2790.73694 5654.12321 -2790.7089 5656.04679 -2790.7089 5656.29566 -2790.73694 5656.51071 -2790.81219 5656.70363 -2790.93341 5656.86474 -2791.09452 5656.93285 -2791.20291 5657.02214 -2791.30283 5657.13943 -2791.36765 5657.27154 -2791.3901 5664.05512 -2791.3901 5664.20393 -2791.36139 5664.33138 -2791.27938 5664.42635 -2791.18869 5664.74421 -2790.96611 5665.0917 -2790.80408 5665.46205 -2790.70484 5665.844 -2790.67143 5666.22595 -2790.70484 5666.5963 -2790.80408 5666.94379 -2790.96611 5667.25786 -2791.18603 5667.52897 -2791.45714 5667.74889 -2791.77121 5667.91092 -2792.1187 5668.01016 -2792.48905 5668.04357 -2792.871 5668.01016 -2793.25295 5667.91092 -2793.6233 5667.74889 -2793.97079 5667.52897 -2794.28486 5667.25786 -2794.55597 5666.94379 -2794.77589 5666.5963 -2794.93792 5666.22595 -2795.03716 5665.844 -2795.07057 5665.46205 -2795.03716 5665.0917 -2794.93792 5664.74421 -2794.77589 5664.29166 -2794.46055 5664.13859 -2794.4301 5657.27141 -2794.4301 5657.1393 -2794.45255 5657.02202 -2794.51737 5656.93272 -2794.61729 5656.86474 -2794.72548 5656.70363 -2794.88659 5656.51071 -2795.00781 5656.36507 -2795.05877 5656.22511 -2795.1431 5656.13056 -2795.27637 5656.09718 -2795.43632 5656.13056 -2795.59628 5656.22511 -2795.72954 5656.36507 -2795.81388 5656.47171 -2795.85119 5656.66463 -2795.97241 5656.82574 -2796.13352 5656.8941 -2796.24231 5656.98339 -2796.34223 5657.10068 -2796.40705 5657.23279 -2796.4295 5660.7188 -2796.4295 5660.89528 -2796.38847 5661.01548 -2796.3241 5661.35821 -2796.08411 5661.7057 -2795.92208 5662.07605 -2795.82284 5662.458 -2795.78943 5662.83995 -2795.82284 5663.2103 -2795.92208 5663.55779 -2796.08411 5663.87186 -2796.30403 5664.14297 -2796.57514 5664.36289 -2796.88921 5664.52492 -2797.2367 5664.62416 -2797.60705 5664.65757 -2797.989 5664.62416 -2798.37095 5664.52492 -2798.7413 5664.36289 -2799.08879 5664.14297 -2799.40286 5663.87186 -2799.67397 5663.55779 -2799.89389 5663.2103 -2800.05592 5662.83995 -2800.15516 5662.458 -2800.18857 5662.07605 -2800.15516 5661.7057 -2800.05592 5661.35821 -2799.89389 5661.04077 -2799.67161 5660.94632 -2799.58094 5660.8186 -2799.4984 5660.66931 -2799.4695 5657.23216 -2799.4695 5657.10005 -2799.49195 5656.98276 -2799.55677 5656.89347 -2799.65669 5656.82574 -2799.76448 5656.66463 -2799.92559 5656.31707 -2800.13628 5656.22251 -2800.26954 5656.18914 -2800.4295 5656.22251 -2800.58946 5656.31707 -2800.72272 5656.66463 -2800.93341 5656.82574 -2801.09452 5656.89385 -2801.20291 5656.98314 -2801.30283 5657.10043 -2801.36765 5657.23254 -2801.3901 5667.24939 -2801.3901 5667.40246 -2801.35965 5667.53223 -2801.27294 5667.58014 -2801.22503 5667.89421 -2801.00511 5668.2417 -2800.84308 5668.61205 -2800.74384 5668.994 -2800.71043 5669.37595 -2800.74384 5669.7668 -2800.85264 5669.92189 -2800.88987 5670.0792 -2800.86355 5670.21371 -2800.77785 5670.30405 -2800.64641 5670.33585 -2800.49012 5670.33585 -2790.72285 5670.31734 -2790.60256 5670.26351 -2790.49342 5670.07611 -2790.22579 5669.95701 -2789.97036 5669.87733 -2789.85656 5662.71189 -2782.69113 5662.57085 -2782.5985 5662.48057 -2782.45981 5661.95629 -2781.93553 5661.82652 -2781.84882 5661.67345 -2781.81837 5661.52038 -2781.84882 5661.39061 -2781.93553 5661.3039 -2782.0653 5661.27345 -2782.21837 5661.27345 -2782.48534 5661.30683 -2782.6453 5661.40138 -2782.77856 5661.54134 -2782.86289 5661.75781 -2782.93864 5661.98491 -2783.08134 5662.06199 -2783.10971 5662.09036 -2783.18679 5662.23306 -2783.41389 5662.30831 -2783.62894 5662.33635 -2783.87781 5662.33635 -2787.37619 5662.30831 -2787.62506 5662.23306 -2787.84011 5662.11184 -2788.03303 5661.95073 -2788.19414 5661.75781 -2788.31536 5661.54276 -2788.39061 5661.29389 -2788.41865 5657.00811 -2788.41865 5656.75924 -2788.39061 5656.54419 -2788.31536 5656.35127 -2788.19414 5656.19016 -2788.03303 5655.97972 -2787.68618 5655.84646 -2787.59163 5655.6865 -2787.55825 5655.52654 -2787.59163 5655.39328 -2787.68618 5655.18284 -2788.03303 5655.02173 -2788.19414 5654.82881 -2788.31536 5654.61376 -2788.39061 5654.36489 -2788.41865 5653.55467 -2788.41865 5653.55467 -2786.76283 5655.56565 -2786.76283 5655.71872 -2786.73238 5655.84849 -2786.64567 5655.9352 -2786.5159 5655.96565 -2786.36283 5655.96565 -2784.89117 5655.9352 -2784.7381 5655.84849 -2784.60833 5655.71872 -2784.52162 5655.56565 -2784.49117 5653.55467 -2784.49117 5653.55467 -2782.83535 5654.36489 -2782.83535 5654.61376 -2782.86339 5654.82881 -2782.93864 5655.02173 -2783.05986 5655.18284 -2783.22097 5655.39328 -2783.56782 5655.52654 -2783.66237 5655.6865 -2783.69575 5655.84646 -2783.66237 5655.97972 -2783.56782 5656.19016 -2783.22097 5656.35127 -2783.05986 5656.54419 -2782.93864 5656.93044 -2782.81763 5657.04511 -2782.72879 5657.12055 -2782.6049 5657.14685 -2782.46226 5657.14685 -2779.26915 5657.1164 -2779.11608 5657.02969 -2778.98631 5656.89992 -2778.8996 Z M 5650.88933 -2782.83535 L 5650.88933 -2784.49117 5649.03665 -2784.49117 5649.03665 -2783.87781 5649.06469 -2783.62894 5649.13994 -2783.41389 5649.26116 -2783.22097 5649.42227 -2783.05986 5649.61519 -2782.93864 5649.83024 -2782.86339 5650.07911 -2782.83535 5650.88933 -2782.83535 Z M 5649.03665 -2787.37619 L 5649.03665 -2786.76283 5650.88933 -2786.76283 5650.88933 -2788.41865 5650.07911 -2788.41865 5649.83024 -2788.39061 5649.61519 -2788.31536 5649.42227 -2788.19414 5649.26116 -2788.03303 5649.13994 -2787.84011 5649.06469 -2787.62506 5649.03665 -2787.37619 Z \",\"M 5628.44139 -2774.63928 L 5628.28029 -2774.6054 5616.59319 -2774.6054 5616.44012 -2774.63585 5616.31035 -2774.72256 5610.01226 -2781.02065 5609.92555 -2781.15042 5609.8951 -2781.30349 5609.8951 -2782.15079 5609.86706 -2782.39966 5609.79181 -2782.61471 5609.69035 -2782.77619 5609.63601 -2782.91464 5609.63601 -2783.06336 5609.69035 -2783.20181 5609.79181 -2783.36329 5609.86706 -2783.57834 5609.8951 -2783.82721 5609.8951 -2784.925 5609.9281 -2785.0841 5610.02166 -2785.21694 5610.16034 -2785.30161 5610.32126 -2785.32414 5610.47786 -2785.2808 5610.62839 -2785.1494 5612.0892 -2783.68859 5612.33451 -2783.48728 5612.59696 -2783.34699 5612.88174 -2783.2606 5613.19755 -2783.2295 5616.57571 -2783.2295 5616.696 -2783.21099 5616.80514 -2783.15716 5617.00804 -2783.01509 5617.25793 -2782.89857 5617.37696 -2782.81355 5617.45747 -2782.69142 5617.48869 -2782.54851 5617.45094 -2782.35966 5617.4229 -2782.11079 5617.4229 -2781.89113 5618.78345 -2781.89113 5618.78345 -2782.34525 5618.8139 -2782.49832 5618.90061 -2782.62809 5619.03038 -2782.7148 5619.18345 -2782.74525 5620.06455 -2782.74525 5620.21762 -2782.7148 5620.34739 -2782.62809 5620.4341 -2782.49832 5620.46455 -2782.34525 5620.46455 -2781.89113 5621.77634 -2781.89113 5621.92941 -2781.86068 5622.05918 -2781.77397 5628.37917 -2775.4539 5628.5238 -2775.32274 5628.63099 -2775.19779 5628.67877 -2775.04026 5628.65906 -2774.87682 5628.5752 -2774.73516 5628.44139 -2774.63928 Z M 5620.78264 -2779.14475 L 5621.03151 -2779.17279 5621.24656 -2779.24804 5621.43948 -2779.36926 5621.60059 -2779.53037 5621.72181 -2779.72329 5621.79706 -2779.93834 5621.8251 -2780.18721 5621.8251 -2780.40687 5620.46455 -2780.40687 5620.46455 -2779.14475 5620.78264 -2779.14475 Z M 5618.78345 -2779.14475 L 5618.78345 -2780.40687 5617.4229 -2780.40687 5617.4229 -2780.18721 5617.45094 -2779.93834 5617.52619 -2779.72329 5617.64741 -2779.53037 5617.80852 -2779.36926 5618.00144 -2779.24804 5618.21649 -2779.17279 5618.46536 -2779.14475 5618.78345 -2779.14475 Z \",\"M 5700.04455 -2765.85485 L 5699.89148 -2765.8853 5699.76171 -2765.97201 5693.51661 -2772.21711 5693.4299 -2772.34688 5693.39946 -2772.49995 5693.39946 -2786.607 5693.4299 -2786.76007 5693.51661 -2786.88984 5693.64638 -2786.97655 5693.79946 -2787.007 5721.14654 -2787.007 5721.39541 -2787.03504 5721.61046 -2787.11029 5721.80338 -2787.23151 5721.86618 -2787.29431 5721.98442 -2787.37603 5722.12391 -2787.41068 5722.26664 -2787.39379 5722.39419 -2787.32753 5722.77071 -2786.88909 5725.89784 -2783.76196 5725.98455 -2783.63219 5726.015 -2783.47911 5726.015 -2774.66246 5726.04304 -2774.41359 5726.11829 -2774.19854 5726.23951 -2774.00562 5726.40062 -2773.84451 5726.59354 -2773.72329 5726.80859 -2773.64804 5727.05746 -2773.62 5731.75266 -2773.62 5731.92565 -2773.58066 5732.06462 -2773.47037 5732.14221 -2773.31083 5732.16026 -2773.22967 5732.34991 -2772.07572 5732.46368 -2770.91184 5732.50083 -2769.77682 5732.53674 -2769.27481 5732.63928 -2768.80341 5732.80787 -2768.35141 5733.03907 -2767.928 5733.32818 -2767.5418 5733.6693 -2767.20068 5734.0555 -2766.91157 5734.47891 -2766.68037 5734.61494 -2766.62963 5734.74921 -2766.54622 5734.84068 -2766.4173 5734.87507 -2766.26301 5734.847 -2766.10745 5734.76087 -2765.97491 5734.63011 -2765.88609 5734.47515 -2765.85485 5700.04455 -2765.85485 Z M 5719.79497 -2776.9859 L 5719.79497 -2775.0348 5723.45949 -2775.0348 5723.70836 -2775.06284 5723.92341 -2775.13809 5724.11633 -2775.25931 5724.27744 -2775.42042 5724.39866 -2775.61334 5724.47391 -2775.82839 5724.50195 -2776.07726 5724.50195 -2776.9859 5719.79497 -2776.9859 Z M 5707.50764 -2775.06284 L 5707.75651 -2775.0348 5711.42103 -2775.0348 5711.42103 -2776.9859 5706.71405 -2776.9859 5706.71405 -2776.07726 5706.74209 -2775.82839 5706.81734 -2775.61334 5706.93856 -2775.42042 5707.09967 -2775.25931 5707.29259 -2775.13809 5707.50764 -2775.06284 Z M 5706.71405 -2780.75674 L 5706.71405 -2779.8481 5711.42103 -2779.8481 5711.42103 -2781.7992 5707.75651 -2781.7992 5707.50764 -2781.77116 5707.29259 -2781.69591 5707.09967 -2781.57469 5706.93856 -2781.41358 5706.81734 -2781.22066 5706.74209 -2781.00561 5706.71405 -2780.75674 Z M 5724.50195 -2779.8481 L 5724.50195 -2780.75674 5724.47391 -2781.00561 5724.39866 -2781.22066 5724.27744 -2781.41358 5724.11633 -2781.57469 5723.92341 -2781.69591 5723.70836 -2781.77116 5723.45949 -2781.7992 5719.79497 -2781.7992 5719.79497 -2779.8481 5724.50195 -2779.8481 Z \",\"M 5499.58745 -2748.82125 L 5499.43438 -2748.8517 5499.30461 -2748.93841 5499.2179 -2749.06818 5499.18745 -2749.22125 5499.18745 -2749.67488 5498.16977 -2749.67488 5498.04396 -2749.69518 5497.93091 -2749.75403 5497.84211 -2749.84544 5497.65697 -2750.10986 5497.60946 -2750.15737 5497.52275 -2750.28714 5497.4923 -2750.44021 5497.4923 -2750.75913 5497.52275 -2750.9122 5497.60946 -2751.04197 5497.73923 -2751.12868 5497.8923 -2751.15913 5499.18745 -2751.15913 5499.18745 -2752.42125 5498.86936 -2752.42125 5498.62049 -2752.39321 5498.40544 -2752.31796 5498.21252 -2752.19674 5498.04537 -2752.07265 5497.8923 -2752.04221 5497.73923 -2752.07265 5497.60946 -2752.15936 5497.52275 -2752.28913 5497.4923 -2752.44221 5497.4923 -2756.32051 5497.52275 -2756.47358 5497.60946 -2756.60335 5499.01015 -2758.00404 5499.13992 -2758.09075 5499.29299 -2758.1212 5502.55681 -2758.1212 5502.70988 -2758.09075 5502.83965 -2758.00404 5503.39034 -2757.45335 5503.47705 -2757.32358 5503.5075 -2757.17051 5503.5075 -2752.36716 5503.48505 -2752.23505 5503.42023 -2752.11776 5503.32031 -2752.02847 5503.21252 -2751.96074 5503.05141 -2751.79963 5502.90848 -2751.57216 5502.80732 -2751.46314 5502.67332 -2751.3986 5502.52501 -2751.38749 5502.38289 -2751.43133 5502.2666 -2751.52406 5502.19224 -2751.65286 5502.12581 -2751.84271 5502.00459 -2752.03563 5501.84348 -2752.19674 5501.65056 -2752.31796 5501.43551 -2752.39321 5501.18664 -2752.42125 5500.86855 -2752.42125 5500.86855 -2751.15913 5502.4269 -2751.15913 5502.57997 -2751.12868 5502.70974 -2751.04197 5502.79645 -2750.9122 5502.8269 -2750.75913 5502.8269 -2750.07488 5502.79645 -2749.9218 5502.70974 -2749.79203 5502.57997 -2749.70532 5502.4269 -2749.67488 5500.86855 -2749.67488 5500.86855 -2749.22125 5500.8381 -2749.06818 5500.75139 -2748.93841 5500.62162 -2748.8517 5500.46855 -2748.82125 5499.58745 -2748.82125 Z \",\"M 5496.21586 -2739.04707 L 5496.05708 -2739.10227 5495.935 -2739.21785 5495.78305 -2739.43945 5495.73088 -2739.54725 5495.71295 -2739.66566 5495.71295 -2739.88303 5495.4632 -2739.88303 5495.31013 -2739.91347 5495.18036 -2740.00018 5495.09365 -2740.12995 5495.0632 -2740.28303 5495.0632 -2740.87944 5495.03015 -2741.19387 5494.99723 -2741.38609 5495.03451 -2741.53129 5495.12262 -2741.65256 5495.24919 -2741.73289 5495.39644 -2741.76098 5495.71295 -2741.76098 5495.71295 -2742.76176 5495.7434 -2742.91484 5495.83011 -2743.04461 5495.95987 -2743.13131 5496.11295 -2743.16176 5496.26602 -2743.13132 5496.39579 -2743.04461 5496.58789 -2742.85252 5496.68234 -2742.70255 5496.70271 -2742.52649 5496.6649 -2742.17829 5496.6649 -2739.44405 5496.62957 -2739.2797 5496.52984 -2739.14437 5496.38331 -2739.06198 5496.21586 -2739.04707 Z \",\"M 5499.29361 -2732.12106 L 5499.1615 -2732.09862 5499.02939 -2732.12106 5498.89551 -2732.16791 5498.64664 -2732.19595 5497.7362 -2732.19595 5497.58313 -2732.2264 5497.45336 -2732.31311 5497.36665 -2732.44288 5497.3362 -2732.59595 5497.3362 -2733.4852 5496.44795 -2733.4852 5496.29488 -2733.51565 5496.16511 -2733.60236 5496.0784 -2733.73213 5496.04795 -2733.8852 5496.04795 -2734.79564 5496.01991 -2735.04451 5495.97324 -2735.17789 5495.95079 -2735.31 5495.97324 -2735.44211 5496.01991 -2735.57549 5496.04795 -2735.82436 5496.04795 -2736.7348 5496.0784 -2736.88787 5496.16511 -2737.01764 5496.29488 -2737.10435 5496.44795 -2737.1348 5497.3362 -2737.1348 5497.3362 -2738.02405 5497.36665 -2738.17712 5497.45336 -2738.30689 5497.58313 -2738.3936 5497.7362 -2738.42405 5498.64664 -2738.42405 5498.89551 -2738.45209 5499.02939 -2738.49894 5499.1615 -2738.52138 5499.29361 -2738.49894 5499.42749 -2738.45209 5499.67636 -2738.42405 5500.5858 -2738.42405 5500.73887 -2738.3936 5500.86864 -2738.30689 5500.95535 -2738.17712 5500.9858 -2738.02405 5500.9858 -2737.1348 5501.87505 -2737.1348 5502.02812 -2737.10435 5502.15789 -2737.01764 5502.2446 -2736.88787 5502.27505 -2736.7348 5502.27505 -2735.82436 5502.30309 -2735.57549 5502.34976 -2735.44211 5502.37221 -2735.31 5502.34976 -2735.17789 5502.30309 -2735.04451 5502.27505 -2734.79564 5502.27505 -2733.8852 5502.2446 -2733.73213 5502.15789 -2733.60236 5502.02812 -2733.51565 5501.87505 -2733.4852 5500.9858 -2733.4852 5500.9858 -2732.59595 5500.95535 -2732.44288 5500.86864 -2732.31311 5500.73887 -2732.2264 5500.5858 -2732.19595 5499.67636 -2732.19595 5499.42749 -2732.16791 5499.29361 -2732.12106 Z \",\"M 5477.67889 -2721.173 L 5477.52582 -2721.20345 5477.39605 -2721.29016 5476.1219 -2722.56431 5475.87659 -2722.76562 5475.61414 -2722.90591 5475.4217 -2722.96428 5475.30941 -2723.01869 5475.21934 -2723.10504 5475.16026 -2723.21495 5475.12266 -2723.32241 5475.00144 -2723.51533 5474.84033 -2723.67644 5474.64741 -2723.79766 5474.43236 -2723.87291 5474.18349 -2723.90095 5471.47251 -2723.90095 5471.22364 -2723.87291 5471.02331 -2723.80281 5470.87325 -2723.78077 5470.72578 -2723.81617 5470.60208 -2723.90394 5470.51995 -2724.03145 5470.4912 -2724.18036 5470.4912 -2724.87564 5470.51995 -2725.02455 5470.60208 -2725.15206 5470.72578 -2725.23983 5470.87325 -2725.27523 5471.02331 -2725.25319 5471.22364 -2725.18309 5471.47251 -2725.15505 5474.18349 -2725.15505 5474.43236 -2725.18309 5474.64741 -2725.25834 5474.84033 -2725.37956 5475.00144 -2725.54067 5475.12266 -2725.73359 5475.19791 -2725.94864 5475.22595 -2726.19751 5475.22595 -2728.90849 5475.19791 -2729.15736 5475.12266 -2729.37241 5475.00144 -2729.56533 5474.84033 -2729.72644 5474.63745 -2729.85392 5474.53141 -2729.95109 5474.46659 -2730.07948 5474.45138 -2730.2225 5474.48774 -2730.36165 5474.54092 -2730.4757 5474.64016 -2730.84605 5474.67357 -2731.228 5474.64016 -2731.60995 5474.54092 -2731.9803 5474.51113 -2732.04418 5474.47379 -2732.20279 5474.50281 -2732.36314 5474.59337 -2732.49861 5474.90801 -2732.80763 5475.12689 -2733.12021 5475.28892 -2733.4677 5475.38816 -2733.83805 5475.42157 -2734.22 5475.38816 -2734.60195 5475.28892 -2734.9723 5475.12689 -2735.31979 5474.89013 -2735.65791 5474.83142 -2735.78381 5474.81931 -2735.9222 5474.85527 -2736.05638 5474.93495 -2736.17018 5475.00144 -2736.23667 5475.12266 -2736.42959 5475.19791 -2736.64464 5475.22595 -2736.89351 5475.22595 -2739.60449 5475.19791 -2739.85336 5475.12266 -2740.06841 5475.00144 -2740.26133 5474.84033 -2740.42244 5474.64741 -2740.54366 5474.43236 -2740.61891 5474.18349 -2740.64695 5471.47251 -2740.64695 5471.22364 -2740.61891 5471.02331 -2740.54881 5470.87325 -2740.52677 5470.72578 -2740.56217 5470.60208 -2740.64994 5470.51995 -2740.77745 5470.4912 -2740.92636 5470.4912 -2741.62164 5470.51995 -2741.77055 5470.60208 -2741.89806 5470.72578 -2741.98583 5470.87325 -2742.02123 5471.02331 -2741.99919 5471.22364 -2741.92909 5471.47251 -2741.90105 5474.18349 -2741.90105 5474.43236 -2741.92909 5474.64741 -2742.00434 5474.84033 -2742.12556 5475.00144 -2742.28667 5475.12266 -2742.47959 5475.19749 -2742.69344 5475.22819 -2742.98217 5475.26963 -2743.12164 5475.35821 -2743.23705 5475.49832 -2743.36329 5475.67573 -2743.60101 5475.74267 -2743.67109 5475.82451 -2743.72301 5476.26031 -2743.93027 5476.44514 -2744.01563 5476.59523 -2744.01641 5476.73504 -2743.96182 5476.80129 -2743.92019 5477.01634 -2743.84494 5477.26521 -2743.8169 5479.1999 -2743.8169 5479.36563 -2743.78096 5479.50156 -2743.67958 5479.58329 -2743.531 5479.59611 -2743.36191 5479.53772 -2743.2027 5479.43315 -2743.03779 5479.33708 -2742.85921 5479.22899 -2742.76275 5479.02644 -2742.53576 5478.76935 -2742.13031 5478.66693 -2741.93803 5478.55433 -2741.83819 5478.37899 -2741.64168 5478.24405 -2741.54295 5478.08054 -2741.508 5477.57526 -2741.508 5477.32639 -2741.47996 5477.11134 -2741.40471 5476.91842 -2741.28349 5476.75731 -2741.12238 5476.63609 -2740.92946 5476.56084 -2740.71441 5476.5328 -2740.46554 5476.5328 -2734.51046 5476.56084 -2734.26159 5476.63609 -2734.04654 5476.75731 -2733.85362 5476.91842 -2733.69251 5477.11134 -2733.57129 5477.32639 -2733.49604 5477.57526 -2733.468 5479.10187 -2733.468 5479.21018 -2733.45306 5479.52559 -2733.33404 5479.77446 -2733.306 5480.9461 -2733.306 5481.09917 -2733.27555 5481.22894 -2733.18884 5481.31565 -2733.05907 5481.3461 -2732.906 5481.3461 -2730.238 5483.2972 -2730.238 5483.2972 -2731.46554 5483.26916 -2731.71441 5483.19391 -2731.92946 5483.04871 -2732.16054 5482.99519 -2732.29478 5482.99287 -2732.43928 5483.04205 -2732.57517 5483.1619 -2732.70537 5483.27986 -2732.77119 5483.413 -2732.794 5485.1089 -2732.794 5485.26197 -2732.76355 5485.39174 -2732.67684 5485.47845 -2732.54707 5485.5089 -2732.394 5485.5089 -2732.22321 5485.53694 -2731.97434 5485.61219 -2731.75929 5485.71365 -2731.59781 5485.76799 -2731.45936 5485.76799 -2731.31064 5485.71365 -2731.17219 5485.61219 -2731.01071 5485.53694 -2730.79566 5485.5089 -2730.54679 5485.5089 -2728.62321 5485.53694 -2728.37434 5485.61219 -2728.15929 5485.73341 -2727.96637 5485.89452 -2727.80526 5486.04889 -2727.67814 5486.11374 -2727.55087 5486.12973 -2727.40892 5486.09483 -2727.2704 5486.01348 -2727.15298 5483.96917 -2725.10868 5483.83247 -2725.01917 5483.67137 -2724.9918 5483.51278 -2725.03113 5483.38314 -2725.1306 5483.3041 -2725.27362 5483.28884 -2725.43631 5483.2972 -2725.51046 5483.2972 -2726.738 5481.3461 -2726.738 5481.3461 -2724.468 5482.25474 -2724.468 5482.32889 -2724.47636 5482.49158 -2724.4611 5482.6346 -2724.38206 5482.73407 -2724.25242 5482.7734 -2724.09383 5482.74603 -2723.93273 5482.65652 -2723.79603 5480.15065 -2721.29016 5480.02088 -2721.20345 5479.86781 -2721.173 5477.67889 -2721.173 Z M 5478.4839 -2724.468 L 5478.4839 -2726.738 5476.5328 -2726.738 5476.5328 -2725.51046 5476.56084 -2725.26159 5476.63609 -2725.04654 5476.75731 -2724.85362 5476.91842 -2724.69251 5477.11134 -2724.57129 5477.32639 -2724.49604 5477.57526 -2724.468 5478.4839 -2724.468 Z M 5476.5328 -2731.46554 L 5476.5328 -2730.238 5478.4839 -2730.238 5478.4839 -2732.508 5477.57526 -2732.508 5477.32639 -2732.47996 5477.11134 -2732.40471 5476.91842 -2732.28349 5476.75731 -2732.12238 5476.63609 -2731.92946 5476.56084 -2731.71441 5476.5328 -2731.46554 Z \",\"M 5591.00247 -2713.71715 L 5590.85061 -2713.6872 5588.44456 -2713.6872 5588.29149 -2713.71765 5588.16172 -2713.80436 5582.64256 -2719.32351 5582.39686 -2719.52248 5582.13394 -2719.65645 5581.8438 -2719.73419 5581.61238 -2719.7524 5519.61266 -2719.7524 5519.29823 -2719.71935 5519.01759 -2719.62817 5518.75747 -2719.47798 5518.58094 -2719.32721 5517.90239 -2718.64865 5517.76927 -2718.56057 5517.61231 -2718.53155 5517.4565 -2718.56623 5517.32666 -2718.65906 5517.24345 -2718.79528 5517.22014 -2718.95319 5517.26043 -2719.10765 5517.59456 -2719.78883 5517.85205 -2720.48406 5518.03787 -2721.20176 5518.15014 -2721.93458 5518.18769 -2722.675 5518.15014 -2723.41542 5518.10358 -2723.71933 5518.11028 -2723.87435 5518.17546 -2724.01515 5518.28931 -2724.12056 5518.43472 -2724.17471 5518.58979 -2724.16946 5518.73119 -2724.10559 5518.83766 -2723.99272 5518.92826 -2723.84852 5519.08937 -2723.68741 5519.28229 -2723.56619 5519.49734 -2723.49094 5519.74621 -2723.4629 5521.66979 -2723.4629 5521.91866 -2723.49094 5522.13371 -2723.56619 5522.29519 -2723.66765 5522.43364 -2723.72199 5522.58236 -2723.72199 5522.72081 -2723.66765 5522.88229 -2723.56619 5523.09734 -2723.49094 5523.34621 -2723.4629 5523.56588 -2723.4629 5523.56588 -2724.82345 5523.11225 -2724.82345 5522.95918 -2724.8539 5522.82941 -2724.94061 5522.7427 -2725.07038 5522.71225 -2725.22345 5522.71225 -2726.10455 5522.7427 -2726.25762 5522.82941 -2726.38739 5522.95918 -2726.4741 5523.11225 -2726.50455 5523.56588 -2726.50455 5523.56588 -2727.8651 5523.34621 -2727.8651 5523.09734 -2727.83706 5522.88229 -2727.76181 5522.72081 -2727.66035 5522.58236 -2727.60601 5522.43364 -2727.60601 5522.29519 -2727.66035 5522.13371 -2727.76181 5521.91866 -2727.83706 5521.66979 -2727.8651 5519.74621 -2727.8651 5519.49734 -2727.83706 5519.2403 -2727.74712 5519.09323 -2727.72495 5518.94823 -2727.75804 5518.82535 -2727.84183 5517.66652 -2729.00066 5517.57981 -2729.13043 5517.54936 -2729.2835 5517.57981 -2729.43657 5517.66652 -2729.56634 5517.79629 -2729.65305 5517.94936 -2729.6835 5518.76961 -2729.6835 5518.90172 -2729.66105 5519.019 -2729.59623 5519.1083 -2729.49631 5519.24326 -2729.28152 5519.40437 -2729.12041 5519.59729 -2728.99919 5519.81234 -2728.92394 5520.06121 -2728.8959 5521.98479 -2728.8959 5522.23366 -2728.92394 5522.44871 -2728.99919 5522.61019 -2729.10065 5522.74864 -2729.15499 5522.89736 -2729.15499 5523.03581 -2729.10065 5523.19729 -2728.99919 5523.41234 -2728.92394 5523.66121 -2728.8959 5523.88087 -2728.8959 5523.88087 -2730.25645 5523.42725 -2730.25645 5523.27418 -2730.2869 5523.14441 -2730.37361 5523.0577 -2730.50338 5523.02725 -2730.65645 5523.02725 -2731.53755 5523.0577 -2731.69062 5523.14441 -2731.82039 5523.27418 -2731.9071 5523.42725 -2731.93755 5523.88087 -2731.93755 5523.88087 -2733.2981 5523.66121 -2733.2981 5523.41234 -2733.27006 5523.19729 -2733.19481 5523.03581 -2733.09335 5522.89736 -2733.03901 5522.74864 -2733.03901 5522.61019 -2733.09335 5522.44871 -2733.19481 5522.23366 -2733.27006 5521.98479 -2733.2981 5520.06121 -2733.2981 5519.81796 -2733.27069 5519.67544 -2733.2803 5519.54538 -2733.33938 5519.44437 -2733.44038 5519.3853 -2733.57044 5519.37569 -2733.71296 5519.394 -2733.87546 5519.394 -2734.09168 5519.41871 -2734.23009 5519.48979 -2734.3514 5519.59845 -2734.44062 5520.12475 -2734.73237 5520.65255 -2734.94826 5521.20119 -2735.10369 5521.76379 -2735.19672 5522.3108 -2735.2268 5524.65072 -2735.227 5525.0219 -2735.27405 5544.29371 -2735.27405 5544.82524 -2735.30889 5545.3348 -2735.41025 5545.82678 -2735.57725 5546.29275 -2735.80704 5546.72473 -2736.09569 5547.12522 -2736.4469 5560.16772 -2749.48949 5560.29749 -2749.5762 5560.45056 -2749.60665 5563.19551 -2749.60665 5563.35907 -2749.57168 5563.49404 -2749.47288 5563.5768 -2749.32754 5563.5929 -2749.16105 5563.53951 -2749.00254 5563.42598 -2748.87972 5563.37642 -2748.84478 5562.90375 -2748.42325 5562.48222 -2747.95058 5562.11731 -2747.43294 5561.81378 -2746.87708 5561.5756 -2746.29024 5561.40587 -2745.68008 5561.30679 -2745.05454 5561.27967 -2744.42179 5561.32485 -2743.79008 5561.44175 -2743.16763 5561.62884 -2742.56256 5561.88368 -2741.98276 5562.20295 -2741.43579 5562.58249 -2740.92879 5563.01736 -2740.46835 5563.50187 -2740.06048 5564.02972 -2739.7105 5564.59402 -2739.42298 5565.18742 -2739.20165 5565.80218 -2739.04941 5566.43029 -2738.96824 5567.06356 -2738.95919 5567.69373 -2739.02239 5568.31258 -2739.15702 5568.91206 -2739.36131 5569.48434 -2739.63261 5570.02197 -2739.96737 5570.51793 -2740.36123 5570.71093 -2740.55113 5570.77068 -2740.59951 5571.38658 -2741.15513 5572.06291 -2741.65433 5572.78491 -2742.08484 5573.54563 -2742.4425 5574.33775 -2742.72388 5575.15363 -2742.92626 5575.98542 -2743.0477 5576.80548 -2743.0875 5581.30704 -2743.0875 5581.46011 -2743.05705 5581.58988 -2742.97034 5592.56078 -2731.99945 5592.65225 -2731.85765 5592.6771 -2731.69075 5592.63092 -2731.52845 5592.52193 -2731.39964 5592.36952 -2731.32723 5591.95216 -2731.22907 5591.17327 -2730.96801 5590.42179 -2730.6362 5589.70414 -2730.23647 5589.02643 -2729.77222 5588.39444 -2729.24743 5587.81357 -2728.66656 5587.28878 -2728.03457 5586.82453 -2727.35686 5586.4248 -2726.63921 5586.09299 -2725.88773 5585.83193 -2725.10884 5585.64386 -2724.30919 5585.53037 -2723.4956 5585.49243 -2722.675 5585.53037 -2721.8544 5585.64386 -2721.04081 5585.83193 -2720.24116 5586.09299 -2719.46227 5586.4248 -2718.71079 5586.82453 -2717.99314 5587.28878 -2717.31543 5587.81357 -2716.68344 5588.39444 -2716.10257 5589.02643 -2715.57778 5589.70414 -2715.11353 5590.42179 -2714.7138 5591.01218 -2714.45312 5591.139 -2714.36439 5591.22264 -2714.23416 5591.25058 -2714.08192 5591.21863 -2713.93048 5591.13158 -2713.8025 5591.00247 -2713.71715 Z M 5526.62725 -2731.93755 L 5526.62725 -2732.25564 5526.59921 -2732.50451 5526.52396 -2732.71956 5526.40274 -2732.91248 5526.24163 -2733.07359 5526.04871 -2733.19481 5525.83366 -2733.27006 5525.58479 -2733.2981 5525.36512 -2733.2981 5525.36512 -2731.93755 5526.62725 -2731.93755 Z M 5526.31225 -2726.50455 L 5526.31225 -2726.82264 5526.28421 -2727.07151 5526.20896 -2727.28656 5526.08774 -2727.47948 5525.92663 -2727.64059 5525.73371 -2727.76181 5525.51866 -2727.83706 5525.26979 -2727.8651 5525.05012 -2727.8651 5525.05012 -2726.50455 5526.31225 -2726.50455 Z M 5525.36512 -2730.25645 L 5525.36512 -2728.8959 5525.58479 -2728.8959 5525.83366 -2728.92394 5526.04871 -2728.99919 5526.24163 -2729.12041 5526.40274 -2729.28152 5526.52396 -2729.47444 5526.59921 -2729.68949 5526.62725 -2729.93836 5526.62725 -2730.25645 5525.36512 -2730.25645 Z M 5525.05012 -2724.82345 L 5525.05012 -2723.4629 5525.26979 -2723.4629 5525.51866 -2723.49094 5525.73371 -2723.56619 5525.92663 -2723.68741 5526.08774 -2723.84852 5526.20896 -2724.04144 5526.28421 -2724.25649 5526.31225 -2724.50536 5526.31225 -2724.82345 5525.05012 -2724.82345 Z \",\"M 5816.48669 -2711.5613 L 5816.33362 -2711.59175 5816.20385 -2711.67846 5815.98375 -2711.89856 5815.89704 -2712.02833 5815.86659 -2712.1814 5815.89704 -2712.33447 5815.98375 -2712.46424 5816.11352 -2712.55095 5816.26659 -2712.5814 5817.98744 -2712.5814 5818.10649 -2712.56327 5819.16426 -2712.56327 5819.26146 -2712.55129 5819.36631 -2712.50883 5819.70578 -2712.40586 5819.8534 -2712.32382 5819.95401 -2712.18816 5819.98966 -2712.01292 5819.95401 -2711.84784 5819.8534 -2711.71218 5819.70578 -2711.63014 5819.53561 -2711.57852 5819.4195 -2711.5613 5816.48669 -2711.5613 Z \",\"M 5808.0182 -2703.57775 L 5807.86513 -2703.5473 5807.18088 -2703.5473 5807.0278 -2703.57775 5806.89803 -2703.66446 5806.81132 -2703.79423 5806.78088 -2703.9473 5806.78088 -2704.19145 5805.47789 -2704.19145 5805.32482 -2704.2219 5805.19505 -2704.30861 5800.30873 -2709.19486 5800.22202 -2709.32462 5800.19157 -2709.4777 5800.22202 -2709.63077 5800.30873 -2709.76054 5800.4385 -2709.84725 5800.59157 -2709.8777 5806.76092 -2709.8777 5806.914 -2709.84725 5807.04377 -2709.76054 5808.90078 -2707.90347 5808.99028 -2707.76676 5809.01765 -2707.60567 5808.97832 -2707.44707 5808.87884 -2707.31744 5808.73583 -2707.2384 5808.57314 -2707.22314 5808.48479 -2707.2331 5808.26512 -2707.2331 5808.26512 -2705.87255 5808.71875 -2705.87255 5808.87182 -2705.8421 5809.00159 -2705.75539 5809.0883 -2705.62562 5809.11875 -2705.47255 5809.11875 -2704.59145 5809.0883 -2704.43838 5809.00159 -2704.30861 5808.87182 -2704.2219 5808.71875 -2704.19145 5808.26512 -2704.19145 5808.26512 -2703.9473 5808.23468 -2703.79423 5808.14797 -2703.66446 5808.0182 -2703.57775 Z M 5805.51875 -2706.19064 L 5805.51875 -2705.87255 5806.78088 -2705.87255 5806.78088 -2707.2331 5806.56121 -2707.2331 5806.31234 -2707.20506 5806.09729 -2707.12981 5805.90437 -2707.00859 5805.74326 -2706.84748 5805.62204 -2706.65456 5805.54679 -2706.43951 5805.51875 -2706.19064 Z \",\"M 5816.70226 -2689.7088 L 5816.54919 -2689.73925 5816.41942 -2689.82596 5816.09292 -2690.15246 5816.00621 -2690.28223 5815.97576 -2690.4353 5816.00621 -2690.58837 5816.09292 -2690.71814 5816.22269 -2690.80485 5816.37576 -2690.8353 5817.98743 -2690.8353 5818.10616 -2690.81727 5819.16426 -2690.81727 5819.26146 -2690.80529 5819.36631 -2690.76283 5819.70578 -2690.65986 5819.8534 -2690.57782 5819.95401 -2690.44216 5819.98966 -2690.26692 5819.95401 -2690.10184 5819.8534 -2689.96618 5819.70578 -2689.88414 5819.35282 -2689.77396 5819.26146 -2689.73871 5819.16426 -2689.72672 5818.10582 -2689.72672 5817.98742 -2689.7088 5816.70226 -2689.7088 Z \",\"M 5542.55225 -2689.1995 L 5542.38717 -2689.23515 5542.25152 -2689.33576 5542.16948 -2689.48339 5542.15568 -2689.65171 5542.21257 -2689.81073 5542.33003 -2689.93209 5542.63777 -2690.13771 5543.04775 -2690.49725 5543.40729 -2690.90723 5543.71024 -2691.36063 5543.95142 -2691.84969 5544.1267 -2692.36605 5544.23308 -2692.90087 5544.26874 -2693.445 5544.23308 -2693.98913 5544.1267 -2694.52395 5543.95142 -2695.04031 5543.71024 -2695.52937 5543.40729 -2695.98277 5543.04775 -2696.39275 5542.63777 -2696.75229 5542.18437 -2697.05524 5541.83171 -2697.22915 5541.69396 -2697.34095 5541.6181 -2697.50132 5541.61907 -2697.67873 5541.69667 -2697.83827 5541.83563 -2697.94856 5542.00862 -2697.9879 5595.63964 -2697.9879 5595.79271 -2697.95745 5595.92248 -2697.87074 5596.00919 -2697.74097 5596.03964 -2697.5879 5596.00919 -2697.43483 5595.92248 -2697.30506 5587.93408 -2689.31666 5587.80431 -2689.22995 5587.65124 -2689.1995 5542.55225 -2689.1995 Z \",\"M 5769.33817 -2685.79385 L 5769.1851 -2685.7634 5743.7456 -2685.7634 5743.59253 -2685.79385 5743.46276 -2685.88056 5743.37605 -2686.01033 5743.3456 -2686.1634 5743.3456 -2686.72099 5743.31756 -2686.96986 5743.28466 -2687.06389 5743.26221 -2687.196 5743.28466 -2687.32811 5743.31756 -2687.42214 5743.3456 -2687.67101 5743.3456 -2688.68899 5743.31756 -2688.93786 5743.28448 -2689.03239 5743.26203 -2689.1645 5743.28448 -2689.29661 5743.31756 -2689.39114 5743.3456 -2689.64001 5743.3456 -2690.65799 5743.31756 -2690.90686 5743.28466 -2691.00089 5743.26221 -2691.133 5743.28466 -2691.26511 5743.31756 -2691.35914 5743.3456 -2691.60801 5743.3456 -2692.62599 5743.31756 -2692.87486 5743.28448 -2692.96939 5743.26203 -2693.1015 5743.28448 -2693.23361 5743.31756 -2693.32814 5743.3456 -2693.57701 5743.3456 -2694.59499 5743.31756 -2694.84386 5743.24231 -2695.05891 5743.12109 -2695.25183 5742.95998 -2695.41294 5742.76706 -2695.53416 5742.55201 -2695.60941 5742.30314 -2695.63745 5736.04886 -2695.63745 5735.79999 -2695.60941 5735.55032 -2695.52205 5735.41821 -2695.4996 5720.95756 -2695.4996 5720.64313 -2695.46655 5720.36249 -2695.37537 5720.10236 -2695.22518 5719.92585 -2695.07442 5717.90988 -2693.05846 5717.78011 -2692.97175 5717.62704 -2692.9413 5715.23326 -2692.9413 5715.08019 -2692.97175 5714.95042 -2693.05846 5714.86371 -2693.18823 5714.83326 -2693.3413 5714.86371 -2693.49437 5714.95042 -2693.62414 5722.26768 -2700.9414 5722.37814 -2701.01951 5722.48312 -2701.06964 5722.62063 -2701.10717 5723.01695 -2701.14184 5723.13138 -2701.17251 5723.28366 -2701.18315 5723.42883 -2701.13598 5723.54577 -2701.03786 5723.61743 -2700.90308 5723.63339 -2700.75127 5723.61543 -2700.546 5723.64884 -2700.16405 5723.74808 -2699.7937 5723.91011 -2699.44621 5724.13003 -2699.13214 5724.40114 -2698.86103 5724.71521 -2698.64111 5725.0627 -2698.47908 5725.43305 -2698.37984 5725.815 -2698.34643 5726.19695 -2698.37984 5726.5673 -2698.47908 5726.91479 -2698.64111 5727.22886 -2698.86103 5727.36463 -2698.983 5727.50234 -2699.07013 5727.60487 -2699.1163 5727.7162 -2699.1321 5732.76604 -2699.1321 5733.08047 -2699.16515 5733.36111 -2699.25633 5733.62124 -2699.40652 5733.79775 -2699.55728 5735.02382 -2700.78334 5735.15359 -2700.87005 5735.30666 -2700.9005 5745.53155 -2700.9005 5745.68462 -2700.87005 5745.81439 -2700.78334 5745.9011 -2700.65357 5745.93155 -2700.5005 5745.93155 -2699.18686 5745.95959 -2698.93799 5746.03484 -2698.72294 5746.15606 -2698.53002 5746.31717 -2698.36891 5746.51009 -2698.24769 5746.72514 -2698.17244 5746.97401 -2698.1444 5747.99199 -2698.1444 5748.24086 -2698.17244 5748.33539 -2698.20552 5748.4675 -2698.22797 5748.59961 -2698.20552 5748.69414 -2698.17244 5748.94301 -2698.1444 5749.96099 -2698.1444 5750.20986 -2698.17244 5750.30389 -2698.20534 5750.436 -2698.22779 5750.56811 -2698.20534 5750.66214 -2698.17244 5750.91101 -2698.1444 5751.92899 -2698.1444 5752.17786 -2698.17244 5752.27239 -2698.20552 5752.4045 -2698.22797 5752.53661 -2698.20552 5752.63114 -2698.17244 5752.88001 -2698.1444 5753.89799 -2698.1444 5754.14686 -2698.17244 5754.24089 -2698.20534 5754.373 -2698.22779 5754.50511 -2698.20534 5754.59914 -2698.17244 5754.84801 -2698.1444 5755.86599 -2698.1444 5756.11486 -2698.17244 5756.20939 -2698.20552 5756.3415 -2698.22797 5756.47361 -2698.20552 5756.56814 -2698.17244 5756.81701 -2698.1444 5757.83499 -2698.1444 5758.08386 -2698.17244 5758.17789 -2698.20534 5758.31 -2698.22779 5758.44211 -2698.20534 5758.53614 -2698.17244 5758.78501 -2698.1444 5759.80299 -2698.1444 5760.05186 -2698.17244 5760.14639 -2698.20552 5760.2785 -2698.22797 5760.41061 -2698.20552 5760.50514 -2698.17244 5760.75401 -2698.1444 5761.77199 -2698.1444 5762.02086 -2698.17244 5762.11489 -2698.20534 5762.247 -2698.22779 5762.37911 -2698.20534 5762.47314 -2698.17244 5762.72201 -2698.1444 5763.73999 -2698.1444 5763.98886 -2698.17244 5764.08339 -2698.20552 5764.2155 -2698.22797 5764.34761 -2698.20552 5764.44214 -2698.17244 5764.69101 -2698.1444 5765.70899 -2698.1444 5765.95786 -2698.17244 5766.05189 -2698.20534 5766.184 -2698.22779 5766.31611 -2698.20534 5766.41014 -2698.17244 5766.65901 -2698.1444 5767.67699 -2698.1444 5767.92586 -2698.17244 5768.02039 -2698.20552 5768.1525 -2698.22797 5768.28461 -2698.20552 5768.37914 -2698.17244 5768.62801 -2698.1444 5769.1851 -2698.1444 5769.33817 -2698.11395 5769.46794 -2698.02724 5769.55465 -2697.89747 5769.5851 -2697.7444 5769.5851 -2686.1634 5769.55465 -2686.01033 5769.46794 -2685.88056 5769.33817 -2685.79385 Z \",\"M 5798.57847 -2683.82535 L 5798.4254 -2683.7949 5780.8991 -2683.7949 5780.74603 -2683.82535 5780.61626 -2683.91206 5780.52955 -2684.04183 5780.4991 -2684.1949 5780.4991 -2697.7444 5780.52955 -2697.89747 5780.61626 -2698.02724 5780.74603 -2698.11395 5780.8991 -2698.1444 5781.45699 -2698.1444 5781.70586 -2698.17244 5781.79989 -2698.20534 5781.932 -2698.22779 5782.06411 -2698.20534 5782.15814 -2698.17244 5782.40701 -2698.1444 5783.42499 -2698.1444 5783.67386 -2698.17244 5783.76839 -2698.20552 5783.9005 -2698.22797 5784.03261 -2698.20552 5784.12714 -2698.17244 5784.37601 -2698.1444 5785.39399 -2698.1444 5785.64286 -2698.17244 5785.73689 -2698.20534 5785.869 -2698.22779 5786.00111 -2698.20534 5786.09514 -2698.17244 5786.34401 -2698.1444 5787.36199 -2698.1444 5787.61086 -2698.17244 5787.70539 -2698.20552 5787.8375 -2698.22797 5787.96961 -2698.20552 5788.06414 -2698.17244 5788.31301 -2698.1444 5789.33099 -2698.1444 5789.57986 -2698.17244 5789.67389 -2698.20534 5789.806 -2698.22779 5789.93811 -2698.20534 5790.03214 -2698.17244 5790.28101 -2698.1444 5791.29899 -2698.1444 5791.54786 -2698.17244 5791.64239 -2698.20552 5791.7745 -2698.22797 5791.90661 -2698.20552 5792.00114 -2698.17244 5792.25001 -2698.1444 5793.26799 -2698.1444 5793.51686 -2698.17244 5793.61089 -2698.20534 5793.743 -2698.22779 5793.87511 -2698.20534 5793.96914 -2698.17244 5794.21801 -2698.1444 5795.23599 -2698.1444 5795.48486 -2698.17244 5795.69991 -2698.24769 5795.89283 -2698.36891 5796.05394 -2698.53002 5796.17516 -2698.72294 5796.25041 -2698.93799 5796.27845 -2699.18686 5796.27845 -2699.63889 5796.3089 -2699.79196 5796.39561 -2699.92173 5796.52538 -2700.00844 5796.67845 -2700.03889 5796.83152 -2700.00844 5796.96129 -2699.92173 5799.68814 -2697.19489 5799.93384 -2696.99592 5800.19676 -2696.86195 5800.4869 -2696.78421 5800.71832 -2696.766 5817.9874 -2696.766 5818.10516 -2696.74827 5819.16426 -2696.74827 5819.26146 -2696.73629 5819.36631 -2696.69383 5819.70578 -2696.59086 5819.8534 -2696.50882 5819.95401 -2696.37316 5819.98966 -2696.19792 5819.95401 -2696.03284 5819.8534 -2695.89718 5819.70578 -2695.81514 5819.35282 -2695.70496 5819.26146 -2695.66971 5819.16426 -2695.65773 5818.4744 -2695.65773 5818.49573 -2695.58741 5818.59427 -2695.40306 5818.63616 -2695.27966 5818.63616 -2695.14934 5818.59427 -2695.02594 5818.49573 -2694.84159 5818.40419 -2694.53983 5818.37329 -2694.226 5818.38551 -2694.10191 5818.36724 -2693.93723 5818.28381 -2693.79408 5818.14953 -2693.69702 5817.98743 -2693.6627 5815.89796 -2693.6627 5815.74489 -2693.69315 5815.61512 -2693.77986 5814.32426 -2695.07071 5814.07856 -2695.26968 5813.81564 -2695.40365 5813.5255 -2695.48139 5813.29408 -2695.4996 5806.75279 -2695.4996 5806.62068 -2695.52205 5806.37101 -2695.60941 5806.12214 -2695.63745 5799.86786 -2695.63745 5799.61899 -2695.60941 5799.40394 -2695.53416 5799.21102 -2695.41294 5799.04991 -2695.25183 5798.92869 -2695.05891 5798.85344 -2694.84386 5798.8254 -2694.59499 5798.8254 -2693.57701 5798.85344 -2693.32814 5798.88652 -2693.23361 5798.90897 -2693.1015 5798.88652 -2692.96939 5798.85344 -2692.87486 5798.8254 -2692.62599 5798.8254 -2691.60801 5798.85344 -2691.35914 5798.88634 -2691.26511 5798.90879 -2691.133 5798.88634 -2691.00089 5798.85344 -2690.90686 5798.8254 -2690.65799 5798.8254 -2689.64001 5798.85344 -2689.39114 5798.88652 -2689.29661 5798.90897 -2689.1645 5798.88652 -2689.03239 5798.85344 -2688.93786 5798.8254 -2688.68899 5798.8254 -2687.67101 5798.85344 -2687.42214 5798.88634 -2687.32811 5798.90879 -2687.196 5798.88634 -2687.06389 5798.85344 -2686.96986 5798.8254 -2686.72099 5798.8254 -2685.70301 5798.85344 -2685.45414 5798.88652 -2685.35961 5798.90897 -2685.2275 5798.88652 -2685.09539 5798.85344 -2685.00086 5798.8254 -2684.75199 5798.8254 -2684.1949 5798.79495 -2684.04183 5798.70824 -2683.91206 5798.57847 -2683.82535 Z \",\"M 5773.84056 -2683.7949 L 5773.68749 -2683.82535 5773.55773 -2683.91205 5772.74226 -2684.72747 5772.65555 -2684.85724 5772.6251 -2685.01032 5772.6251 -2697.7444 5772.65555 -2697.89747 5772.74226 -2698.02724 5772.87203 -2698.11395 5773.0251 -2698.1444 5773.58299 -2698.1444 5773.83186 -2698.17244 5773.92589 -2698.20534 5774.058 -2698.22779 5774.19011 -2698.20534 5774.28414 -2698.17244 5774.52628 -2698.14516 5774.52628 -2698.66674 5774.54872 -2698.79885 5774.59741 -2698.93799 5774.62545 -2699.18686 5774.62545 -2705.44114 5774.59741 -2705.69001 5774.54872 -2705.82915 5774.52628 -2705.96126 5774.52628 -2706.71138 5774.4873 -2706.8836 5774.4873 -2712.50021 5774.51775 -2712.65328 5774.60446 -2712.78305 5774.73423 -2712.86976 5774.8873 -2712.90021 5775.04037 -2712.86976 5775.17014 -2712.78305 5777.34194 -2710.61125 5777.42865 -2710.48148 5777.4591 -2710.32841 5777.4591 -2705.74361 5777.42755 -2705.44114 5777.42755 -2699.18686 5777.4591 -2698.88439 5777.4591 -2684.1949 5777.42865 -2684.04183 5777.34194 -2683.91206 5777.21217 -2683.82535 5777.0591 -2683.7949 5773.84056 -2683.7949 Z M 5775.55772 -2698.14516 L 5775.79986 -2698.17244 5775.89439 -2698.20552 5776.0265 -2698.22797 5776.15861 -2698.20552 5776.25314 -2698.17244 5776.49528 -2698.14516 5776.49528 -2700.4892 5775.55772 -2700.4892 5775.55772 -2698.14516 Z M 5775.55772 -2705.9584 L 5775.55772 -2704.1388 5776.49528 -2704.1388 5776.49528 -2706.48284 5776.25314 -2706.45556 5776.15861 -2706.42248 5776.0265 -2706.40003 5775.89439 -2706.42248 5775.79986 -2706.45556 5775.55772 -2706.48284 5775.55772 -2705.9584 Z \",\"M 5764.21379 -2656.2358 L 5764.06072 -2656.26625 5763.93095 -2656.35296 5762.5387 -2657.74521 5762.29339 -2657.94652 5762.03094 -2658.08681 5761.74616 -2658.1732 5761.43035 -2658.2043 5743.7456 -2658.2043 5743.59253 -2658.23475 5743.46276 -2658.32146 5743.37605 -2658.45123 5743.3456 -2658.6043 5743.3456 -2659.16199 5743.31756 -2659.41086 5743.28466 -2659.50489 5743.26221 -2659.637 5743.28466 -2659.76911 5743.31756 -2659.86314 5743.3456 -2660.11201 5743.3456 -2661.12999 5743.31756 -2661.37886 5743.28448 -2661.47339 5743.26203 -2661.6055 5743.28448 -2661.73761 5743.31756 -2661.83214 5743.3456 -2662.08101 5743.3456 -2663.09899 5743.31756 -2663.34786 5743.28466 -2663.44189 5743.26221 -2663.574 5743.28466 -2663.70611 5743.31756 -2663.80014 5743.3456 -2664.04901 5743.3456 -2665.06699 5743.31756 -2665.31586 5743.28448 -2665.41039 5743.26203 -2665.5425 5743.28448 -2665.67461 5743.31756 -2665.76914 5743.3456 -2666.01801 5743.3456 -2667.03599 5743.31756 -2667.28486 5743.28466 -2667.37889 5743.26221 -2667.511 5743.28466 -2667.64311 5743.31756 -2667.73714 5743.3456 -2667.98601 5743.3456 -2669.00399 5743.31756 -2669.25286 5743.28448 -2669.34739 5743.26203 -2669.4795 5743.28448 -2669.61161 5743.31756 -2669.70614 5743.3456 -2669.95501 5743.3456 -2670.97299 5743.31756 -2671.22186 5743.28466 -2671.31589 5743.26221 -2671.448 5743.28466 -2671.58011 5743.31756 -2671.67414 5743.3456 -2671.92301 5743.3456 -2672.94099 5743.31756 -2673.18986 5743.28448 -2673.28439 5743.26203 -2673.4165 5743.28448 -2673.54861 5743.31756 -2673.64314 5743.3456 -2673.89201 5743.3456 -2674.90999 5743.31756 -2675.15886 5743.28466 -2675.25289 5743.26221 -2675.385 5743.28466 -2675.51711 5743.31756 -2675.61114 5743.3456 -2675.86001 5743.3456 -2676.87799 5743.31756 -2677.12686 5743.28448 -2677.22139 5743.26203 -2677.3535 5743.28448 -2677.48561 5743.31756 -2677.58014 5743.3456 -2677.82901 5743.3456 -2678.84699 5743.31756 -2679.09586 5743.28466 -2679.18989 5743.26221 -2679.322 5743.28466 -2679.45411 5743.31756 -2679.54814 5743.3456 -2679.79701 5743.3456 -2680.81499 5743.31756 -2681.06386 5743.28448 -2681.15839 5743.26203 -2681.2905 5743.28448 -2681.42261 5743.31756 -2681.51714 5743.34484 -2681.75927 5742.8204 -2681.75927 5742.68829 -2681.78172 5742.55201 -2681.82941 5742.30314 -2681.85745 5736.04886 -2681.85745 5735.79999 -2681.82941 5735.66371 -2681.78172 5735.5316 -2681.75927 5734.77904 -2681.75927 5734.6064 -2681.7201 5724.37036 -2681.7201 5724.21729 -2681.75055 5724.08752 -2681.83726 5724.00081 -2681.96703 5723.97036 -2682.1201 5724.00081 -2682.27317 5724.08752 -2682.40294 5726.36562 -2684.68104 5726.49539 -2684.76775 5726.64846 -2684.7982 5734.6064 -2684.7982 5734.75947 -2684.76775 5734.88924 -2684.68104 5734.97595 -2684.55127 5735.0064 -2684.3982 5735.0064 -2683.73401 5735.03444 -2683.48514 5735.06734 -2683.39111 5735.08979 -2683.259 5735.06734 -2683.12689 5735.03444 -2683.03286 5735.00716 -2682.79072 5735.52874 -2682.79072 5735.66085 -2682.76828 5735.79999 -2682.71959 5736.04886 -2682.69155 5742.30314 -2682.69155 5742.60828 -2682.7234 5770.28144 -2682.7234 5770.43451 -2682.69295 5770.56427 -2682.60625 5771.9566 -2681.214 5772.20191 -2681.01268 5772.46436 -2680.87239 5772.74914 -2680.786 5773.06495 -2680.7549 5799.56716 -2680.7549 5799.86786 -2680.72355 5806.12214 -2680.72355 5806.37101 -2680.75159 5806.50729 -2680.79928 5806.6394 -2680.82173 5807.16384 -2680.82173 5807.13656 -2681.06386 5807.10348 -2681.15839 5807.08103 -2681.2905 5807.10348 -2681.42261 5807.13656 -2681.51714 5807.1646 -2681.76601 5807.1646 -2682.4297 5807.19505 -2682.58277 5807.28176 -2682.71254 5807.41153 -2682.79925 5807.5646 -2682.8297 5808.66094 -2682.8297 5808.81401 -2682.79925 5808.94378 -2682.71254 5811.22188 -2680.43444 5811.30859 -2680.30467 5811.33904 -2680.1516 5811.30859 -2679.99853 5811.22188 -2679.86876 5811.09211 -2679.78205 5810.93904 -2679.7516 5807.5646 -2679.7516 5807.39301 -2679.79028 5806.64226 -2679.79028 5806.51015 -2679.81272 5806.37101 -2679.86141 5806.12214 -2679.88945 5799.86786 -2679.88945 5799.61899 -2679.86141 5799.47985 -2679.81272 5799.34774 -2679.79028 5798.82616 -2679.79028 5798.85344 -2679.54814 5798.88634 -2679.45411 5798.90879 -2679.322 5798.88634 -2679.18989 5798.85344 -2679.09586 5798.8254 -2678.84699 5798.8254 -2677.82901 5798.85344 -2677.58014 5798.88652 -2677.48561 5798.90897 -2677.3535 5798.88652 -2677.22139 5798.85344 -2677.12686 5798.8254 -2676.87799 5798.8254 -2675.86001 5798.85344 -2675.61114 5798.88634 -2675.51711 5798.90879 -2675.385 5798.88634 -2675.25289 5798.85344 -2675.15886 5798.8254 -2674.90999 5798.8254 -2673.89201 5798.85344 -2673.64314 5798.88652 -2673.54861 5798.90897 -2673.4165 5798.88652 -2673.28439 5798.85344 -2673.18986 5798.8254 -2672.94099 5798.8254 -2671.92301 5798.85344 -2671.67414 5798.88634 -2671.58011 5798.90879 -2671.448 5798.88634 -2671.31589 5798.85344 -2671.22186 5798.8254 -2670.97299 5798.8254 -2669.95501 5798.85344 -2669.70614 5798.88652 -2669.61161 5798.90897 -2669.4795 5798.88652 -2669.34739 5798.85344 -2669.25286 5798.8254 -2669.00399 5798.8254 -2667.98601 5798.85344 -2667.73714 5798.88634 -2667.64311 5798.90879 -2667.511 5798.88634 -2667.37889 5798.85344 -2667.28486 5798.8254 -2667.03599 5798.8254 -2666.01801 5798.85344 -2665.76914 5798.88652 -2665.67461 5798.90897 -2665.5425 5798.88652 -2665.41039 5798.85344 -2665.31586 5798.8254 -2665.06699 5798.8254 -2664.04901 5798.85344 -2663.80014 5798.88634 -2663.70611 5798.90879 -2663.574 5798.88634 -2663.44189 5798.85344 -2663.34786 5798.8254 -2663.09899 5798.8254 -2662.08101 5798.85344 -2661.83214 5798.88652 -2661.73761 5798.90897 -2661.6055 5798.88652 -2661.47339 5798.85344 -2661.37886 5798.8254 -2661.12999 5798.8254 -2660.11201 5798.85344 -2659.86314 5798.88634 -2659.76911 5798.90879 -2659.637 5798.88634 -2659.50489 5798.85344 -2659.41086 5798.8254 -2659.16199 5798.8254 -2658.14401 5798.85344 -2657.89514 5798.88652 -2657.80061 5798.90897 -2657.6685 5798.88652 -2657.53639 5798.85344 -2657.44186 5798.8254 -2657.19299 5798.8254 -2656.6358 5798.79495 -2656.48273 5798.70824 -2656.35296 5798.57847 -2656.26625 5798.4254 -2656.2358 5764.21379 -2656.2358 Z \",\"M 5520.2212 -2645.461 L 5520.06813 -2645.49145 5519.93836 -2645.57816 5519.85165 -2645.70793 5519.8212 -2645.861 5519.8212 -2649.5565 5519.85165 -2649.70957 5519.93836 -2649.83934 5520.06813 -2649.92605 5520.2212 -2649.9565 5563.00304 -2649.9565 5563.31747 -2649.98955 5563.59811 -2650.08073 5563.85824 -2650.23092 5564.03475 -2650.38168 5571.8075 -2658.15443 5571.93689 -2658.24098 5572.00433 -2658.2545 5572.01766 -2658.32153 5572.10437 -2658.4513 5575.0937 -2661.44063 5575.22347 -2661.52734 5575.2905 -2661.54067 5575.30402 -2661.60811 5575.39057 -2661.7375 5577.42722 -2663.77414 5577.55699 -2663.86085 5577.71006 -2663.8913 5590.94004 -2663.8913 5591.25447 -2663.92435 5591.53511 -2664.01553 5591.79524 -2664.16572 5591.97175 -2664.31648 5607.69142 -2680.03614 5607.82119 -2680.12285 5607.97426 -2680.1533 5673.2828 -2680.1533 5673.43587 -2680.12285 5673.56564 -2680.03614 5673.65235 -2679.90637 5673.6828 -2679.7533 5673.6828 -2675.94496 5673.71383 -2675.66959 5673.69745 -2675.50333 5673.6146 -2675.35826 5673.47972 -2675.25969 5673.31634 -2675.2248 5604.85596 -2675.2248 5604.54153 -2675.19175 5604.26089 -2675.10057 5604.00076 -2674.95038 5603.82425 -2674.79962 5583.85876 -2654.83413 5583.72281 -2654.74493 5583.56259 -2654.7172 5583.40457 -2654.75553 5583.27487 -2654.8536 5583.19491 -2654.99518 5583.17791 -2655.15689 5583.22481 -2655.62444 5583.21576 -2656.25771 5583.13459 -2656.88582 5582.98235 -2657.50058 5582.95362 -2657.57761 5581.23801 -2655.862 5582.77948 -2654.32054 5582.86619 -2654.19077 5582.89664 -2654.03769 5582.86619 -2653.88462 5582.77948 -2653.75485 5579.79015 -2650.76552 5579.66038 -2650.67881 5579.50731 -2650.64836 5579.35423 -2650.67881 5579.22446 -2650.76552 5577.683 -2652.30699 5575.96739 -2650.59138 5576.04442 -2650.56265 5576.65918 -2650.41041 5577.28729 -2650.32924 5577.92056 -2650.32019 5578.38811 -2650.36709 5578.54982 -2650.35009 5578.6914 -2650.27013 5578.78947 -2650.14043 5578.8278 -2649.98241 5578.80007 -2649.82219 5578.71087 -2649.68624 5574.60278 -2645.57816 5574.47301 -2645.49145 5574.31994 -2645.461 5520.2212 -2645.461 Z M 5572.41586 -2654.14987 L 5574.12799 -2655.862 5572.41218 -2657.57781 5572.26287 -2657.04108 5572.16379 -2656.41554 5572.13667 -2655.78279 5572.18185 -2655.15108 5572.29875 -2654.52863 5572.41586 -2654.14987 Z M 5575.96719 -2661.13282 L 5577.683 -2659.41701 5579.39513 -2661.12914 5579.01637 -2661.24625 5578.39392 -2661.36315 5577.76221 -2661.40833 5577.12946 -2661.38121 5576.50392 -2661.28213 5575.96719 -2661.13282 Z \",\"M 5612.86976 -2622.9413 L 5612.71669 -2622.97175 5612.58692 -2623.05846 5605.53446 -2630.11091 5605.28876 -2630.30988 5605.02584 -2630.44385 5604.7357 -2630.52159 5604.50428 -2630.5398 5546.92484 -2630.5398 5546.77177 -2630.57025 5546.642 -2630.65695 5545.50566 -2631.79325 5545.41895 -2631.92302 5545.3885 -2632.0761 5545.41895 -2632.22917 5545.50566 -2632.35894 5545.63543 -2632.44565 5545.7885 -2632.4761 5573.27864 -2632.4761 5573.59307 -2632.50915 5573.87371 -2632.60033 5574.13384 -2632.75052 5574.31035 -2632.90128 5603.68922 -2662.28024 5603.81899 -2662.36695 5603.97206 -2662.3974 5621.06243 -2662.3974 5621.21551 -2662.36695 5621.34528 -2662.28024 5621.43199 -2662.15047 5621.46243 -2661.9974 5621.43198 -2661.84433 5621.34527 -2661.71456 5618.17665 -2658.54596 5617.53825 -2657.96931 5616.86192 -2657.47011 5616.13991 -2657.0396 5615.37918 -2656.68194 5614.58706 -2656.40056 5613.77118 -2656.19818 5612.93938 -2656.07675 5612.15006 -2656.03798 5612.062 -2656.02949 5611.56546 -2656.00821 5610.93992 -2655.90913 5610.32976 -2655.7394 5609.74292 -2655.50122 5609.18706 -2655.19769 5608.66942 -2654.83278 5608.19675 -2654.41125 5607.77522 -2653.93858 5607.41031 -2653.42094 5607.10678 -2652.86508 5606.8686 -2652.27824 5606.69887 -2651.66808 5606.59979 -2651.04254 5606.57267 -2650.40979 5606.61785 -2649.77808 5606.73475 -2649.15563 5606.92184 -2648.55056 5607.17668 -2647.97076 5607.49595 -2647.42379 5607.87549 -2646.91679 5608.31036 -2646.45635 5608.79487 -2646.04848 5609.32272 -2645.6985 5609.88702 -2645.41098 5610.48042 -2645.18965 5611.09518 -2645.03741 5611.72329 -2644.95624 5612.35656 -2644.94719 5612.98673 -2645.01039 5613.60558 -2645.14502 5614.20506 -2645.34931 5614.77734 -2645.62061 5615.31497 -2645.95537 5615.81093 -2646.34923 5616.25877 -2646.79707 5616.65263 -2647.29303 5616.98739 -2647.83066 5617.25869 -2648.40294 5617.46298 -2649.00242 5617.59761 -2649.62127 5617.66154 -2650.25879 5617.66733 -2650.50901 5617.71051 -2651.34851 5617.83576 -2652.17974 5618.04188 -2652.99469 5618.32689 -2653.78551 5618.68805 -2654.54459 5619.12186 -2655.26461 5619.62416 -2655.93864 5620.17585 -2656.54662 5623.62601 -2659.99674 5623.75578 -2660.08345 5623.90885 -2660.1139 5669.94739 -2660.1139 5670.10046 -2660.08345 5670.23023 -2659.99674 5670.31694 -2659.86697 5670.34739 -2659.7139 5670.31694 -2659.56083 5670.23023 -2659.43106 5670.11403 -2659.31486 5669.89411 -2659.00079 5669.73208 -2658.6533 5669.63284 -2658.28295 5669.59943 -2657.901 5669.63284 -2657.51905 5669.73208 -2657.1487 5669.89411 -2656.80121 5670.11403 -2656.48714 5670.38514 -2656.21603 5670.69921 -2655.99611 5671.0467 -2655.83408 5671.41705 -2655.73484 5671.799 -2655.70143 5672.18095 -2655.73484 5672.55216 -2655.83431 5673.13699 -2656.10386 5673.28292 -2656.14001 5673.43188 -2656.11974 5673.56284 -2656.04591 5673.6573 -2655.92895 5673.70191 -2655.78538 5673.71084 -2655.70609 5673.78609 -2655.49104 5673.90731 -2655.29812 5674.06842 -2655.13701 5674.26134 -2655.01579 5674.47639 -2654.94054 5674.72526 -2654.9125 5687.27874 -2654.9125 5687.52761 -2654.94054 5687.74266 -2655.01579 5687.93558 -2655.13701 5688.09669 -2655.29812 5688.21791 -2655.49104 5688.29316 -2655.70609 5688.3212 -2655.95496 5688.3212 -2659.7139 5688.35165 -2659.86697 5688.43836 -2659.99674 5688.56813 -2660.08345 5688.7212 -2660.1139 5695.0328 -2660.1139 5695.18587 -2660.08345 5695.31564 -2659.99674 5695.40235 -2659.86697 5695.4328 -2659.7139 5695.4328 -2659.13525 5699.3524 -2659.13525 5699.3524 -2659.7139 5699.38285 -2659.86697 5699.46956 -2659.99674 5699.59933 -2660.08345 5699.7524 -2660.1139 5705.7516 -2660.1139 5705.90467 -2660.08345 5706.03444 -2659.99674 5706.12115 -2659.86697 5706.1516 -2659.7139 5706.1516 -2659.13525 5710.0712 -2659.13525 5710.0712 -2659.7139 5710.10165 -2659.86697 5710.18836 -2659.99674 5710.31813 -2660.08345 5710.4712 -2660.1139 5711.19194 -2660.1139 5711.50637 -2660.14695 5711.78701 -2660.23813 5712.04714 -2660.38832 5712.22365 -2660.53908 5714.31326 -2662.62868 5714.44303 -2662.71539 5714.5961 -2662.74584 5714.74917 -2662.71539 5714.87894 -2662.62868 5714.96565 -2662.49891 5714.9961 -2662.34584 5714.9961 -2630.36477 5714.9643 -2630.20847 5714.87396 -2630.07703 5714.73945 -2629.99133 5714.58214 -2629.96501 5714.03595 -2630.11116 5713.654 -2630.14457 5713.27205 -2630.11116 5712.9017 -2630.01192 5712.55421 -2629.84989 5712.24014 -2629.62997 5712.128 -2629.52372 5711.99329 -2629.4232 5711.83212 -2629.35148 5711.68276 -2629.3296 5710.84569 -2629.33143 5710.45781 -2629.36963 5710.35509 -2629.39276 5710.20746 -2629.4748 5710.10685 -2629.61045 5710.0712 -2629.77554 5710.0712 -2629.86204 5710.04316 -2630.11091 5709.96791 -2630.32596 5709.84669 -2630.51888 5709.68558 -2630.67999 5709.49266 -2630.80121 5709.27761 -2630.87646 5709.02874 -2630.9045 5696.47526 -2630.9045 5696.22639 -2630.87646 5696.01134 -2630.80121 5695.81842 -2630.67999 5695.65731 -2630.51888 5695.53609 -2630.32596 5695.46084 -2630.11091 5695.4328 -2629.86204 5695.4328 -2625.96996 5695.46084 -2625.72109 5695.53609 -2625.50604 5695.65731 -2625.31312 5695.81842 -2625.15201 5696.01134 -2625.03079 5696.22639 -2624.95554 5696.47526 -2624.9275 5709.02874 -2624.9275 5709.27761 -2624.95554 5709.49266 -2625.03079 5709.68558 -2625.15201 5709.84669 -2625.31312 5709.96791 -2625.50604 5710.04316 -2625.72109 5710.0712 -2625.96996 5710.0712 -2626.05606 5710.10685 -2626.22115 5710.20746 -2626.3568 5710.38091 -2626.44667 5710.45781 -2626.46197 5710.8849 -2626.5021 5711.81898 -2626.5021 5711.9641 -2626.47485 5712.08945 -2626.3968 5712.23308 -2626.26497 5712.55421 -2626.04011 5712.86258 -2625.89632 5712.98608 -2625.8066 5713.06697 -2625.67714 5713.09348 -2625.52682 5713.06174 -2625.3775 5712.97638 -2625.25095 5710.78388 -2623.05846 5710.65411 -2622.97175 5710.50104 -2622.9413 5612.86976 -2622.9413 Z M 5696.22639 -2644.94554 L 5696.47526 -2644.9175 5709.02874 -2644.9175 5709.27761 -2644.94554 5709.49266 -2645.02079 5709.68558 -2645.14201 5709.84669 -2645.30312 5709.96791 -2645.49604 5710.04316 -2645.71109 5710.0712 -2645.95996 5710.0712 -2649.41853 5710.09946 -2649.56621 5710.18025 -2649.69302 5710.30215 -2649.78105 5710.38379 -2649.81911 5710.69786 -2650.03903 5710.96897 -2650.31014 5711.18889 -2650.62421 5711.35092 -2650.9717 5711.45016 -2651.34205 5711.48357 -2651.724 5711.45016 -2652.10595 5711.35092 -2652.4763 5711.18889 -2652.82379 5710.96897 -2653.13786 5710.69786 -2653.40897 5710.38379 -2653.62889 5710.0363 -2653.79092 5709.66595 -2653.89016 5709.284 -2653.92357 5708.90205 -2653.89016 5708.5317 -2653.79092 5708.18421 -2653.62889 5707.87014 -2653.40897 5707.59903 -2653.13786 5707.37911 -2652.82379 5707.21708 -2652.4763 5707.11784 -2652.10595 5707.0833 -2651.71106 5707.04566 -2651.57332 5706.99478 -2651.46696 5706.91679 -2651.35672 5706.57173 -2651.01166 5706.44196 -2650.92495 5706.28889 -2650.8945 5696.47526 -2650.8945 5696.22639 -2650.86646 5696.01134 -2650.79121 5695.81842 -2650.66999 5695.65731 -2650.50888 5695.53609 -2650.31596 5695.46084 -2650.10091 5695.4328 -2649.85204 5695.4328 -2645.95996 5695.46084 -2645.71109 5695.53609 -2645.49604 5695.65731 -2645.30312 5695.81842 -2645.14201 5696.01134 -2645.02079 5696.22639 -2644.94554 Z M 5696.22639 -2634.95054 L 5696.47526 -2634.9225 5709.02874 -2634.9225 5709.27761 -2634.95054 5709.49266 -2635.02579 5709.68558 -2635.14701 5709.84669 -2635.30812 5709.96791 -2635.50104 5710.04316 -2635.71609 5710.0712 -2635.96496 5710.0712 -2639.37953 5710.09946 -2639.52721 5710.18025 -2639.65402 5710.30215 -2639.74205 5710.38379 -2639.78011 5710.69786 -2640.00003 5710.96897 -2640.27114 5711.18889 -2640.58521 5711.35092 -2640.9327 5711.45016 -2641.30305 5711.48357 -2641.685 5711.45016 -2642.06695 5711.35092 -2642.4373 5711.18889 -2642.78479 5710.96897 -2643.09886 5710.69786 -2643.36997 5710.38379 -2643.58989 5710.0363 -2643.75192 5709.66595 -2643.85116 5709.284 -2643.88457 5708.90205 -2643.85116 5708.5317 -2643.75192 5708.18421 -2643.58989 5707.87014 -2643.36997 5707.59903 -2643.09886 5707.37911 -2642.78479 5707.21708 -2642.4373 5707.11784 -2642.06695 5707.08325 -2641.67159 5707.04562 -2641.53384 5706.9948 -2641.42761 5706.9168 -2641.31738 5706.61608 -2641.01666 5706.48631 -2640.92995 5706.33324 -2640.8995 5696.47526 -2640.8995 5696.22639 -2640.87146 5696.01134 -2640.79621 5695.81842 -2640.67499 5695.65731 -2640.51388 5695.53609 -2640.32096 5695.46084 -2640.10591 5695.4328 -2639.85704 5695.4328 -2635.96496 5695.46084 -2635.71609 5695.53609 -2635.50104 5695.65731 -2635.30812 5695.81842 -2635.14701 5696.01134 -2635.02579 5696.22639 -2634.95054 Z M 5674.47639 -2624.95554 L 5674.72526 -2624.9275 5687.27874 -2624.9275 5687.52761 -2624.95554 5687.74266 -2625.03079 5687.93558 -2625.15201 5688.09669 -2625.31312 5688.21791 -2625.50604 5688.29316 -2625.72109 5688.3212 -2625.96996 5688.3212 -2629.86204 5688.29316 -2630.11091 5688.21791 -2630.32596 5688.09669 -2630.51888 5687.93558 -2630.67999 5687.74266 -2630.80121 5687.52761 -2630.87646 5687.27874 -2630.9045 5674.72526 -2630.9045 5674.47639 -2630.87646 5674.26134 -2630.80121 5674.06842 -2630.67999 5673.90731 -2630.51888 5673.78609 -2630.32596 5673.71084 -2630.11091 5673.68749 -2629.90365 5673.63591 -2629.74757 5673.52592 -2629.62542 5673.37609 -2629.55781 5673.21172 -2629.55617 5673.06057 -2629.62077 5672.77479 -2629.82089 5672.4273 -2629.98292 5672.05695 -2630.08216 5671.675 -2630.11557 5671.29305 -2630.08216 5670.9227 -2629.98292 5670.57521 -2629.82089 5670.26114 -2629.60097 5669.99003 -2629.32986 5669.77011 -2629.01579 5669.60808 -2628.6683 5669.50884 -2628.29795 5669.47543 -2627.916 5669.50884 -2627.53405 5669.60808 -2627.1637 5669.77011 -2626.81621 5669.99003 -2626.50214 5670.26114 -2626.23103 5670.57521 -2626.01111 5670.9227 -2625.84908 5671.29305 -2625.74984 5671.675 -2625.71643 5672.05695 -2625.74984 5672.4273 -2625.84908 5672.77479 -2626.01111 5673.06057 -2626.21123 5673.21172 -2626.27583 5673.37609 -2626.27419 5673.52592 -2626.20658 5673.63591 -2626.08443 5673.68749 -2625.92835 5673.71084 -2625.72109 5673.78609 -2625.50604 5673.90731 -2625.31312 5674.06842 -2625.15201 5674.26134 -2625.03079 5674.47639 -2624.95554 Z M 5674.47644 -2644.94554 L 5674.72531 -2644.9175 5687.27869 -2644.9175 5687.52756 -2644.94554 5687.74261 -2645.02079 5687.93553 -2645.14201 5688.09664 -2645.30312 5688.21786 -2645.49604 5688.29311 -2645.71109 5688.32115 -2645.95996 5688.32115 -2649.85204 5688.29311 -2650.10091 5688.21786 -2650.31596 5688.09664 -2650.50888 5687.93553 -2650.66999 5687.74261 -2650.79121 5687.52756 -2650.86646 5687.27869 -2650.8945 5674.72531 -2650.8945 5674.47644 -2650.86646 5674.26139 -2650.79121 5674.06847 -2650.66999 5673.90736 -2650.50888 5673.78614 -2650.31596 5673.71089 -2650.10091 5673.68827 -2649.90011 5673.63669 -2649.74403 5673.5267 -2649.62187 5673.37687 -2649.55427 5673.2125 -2649.55263 5673.06135 -2649.61723 5672.78479 -2649.81089 5672.4373 -2649.97292 5672.06695 -2650.07216 5671.685 -2650.10557 5671.30305 -2650.07216 5670.9327 -2649.97292 5670.58521 -2649.81089 5670.27114 -2649.59097 5670.00003 -2649.31986 5669.78011 -2649.00579 5669.61808 -2648.6583 5669.51884 -2648.28795 5669.48543 -2647.906 5669.51884 -2647.52405 5669.61808 -2647.1537 5669.78011 -2646.80621 5670.00003 -2646.49214 5670.27114 -2646.22103 5670.58521 -2646.00111 5670.9327 -2645.83908 5671.30305 -2645.73984 5671.685 -2645.70643 5672.06695 -2645.73984 5672.4373 -2645.83908 5672.78479 -2646.00111 5673.06135 -2646.19477 5673.2125 -2646.25937 5673.37687 -2646.25773 5673.5267 -2646.19013 5673.63669 -2646.06797 5673.68827 -2645.91189 5673.71089 -2645.71109 5673.78614 -2645.49604 5673.90736 -2645.30312 5674.06847 -2645.14201 5674.26139 -2645.02079 5674.47644 -2644.94554 Z M 5687.27874 -2634.9225 L 5687.52761 -2634.95054 5687.74266 -2635.02579 5687.93558 -2635.14701 5688.09669 -2635.30812 5688.21791 -2635.50104 5688.29316 -2635.71609 5688.3212 -2635.96496 5688.3212 -2639.85704 5688.29316 -2640.10591 5688.21791 -2640.32096 5688.09669 -2640.51388 5687.93558 -2640.67499 5687.74266 -2640.79621 5687.52761 -2640.87146 5687.27874 -2640.8995 5674.72526 -2640.8995 5674.47639 -2640.87146 5674.26134 -2640.79621 5674.06842 -2640.67499 5673.90731 -2640.51388 5673.78609 -2640.32096 5673.71084 -2640.10591 5673.69766 -2639.98893 5673.64896 -2639.83788 5673.54535 -2639.71766 5673.40315 -2639.64719 5673.21377 -2639.6419 5673.11114 -2639.6706 5672.85537 -2639.78096 5672.44158 -2639.97838 5672.07295 -2640.07716 5671.691 -2640.11057 5671.30905 -2640.07716 5670.9387 -2639.97792 5670.59121 -2639.81589 5670.27714 -2639.59597 5670.00603 -2639.32486 5669.78611 -2639.01079 5669.62408 -2638.6633 5669.52484 -2638.29295 5669.49143 -2637.911 5669.52484 -2637.52905 5669.62408 -2637.1587 5669.78611 -2636.81121 5670.00603 -2636.49714 5670.27714 -2636.22603 5670.59121 -2636.00611 5670.9387 -2635.84408 5671.30905 -2635.74484 5671.691 -2635.71143 5672.07295 -2635.74484 5672.4443 -2635.84435 5673.10203 -2636.14694 5673.24479 -2636.18403 5673.4032 -2636.17441 5673.5454 -2636.10394 5673.649 -2635.98373 5673.6977 -2635.83268 5673.71084 -2635.71609 5673.78609 -2635.50104 5673.90731 -2635.30812 5674.06842 -2635.14701 5674.26134 -2635.02579 5674.47639 -2634.95054 5674.72526 -2634.9225 5687.27874 -2634.9225 Z M 5706.1516 -2656.66675 L 5706.1516 -2654.9125 5709.02874 -2654.9125 5709.27761 -2654.94054 5709.49266 -2655.01579 5709.68558 -2655.13701 5709.84669 -2655.29812 5709.96791 -2655.49104 5710.04316 -2655.70609 5710.0712 -2655.95496 5710.0712 -2656.66675 5706.1516 -2656.66675 Z M 5699.3524 -2654.9125 L 5699.3524 -2656.66675 5695.4328 -2656.66675 5695.4328 -2655.95496 5695.46084 -2655.70609 5695.53609 -2655.49104 5695.65731 -2655.29812 5695.81842 -2655.13701 5696.01134 -2655.01579 5696.22639 -2654.94054 5696.47526 -2654.9125 5699.3524 -2654.9125 Z \",\"M 5483.12352 -2533.97097 L 5482.13075 -2533.98478 5481.18597 -2534.07108 5480.25064 -2534.22993 5479.33033 -2534.46037 5478.43052 -2534.76103 5477.55654 -2535.13013 5476.71361 -2535.56548 5475.90672 -2536.06448 5475.14068 -2536.62417 5474.42004 -2537.24121 5473.74909 -2537.91195 5473.13181 -2538.63239 5472.57188 -2539.39825 5472.07262 -2540.20498 5471.63701 -2541.04778 5471.26762 -2541.92164 5470.96667 -2542.82135 5470.73594 -2543.74159 5470.5768 -2544.67686 5470.4912 -2545.61643 5470.4912 -2718.82564 5470.51995 -2718.97455 5470.60208 -2719.10206 5470.72578 -2719.18983 5470.87325 -2719.22523 5471.02331 -2719.20319 5471.22364 -2719.13309 5471.47251 -2719.10505 5474.18349 -2719.10505 5474.43236 -2719.13309 5474.64741 -2719.20834 5474.82737 -2719.29491 5474.96116 -2719.30242 5475.08993 -2719.26532 5475.19922 -2719.18778 5475.39892 -2718.98807 5475.47647 -2718.87878 5475.51356 -2718.75002 5475.50605 -2718.61622 5475.45477 -2718.49242 5475.34804 -2718.32256 5475.27279 -2718.10751 5475.24475 -2717.85864 5475.24475 -2717.54055 5476.50688 -2717.54055 5476.50688 -2717.733 5476.53732 -2717.88607 5476.62403 -2718.01584 5476.7538 -2718.10255 5476.90687 -2718.133 5477.59112 -2718.133 5477.7442 -2718.10255 5477.87397 -2718.01584 5477.96068 -2717.88607 5477.99112 -2717.733 5477.99112 -2717.54055 5478.44475 -2717.54055 5478.59782 -2717.5101 5478.72759 -2717.42339 5478.8143 -2717.29362 5478.84475 -2717.14055 5478.84475 -2716.25945 5478.8143 -2716.10638 5478.72759 -2715.97661 5478.59782 -2715.8899 5478.44475 -2715.85945 5477.99112 -2715.85945 5477.99112 -2714.4989 5478.21079 -2714.4989 5478.45966 -2714.52694 5478.67471 -2714.60219 5478.83619 -2714.70365 5478.97464 -2714.75799 5479.12336 -2714.75799 5479.26181 -2714.70365 5479.42329 -2714.60219 5479.63834 -2714.52694 5479.88721 -2714.4989 5481.81079 -2714.4989 5482.05966 -2714.52694 5482.27471 -2714.60219 5482.46763 -2714.72341 5482.62874 -2714.88452 5482.74996 -2715.07744 5482.82521 -2715.29249 5482.85325 -2715.54136 5482.85325 -2716.25337 5482.8837 -2716.40644 5482.97041 -2716.53621 5486.00176 -2719.56756 5486.13153 -2719.65427 5486.2846 -2719.68472 5486.43767 -2719.65427 5486.56744 -2719.56756 5486.65415 -2719.43779 5486.6846 -2719.28472 5486.6846 -2711.1645 5486.65415 -2711.01143 5486.56745 -2710.88166 5486.43768 -2710.79495 5486.28461 -2710.7645 5478.93857 -2710.7643 5478.47835 -2710.72981 5478.04305 -2710.63046 5477.62743 -2710.46733 5477.24075 -2710.24409 5476.89167 -2709.9657 5476.81519 -2709.88328 5476.68193 -2709.78873 5476.52197 -2709.75535 5476.34981 -2709.75535 5476.10094 -2709.72731 5475.88589 -2709.65206 5475.69297 -2709.53084 5475.53186 -2709.36973 5475.41064 -2709.17681 5475.33539 -2708.96176 5475.31528 -2708.78328 5475.27818 -2708.65451 5475.20063 -2708.54522 5472.74356 -2706.08823 5472.54443 -2705.84237 5472.41046 -2705.57946 5472.33272 -2705.28933 5472.3145 -2705.05788 5472.3145 -2693.79536 5472.34755 -2693.48093 5472.43873 -2693.20029 5472.58892 -2692.94016 5472.73968 -2692.76365 5475.12454 -2690.37879 5475.37024 -2690.17982 5475.63316 -2690.04585 5475.9233 -2689.96811 5476.15472 -2689.9499 5477.0831 -2689.9499 5477.24853 -2689.91409 5477.38433 -2689.81308 5477.4662 -2689.66494 5477.47948 -2689.49621 5477.42179 -2689.33709 5477.32919 -2689.18971 5477.25394 -2688.97466 5477.2259 -2688.72579 5477.2259 -2686.80221 5477.25394 -2686.55334 5477.32919 -2686.33829 5477.45041 -2686.14537 5477.61152 -2685.98426 5477.80444 -2685.86304 5478.01949 -2685.78779 5478.26836 -2685.75975 5480.58564 -2685.75975 5480.83451 -2685.78779 5481.04956 -2685.86304 5481.24248 -2685.98426 5481.40686 -2686.14864 5481.53663 -2686.23535 5481.68971 -2686.2658 5482.87633 -2686.2658 5483.07201 -2686.24846 5483.2035 -2686.21213 5483.31514 -2686.13373 5483.39394 -2686.02237 5483.43073 -2685.891 5483.46154 -2685.58908 5483.53609 -2685.37604 5483.65731 -2685.18312 5483.81842 -2685.02201 5484.01134 -2684.90079 5484.22639 -2684.82554 5484.47526 -2684.7975 5497.02874 -2684.7975 5497.27761 -2684.82554 5497.49266 -2684.90079 5497.68558 -2685.02201 5497.84669 -2685.18312 5497.96791 -2685.37604 5498.04316 -2685.59109 5498.0712 -2685.83996 5498.0712 -2689.73204 5498.04316 -2689.98091 5497.96791 -2690.19596 5497.84669 -2690.38888 5497.68558 -2690.54999 5497.49266 -2690.67121 5497.27761 -2690.74646 5497.02874 -2690.7745 5484.47526 -2690.7745 5484.22639 -2690.74646 5484.01134 -2690.67121 5483.81842 -2690.54999 5483.65731 -2690.38888 5483.53609 -2690.19596 5483.46155 -2689.98293 5483.43074 -2689.68073 5483.39395 -2689.54935 5483.31516 -2689.43798 5483.20351 -2689.35956 5483.07201 -2689.32323 5482.87643 -2689.3059 5481.85118 -2689.30582 5481.68575 -2689.34161 5481.54993 -2689.44263 5481.46805 -2689.59076 5481.45477 -2689.7595 5481.60006 -2690.15334 5481.6281 -2690.40221 5481.6281 -2692.32579 5481.60006 -2692.57466 5481.52481 -2692.78971 5481.40359 -2692.98263 5481.24248 -2693.14374 5481.04956 -2693.26496 5480.83451 -2693.34021 5480.58564 -2693.36825 5478.26836 -2693.36825 5478.01949 -2693.34021 5477.80444 -2693.26496 5477.61152 -2693.14374 5477.34972 -2692.86457 5477.23243 -2692.79975 5477.10032 -2692.7773 5476.89026 -2692.7773 5476.73719 -2692.80775 5476.60742 -2692.89446 5475.25906 -2694.24282 5475.17235 -2694.37259 5475.1419 -2694.52566 5475.1419 -2696.30167 5475.17771 -2696.4671 5475.27872 -2696.6029 5475.42686 -2696.68477 5475.59559 -2696.69805 5475.75471 -2696.64036 5475.88589 -2696.55794 5476.10094 -2696.48269 5476.34981 -2696.45465 5476.96318 -2696.45465 5476.96318 -2698.30732 5475.5419 -2698.30732 5475.38883 -2698.33777 5475.25906 -2698.42448 5475.17235 -2698.55425 5475.1419 -2698.70732 5475.1419 -2700.57267 5475.17235 -2700.72575 5475.25906 -2700.85552 5475.38883 -2700.94223 5475.5419 -2700.97267 5476.96318 -2700.97267 5476.96318 -2702.98465 5476.99362 -2703.13772 5477.08033 -2703.26749 5477.2101 -2703.3542 5477.36318 -2703.38465 5478.83482 -2703.38465 5478.9879 -2703.3542 5479.11767 -2703.26749 5479.20438 -2703.13772 5479.23482 -2702.98465 5479.23482 -2700.97267 5480.89065 -2700.97267 5480.89065 -2701.78289 5480.86261 -2702.03176 5480.78736 -2702.24681 5480.66614 -2702.43973 5480.50503 -2702.60084 5480.15676 -2702.81178 5480.0622 -2702.94504 5480.02882 -2703.105 5480.0622 -2703.26496 5480.15676 -2703.39822 5480.50503 -2703.60916 5480.66614 -2703.77027 5480.78736 -2703.96319 5480.86261 -2704.17824 5480.89121 -2704.43209 5480.93332 -2704.57089 5481.02215 -2704.68556 5481.14604 -2704.761 5481.28869 -2704.7873 5497.02873 -2704.7875 5497.27761 -2704.81554 5497.49266 -2704.89079 5497.68558 -2705.01201 5497.84669 -2705.17312 5497.96791 -2705.36604 5498.04316 -2705.58109 5498.0712 -2705.82996 5498.0712 -2709.72204 5498.04316 -2709.97091 5497.96791 -2710.18596 5497.84669 -2710.37888 5497.68558 -2710.53999 5497.49266 -2710.66121 5497.27761 -2710.73646 5497.02874 -2710.7645 5493.0616 -2710.7645 5492.90853 -2710.79495 5492.77876 -2710.88166 5492.69205 -2711.01143 5492.6616 -2711.1645 5492.6616 -2719.90113 5492.62711 -2720.36135 5492.52776 -2720.79665 5492.44424 -2721.00943 5492.41662 -2721.16056 5492.448 -2721.31094 5492.53375 -2721.43841 5493.28506 -2722.18972 5493.41483 -2722.27643 5493.5679 -2722.30688 5493.72097 -2722.27643 5493.85074 -2722.18972 5493.93745 -2722.05995 5493.9679 -2721.90688 5493.9679 -2721.06921 5493.99594 -2720.82034 5494.07119 -2720.60529 5494.17265 -2720.44381 5494.22699 -2720.30536 5494.22699 -2720.15664 5494.17265 -2720.01819 5494.07119 -2719.85671 5493.99594 -2719.64166 5493.9679 -2719.39279 5493.9679 -2719.17312 5495.32845 -2719.17312 5495.32845 -2719.62675 5495.3589 -2719.77982 5495.44561 -2719.90959 5495.57538 -2719.9963 5495.72845 -2720.02675 5496.60955 -2720.02675 5496.76262 -2719.9963 5496.89239 -2719.90959 5496.9791 -2719.77982 5497.00955 -2719.62675 5497.00955 -2719.17312 5498.39562 -2719.17312 5498.5679 -2719.21213 5500.32845 -2719.21213 5500.32845 -2719.66575 5500.3589 -2719.81882 5500.44561 -2719.94859 5500.57538 -2720.0353 5500.72845 -2720.06575 5501.60955 -2720.06575 5501.76262 -2720.0353 5501.89239 -2719.94859 5501.9791 -2719.81882 5502.00955 -2719.66575 5502.00955 -2719.21213 5503.3701 -2719.21213 5503.3701 -2719.43179 5503.3417 -2719.68383 5503.35421 -2719.81529 5503.24972 -2719.9229 5503.16535 -2720.05719 5503.11101 -2720.19564 5503.11101 -2720.34436 5503.18714 -2720.5175 5503.3118 -2720.64261 5503.47817 -2720.70184 5503.65384 -2720.68365 5503.80455 -2720.5916 5503.90093 -2720.44361 5503.96351 -2720.27464 5503.98758 -2720.10988 5503.96945 -2720.04546 5504.02667 -2720.00674 5504.11429 -2719.86754 5504.14344 -2719.78883 5504.46993 -2719.12323 5504.86209 -2718.49407 5505.31589 -2717.90781 5505.82667 -2717.37047 5506.38919 -2716.88756 5506.76641 -2716.62501 5506.88089 -2716.50252 5506.93511 -2716.34388 5506.91956 -2716.17695 5506.83696 -2716.03106 5506.70183 -2715.93183 5506.5379 -2715.8967 5503.39756 -2715.8967 5503.09822 -2715.86524 5502.92195 -2715.88632 5502.89557 -2715.90311 5502.86605 -2715.84385 5502.74936 -2715.74179 5502.54236 -2715.62228 5502.36587 -2715.47155 5501.49761 -2714.60332 5501.3874 -2714.52534 5501.28084 -2714.47436 5501.14307 -2714.43672 5500.74805 -2714.40216 5500.3777 -2714.30292 5500.03021 -2714.14089 5499.71614 -2713.92097 5499.44503 -2713.64986 5499.22511 -2713.33579 5499.06308 -2712.9883 5498.96384 -2712.61795 5498.93043 -2712.236 5498.96384 -2711.85405 5499.06308 -2711.4837 5499.22511 -2711.13621 5499.44503 -2710.82214 5499.71614 -2710.55103 5500.03021 -2710.33111 5500.3777 -2710.16908 5500.74805 -2710.06984 5501.13 -2710.03643 5501.51195 -2710.06984 5501.8823 -2710.16908 5502.22979 -2710.33111 5502.54386 -2710.55103 5502.81497 -2710.82214 5503.03489 -2711.13621 5503.19692 -2711.4837 5503.29616 -2711.85405 5503.33085 -2712.25062 5503.36844 -2712.38827 5503.41885 -2712.49372 5503.4969 -2712.60407 5503.845 -2712.95215 5503.97477 -2713.03885 5504.12784 -2713.0693 5515.35079 -2713.0693 5515.50386 -2713.03885 5515.63363 -2712.95214 5515.72034 -2712.82238 5515.75079 -2712.6693 5515.72034 -2712.51623 5515.63363 -2712.38646 5514.12886 -2710.88166 5513.99909 -2710.79495 5513.84602 -2710.7645 5506.22526 -2710.7645 5505.97639 -2710.73646 5505.76134 -2710.66121 5505.56842 -2710.53999 5505.40731 -2710.37888 5505.28609 -2710.18596 5505.21084 -2709.97091 5505.1828 -2709.72204 5505.1828 -2705.82996 5505.21084 -2705.58109 5505.28609 -2705.36604 5505.40731 -2705.17312 5505.56842 -2705.01201 5505.76134 -2704.89079 5505.97639 -2704.81554 5506.22526 -2704.7875 5518.77874 -2704.7875 5519.02761 -2704.81554 5519.24266 -2704.89079 5519.43558 -2705.01201 5519.59669 -2705.17312 5519.71791 -2705.36604 5519.79316 -2705.58109 5519.8212 -2705.82996 5519.8212 -2707.77183 5519.86205 -2708.01912 5519.922 -2708.16441 5520.06595 -2708.36603 5522.57311 -2710.87323 5523.03954 -2711.2834 5523.38847 -2711.52066 5523.51987 -2711.57762 5523.7593 -2711.63345 5524.29115 -2711.82571 5524.79163 -2712.0766 5524.87755 -2712.13676 5525.02894 -2712.20142 5525.44928 -2712.28154 5526.06829 -2712.32125 5539.51589 -2712.32135 5539.6349 -2712.30324 5539.74312 -2712.25054 5539.99025 -2712.07996 5540.36733 -2711.90104 5540.76823 -2711.78491 5541.18257 -2711.7346 5541.59961 -2711.75141 5542.00856 -2711.8349 5542.39881 -2711.9829 5542.76028 -2712.19159 5543.08358 -2712.45556 5543.36035 -2712.76798 5543.58343 -2713.12074 5543.74703 -2713.50472 5543.84691 -2713.90997 5543.8805 -2714.326 5543.84691 -2714.74203 5543.74703 -2715.14728 5543.58343 -2715.53126 5543.36035 -2715.88402 5543.06065 -2716.21516 5542.95821 -2716.34149 5542.91453 -2716.49817 5542.93684 -2716.65928 5543.02145 -2716.79819 5543.15438 -2716.89193 5543.31363 -2716.925 5580.87684 -2716.925 5581.02991 -2716.89455 5581.15968 -2716.80784 5582.18398 -2715.78354 5582.27266 -2715.64892 5582.301 -2715.49023 5582.2644 -2715.33324 5582.16879 -2715.20344 5582.02972 -2715.12193 5581.80919 -2715.1067 5574.97406 -2715.1067 5574.65963 -2715.07365 5574.37899 -2714.98247 5574.11886 -2714.83228 5573.94235 -2714.68152 5566.76388 -2707.50306 5566.63411 -2707.41635 5566.48104 -2707.3859 5537.5527 -2707.3859 5536.69357 -2707.42955 5535.86234 -2707.5548 5535.04739 -2707.76092 5534.25657 -2708.04592 5533.49749 -2708.40707 5532.77746 -2708.84088 5532.10343 -2709.34318 5531.51787 -2709.8739 5531.42997 -2709.94657 5531.14521 -2710.21551 5530.63821 -2710.59505 5530.09124 -2710.91432 5529.51144 -2711.16916 5528.90637 -2711.35625 5528.28392 -2711.47315 5527.65221 -2711.51833 5527.01946 -2711.49121 5526.39392 -2711.39213 5525.78376 -2711.2224 5525.19692 -2710.98422 5524.64106 -2710.68069 5524.12342 -2710.31578 5523.65075 -2709.89425 5523.22922 -2709.42158 5522.86431 -2708.90394 5522.56078 -2708.34808 5522.3226 -2707.76124 5522.15287 -2707.15108 5522.05379 -2706.52554 5522.02667 -2705.89279 5522.07185 -2705.26108 5522.18875 -2704.63863 5522.37584 -2704.03356 5522.63068 -2703.45376 5522.94995 -2702.90679 5523.32949 -2702.39979 5523.76436 -2701.93935 5524.24887 -2701.53148 5524.77672 -2701.1815 5525.34102 -2700.89398 5525.93442 -2700.67265 5526.54918 -2700.52041 5527.17729 -2700.43924 5527.81056 -2700.43019 5528.44073 -2700.49339 5529.05958 -2700.62802 5529.65906 -2700.83231 5530.23134 -2701.10361 5530.76897 -2701.43837 5531.26493 -2701.83223 5531.45707 -2702.02127 5531.51787 -2702.0705 5532.13377 -2702.62612 5532.8101 -2703.12532 5533.53211 -2703.55583 5534.29283 -2703.9135 5535.08495 -2704.19488 5535.90084 -2704.39726 5536.73263 -2704.5187 5537.5527 -2704.5585 5567.21134 -2704.5585 5567.52577 -2704.59155 5567.80641 -2704.68273 5568.06654 -2704.83292 5568.24305 -2704.98368 5572.72362 -2709.46425 5572.85302 -2709.5508 5573.00565 -2709.58141 5573.15841 -2709.55143 5573.28815 -2709.4654 5573.37523 -2709.33636 5573.40646 -2709.18385 5573.3771 -2709.03098 5573.1556 -2708.48524 5572.98587 -2707.87508 5572.88679 -2707.24954 5572.85967 -2706.61679 5572.90485 -2705.98508 5573.02175 -2705.36263 5573.20884 -2704.75756 5573.46368 -2704.17776 5573.78295 -2703.63079 5574.16249 -2703.12379 5574.59736 -2702.66335 5575.08187 -2702.25548 5575.60972 -2701.9055 5576.17402 -2701.61798 5576.24881 -2701.59008 5576.38308 -2701.50666 5576.47456 -2701.37775 5576.50894 -2701.22346 5576.48088 -2701.0679 5576.39474 -2700.93536 5576.26398 -2700.84653 5576.10903 -2700.8153 5533.55676 -2700.8153 5533.24233 -2700.78225 5532.96169 -2700.69107 5532.70156 -2700.54088 5532.52505 -2700.39012 5531.44658 -2699.31166 5531.31681 -2699.22495 5531.16374 -2699.1945 5520.6349 -2699.1945 5520.20781 -2699.23463 5520.10509 -2699.25776 5519.95746 -2699.3398 5519.85685 -2699.47545 5519.8212 -2699.64054 5519.8212 -2699.72704 5519.79316 -2699.97591 5519.71791 -2700.19096 5519.59669 -2700.38388 5519.43558 -2700.54499 5519.24266 -2700.66621 5519.02761 -2700.74146 5518.77874 -2700.7695 5506.22526 -2700.7695 5505.97639 -2700.74146 5505.76134 -2700.66621 5505.56842 -2700.54499 5505.40731 -2700.38388 5505.28609 -2700.19096 5505.21084 -2699.97591 5505.1828 -2699.72704 5505.1828 -2695.83496 5505.21084 -2695.58609 5505.28609 -2695.37104 5505.40731 -2695.17812 5505.56842 -2695.01701 5505.76134 -2694.89579 5505.97639 -2694.82054 5506.22526 -2694.7925 5518.77874 -2694.7925 5519.02761 -2694.82054 5519.24266 -2694.89579 5519.43558 -2695.01701 5519.59669 -2695.17812 5519.71791 -2695.37104 5519.79316 -2695.58609 5519.8212 -2695.83496 5519.8212 -2695.92106 5519.85685 -2696.08615 5519.95746 -2696.2218 5520.13091 -2696.31167 5520.20781 -2696.32697 5520.6349 -2696.3671 5531.89404 -2696.3671 5532.20847 -2696.40015 5532.48911 -2696.49133 5532.74924 -2696.64152 5532.92575 -2696.79228 5534.00422 -2697.87074 5534.13399 -2697.95745 5534.28706 -2697.9879 5538.19138 -2697.9879 5538.36437 -2697.94856 5538.50333 -2697.83827 5538.58093 -2697.67873 5538.5819 -2697.50132 5538.50604 -2697.34095 5538.36829 -2697.22915 5538.01563 -2697.05524 5537.56223 -2696.75229 5537.15225 -2696.39275 5536.79271 -2695.98277 5536.48976 -2695.52937 5536.24858 -2695.04031 5536.0733 -2694.52395 5535.96692 -2693.98913 5535.93126 -2693.445 5535.96692 -2692.90087 5536.0733 -2692.36605 5536.24858 -2691.84969 5536.48976 -2691.36063 5536.79271 -2690.90723 5537.15225 -2690.49725 5537.56223 -2690.13771 5537.86997 -2689.93209 5537.98743 -2689.81073 5538.04432 -2689.65171 5538.03052 -2689.48339 5537.94848 -2689.33576 5537.81283 -2689.23515 5537.64775 -2689.1995 5520.63485 -2689.1995 5520.20776 -2689.23963 5520.10504 -2689.26276 5519.95741 -2689.3448 5519.8568 -2689.48045 5519.82115 -2689.64554 5519.82115 -2689.73204 5519.79311 -2689.98091 5519.71786 -2690.19596 5519.59664 -2690.38888 5519.43553 -2690.54999 5519.24261 -2690.67121 5519.02756 -2690.74646 5518.77869 -2690.7745 5506.22531 -2690.7745 5505.97644 -2690.74646 5505.76139 -2690.67121 5505.56847 -2690.54999 5505.40736 -2690.38888 5505.28614 -2690.19596 5505.21089 -2689.98091 5505.18285 -2689.73204 5505.18285 -2685.83996 5505.21089 -2685.59109 5505.28614 -2685.37604 5505.40736 -2685.18312 5505.56847 -2685.02201 5505.76139 -2684.90079 5505.97644 -2684.82554 5506.22531 -2684.7975 5518.77869 -2684.7975 5519.02756 -2684.82554 5519.24261 -2684.90079 5519.43553 -2685.02201 5519.59664 -2685.18312 5519.71786 -2685.37604 5519.79311 -2685.59109 5519.82115 -2685.83996 5519.82115 -2685.92606 5519.8568 -2686.09115 5519.95741 -2686.2268 5520.13086 -2686.31667 5520.20776 -2686.33197 5520.63485 -2686.3721 5536.63584 -2686.3721 5536.78891 -2686.34165 5536.91868 -2686.25494 5537.00539 -2686.12517 5537.03584 -2685.9721 5537.00539 -2685.81903 5536.91868 -2685.68926 5530.55108 -2679.32166 5530.42131 -2679.23495 5530.26824 -2679.2045 5520.6349 -2679.2045 5520.20781 -2679.24463 5520.10509 -2679.26776 5519.95746 -2679.3498 5519.85685 -2679.48545 5519.8212 -2679.65054 5519.8212 -2679.73704 5519.79316 -2679.98591 5519.71791 -2680.20096 5519.59669 -2680.39388 5519.43558 -2680.55499 5519.24266 -2680.67621 5519.02761 -2680.75146 5518.77874 -2680.7795 5506.22526 -2680.7795 5505.97639 -2680.75146 5505.76134 -2680.67621 5505.56842 -2680.55499 5505.40731 -2680.39388 5505.28609 -2680.20096 5505.21084 -2679.98591 5505.1828 -2679.73704 5505.1828 -2675.84496 5505.21084 -2675.59609 5505.28609 -2675.38104 5505.40731 -2675.18812 5505.56842 -2675.02701 5505.76134 -2674.90579 5505.97639 -2674.83054 5506.22526 -2674.8025 5518.77874 -2674.8025 5519.02761 -2674.83054 5519.24266 -2674.90579 5519.43558 -2675.02701 5519.59669 -2675.18812 5519.71791 -2675.38104 5519.79316 -2675.59609 5519.8212 -2675.84496 5519.8212 -2675.93106 5519.85685 -2676.09615 5519.95746 -2676.2318 5520.13091 -2676.32167 5520.20781 -2676.33697 5520.6349 -2676.3771 5530.9715 -2676.3771 5531.12457 -2676.34665 5531.25434 -2676.25994 5531.34105 -2676.13017 5531.3715 -2675.9771 5531.34105 -2675.82403 5531.25434 -2675.69426 5524.88678 -2669.32666 5524.75701 -2669.23995 5524.60394 -2669.2095 5520.6349 -2669.2095 5520.20781 -2669.24963 5520.10509 -2669.27276 5519.95746 -2669.3548 5519.85685 -2669.49045 5519.8212 -2669.65554 5519.8212 -2669.74204 5519.79316 -2669.99091 5519.71791 -2670.20596 5519.59669 -2670.39888 5519.43558 -2670.55999 5519.24266 -2670.68121 5519.02761 -2670.75646 5518.77874 -2670.7845 5506.22526 -2670.7845 5505.97639 -2670.75646 5505.76134 -2670.68121 5505.56842 -2670.55999 5505.40731 -2670.39888 5505.28609 -2670.20596 5505.21084 -2669.99091 5505.1828 -2669.74204 5505.1828 -2665.84996 5505.21084 -2665.60109 5505.28609 -2665.38604 5505.40731 -2665.19312 5505.56842 -2665.03201 5505.76134 -2664.91079 5505.97639 -2664.83554 5506.22526 -2664.8075 5518.77874 -2664.8075 5519.02761 -2664.83554 5519.24266 -2664.91079 5519.43558 -2665.03201 5519.59669 -2665.19312 5519.71791 -2665.38604 5519.79316 -2665.60109 5519.8212 -2665.84996 5519.8212 -2665.93606 5519.85685 -2666.10115 5519.95746 -2666.2368 5520.13091 -2666.32667 5520.20781 -2666.34197 5520.6349 -2666.3821 5525.33424 -2666.3821 5525.64867 -2666.41515 5525.92931 -2666.50633 5526.18944 -2666.65652 5526.36595 -2666.80728 5540.89392 -2681.33534 5541.02369 -2681.42205 5541.17676 -2681.4525 5544.3889 -2681.4525 5544.54548 -2681.42058 5544.67708 -2681.32991 5544.76267 -2681.19496 5544.78861 -2681.03727 5544.75075 -2680.88202 5544.65513 -2680.75397 5544.33475 -2680.46825 5543.91322 -2679.99558 5543.54831 -2679.47794 5543.24478 -2678.92208 5543.0066 -2678.33524 5542.83687 -2677.72508 5542.73779 -2677.09954 5542.71067 -2676.46679 5542.75585 -2675.83508 5542.87275 -2675.21263 5543.05984 -2674.60756 5543.31468 -2674.02776 5543.63395 -2673.48079 5544.01349 -2672.97379 5544.44836 -2672.51335 5544.93287 -2672.10548 5545.46072 -2671.7555 5546.02502 -2671.46798 5546.61842 -2671.24665 5547.23318 -2671.09441 5547.86129 -2671.01324 5548.49456 -2671.00419 5549.12473 -2671.06739 5549.74358 -2671.20202 5550.34306 -2671.40631 5550.91534 -2671.67761 5551.45297 -2672.01237 5551.94893 -2672.40623 5552.14137 -2672.59557 5552.20217 -2672.6448 5552.81809 -2673.20044 5553.49445 -2673.69967 5554.21649 -2674.13019 5554.97724 -2674.48787 5555.7694 -2674.76926 5556.58531 -2674.97165 5557.41714 -2675.09309 5558.23724 -2675.1329 5588.24454 -2675.1329 5588.39014 -2675.1482 5588.55223 -2675.13188 5588.69437 -2675.05228 5588.79298 -2674.9226 5588.8317 -2674.76435 5588.80411 -2674.60379 5588.71479 -2674.46755 5586.63429 -2672.38706 5586.50452 -2672.30035 5586.35144 -2672.2699 5574.77506 -2672.2699 5574.46063 -2672.23685 5574.17999 -2672.14567 5573.91986 -2671.99548 5573.74335 -2671.84472 5570.00734 -2668.10869 5569.8816 -2668.02367 5569.73323 -2667.99163 5569.5836 -2668.01717 5569.45426 -2668.09662 5569.36384 -2668.21854 5569.32536 -2668.36537 5569.28808 -2668.93413 5569.1817 -2669.46895 5569.00642 -2669.98531 5568.76524 -2670.47437 5568.46229 -2670.92777 5568.10275 -2671.33775 5567.69277 -2671.69729 5567.23937 -2672.00024 5566.75031 -2672.24142 5566.23395 -2672.4167 5565.69913 -2672.52308 5565.155 -2672.55874 5564.61087 -2672.52308 5564.07605 -2672.4167 5563.55969 -2672.24142 5563.07063 -2672.00024 5562.61723 -2671.69729 5562.20725 -2671.33775 5561.84771 -2670.92777 5561.54476 -2670.47437 5561.30358 -2669.98531 5561.1283 -2669.46895 5561.02192 -2668.93413 5560.98626 -2668.39 5561.02192 -2667.84587 5561.1283 -2667.31105 5561.30358 -2666.79469 5561.54476 -2666.30563 5561.84771 -2665.85223 5562.20725 -2665.44225 5562.61723 -2665.08271 5563.07063 -2664.77976 5563.55969 -2664.53858 5564.07605 -2664.3633 5564.61087 -2664.25692 5565.17966 -2664.21964 5565.32649 -2664.18116 5565.44841 -2664.09073 5565.52786 -2663.9614 5565.55341 -2663.81177 5565.52136 -2663.6634 5565.43635 -2663.53766 5561.23038 -2659.33166 5561.10061 -2659.24495 5560.94754 -2659.2145 5520.6349 -2659.2145 5520.20781 -2659.25463 5520.10509 -2659.27776 5519.95746 -2659.3598 5519.85685 -2659.49545 5519.8212 -2659.66054 5519.8212 -2659.74704 5519.79316 -2659.99591 5519.71791 -2660.21096 5519.59669 -2660.40388 5519.43558 -2660.56499 5519.24266 -2660.68621 5519.02761 -2660.76146 5518.77874 -2660.7895 5506.22526 -2660.7895 5505.97639 -2660.76146 5505.76134 -2660.68621 5505.56842 -2660.56499 5505.40731 -2660.40388 5505.28609 -2660.21096 5505.21084 -2659.99591 5505.1828 -2659.74704 5505.1828 -2655.85496 5505.21084 -2655.60609 5505.2545 -2655.48131 5505.27655 -2655.33125 5505.24114 -2655.18378 5505.15338 -2655.06008 5505.02587 -2654.97795 5504.87695 -2654.9492 5498.37705 -2654.9492 5498.22813 -2654.97795 5498.10062 -2655.06008 5498.01286 -2655.18378 5497.97745 -2655.33125 5497.9995 -2655.48131 5498.04316 -2655.60609 5498.0712 -2655.85496 5498.0712 -2659.74704 5498.04316 -2659.99591 5497.96791 -2660.21096 5497.84669 -2660.40388 5497.68558 -2660.56499 5497.49266 -2660.68621 5497.27761 -2660.76146 5497.02874 -2660.7895 5484.47526 -2660.7895 5484.22639 -2660.76146 5484.01134 -2660.68621 5483.81842 -2660.56499 5483.65731 -2660.40388 5483.53609 -2660.21096 5483.46084 -2659.99591 5483.4328 -2659.74704 5483.4328 -2655.85496 5483.46084 -2655.60609 5483.53609 -2655.39104 5483.65731 -2655.19812 5483.81842 -2655.03701 5484.01134 -2654.91579 5484.22639 -2654.84054 5484.47526 -2654.8125 5491.57569 -2654.8125 5491.72876 -2654.78205 5491.85853 -2654.69535 5493.25633 -2653.29758 5493.33891 -2653.17743 5493.37294 -2653.03567 5493.35391 -2652.89113 5493.28435 -2652.76301 5493.17349 -2652.66832 5492.89837 -2652.50948 5492.72184 -2652.35871 5491.27482 -2650.91166 5491.14505 -2650.82495 5490.99198 -2650.7945 5484.47526 -2650.7945 5484.22639 -2650.76646 5484.01134 -2650.69121 5483.81842 -2650.56999 5483.65731 -2650.40888 5483.53609 -2650.21596 5483.46084 -2650.00091 5483.4328 -2649.75204 5483.4328 -2645.85996 5483.46084 -2645.61109 5483.53609 -2645.39604 5483.65731 -2645.20312 5483.81842 -2645.04201 5484.01134 -2644.92079 5484.22639 -2644.84554 5484.47526 -2644.8175 5497.02874 -2644.8175 5497.27761 -2644.84554 5497.49266 -2644.92079 5497.68558 -2645.04201 5497.84669 -2645.20312 5497.96791 -2645.39604 5498.04316 -2645.61109 5498.0712 -2645.85996 5498.0712 -2649.5565 5498.10165 -2649.70957 5498.18836 -2649.83934 5498.31813 -2649.92605 5498.4712 -2649.9565 5504.7828 -2649.9565 5504.93587 -2649.92605 5505.06564 -2649.83934 5505.15235 -2649.70957 5505.1828 -2649.5565 5505.1828 -2645.85996 5505.21084 -2645.61109 5505.28609 -2645.39604 5505.40731 -2645.20312 5505.56842 -2645.04201 5505.76134 -2644.92079 5505.97639 -2644.84554 5506.22526 -2644.8175 5513.3257 -2644.8175 5513.47877 -2644.78705 5513.60854 -2644.70035 5515.24645 -2643.06247 5515.49216 -2642.86351 5515.75508 -2642.72955 5516.04522 -2642.65181 5516.27661 -2642.6336 5574.70834 -2642.6336 5574.86141 -2642.60315 5574.99118 -2642.51644 5575.07789 -2642.38667 5575.10834 -2642.2336 5575.07789 -2642.08053 5574.99118 -2641.95076 5572.38208 -2639.34166 5572.25231 -2639.25495 5572.09924 -2639.2245 5520.6349 -2639.2245 5520.20781 -2639.26463 5520.10509 -2639.28776 5519.95746 -2639.3698 5519.85685 -2639.50545 5519.8212 -2639.67054 5519.8212 -2639.75704 5519.79316 -2640.00591 5519.71791 -2640.22096 5519.59669 -2640.41388 5519.43558 -2640.57499 5519.24266 -2640.69621 5519.02761 -2640.77146 5518.77874 -2640.7995 5506.22526 -2640.7995 5505.97639 -2640.77146 5505.76134 -2640.69621 5505.56842 -2640.57499 5505.40731 -2640.41388 5505.28609 -2640.22096 5505.21084 -2640.00591 5505.1828 -2639.75704 5505.1828 -2635.86496 5505.19595 -2635.74829 5505.17957 -2635.58203 5505.09672 -2635.43696 5504.96184 -2635.33839 5504.79846 -2635.3035 5498.45554 -2635.3035 5498.29216 -2635.33839 5498.15728 -2635.43696 5498.07443 -2635.58203 5498.05805 -2635.74829 5498.0712 -2635.86496 5498.0712 -2639.75704 5498.04316 -2640.00591 5497.96791 -2640.22096 5497.84669 -2640.41388 5497.68558 -2640.57499 5497.49266 -2640.69621 5497.27761 -2640.77146 5497.02874 -2640.7995 5484.47526 -2640.7995 5484.22639 -2640.77146 5484.01134 -2640.69621 5483.81842 -2640.57499 5483.65731 -2640.41388 5483.53609 -2640.22096 5483.46084 -2640.00591 5483.4328 -2639.75704 5483.4328 -2635.86496 5483.46084 -2635.61609 5483.53609 -2635.40104 5483.65731 -2635.20812 5483.81842 -2635.04701 5484.01134 -2634.92579 5484.22639 -2634.85054 5484.47526 -2634.8225 5491.57564 -2634.8225 5491.72871 -2634.79205 5491.85848 -2634.70534 5493.46768 -2633.09614 5493.55439 -2632.96637 5493.58484 -2632.8133 5493.55439 -2632.66023 5493.46768 -2632.53046 5491.85888 -2630.92166 5491.72911 -2630.83495 5491.57604 -2630.8045 5484.47526 -2630.8045 5484.22639 -2630.77646 5484.01134 -2630.70121 5483.81842 -2630.57999 5483.65731 -2630.41888 5483.53609 -2630.22596 5483.46084 -2630.01091 5483.4328 -2629.76204 5483.4328 -2625.86996 5483.46084 -2625.62109 5483.53609 -2625.40604 5483.65731 -2625.21312 5483.81842 -2625.05201 5484.01134 -2624.93079 5484.22639 -2624.85554 5484.47526 -2624.8275 5497.02874 -2624.8275 5497.27761 -2624.85554 5497.49266 -2624.93079 5497.68558 -2625.05201 5497.84669 -2625.21312 5497.96791 -2625.40604 5498.04316 -2625.62109 5498.0712 -2625.86996 5498.0712 -2629.761 5498.03586 -2630.06076 5498.05153 -2630.2276 5498.13416 -2630.37337 5498.26926 -2630.4725 5498.43311 -2630.5076 5504.82089 -2630.5076 5504.98474 -2630.4725 5505.11984 -2630.37337 5505.20247 -2630.2276 5505.21814 -2630.06076 5505.1828 -2629.761 5505.1828 -2625.86996 5505.21084 -2625.62109 5505.28609 -2625.40604 5505.40731 -2625.21312 5505.56842 -2625.05201 5505.76134 -2624.93079 5505.97639 -2624.85554 5506.22526 -2624.8275 5518.77874 -2624.8275 5519.02761 -2624.85554 5519.24266 -2624.93079 5519.43558 -2625.05201 5519.59669 -2625.21312 5519.71791 -2625.40604 5519.79316 -2625.62109 5519.8212 -2625.86996 5519.8212 -2625.95606 5519.85685 -2626.12115 5519.95746 -2626.2568 5520.13091 -2626.34667 5520.20781 -2626.36197 5520.6349 -2626.4021 5542.75617 -2626.4021 5542.90924 -2626.37165 5543.03901 -2626.28495 5544.02957 -2625.29444 5544.11864 -2625.15885 5544.14654 -2624.99904 5544.10867 -2624.84129 5544.01126 -2624.71155 5543.60097 -2624.47798 5543.41583 -2624.31986 5542.97444 -2623.92922 5542.48852 -2623.58872 5541.96723 -2623.30532 5541.41725 -2623.08265 5540.84563 -2622.92355 5540.2597 -2622.83007 5539.66631 -2622.80346 5538.51037 -2622.87938 5537.87646 -2622.85221 5537.25092 -2622.75313 5536.64076 -2622.5834 5536.05392 -2622.34522 5535.49806 -2622.04169 5534.98042 -2621.67678 5534.50775 -2621.25525 5534.08622 -2620.78258 5533.72131 -2620.26494 5533.41778 -2619.70908 5533.1796 -2619.12224 5533.00987 -2618.51208 5532.91079 -2617.88654 5532.88367 -2617.25379 5532.92885 -2616.62208 5533.04575 -2615.99963 5533.23284 -2615.39456 5533.48768 -2614.81476 5533.80695 -2614.26779 5534.18649 -2613.76079 5534.62136 -2613.30035 5535.10587 -2612.89248 5535.63372 -2612.5425 5536.19802 -2612.25498 5536.79142 -2612.03365 5537.40618 -2611.88141 5538.03429 -2611.80024 5538.66756 -2611.79119 5539.29773 -2611.85439 5539.91658 -2611.98902 5540.51606 -2612.19331 5541.08834 -2612.46461 5541.62597 -2612.79937 5542.12193 -2613.19323 5542.56977 -2613.64107 5542.96363 -2614.13703 5543.29839 -2614.67466 5543.56969 -2615.24694 5543.77398 -2615.84642 5543.90861 -2616.46527 5543.97181 -2617.09544 5543.96267 -2617.73518 5543.93505 -2618.02342 5543.89966 -2618.61571 5543.93143 -2619.2082 5544.02995 -2619.79331 5544.19397 -2620.36354 5544.42138 -2620.91157 5544.70926 -2621.4304 5544.93947 -2621.75595 5545.02819 -2621.84659 5545.14083 -2621.90489 5545.26606 -2621.925 5594.45897 -2621.925 5594.61527 -2621.8932 5594.74671 -2621.80286 5594.83241 -2621.66835 5594.85873 -2621.51104 5594.79508 -2621.2993 5594.69584 -2620.92895 5594.66243 -2620.547 5594.69584 -2620.16505 5594.79508 -2619.7947 5594.95711 -2619.44721 5595.17703 -2619.13314 5595.22514 -2619.08503 5595.31185 -2618.95526 5595.3423 -2618.80219 5595.3423 -2591.70181 5595.32495 -2591.50599 5595.28862 -2591.37448 5595.2102 -2591.26284 5595.09881 -2591.18404 5594.96743 -2591.14726 5594.66506 -2591.11645 5594.45204 -2591.04191 5594.25912 -2590.92069 5594.09801 -2590.75958 5594.04649 -2590.67759 5593.92691 -2590.55575 5593.76742 -2590.49487 5593.59707 -2590.50603 5593.44689 -2590.58721 5593.34423 -2590.72361 5593.3078 -2590.8904 5593.3078 -2607.06629 5593.33825 -2607.21936 5593.42496 -2607.34913 5593.47297 -2607.39714 5593.69289 -2607.71121 5593.85492 -2608.0587 5593.95416 -2608.42905 5593.98757 -2608.811 5593.95416 -2609.19295 5593.85492 -2609.5633 5593.69289 -2609.91079 5593.47297 -2610.22486 5593.20186 -2610.49597 5592.88779 -2610.71589 5592.5403 -2610.87792 5592.16995 -2610.97716 5591.788 -2611.01057 5591.40605 -2610.97716 5591.0357 -2610.87792 5590.68821 -2610.71589 5590.37414 -2610.49597 5590.10303 -2610.22486 5589.88311 -2609.91079 5589.72108 -2609.5633 5589.62184 -2609.19295 5589.58843 -2608.811 5589.62184 -2608.42905 5589.72108 -2608.0587 5589.88311 -2607.71121 5590.10303 -2607.39714 5590.15064 -2607.34953 5590.23735 -2607.21976 5590.2678 -2607.06669 5590.2678 -2591.08846 5590.23735 -2590.93538 5590.15064 -2590.80561 5590.02087 -2590.7189 5589.8678 -2590.68846 5589.71473 -2590.7189 5589.58496 -2590.80561 5589.46988 -2590.92069 5589.27696 -2591.04191 5589.06191 -2591.11716 5588.81304 -2591.1452 5588.72181 -2591.1452 5588.55673 -2591.18085 5588.42108 -2591.28146 5588.32465 -2591.4765 5588.30936 -2591.55341 5588.2684 -2591.9889 5588.2684 -2615.96389 5588.29885 -2616.11696 5588.38556 -2616.24673 5588.43297 -2616.29414 5588.65289 -2616.60821 5588.81492 -2616.9557 5588.91416 -2617.32605 5588.94757 -2617.708 5588.91416 -2618.08995 5588.81492 -2618.4603 5588.65289 -2618.80779 5588.43297 -2619.12186 5588.16186 -2619.39297 5587.84779 -2619.61289 5587.5003 -2619.77492 5587.12995 -2619.87416 5586.748 -2619.90757 5586.36605 -2619.87416 5585.9957 -2619.77492 5585.64821 -2619.61289 5585.33414 -2619.39297 5585.06303 -2619.12186 5584.84311 -2618.80779 5584.68108 -2618.4603 5584.58184 -2618.08995 5584.54843 -2617.708 5584.58184 -2617.32605 5584.68108 -2616.9557 5584.84311 -2616.60821 5585.06303 -2616.29414 5585.11124 -2616.24593 5585.19795 -2616.11616 5585.2284 -2615.96309 5585.2284 -2591.5373 5585.2021 -2591.39465 5585.12666 -2591.27076 5585.01199 -2591.18192 5584.87319 -2591.13982 5584.67209 -2591.11716 5584.45704 -2591.04191 5584.26412 -2590.92069 5584.10301 -2590.75958 5583.98179 -2590.56666 5583.90654 -2590.35161 5583.8785 -2590.10274 5583.8785 -2577.54926 5583.90654 -2577.30039 5583.98179 -2577.08534 5584.10301 -2576.89242 5584.26412 -2576.73131 5584.45704 -2576.61009 5584.67209 -2576.53484 5584.92096 -2576.5068 5588.81304 -2576.5068 5589.06191 -2576.53484 5589.27696 -2576.61009 5589.46988 -2576.73131 5589.58496 -2576.84639 5589.71473 -2576.9331 5589.8678 -2576.96354 5590.02087 -2576.9331 5590.15064 -2576.84639 5590.23735 -2576.71662 5590.2678 -2576.56354 5590.2678 -2574.7223 5590.23735 -2574.56923 5590.15064 -2574.43946 5585.8064 -2570.09531 5585.60508 -2569.85 5585.475 -2569.60664 5585.38597 -2569.49446 5585.26313 -2569.42084 5585.12223 -2569.3952 5584.92096 -2569.3952 5584.67209 -2569.36716 5584.45704 -2569.29191 5584.26412 -2569.17069 5584.10301 -2569.00958 5583.98179 -2568.81666 5583.90654 -2568.60161 5583.8785 -2568.35274 5583.8785 -2555.79926 5583.90654 -2555.55039 5583.98179 -2555.33534 5584.10301 -2555.14242 5584.26412 -2554.98131 5584.45704 -2554.86009 5584.67209 -2554.78484 5584.92096 -2554.7568 5588.81304 -2554.7568 5589.06191 -2554.78484 5589.27696 -2554.86009 5589.46988 -2554.98131 5589.63099 -2555.14242 5589.75221 -2555.33534 5589.82746 -2555.55039 5589.8555 -2555.79926 5589.8555 -2568.35274 5589.82746 -2568.60161 5589.75221 -2568.81666 5589.52159 -2569.16204 5589.49114 -2569.31512 5589.52159 -2569.46819 5589.6083 -2569.59796 5592.8487 -2572.83829 5593.05002 -2573.0836 5593.1903 -2573.34605 5593.27669 -2573.63083 5593.3078 -2573.94663 5593.3078 -2576.7616 5593.34423 -2576.92839 5593.44689 -2577.06479 5593.59707 -2577.14597 5593.76742 -2577.15713 5593.92691 -2577.09625 5594.04649 -2576.97441 5594.09801 -2576.89242 5594.25912 -2576.73131 5594.45204 -2576.61009 5594.66709 -2576.53484 5594.91596 -2576.5068 5598.80804 -2576.5068 5599.05691 -2576.53484 5599.27196 -2576.61009 5599.46488 -2576.73131 5599.62599 -2576.89242 5599.74721 -2577.08534 5599.82246 -2577.30039 5599.8505 -2577.54926 5599.8505 -2590.10274 5599.82246 -2590.35161 5599.74721 -2590.56666 5599.62599 -2590.75958 5599.46488 -2590.92069 5599.27196 -2591.04191 5599.0589 -2591.11646 5598.75719 -2591.14727 5598.62583 -2591.18407 5598.51448 -2591.26286 5598.43608 -2591.3745 5598.39975 -2591.50599 5598.3823 -2591.70282 5598.3823 -2618.80279 5598.41275 -2618.95586 5598.49946 -2619.08563 5598.54697 -2619.13314 5598.76689 -2619.44721 5598.92892 -2619.7947 5599.02816 -2620.16505 5599.06157 -2620.547 5599.02816 -2620.92895 5598.92892 -2621.2993 5598.86527 -2621.51104 5598.89159 -2621.66835 5598.97729 -2621.80286 5599.10873 -2621.8932 5599.26503 -2621.925 5601.60344 -2621.925 5601.75651 -2621.89455 5601.88628 -2621.80784 5612.83624 -2610.85779 5613.08194 -2610.65882 5613.34486 -2610.52486 5613.63499 -2610.44711 5613.86642 -2610.4289 5673.29794 -2610.4289 5673.46132 -2610.39401 5673.5962 -2610.29544 5673.67905 -2610.15037 5673.69543 -2609.98411 5673.6828 -2609.87204 5673.6828 -2607.45667 5673.65623 -2607.31333 5673.58006 -2607.18902 5673.4644 -2607.10027 5673.32461 -2607.05886 5673.17927 -2607.0703 5672.99695 -2607.11916 5672.615 -2607.15257 5672.23305 -2607.11916 5671.8627 -2607.01992 5671.51521 -2606.85789 5671.20114 -2606.63797 5670.93003 -2606.36686 5670.71011 -2606.05279 5670.54808 -2605.7053 5670.44884 -2605.33495 5670.41543 -2604.953 5670.44884 -2604.57105 5670.54808 -2604.2007 5670.71011 -2603.85321 5670.93003 -2603.53914 5671.20114 -2603.26803 5671.51521 -2603.04811 5671.8627 -2602.88608 5672.23305 -2602.78684 5672.615 -2602.75343 5672.99695 -2602.78684 5673.3673 -2602.88608 5673.4209 -2602.91107 5673.58995 -2602.94855 5678.59805 -2602.94855 5678.75112 -2602.9181 5678.88089 -2602.83139 5678.9676 -2602.70162 5678.99805 -2602.54855 5678.99805 -2598.3449 5678.97175 -2598.20225 5678.89631 -2598.07836 5678.78164 -2597.98952 5678.64284 -2597.94742 5678.45239 -2597.92596 5678.23734 -2597.85071 5678.04442 -2597.72949 5677.88331 -2597.56838 5677.76209 -2597.37546 5677.68684 -2597.16041 5677.6588 -2596.91154 5677.6588 -2590.95646 5677.68684 -2590.70759 5677.76209 -2590.49254 5677.88331 -2590.29962 5678.04442 -2590.13851 5678.23734 -2590.01729 5678.45239 -2589.94204 5678.70126 -2589.914 5683.38074 -2589.914 5683.62961 -2589.94204 5683.84466 -2590.01729 5684.03758 -2590.13851 5684.19869 -2590.29962 5684.31991 -2590.49254 5684.39516 -2590.70759 5684.4232 -2590.95646 5684.4232 -2596.91154 5684.39516 -2597.16041 5684.31991 -2597.37546 5684.19869 -2597.56838 5684.03758 -2597.72949 5683.84466 -2597.85071 5683.62961 -2597.92596 5683.36176 -2597.95614 5683.22296 -2597.99824 5683.10829 -2598.08708 5683.03285 -2598.21097 5683.00655 -2598.35362 5683.00655 -2604.5375 5683.037 -2604.69057 5683.12371 -2604.82034 5683.25348 -2604.90705 5683.40655 -2604.9375 5687.27874 -2604.9375 5687.52761 -2604.96554 5687.74266 -2605.04079 5687.93558 -2605.16201 5688.09669 -2605.32312 5688.21791 -2605.51604 5688.29316 -2605.73109 5688.3212 -2605.97996 5688.3212 -2609.87204 5688.30857 -2609.98411 5688.32495 -2610.15037 5688.4078 -2610.29544 5688.54268 -2610.39401 5688.70606 -2610.4289 5695.04794 -2610.4289 5695.21132 -2610.39401 5695.3462 -2610.29544 5695.42905 -2610.15037 5695.44543 -2609.98411 5695.4328 -2609.87204 5695.4328 -2609.16025 5699.3524 -2609.16025 5699.3524 -2610.0289 5699.38285 -2610.18197 5699.46956 -2610.31174 5699.59933 -2610.39845 5699.7524 -2610.4289 5705.7516 -2610.4289 5705.90467 -2610.39845 5706.03444 -2610.31174 5706.12115 -2610.18197 5706.1516 -2610.0289 5706.1516 -2609.16025 5710.0712 -2609.16025 5710.0712 -2609.87204 5710.05857 -2609.98411 5710.07495 -2610.15037 5710.1578 -2610.29544 5710.29268 -2610.39401 5710.45606 -2610.4289 5714.78513 -2610.4289 5714.94331 -2610.43719 5715.08941 -2610.46033 5715.23229 -2610.49861 5715.37038 -2610.55162 5715.50218 -2610.61878 5715.62623 -2610.69934 5715.74118 -2610.79242 5715.84578 -2610.89702 5715.93407 -2611.00605 5716.04746 -2611.19607 5716.10811 -2611.27393 5720.33686 -2615.50268 5720.46663 -2615.58939 5720.6197 -2615.61984 5720.77277 -2615.58939 5720.90254 -2615.50268 5720.98925 -2615.37291 5721.0197 -2615.21984 5721.0197 -2596.37336 5720.98925 -2596.22029 5720.90254 -2596.09052 5717.33839 -2592.52636 5717.13942 -2592.28066 5717.00545 -2592.01774 5716.92771 -2591.7276 5716.9095 -2591.49618 5716.9095 -2589.09665 5716.87966 -2588.94506 5716.7785 -2588.7635 5716.64295 -2588.61588 5716.41811 -2588.29479 5716.25608 -2587.9473 5716.15684 -2587.57695 5716.12343 -2587.195 5716.15684 -2586.81305 5716.25608 -2586.4427 5716.41811 -2586.09521 5716.63803 -2585.78114 5716.90914 -2585.51003 5717.22321 -2585.29011 5717.5707 -2585.12808 5717.94105 -2585.02884 5718.323 -2584.99543 5718.70495 -2585.02884 5719.0753 -2585.12808 5719.42279 -2585.29011 5719.73686 -2585.51003 5720.00797 -2585.78114 5720.22789 -2586.09521 5720.38992 -2586.4427 5720.48916 -2586.81305 5720.52257 -2587.195 5720.50519 -2587.39369 5720.52546 -2587.55878 5720.61113 -2587.70135 5720.74737 -2587.79675 5720.91065 -2587.82849 5721.07271 -2587.79108 5721.2507 -2587.70808 5721.62105 -2587.60884 5722.003 -2587.57543 5722.38495 -2587.60884 5722.7553 -2587.70808 5723.10279 -2587.87011 5723.30367 -2588.01077 5723.46364 -2588.07704 5723.63663 -2588.06948 5723.79022 -2587.98953 5723.89562 -2587.85216 5723.9331 -2587.68311 5723.9331 -2572.55446 5723.90265 -2572.40139 5723.81594 -2572.27162 5723.35729 -2571.81296 5723.15832 -2571.56726 5723.02435 -2571.30434 5722.94661 -2571.0142 5722.9284 -2570.78278 5722.9284 -2568.05475 5722.89856 -2567.90316 5722.79756 -2567.72179 5722.66202 -2567.57398 5722.43711 -2567.25279 5722.27508 -2566.9053 5722.17584 -2566.53495 5722.14243 -2566.153 5722.17584 -2565.77105 5722.27508 -2565.4007 5722.43711 -2565.05321 5722.65703 -2564.73914 5722.92814 -2564.46803 5723.24221 -2564.24811 5723.5897 -2564.08608 5723.96005 -2563.98684 5724.342 -2563.95343 5724.72395 -2563.98684 5725.07765 -2564.08162 5725.25063 -2564.08917 5725.4106 -2564.02291 5725.52758 -2563.89525 5725.68108 -2563.3347 5725.84311 -2562.98721 5726.06303 -2562.67314 5726.33414 -2562.40203 5726.64821 -2562.18211 5726.89031 -2562.06922 5727.01448 -2561.97877 5727.09541 -2561.84818 5727.12114 -2561.69673 5727.08789 -2561.54674 5727.00056 -2561.42035 5726.87203 -2561.3362 5726.72126 -2561.3067 5640.3905 -2561.3067 5640.23743 -2561.33715 5640.10766 -2561.42386 5640.02095 -2561.55363 5639.9905 -2561.7067 5639.9905 -2568.35274 5639.96246 -2568.60161 5639.88721 -2568.81666 5639.76599 -2569.00958 5639.60488 -2569.17069 5639.41196 -2569.29191 5639.19691 -2569.36716 5638.94804 -2569.3952 5635.05596 -2569.3952 5634.80709 -2569.36716 5634.59204 -2569.29191 5634.39912 -2569.17069 5634.23801 -2569.00958 5634.11679 -2568.81666 5634.04154 -2568.60161 5634.0135 -2568.35274 5634.0135 -2556.11096 5633.98305 -2555.95789 5633.89634 -2555.82812 5633.76657 -2555.74141 5633.6135 -2555.71096 5633.46043 -2555.74141 5633.33066 -2555.82812 5630.11266 -2559.04612 5630.02595 -2559.17589 5629.9955 -2559.32896 5629.9955 -2568.35274 5629.96746 -2568.60161 5629.89221 -2568.81666 5629.77099 -2569.00958 5629.60988 -2569.17069 5629.41696 -2569.29191 5629.20191 -2569.36716 5628.95304 -2569.3952 5625.06096 -2569.3952 5624.81209 -2569.36716 5624.59704 -2569.29191 5624.40412 -2569.17069 5624.24301 -2569.00958 5624.12179 -2568.81666 5624.04654 -2568.60161 5624.0185 -2568.35274 5624.0185 -2555.79926 5624.04654 -2555.55039 5624.12179 -2555.33534 5624.24301 -2555.14242 5624.40412 -2554.98131 5624.59704 -2554.86009 5624.81209 -2554.78484 5625.06096 -2554.7568 5627.86459 -2554.7568 5628.62737 -2554.67395 5629.34098 -2554.5177 5630.03449 -2554.28811 5630.70036 -2553.98767 5631.3314 -2553.61964 5631.92075 -2553.18799 5632.42479 -2552.7339 5632.67886 -2552.52811 5632.94176 -2552.39415 5633.2319 -2552.31641 5633.46332 -2552.2982 5646.93054 -2552.2982 5647.24497 -2552.33125 5647.52561 -2552.42243 5647.78574 -2552.57262 5647.96225 -2552.72338 5650.88452 -2555.64564 5651.01429 -2555.73235 5651.16736 -2555.7628 5658.4209 -2555.7628 5658.58632 -2555.72699 5658.72213 -2555.62598 5658.804 -2555.47784 5658.81728 -2555.30911 5658.75959 -2555.14999 5658.71694 -2555.08211 5658.64169 -2554.86706 5658.61365 -2554.61819 5658.61365 -2551.11981 5658.64169 -2550.87094 5658.71694 -2550.65589 5658.83816 -2550.46297 5658.99927 -2550.30186 5659.19219 -2550.18064 5659.40724 -2550.10539 5659.65611 -2550.07735 5659.78875 -2550.07735 5659.94182 -2550.0469 5660.07159 -2549.96019 5660.1583 -2549.83042 5660.18875 -2549.67735 5660.18875 -2549.46335 5660.22159 -2549.12987 5660.31313 -2548.82811 5660.46179 -2548.55 5660.67436 -2548.29097 5661.71447 -2547.25086 5661.9735 -2547.03829 5662.25161 -2546.88963 5662.55337 -2546.79809 5662.88685 -2546.76525 5673.32621 -2546.76525 5673.94822 -2546.72191 5674.53342 -2546.60202 5675.09797 -2546.40676 5675.63221 -2546.13949 5676.127 -2545.80477 5676.96624 -2545.06871 5677.41963 -2544.76576 5677.90869 -2544.52458 5678.42505 -2544.3493 5678.95987 -2544.24292 5679.504 -2544.20726 5680.04813 -2544.24292 5680.58295 -2544.3493 5681.09931 -2544.52458 5681.58837 -2544.76576 5682.04177 -2545.06871 5682.45175 -2545.42825 5682.81129 -2545.83823 5683.11424 -2546.29163 5683.35542 -2546.78069 5683.5307 -2547.29705 5683.63708 -2547.83187 5683.67274 -2548.376 5683.63708 -2548.92013 5683.5307 -2549.45495 5683.35542 -2549.97131 5683.11424 -2550.46037 5682.81129 -2550.91377 5682.45175 -2551.32375 5682.0412 -2551.68366 5681.92375 -2551.80502 5681.86686 -2551.96404 5681.88066 -2552.13236 5681.9627 -2552.27999 5682.09835 -2552.3806 5682.26343 -2552.41625 5683.0205 -2552.41625 5683.17358 -2552.3858 5683.30335 -2552.29909 5683.6787 -2551.92253 5684.07917 -2551.46588 5684.11102 -2551.42437 5684.44842 -2550.91941 5684.47458 -2550.8741 5684.74319 -2550.32943 5684.76321 -2550.28109 5684.95842 -2549.70601 5684.97196 -2549.65547 5685.09044 -2549.05984 5685.0973 -2549.0076 5685.1742 -2547.81782 5685.28115 -2547.26864 5685.45743 -2546.73772 5685.70015 -2546.23371 5686.00533 -2545.76487 5686.36796 -2545.33891 5686.78208 -2544.96282 5687.24089 -2544.64277 5687.73687 -2544.38402 5688.26186 -2544.19081 5688.80725 -2544.06633 5689.36407 -2544.01262 5689.9232 -2544.03055 5690.47544 -2544.11983 5691.01173 -2544.279 5691.52327 -2544.50544 5692.00165 -2544.79543 5692.43901 -2545.14422 5692.82819 -2545.54608 5693.16278 -2545.9944 5693.43729 -2546.48183 5693.64722 -2547.00036 5693.78912 -2547.54147 5693.86066 -2548.09629 5693.86066 -2548.65571 5693.78912 -2549.21053 5693.64722 -2549.75164 5693.43729 -2550.27017 5693.16278 -2550.7576 5692.82819 -2551.20592 5692.43901 -2551.60778 5692.20541 -2551.79407 5692.10116 -2551.91989 5692.05593 -2552.07691 5692.07726 -2552.23891 5692.16159 -2552.37887 5692.29485 -2552.47342 5692.45481 -2552.5068 5696.88008 -2552.5068 5697.04517 -2552.47115 5697.18082 -2552.37054 5697.26286 -2552.22291 5697.27666 -2552.05459 5697.21977 -2551.89557 5697.10231 -2551.77421 5696.96623 -2551.68329 5696.55625 -2551.32375 5696.19671 -2550.91377 5695.89376 -2550.46037 5695.65258 -2549.97131 5695.4773 -2549.45495 5695.37092 -2548.92013 5695.33526 -2548.376 5695.37092 -2547.83187 5695.4773 -2547.29705 5695.65258 -2546.78069 5695.89376 -2546.29163 5696.19671 -2545.83823 5696.55625 -2545.42825 5696.96623 -2545.06871 5697.41963 -2544.76576 5697.90869 -2544.52458 5698.42505 -2544.3493 5698.95987 -2544.24292 5699.504 -2544.20726 5700.04813 -2544.24292 5700.58295 -2544.3493 5701.09931 -2544.52458 5701.58837 -2544.76576 5702.04182 -2545.06875 5702.91211 -2545.83152 5703.44042 -2546.18862 5703.48573 -2546.21479 5704.01093 -2546.47378 5704.05927 -2546.4938 5704.61377 -2546.68203 5704.66431 -2546.69557 5705.23864 -2546.80982 5705.58673 -2546.8331 5705.87878 -2546.81418 5706.55489 -2546.69676 5707.2136 -2546.50437 5707.84663 -2546.23944 5708.44601 -2545.90529 5708.60349 -2545.76898 5708.66161 -2545.65649 5708.68165 -2545.53146 5708.68165 -2545.28781 5708.70969 -2545.03894 5708.78494 -2544.82389 5708.90616 -2544.63097 5709.06727 -2544.46986 5709.26019 -2544.34864 5709.47524 -2544.27339 5709.72411 -2544.24535 5714.00989 -2544.24535 5714.25876 -2544.27339 5714.47381 -2544.34864 5714.66673 -2544.46986 5714.82784 -2544.63097 5715.03828 -2544.97782 5715.17154 -2545.07237 5715.3315 -2545.10575 5715.49146 -2545.07237 5715.62472 -2544.97782 5715.83516 -2544.63097 5715.99627 -2544.46986 5716.18919 -2544.34864 5716.40424 -2544.27339 5716.65311 -2544.24535 5720.93889 -2544.24535 5721.18776 -2544.27339 5721.40281 -2544.34864 5721.59573 -2544.46986 5721.75684 -2544.63097 5721.87806 -2544.82389 5721.95331 -2545.03894 5721.98135 -2545.28781 5721.98135 -2548.78619 5721.95331 -2549.03506 5721.87806 -2549.25011 5721.75684 -2549.44303 5721.59573 -2549.60414 5721.40281 -2549.72536 5721.18776 -2549.80061 5720.93889 -2549.82865 5719.54125 -2549.82865 5719.38937 -2549.85861 5719.26023 -2549.94399 5719.17319 -2550.07202 5719.08323 -2550.28342 5719.05488 -2550.38657 5719.01832 -2550.65939 5718.98529 -2550.99487 5718.89891 -2551.27964 5718.75862 -2551.54209 5718.55731 -2551.7874 5715.26465 -2555.07995 5715.17794 -2555.20972 5715.14749 -2555.3628 5715.17794 -2555.51587 5715.26465 -2555.64564 5715.39442 -2555.73235 5715.54749 -2555.7628 5808.42664 -2555.7628 5808.74107 -2555.79585 5809.02171 -2555.88703 5809.28184 -2556.03722 5809.45835 -2556.18797 5824.74111 -2571.47064 5824.94008 -2571.71634 5825.07404 -2571.97926 5825.15179 -2572.2694 5825.17 -2572.50082 5825.17 -2595.66335 5825.20045 -2595.81642 5825.28716 -2595.94619 5825.41693 -2596.0329 5825.57 -2596.06335 5839.49984 -2596.06335 5839.65291 -2596.0329 5839.78268 -2595.94619 5839.86939 -2595.81642 5839.89984 -2595.66335 5839.86939 -2595.51028 5839.78268 -2595.38051 5839.55303 -2595.15086 5839.33311 -2594.83679 5839.17108 -2594.4893 5839.07184 -2594.11895 5839.03843 -2593.737 5839.07184 -2593.35505 5839.17108 -2592.9847 5839.19597 -2592.93132 5839.23345 -2592.76227 5839.23345 -2589.94196 5839.203 -2589.78888 5839.11629 -2589.65911 5839.06456 -2589.60738 5838.94334 -2589.41446 5838.86809 -2589.19941 5838.84005 -2588.95054 5838.84005 -2581.12146 5838.86809 -2580.87259 5838.94334 -2580.65754 5839.06456 -2580.46462 5839.22567 -2580.30351 5839.41859 -2580.18229 5839.63364 -2580.10704 5839.88251 -2580.079 5842.59349 -2580.079 5842.84236 -2580.10704 5843.05741 -2580.18229 5843.25033 -2580.30351 5843.41144 -2580.46462 5843.53266 -2580.65754 5843.60791 -2580.87259 5843.63595 -2581.12146 5843.63595 -2588.95054 5843.60791 -2589.19941 5843.53266 -2589.41446 5843.41144 -2589.60738 5843.35911 -2589.65971 5843.2724 -2589.78948 5843.24195 -2589.94256 5843.24195 -2592.76098 5843.27943 -2592.93003 5843.30492 -2592.9847 5843.40416 -2593.35505 5843.43757 -2593.737 5843.40416 -2594.11895 5843.30492 -2594.4893 5843.14289 -2594.83679 5842.92297 -2595.15086 5842.69332 -2595.38051 5842.60661 -2595.51028 5842.57616 -2595.66335 5842.60661 -2595.81642 5842.69332 -2595.94619 5842.82309 -2596.0329 5842.97616 -2596.06335 5847.17658 -2596.06335 5847.32966 -2596.0329 5847.45943 -2595.94619 5848.73464 -2594.67094 5848.81431 -2594.55715 5848.85027 -2594.42297 5848.87484 -2594.14205 5848.97408 -2593.7717 5849.13611 -2593.42421 5849.35603 -2593.11014 5849.47484 -2592.97822 5849.56398 -2592.83904 5849.61103 -2592.7357 5849.62715 -2592.6233 5849.62715 -2590.24183 5849.6047 -2590.10972 5849.53988 -2589.99243 5849.43996 -2589.90314 5849.22567 -2589.76849 5849.06456 -2589.60738 5848.94334 -2589.41446 5848.86809 -2589.19941 5848.84005 -2588.95054 5848.84005 -2581.12146 5848.86809 -2580.87259 5848.94334 -2580.65754 5849.06456 -2580.46462 5849.22567 -2580.30351 5849.41859 -2580.18229 5849.63364 -2580.10704 5849.88251 -2580.079 5852.59349 -2580.079 5852.84236 -2580.10704 5853.05741 -2580.18229 5853.25033 -2580.30351 5853.41144 -2580.46462 5853.53266 -2580.65754 5853.60791 -2580.87259 5853.63595 -2581.12146 5853.63595 -2588.95054 5853.60791 -2589.19941 5853.53266 -2589.41446 5853.41144 -2589.60738 5853.25033 -2589.76849 5853.03544 -2589.90352 5852.93552 -2589.99281 5852.8707 -2590.11009 5852.84825 -2590.24221 5852.84825 -2593.15866 5852.86676 -2593.27894 5852.94589 -2593.42421 5853.10792 -2593.7717 5853.20716 -2594.14205 5853.24057 -2594.524 5853.20716 -2594.90595 5853.10792 -2595.2763 5852.94589 -2595.62379 5852.72597 -2595.93786 5852.45486 -2596.20897 5852.14079 -2596.42889 5851.7933 -2596.59092 5851.267 -2596.72802 5851.1532 -2596.8077 5849.16214 -2598.79882 5848.99396 -2598.93685 5848.89191 -2599.06329 5848.84857 -2599.21989 5848.8711 -2599.38081 5848.95577 -2599.51949 5849.08862 -2599.61305 5849.24772 -2599.64605 5854.3813 -2599.64605 5854.53438 -2599.6156 5854.66415 -2599.52889 5859.50999 -2594.68305 5859.5967 -2594.55328 5859.62715 -2594.4002 5859.62715 -2590.24183 5859.6047 -2590.10972 5859.53988 -2589.99243 5859.43996 -2589.90314 5859.22567 -2589.76849 5859.06456 -2589.60738 5858.94334 -2589.41446 5858.86809 -2589.19941 5858.84005 -2588.95054 5858.84005 -2582.4801 5858.79797 -2582.13351 5858.77093 -2582.03252 5858.65843 -2581.76092 5858.60622 -2581.67049 5858.39276 -2581.39792 5850.11276 -2573.11793 5849.90019 -2572.8589 5849.75153 -2572.58079 5849.71188 -2572.45006 5849.65748 -2572.33777 5849.57112 -2572.2477 5849.41859 -2572.17371 5849.22567 -2572.05249 5849.06456 -2571.89138 5848.94334 -2571.69846 5848.86809 -2571.48341 5848.84005 -2571.23454 5848.84005 -2563.40546 5848.86809 -2563.15659 5848.94334 -2562.94154 5849.06456 -2562.74862 5849.22567 -2562.58751 5849.41859 -2562.46629 5849.63364 -2562.39104 5849.88251 -2562.363 5852.59349 -2562.363 5852.84236 -2562.39104 5853.05741 -2562.46629 5853.25033 -2562.58751 5853.41144 -2562.74862 5853.53266 -2562.94154 5853.60791 -2563.15659 5853.63595 -2563.40546 5853.63595 -2571.23454 5853.60791 -2571.48341 5853.54204 -2571.67164 5853.51988 -2571.81871 5853.55297 -2571.96371 5853.63675 -2572.08659 5861.512 -2579.96184 5861.64177 -2580.04855 5861.79485 -2580.079 5862.59349 -2580.079 5862.84236 -2580.10704 5863.05741 -2580.18229 5863.25033 -2580.30351 5863.53564 -2580.59381 5863.69513 -2580.65469 5863.86548 -2580.64353 5864.01566 -2580.56235 5864.11832 -2580.42594 5864.15475 -2580.25916 5864.15475 -2577.48573 5864.16276 -2577.30235 5864.18557 -2577.12903 5864.22341 -2576.95836 5864.27598 -2576.79164 5864.34288 -2576.63013 5864.4236 -2576.47507 5864.51753 -2576.32763 5864.62395 -2576.18894 5864.74795 -2576.05361 5868.80703 -2571.99453 5868.89081 -2571.87165 5868.92391 -2571.72664 5868.90174 -2571.57958 5868.86809 -2571.48341 5868.84005 -2571.23454 5868.84005 -2563.40546 5868.86809 -2563.15659 5868.94334 -2562.94154 5869.06456 -2562.74862 5869.22567 -2562.58751 5869.41859 -2562.46629 5869.63364 -2562.39104 5869.88251 -2562.363 5872.59349 -2562.363 5872.84236 -2562.39104 5873.05741 -2562.46629 5873.25033 -2562.58751 5873.41144 -2562.74862 5873.53416 -2562.94393 5873.65374 -2563.06577 5873.81323 -2563.12665 5873.98358 -2563.11548 5874.13376 -2563.0343 5874.23642 -2562.8979 5874.27285 -2562.73112 5874.27285 -2560.70366 5874.25226 -2560.57699 5874.19263 -2560.46336 5874.085 -2560.32014 5873.89103 -2559.95056 5873.75886 -2559.55466 5873.69191 -2559.14269 5873.69191 -2558.72531 5873.75886 -2558.31334 5873.89103 -2557.91744 5874.085 -2557.54786 5874.33574 -2557.21419 5874.63675 -2556.92506 5874.98025 -2556.68796 5875.35733 -2556.50904 5875.75823 -2556.39291 5876.17257 -2556.3426 5876.58961 -2556.35941 5876.99856 -2556.4429 5877.38881 -2556.5909 5877.75028 -2556.79959 5878.07358 -2557.06356 5878.35035 -2557.37598 5878.49537 -2557.60531 5878.61514 -2557.7267 5878.77459 -2557.78717 5878.94474 -2557.77573 5879.09466 -2557.69446 5879.1971 -2557.55813 5879.23345 -2557.39152 5879.23345 -2556.13613 5879.21286 -2556.00946 5879.15323 -2555.89583 5879.046 -2555.75314 5878.85203 -2555.38356 5878.71986 -2554.98766 5878.65291 -2554.57569 5878.65291 -2554.15831 5878.71986 -2553.74634 5878.85203 -2553.35044 5879.046 -2552.98086 5879.29674 -2552.64719 5879.59775 -2552.35806 5879.94125 -2552.12096 5880.31833 -2551.94204 5880.71923 -2551.82591 5881.13357 -2551.7756 5881.55061 -2551.79241 5881.95956 -2551.8759 5882.34981 -2552.0239 5882.71128 -2552.23259 5883.03458 -2552.49656 5883.31135 -2552.80898 5883.53443 -2553.16174 5883.69803 -2553.54572 5883.79791 -2553.95097 5883.8315 -2554.367 5883.79791 -2554.78303 5883.69803 -2555.18828 5883.53443 -2555.57226 5883.30387 -2555.93685 5883.25774 -2556.03935 5883.24195 -2556.15064 5883.24195 -2562.41344 5883.2724 -2562.56652 5883.35911 -2562.69629 5883.41144 -2562.74862 5883.53266 -2562.94154 5883.60791 -2563.15659 5883.63595 -2563.40546 5883.63595 -2571.23454 5883.60791 -2571.48341 5883.53266 -2571.69846 5883.41144 -2571.89138 5883.25033 -2572.05249 5883.05741 -2572.17371 5882.84236 -2572.24896 5882.59349 -2572.277 5879.88251 -2572.277 5879.63364 -2572.24896 5879.41859 -2572.17371 5879.22567 -2572.05249 5879.06456 -2571.89138 5879.02004 -2571.82053 5878.90046 -2571.69869 5878.74097 -2571.63781 5878.57062 -2571.64897 5878.42044 -2571.73015 5878.31778 -2571.86656 5878.28135 -2572.03334 5878.28135 -2579.98908 5878.27445 -2580.17018 5878.25434 -2580.31736 5878.26332 -2580.47135 5878.32989 -2580.61049 5878.33094 -2580.64696 5878.19246 -2580.72166 5878.0935 -2580.84398 5878.0126 -2580.99853 5877.91968 -2581.14489 5877.81225 -2581.28466 5877.68934 -2581.41882 5873.7531 -2585.35513 5873.6664 -2585.4849 5873.63595 -2585.63797 5873.63595 -2588.95054 5873.60791 -2589.19941 5873.53266 -2589.41446 5873.41144 -2589.60738 5873.25033 -2589.76849 5873.05741 -2589.88971 5872.84236 -2589.96496 5872.59349 -2589.993 5869.88251 -2589.993 5869.63364 -2589.96496 5869.41859 -2589.88971 5869.22567 -2589.76849 5869.06456 -2589.60738 5868.85936 -2589.2704 5868.731 -2589.1762 5868.57607 -2589.13952 5868.41911 -2589.16619 5868.28498 -2589.25198 5868.19494 -2589.38329 5868.16325 -2589.53932 5868.16325 -2597.90137 5868.15525 -2598.08473 5868.13243 -2598.25807 5868.09459 -2598.42872 5868.04202 -2598.59547 5867.97513 -2598.75695 5867.8944 -2598.91204 5867.80048 -2599.05946 5867.69405 -2599.19816 5867.57006 -2599.33348 5860.5352 -2606.36844 5860.39986 -2606.49245 5860.26118 -2606.59886 5860.11373 -2606.6928 5859.95869 -2606.77352 5859.79716 -2606.84042 5859.63045 -2606.89298 5859.45977 -2606.93083 5859.28646 -2606.95364 5859.10307 -2606.96165 5842.21252 -2606.96165 5842.04347 -2606.99913 5841.9903 -2607.02392 5841.61995 -2607.12316 5841.238 -2607.15657 5840.85605 -2607.12316 5840.4857 -2607.02392 5840.43253 -2606.99913 5840.26348 -2606.96165 5812.96052 -2606.96165 5812.79147 -2606.99913 5812.7383 -2607.02392 5812.36795 -2607.12316 5811.986 -2607.15657 5811.60405 -2607.12316 5811.2337 -2607.02392 5811.18053 -2606.99913 5811.01148 -2606.96165 5809.33321 -2606.96165 5809.22248 -2606.97728 5809.06971 -2607.05481 5808.85466 -2607.13006 5808.60579 -2607.1581 5806.68221 -2607.1581 5806.43334 -2607.13006 5806.21829 -2607.05481 5806.05681 -2606.95335 5805.91836 -2606.89901 5805.76964 -2606.89901 5805.63119 -2606.95335 5805.46971 -2607.05481 5805.25466 -2607.13006 5805.00579 -2607.1581 5804.78612 -2607.1581 5804.78612 -2605.79755 5805.23975 -2605.79755 5805.39282 -2605.7671 5805.52259 -2605.68039 5805.6093 -2605.55062 5805.63975 -2605.39755 5805.63975 -2604.51645 5805.6093 -2604.36338 5805.52259 -2604.23361 5805.39282 -2604.1469 5805.23975 -2604.11645 5804.78612 -2604.11645 5804.78612 -2602.7559 5805.00579 -2602.7559 5805.25466 -2602.78394 5805.46971 -2602.85919 5805.63119 -2602.96065 5805.76964 -2603.01499 5805.91836 -2603.01499 5806.05681 -2602.96065 5806.21829 -2602.85919 5806.43334 -2602.78394 5806.68221 -2602.7559 5808.60579 -2602.7559 5808.85466 -2602.78394 5809.06971 -2602.85919 5809.22375 -2602.93752 5809.33448 -2602.95315 5811.00977 -2602.95315 5811.17881 -2602.91567 5811.2337 -2602.89008 5811.60405 -2602.79084 5811.986 -2602.75743 5812.36795 -2602.79084 5812.7383 -2602.89008 5812.79319 -2602.91567 5812.96223 -2602.95315 5818.86533 -2602.95315 5819.02162 -2602.92135 5819.15307 -2602.83101 5819.23876 -2602.6965 5819.26509 -2602.53919 5819.22785 -2602.3841 5819.05308 -2602.0093 5818.95384 -2601.63895 5818.92043 -2601.257 5818.95384 -2600.87505 5819.05308 -2600.5047 5819.21511 -2600.15721 5819.43503 -2599.84314 5819.55474 -2599.70992 5819.64233 -2599.5722 5819.68886 -2599.46932 5819.7048 -2599.35755 5819.7048 -2594.22935 5819.66899 -2594.06393 5819.56798 -2593.92813 5819.41984 -2593.84625 5819.25111 -2593.83297 5818.86461 -2593.97366 5818.61574 -2594.0017 5806.06226 -2594.0017 5805.81339 -2593.97366 5805.59834 -2593.89841 5805.40542 -2593.77719 5805.24431 -2593.61608 5805.12309 -2593.42316 5805.04784 -2593.20811 5805.0198 -2592.95924 5805.0198 -2576.46876 5805.04784 -2576.21989 5805.12309 -2576.00484 5805.24431 -2575.81192 5805.40542 -2575.65081 5805.59834 -2575.52959 5805.98444 -2575.4086 5806.09911 -2575.31976 5806.17455 -2575.19587 5806.20085 -2575.05322 5806.20085 -2569.71236 5806.17613 -2569.57391 5806.10501 -2569.45258 5805.94751 -2569.26816 5805.71872 -2568.89482 5805.55116 -2568.49029 5805.44894 -2568.06452 5805.41459 -2567.628 5805.44894 -2567.19148 5805.55116 -2566.76571 5805.71872 -2566.36118 5805.94751 -2565.98784 5806.23188 -2565.65488 5806.56484 -2565.37051 5806.93818 -2565.14172 5807.34271 -2564.97416 5807.76848 -2564.87194 5808.205 -2564.83759 5808.64152 -2564.87194 5809.06729 -2564.97416 5809.47182 -2565.14172 5809.84516 -2565.37051 5810.15728 -2565.63708 5810.46249 -2565.98784 5810.69128 -2566.36118 5810.85884 -2566.76571 5810.96106 -2567.19148 5810.99541 -2567.628 5810.96106 -2568.06452 5810.85884 -2568.49029 5810.77866 -2568.68386 5810.74849 -2568.82197 5810.76826 -2568.96196 5810.85872 -2569.23687 5810.92043 -2569.58685 5810.92043 -2569.93594 5810.85981 -2570.27974 5810.81253 -2570.48558 5810.84038 -2570.62701 5811.10931 -2571.30522 5811.4952 -2572.08276 5811.94457 -2572.82541 5812.45429 -2573.52802 5813.02082 -2574.18569 5813.64051 -2574.79408 5814.2901 -2575.33393 5814.40985 -2575.4025 5814.54576 -2575.4263 5818.61574 -2575.4263 5818.86461 -2575.45434 5819.25111 -2575.59503 5819.41984 -2575.58175 5819.56798 -2575.49987 5819.66899 -2575.36407 5819.7048 -2575.19865 5819.7048 -2574.22066 5819.67435 -2574.06759 5819.58764 -2573.93782 5810.78292 -2565.1331 5807.07368 -2561.42386 5806.94391 -2561.33715 5806.79084 -2561.3067 5755.72079 -2561.3067 5755.56449 -2561.3385 5755.43305 -2561.42884 5755.34735 -2561.56335 5755.32103 -2561.72066 5755.35826 -2561.87575 5755.51492 -2562.2117 5755.61416 -2562.58205 5755.64757 -2562.964 5755.61416 -2563.34595 5755.51492 -2563.7163 5755.35289 -2564.06379 5755.13297 -2564.37786 5755.0057 -2564.51949 5754.92241 -2564.65247 5754.87695 -2564.75434 5754.8614 -2564.8648 5754.8613 -2582.44883 5754.89175 -2582.60191 5754.97846 -2582.73168 5762.24741 -2590.00053 5762.44638 -2590.24624 5762.58034 -2590.50916 5762.65809 -2590.79929 5762.6763 -2591.03072 5762.6763 -2618.37121 5762.70683 -2618.52448 5762.79375 -2618.65435 5762.9238 -2618.741 5763.07713 -2618.77121 5763.23033 -2618.74037 5763.36002 -2618.65317 5763.55505 -2618.45693 5763.74744 -2618.33604 5763.96249 -2618.26079 5764.21136 -2618.23275 5764.52945 -2618.23275 5764.52945 -2619.49487 5763.0763 -2619.49487 5762.92323 -2619.52532 5762.79346 -2619.61203 5762.70675 -2619.7418 5762.6763 -2619.89487 5762.6763 -2620.57913 5762.70675 -2620.7322 5762.79346 -2620.86197 5762.92323 -2620.94868 5763.0763 -2620.97913 5764.52945 -2620.97913 5764.52945 -2621.43275 5764.5599 -2621.58582 5764.64661 -2621.71559 5764.77638 -2621.8023 5764.92945 -2621.83275 5765.81055 -2621.83275 5765.96362 -2621.8023 5766.09339 -2621.71559 5766.1801 -2621.58582 5766.21055 -2621.43275 5766.21055 -2620.97913 5767.5711 -2620.97913 5767.5711 -2621.19879 5767.54308 -2621.44747 5767.45233 -2621.70604 5767.43015 -2621.85615 5767.46548 -2622.00372 5767.55323 -2622.12751 5767.68078 -2622.20972 5767.82976 -2622.2385 5768.70788 -2622.2385 5768.8733 -2622.20269 5769.00911 -2622.10168 5769.09098 -2621.95354 5769.10426 -2621.78481 5769.02019 -2621.58371 5768.94494 -2621.36866 5768.9169 -2621.11979 5768.9169 -2620.90013 5770.27745 -2620.90013 5770.27745 -2621.35375 5770.3079 -2621.50682 5770.39461 -2621.63659 5770.52438 -2621.7233 5770.67745 -2621.75375 5771.55855 -2621.75375 5771.71162 -2621.7233 5771.84139 -2621.63659 5771.9281 -2621.50682 5771.95855 -2621.35375 5771.95855 -2620.90013 5773.3191 -2620.90013 5773.3191 -2621.11979 5773.29106 -2621.36866 5773.21581 -2621.58371 5773.11485 -2621.74439 5773.06051 -2621.88284 5773.06051 -2622.03157 5773.11485 -2622.17002 5773.21681 -2622.33229 5773.29206 -2622.54734 5773.3201 -2622.79621 5773.3201 -2624.71979 5773.29206 -2624.96866 5773.21681 -2625.18371 5773.09559 -2625.37663 5772.93448 -2625.53774 5772.81229 -2625.61452 5772.71237 -2625.70381 5772.64755 -2625.8211 5772.6251 -2625.95321 5772.6251 -2627.45859 5772.65555 -2627.61166 5772.74226 -2627.74143 5772.78997 -2627.78914 5773.00989 -2628.10321 5773.17192 -2628.4507 5773.27116 -2628.82105 5773.30457 -2629.203 5773.27116 -2629.58495 5773.17192 -2629.9553 5773.00989 -2630.30279 5772.78997 -2630.61686 5772.74226 -2630.66457 5772.65555 -2630.79434 5772.6251 -2630.94741 5772.6251 -2634.0044 5772.65555 -2634.15747 5772.74226 -2634.28724 5772.87203 -2634.37395 5773.0251 -2634.4044 5773.58299 -2634.4044 5773.83186 -2634.43244 5773.92589 -2634.46534 5774.058 -2634.48779 5774.19011 -2634.46534 5774.28414 -2634.43244 5774.52628 -2634.40516 5774.52628 -2634.92674 5774.54872 -2635.05885 5774.59741 -2635.19799 5774.62545 -2635.44686 5774.62545 -2641.70114 5774.59741 -2641.95001 5774.54872 -2642.08915 5774.52628 -2642.22126 5774.52628 -2642.74284 5774.28414 -2642.71556 5774.19011 -2642.68266 5774.058 -2642.66021 5773.92589 -2642.68266 5773.83186 -2642.71556 5773.58299 -2642.7436 5772.56501 -2642.7436 5772.31614 -2642.71556 5772.22161 -2642.68248 5772.0895 -2642.66003 5771.95739 -2642.68248 5771.86286 -2642.71556 5771.61399 -2642.7436 5770.59601 -2642.7436 5770.34714 -2642.71556 5770.25311 -2642.68266 5770.121 -2642.66021 5769.98889 -2642.68266 5769.89486 -2642.71556 5769.64599 -2642.7436 5768.62801 -2642.7436 5768.37914 -2642.71556 5768.28461 -2642.68248 5768.1525 -2642.66003 5768.02039 -2642.68248 5767.92586 -2642.71556 5767.67699 -2642.7436 5766.65901 -2642.7436 5766.41014 -2642.71556 5766.31611 -2642.68266 5766.184 -2642.66021 5766.05189 -2642.68266 5765.95786 -2642.71556 5765.71572 -2642.74284 5765.71572 -2642.22126 5765.69328 -2642.08915 5765.64459 -2641.95001 5765.61655 -2641.70114 5765.61655 -2635.44686 5765.64459 -2635.19799 5765.69328 -2635.05885 5765.71572 -2634.92674 5765.71572 -2634.40516 5765.95786 -2634.43244 5766.05189 -2634.46534 5766.184 -2634.48779 5766.31611 -2634.46534 5766.41014 -2634.43244 5766.65901 -2634.4044 5767.67699 -2634.4044 5767.92586 -2634.43244 5768.02039 -2634.46552 5768.1525 -2634.48797 5768.28461 -2634.46552 5768.37914 -2634.43244 5768.62801 -2634.4044 5769.1851 -2634.4044 5769.33817 -2634.37395 5769.46794 -2634.28724 5769.55465 -2634.15747 5769.5851 -2634.0044 5769.5851 -2630.94761 5769.55465 -2630.79454 5769.46794 -2630.66477 5769.42003 -2630.61686 5769.20011 -2630.30279 5769.03808 -2629.9553 5768.93884 -2629.58495 5768.90543 -2629.203 5768.93884 -2628.82105 5769.03808 -2628.4507 5769.20011 -2628.10321 5769.42003 -2627.78914 5769.46794 -2627.74123 5769.55465 -2627.61146 5769.5851 -2627.45839 5769.5851 -2625.93574 5769.56265 -2625.80363 5769.49783 -2625.68634 5769.39791 -2625.59705 5769.30352 -2625.53774 5769.16144 -2625.39566 5769.03167 -2625.30895 5768.87859 -2625.2785 5767.67896 -2625.2785 5767.55087 -2625.29956 5767.43628 -2625.36053 5767.18548 -2625.61674 5766.99256 -2625.73796 5766.77751 -2625.81321 5766.52864 -2625.84125 5765.68174 -2625.84125 5765.52867 -2625.8717 5765.3989 -2625.95841 5764.86826 -2626.48905 5764.78155 -2626.61882 5764.7511 -2626.77189 5764.7511 -2635.14616 5764.78245 -2635.44686 5764.78245 -2641.70114 5764.75441 -2641.95001 5764.70672 -2642.08629 5764.68428 -2642.2184 5764.68428 -2642.74284 5764.44214 -2642.71556 5764.34761 -2642.68248 5764.2155 -2642.66003 5764.08339 -2642.68248 5763.98886 -2642.71556 5763.73999 -2642.7436 5762.72201 -2642.7436 5762.47314 -2642.71556 5762.37911 -2642.68266 5762.247 -2642.66021 5762.11489 -2642.68266 5762.02086 -2642.71556 5761.77199 -2642.7436 5760.75401 -2642.7436 5760.50514 -2642.71556 5760.41061 -2642.68248 5760.2785 -2642.66003 5760.14639 -2642.68248 5760.05186 -2642.71556 5759.80299 -2642.7436 5758.78501 -2642.7436 5758.53614 -2642.71556 5758.44211 -2642.68266 5758.31 -2642.66021 5758.17789 -2642.68266 5758.08386 -2642.71556 5757.83499 -2642.7436 5756.81701 -2642.7436 5756.56814 -2642.71556 5756.47361 -2642.68248 5756.3415 -2642.66003 5756.20939 -2642.68248 5756.11486 -2642.71556 5755.86599 -2642.7436 5754.84801 -2642.7436 5754.59914 -2642.71556 5754.50511 -2642.68266 5754.373 -2642.66021 5754.24089 -2642.68266 5754.14686 -2642.71556 5753.89799 -2642.7436 5752.88001 -2642.7436 5752.63114 -2642.71556 5752.53661 -2642.68248 5752.4045 -2642.66003 5752.27239 -2642.68248 5752.17786 -2642.71556 5751.92899 -2642.7436 5750.91101 -2642.7436 5750.66214 -2642.71556 5750.56811 -2642.68266 5750.436 -2642.66021 5750.30389 -2642.68266 5750.20986 -2642.71556 5749.96099 -2642.7436 5748.94301 -2642.7436 5748.69414 -2642.71556 5748.59961 -2642.68248 5748.4675 -2642.66003 5748.33539 -2642.68248 5748.24086 -2642.71556 5747.99199 -2642.7436 5746.97401 -2642.7436 5746.72514 -2642.71556 5746.51009 -2642.64031 5746.31717 -2642.51909 5746.15606 -2642.35798 5746.03484 -2642.16506 5745.95959 -2641.95001 5745.93155 -2641.70114 5745.93155 -2635.44686 5745.95959 -2635.19799 5746.03484 -2634.98294 5746.15606 -2634.79002 5746.31717 -2634.62891 5746.51009 -2634.50769 5746.72514 -2634.43244 5746.97401 -2634.4044 5747.99199 -2634.4044 5748.24086 -2634.43244 5748.33539 -2634.46552 5748.4675 -2634.48797 5748.59961 -2634.46552 5748.69414 -2634.43244 5748.94301 -2634.4044 5749.96099 -2634.4044 5750.20986 -2634.43244 5750.30389 -2634.46534 5750.436 -2634.48779 5750.56811 -2634.46534 5750.66214 -2634.43244 5750.91101 -2634.4044 5751.92899 -2634.4044 5752.17786 -2634.43244 5752.27239 -2634.46552 5752.4045 -2634.48797 5752.53661 -2634.46552 5752.63114 -2634.43244 5752.88001 -2634.4044 5753.89799 -2634.4044 5754.14686 -2634.43244 5754.24089 -2634.46534 5754.373 -2634.48779 5754.50511 -2634.46534 5754.59914 -2634.43244 5754.84801 -2634.4044 5755.5118 -2634.4044 5755.66487 -2634.37395 5755.79464 -2634.28724 5755.88135 -2634.15747 5755.9118 -2634.0044 5755.9118 -2627.2959 5755.87167 -2626.86881 5755.85637 -2626.79191 5755.74323 -2626.41893 5755.71323 -2626.34649 5755.5295 -2626.00276 5755.48631 -2625.93801 5755.14641 -2625.52464 5755.02131 -2625.39466 5754.75819 -2625.02058 5754.55525 -2624.61071 5754.41726 -2624.17467 5754.34744 -2623.72268 5754.34744 -2623.26532 5754.41726 -2622.81333 5754.55525 -2622.37729 5754.75819 -2621.96742 5755.02131 -2621.59334 5755.33846 -2621.2638 5755.70219 -2620.98654 5756.10398 -2620.76806 5756.53441 -2620.61346 5756.9834 -2620.52639 5757.44042 -2620.50887 5757.89476 -2620.56132 5758.33577 -2620.68251 5758.7531 -2620.8696 5759.13699 -2621.1182 5759.31369 -2621.23684 5759.46422 -2621.26009 5759.61253 -2621.22538 5759.73711 -2621.13775 5759.8199 -2621.00991 5759.8489 -2620.86038 5759.8489 -2591.76627 5759.81845 -2591.61319 5759.73174 -2591.48342 5752.46279 -2584.21457 5752.26382 -2583.96886 5752.12986 -2583.70594 5752.05211 -2583.41581 5752.0339 -2583.18438 5752.0339 -2564.86486 5752.00345 -2564.71178 5751.90353 -2564.53323 5751.76818 -2564.38522 5751.54311 -2564.06379 5751.38108 -2563.7163 5751.28184 -2563.34595 5751.24843 -2562.964 5751.28184 -2562.58205 5751.38108 -2562.2117 5751.53774 -2561.87575 5751.57497 -2561.72066 5751.54865 -2561.56335 5751.46295 -2561.42884 5751.33151 -2561.3385 5751.17521 -2561.3067 5728.77474 -2561.3067 5728.62397 -2561.3362 5728.49544 -2561.42035 5728.40811 -2561.54674 5728.37486 -2561.69673 5728.40059 -2561.84818 5728.48152 -2561.97877 5728.60569 -2562.06922 5728.84779 -2562.18211 5729.16186 -2562.40203 5729.43297 -2562.67314 5729.65289 -2562.98721 5729.81492 -2563.3347 5729.91416 -2563.70505 5729.94757 -2564.087 5729.91416 -2564.46895 5729.81492 -2564.8393 5729.65289 -2565.18679 5729.43297 -2565.50086 5729.3093 -2565.63855 5729.22369 -2565.77441 5729.1778 -2565.87668 5729.1621 -2565.98766 5729.1621 -2570.26454 5729.19255 -2570.41761 5729.27926 -2570.54738 5729.67811 -2570.94624 5729.87708 -2571.19194 5730.01105 -2571.45486 5730.08879 -2571.745 5730.107 -2571.97642 5730.107 -2595.56956 5730.13357 -2595.71291 5730.20974 -2595.83721 5730.3254 -2595.92597 5730.46519 -2595.96737 5730.61053 -2595.95593 5730.83105 -2595.89684 5730.95587 -2595.88592 5731.10571 -2595.84225 5731.22743 -2595.74456 5731.3025 -2595.60773 5731.31949 -2595.45258 5731.29643 -2595.189 5731.32984 -2594.80705 5731.42908 -2594.4367 5731.59111 -2594.08921 5731.81103 -2593.77514 5732.08214 -2593.50403 5732.39621 -2593.28411 5732.7437 -2593.12208 5733.11405 -2593.02284 5733.496 -2592.98943 5733.87795 -2593.02284 5734.2483 -2593.12208 5734.59579 -2593.28411 5734.90986 -2593.50403 5735.18097 -2593.77514 5735.40089 -2594.08921 5735.56292 -2594.4367 5735.66216 -2594.80705 5735.69557 -2595.189 5735.66216 -2595.57095 5735.56292 -2595.9413 5735.40089 -2596.28879 5735.18097 -2596.60286 5735.02726 -2596.75657 5734.94055 -2596.88634 5734.9101 -2597.03941 5734.9101 -2645.09412 5734.94591 -2645.25955 5735.04692 -2645.39535 5735.19506 -2645.47722 5735.36379 -2645.4905 5735.52291 -2645.43281 5735.58494 -2645.39384 5735.79999 -2645.31859 5736.04886 -2645.29055 5742.30314 -2645.29055 5742.55201 -2645.31859 5742.76706 -2645.39384 5742.95998 -2645.51506 5743.12109 -2645.67617 5743.24231 -2645.86909 5743.31756 -2646.08414 5743.3456 -2646.33301 5743.3456 -2647.35099 5743.31756 -2647.59986 5743.28466 -2647.69389 5743.26221 -2647.826 5743.28466 -2647.95811 5743.31756 -2648.05214 5743.3456 -2648.30101 5743.3456 -2649.31899 5743.31756 -2649.56786 5743.28448 -2649.66239 5743.26203 -2649.7945 5743.28448 -2649.92661 5743.31756 -2650.02114 5743.3456 -2650.27001 5743.3456 -2651.28799 5743.31756 -2651.53686 5743.28466 -2651.63089 5743.26221 -2651.763 5743.28466 -2651.89511 5743.31756 -2651.98914 5743.3456 -2652.23801 5743.3456 -2653.25599 5743.31756 -2653.50486 5743.28448 -2653.59939 5743.26203 -2653.7315 5743.28448 -2653.86361 5743.31756 -2653.95814 5743.34484 -2654.20028 5742.8204 -2654.20028 5742.68829 -2654.22272 5742.55201 -2654.27041 5742.30314 -2654.29845 5736.04886 -2654.29845 5735.79999 -2654.27041 5735.66371 -2654.22272 5735.5316 -2654.20028 5735.3101 -2654.20028 5735.15703 -2654.23072 5735.02726 -2654.31743 5734.94055 -2654.4472 5734.9101 -2654.60028 5734.9101 -2654.83172 5734.94055 -2654.9848 5735.02726 -2655.11457 5735.15703 -2655.20128 5735.3101 -2655.23172 5735.52874 -2655.23172 5735.66085 -2655.20928 5735.79999 -2655.16059 5736.04886 -2655.13255 5742.30314 -2655.13255 5742.60739 -2655.1643 5760.65471 -2655.1643 5760.80778 -2655.13385 5760.93755 -2655.04714 5762.3298 -2653.65489 5762.57511 -2653.45358 5762.83756 -2653.31329 5763.12234 -2653.2269 5763.43815 -2653.1958 5799.56805 -2653.1958 5799.86786 -2653.16455 5806.00086 -2653.16455 5806.15393 -2653.1341 5806.3178 -2653.01329 5806.40451 -2652.88352 5806.43496 -2652.73045 5806.40451 -2652.57738 5806.3178 -2652.44761 5806.18803 -2652.3609 5806.03496 -2652.33045 5799.86786 -2652.33045 5799.61899 -2652.30241 5799.47985 -2652.25372 5799.34774 -2652.23127 5798.82616 -2652.23127 5798.85344 -2651.98914 5798.88634 -2651.89511 5798.90879 -2651.763 5798.88634 -2651.63089 5798.85344 -2651.53686 5798.8254 -2651.28799 5798.8254 -2650.27001 5798.85344 -2650.02114 5798.88652 -2649.92661 5798.90897 -2649.7945 5798.88652 -2649.66239 5798.85344 -2649.56786 5798.8254 -2649.31899 5798.8254 -2648.30101 5798.85344 -2648.05214 5798.88634 -2647.95811 5798.90879 -2647.826 5798.88634 -2647.69389 5798.85344 -2647.59986 5798.8254 -2647.35099 5798.8254 -2646.33301 5798.85344 -2646.08414 5798.92869 -2645.86909 5799.04991 -2645.67617 5799.21102 -2645.51506 5799.40394 -2645.39384 5799.61899 -2645.31859 5799.86786 -2645.29055 5801.0748 -2645.29055 5801.22787 -2645.2601 5801.35764 -2645.17339 5801.44435 -2645.04362 5801.4748 -2644.89055 5801.4748 -2630.85564 5801.44232 -2630.69775 5801.35015 -2630.5655 5801.21325 -2630.48037 5801.05388 -2630.45619 5800.8979 -2630.49689 5800.77065 -2630.59585 5800.62263 -2630.76914 5796.38088 -2635.01089 5796.31008 -2635.10682 5796.2707 -2635.21937 5796.27845 -2635.44686 5796.27845 -2641.70114 5796.25041 -2641.95001 5796.17516 -2642.16506 5796.05394 -2642.35798 5795.89283 -2642.51909 5795.69991 -2642.64031 5795.48486 -2642.71556 5795.23599 -2642.7436 5794.21801 -2642.7436 5793.96914 -2642.71556 5793.87511 -2642.68266 5793.743 -2642.66021 5793.61089 -2642.68266 5793.51686 -2642.71556 5793.26799 -2642.7436 5792.25001 -2642.7436 5792.00114 -2642.71556 5791.90661 -2642.68248 5791.7745 -2642.66003 5791.64239 -2642.68248 5791.54786 -2642.71556 5791.29899 -2642.7436 5790.28101 -2642.7436 5790.03214 -2642.71556 5789.93811 -2642.68266 5789.806 -2642.66021 5789.67389 -2642.68266 5789.57986 -2642.71556 5789.33099 -2642.7436 5788.31301 -2642.7436 5788.06414 -2642.71556 5787.96961 -2642.68248 5787.8375 -2642.66003 5787.70539 -2642.68248 5787.61086 -2642.71556 5787.36199 -2642.7436 5786.34401 -2642.7436 5786.09514 -2642.71556 5786.00111 -2642.68266 5785.869 -2642.66021 5785.73689 -2642.68266 5785.64286 -2642.71556 5785.39399 -2642.7436 5784.37601 -2642.7436 5784.12714 -2642.71556 5784.03261 -2642.68248 5783.9005 -2642.66003 5783.76839 -2642.68248 5783.67386 -2642.71556 5783.42499 -2642.7436 5782.40701 -2642.7436 5782.15814 -2642.71556 5782.06411 -2642.68266 5781.932 -2642.66021 5781.79989 -2642.68266 5781.70586 -2642.71556 5781.45699 -2642.7436 5780.43901 -2642.7436 5780.19014 -2642.71556 5780.09561 -2642.68248 5779.9635 -2642.66003 5779.83139 -2642.68248 5779.73686 -2642.71556 5779.48799 -2642.7436 5778.47001 -2642.7436 5778.22114 -2642.71556 5778.12711 -2642.68266 5777.995 -2642.66021 5777.86289 -2642.68266 5777.76886 -2642.71556 5777.51999 -2642.7436 5776.50201 -2642.7436 5776.25314 -2642.71556 5776.15861 -2642.68248 5776.0265 -2642.66003 5775.89439 -2642.68248 5775.79986 -2642.71556 5775.55772 -2642.74284 5775.55772 -2642.2184 5775.53528 -2642.08629 5775.48759 -2641.95001 5775.45955 -2641.70114 5775.45955 -2635.44686 5775.48759 -2635.19799 5775.53528 -2635.06171 5775.55772 -2634.9296 5775.55772 -2634.40516 5775.79986 -2634.43244 5775.89439 -2634.46552 5776.0265 -2634.48797 5776.15861 -2634.46552 5776.25314 -2634.43244 5776.50201 -2634.4044 5777.51999 -2634.4044 5777.76886 -2634.43244 5777.86289 -2634.46534 5777.995 -2634.48779 5778.12711 -2634.46534 5778.22114 -2634.43244 5778.47001 -2634.4044 5779.48799 -2634.4044 5779.73686 -2634.43244 5779.83139 -2634.46552 5779.9635 -2634.48797 5780.09561 -2634.46552 5780.19014 -2634.43244 5780.43901 -2634.4044 5780.9961 -2634.4044 5781.14917 -2634.37395 5781.27894 -2634.28724 5781.36565 -2634.15747 5781.3961 -2634.0044 5781.3961 -2622.44537 5781.36294 -2622.08909 5781.34765 -2622.01219 5781.25516 -2621.7073 5781.22515 -2621.63485 5781.07496 -2621.35387 5781.03139 -2621.28867 5780.81612 -2621.02716 5780.61463 -2620.80538 5780.34819 -2620.42658 5780.14525 -2620.01671 5780.00726 -2619.58067 5779.93744 -2619.12868 5779.93744 -2618.67132 5780.00726 -2618.21933 5780.14525 -2617.78329 5780.34819 -2617.37342 5780.61131 -2616.99934 5780.92846 -2616.6698 5781.29219 -2616.39254 5781.69398 -2616.17406 5782.12441 -2616.01946 5782.5734 -2615.93239 5783.03042 -2615.91487 5783.48476 -2615.96732 5783.92577 -2616.08851 5784.3431 -2616.2756 5784.72699 -2616.5242 5784.90419 -2616.64328 5785.05472 -2616.66653 5785.20303 -2616.63183 5785.32761 -2616.5442 5785.4104 -2616.41635 5785.4394 -2616.26683 5785.4394 -2611.13636 5785.40895 -2610.98329 5785.32224 -2610.85352 5783.99819 -2609.52946 5783.79922 -2609.28376 5783.66525 -2609.02084 5783.58751 -2608.7307 5783.5693 -2608.49928 5783.5693 -2594.58926 5783.53885 -2594.43618 5783.4389 -2594.2576 5783.30317 -2594.1092 5783.07811 -2593.78779 5782.91608 -2593.4403 5782.81684 -2593.06995 5782.78343 -2592.688 5782.81684 -2592.30605 5782.91608 -2591.9357 5783.07811 -2591.58821 5783.29803 -2591.27414 5783.56914 -2591.00303 5783.88321 -2590.78311 5784.2307 -2590.62108 5784.60105 -2590.52184 5784.983 -2590.48843 5785.36495 -2590.52184 5785.7353 -2590.62108 5786.08279 -2590.78311 5786.39686 -2591.00303 5786.68024 -2591.29166 5786.80288 -2591.4057 5786.96146 -2591.45953 5787.12818 -2591.44372 5787.27382 -2591.36104 5787.37284 -2591.22599 5787.4079 -2591.06223 5787.4079 -2569.60896 5787.37745 -2569.45588 5787.27761 -2569.27742 5787.14222 -2569.12927 5786.91711 -2568.80779 5786.75508 -2568.4603 5786.65584 -2568.08995 5786.62243 -2567.708 5786.65584 -2567.32605 5786.75508 -2566.9557 5786.91711 -2566.60821 5787.13703 -2566.29414 5787.40814 -2566.02303 5787.72221 -2565.80311 5788.0697 -2565.64108 5788.44005 -2565.54184 5788.822 -2565.50843 5789.20395 -2565.54184 5789.5743 -2565.64108 5789.92179 -2565.80311 5790.23586 -2566.02303 5790.50697 -2566.29414 5790.72689 -2566.60821 5790.88892 -2566.9557 5790.98816 -2567.32605 5791.02157 -2567.708 5790.98816 -2568.08995 5790.88892 -2568.4603 5790.72689 -2568.80779 5790.50697 -2569.12186 5790.37967 -2569.26379 5790.29586 -2569.39824 5790.25074 -2569.4998 5790.2353 -2569.60985 5790.2353 -2619.38448 5790.27392 -2619.55596 5790.38232 -2619.69432 5790.53957 -2619.77286 5790.71531 -2619.7764 5790.8756 -2619.70426 5790.98948 -2619.57037 5791.143 -2619.27786 5791.39374 -2618.94419 5791.69475 -2618.65506 5792.03825 -2618.41796 5792.41533 -2618.23904 5792.81623 -2618.12291 5793.23057 -2618.0726 5793.64761 -2618.08941 5794.05656 -2618.1729 5794.44681 -2618.3209 5794.80828 -2618.52959 5795.13158 -2618.79356 5795.40835 -2619.10598 5795.63143 -2619.45874 5795.79503 -2619.84272 5795.89491 -2620.24797 5795.9285 -2620.664 5795.915 -2620.83119 5795.93429 -2620.99005 5796.0143 -2621.12863 5796.14223 -2621.22476 5796.2976 -2621.26306 5796.67861 -2621.27841 5797.08756 -2621.3619 5797.47781 -2621.5099 5797.83928 -2621.71859 5798.16258 -2621.98256 5798.43935 -2622.29498 5798.66243 -2622.64774 5798.82603 -2623.03172 5798.92591 -2623.43697 5798.9595 -2623.853 5798.92591 -2624.26903 5798.90247 -2624.48755 5798.95348 -2624.63254 5799.0554 -2624.74758 5799.19319 -2624.8157 5799.34648 -2624.82684 5799.52957 -2624.8046 5799.94661 -2624.82141 5800.35556 -2624.9049 5800.74581 -2625.0529 5800.8748 -2625.12737 5801.03299 -2625.17877 5801.19841 -2625.16139 5801.34245 -2625.07822 5801.44022 -2624.94366 5801.4748 -2624.78096 5801.4748 -2623.48665 5801.5059 -2623.17084 5801.59229 -2622.88606 5801.73258 -2622.62361 5801.93389 -2622.3783 5805.11659 -2619.19568 5805.2033 -2619.06591 5805.23375 -2618.91284 5805.23375 -2618.06536 5805.26179 -2617.81649 5805.33704 -2617.60144 5805.45826 -2617.40852 5805.61937 -2617.24741 5805.81229 -2617.12619 5806.02734 -2617.05094 5806.27621 -2617.0229 5808.19979 -2617.0229 5808.44866 -2617.05094 5808.66371 -2617.12619 5808.82519 -2617.22765 5808.96364 -2617.28199 5809.11236 -2617.28199 5809.25081 -2617.22765 5809.41229 -2617.12619 5809.62734 -2617.05094 5809.87621 -2617.0229 5811.79979 -2617.0229 5812.04866 -2617.05094 5812.26371 -2617.12619 5812.45663 -2617.24741 5812.61774 -2617.40852 5812.6856 -2617.51651 5812.77489 -2617.61643 5812.89217 -2617.68125 5813.02429 -2617.7037 5815.74539 -2617.7037 5815.89847 -2617.67325 5816.02824 -2617.58654 5816.13137 -2617.48341 5816.32429 -2617.36219 5816.53934 -2617.28694 5816.78821 -2617.2589 5818.71179 -2617.2589 5818.96066 -2617.28694 5819.17571 -2617.36219 5819.33719 -2617.46365 5819.47564 -2617.51799 5819.62436 -2617.51799 5819.76281 -2617.46365 5819.92429 -2617.36219 5820.13934 -2617.28694 5820.38821 -2617.2589 5820.60788 -2617.2589 5820.60788 -2618.61945 5820.15425 -2618.61945 5820.00118 -2618.6499 5819.87141 -2618.73661 5819.7847 -2618.86638 5819.75425 -2619.01945 5819.75425 -2619.90055 5819.7847 -2620.05362 5819.87141 -2620.18339 5820.00118 -2620.2701 5820.15425 -2620.30055 5820.60788 -2620.30055 5820.60788 -2621.6611 5820.38821 -2621.6611 5820.13934 -2621.63306 5819.92429 -2621.55781 5819.76281 -2621.45635 5819.62436 -2621.40201 5819.47564 -2621.40201 5819.33719 -2621.45635 5819.17571 -2621.55781 5818.96066 -2621.63306 5818.71179 -2621.6611 5816.78821 -2621.6611 5816.53934 -2621.63306 5816.32429 -2621.55781 5816.13137 -2621.43659 5815.97026 -2621.27548 5815.84904 -2621.08256 5815.82421 -2621.01159 5815.73987 -2620.87163 5815.60661 -2620.77708 5815.44665 -2620.7437 5813.0448 -2620.7437 5812.89173 -2620.77415 5812.76196 -2620.86086 5812.67525 -2620.99063 5812.6448 -2621.1437 5812.6448 -2622.4435 5812.6711 -2622.58615 5812.74654 -2622.71004 5812.86121 -2622.79888 5813.00001 -2622.84098 5813.15141 -2622.85804 5813.36646 -2622.93329 5813.55938 -2623.05451 5813.72049 -2623.21562 5813.84171 -2623.40854 5813.91696 -2623.62359 5813.945 -2623.87246 5813.945 -2628.82754 5813.91696 -2629.07641 5813.84171 -2629.29146 5813.72049 -2629.48438 5813.55938 -2629.64549 5813.36646 -2629.76671 5813.15141 -2629.84196 5812.90254 -2629.87 5809.34746 -2629.87 5809.09859 -2629.84196 5808.88354 -2629.76671 5808.69062 -2629.64549 5808.52951 -2629.48438 5808.40829 -2629.29146 5808.33304 -2629.07641 5808.305 -2628.82754 5808.305 -2623.87246 5808.33304 -2623.62359 5808.40829 -2623.40854 5808.52951 -2623.21562 5808.69062 -2623.05451 5808.88354 -2622.93329 5809.09859 -2622.85804 5809.24959 -2622.84103 5809.38839 -2622.79892 5809.50306 -2622.71008 5809.5785 -2622.58619 5809.6048 -2622.44354 5809.6048 -2621.66384 5809.58235 -2621.53173 5809.51753 -2621.41445 5809.41761 -2621.32515 5809.25081 -2621.22035 5809.11236 -2621.16601 5808.96364 -2621.16601 5808.82519 -2621.22035 5808.66371 -2621.32181 5808.44866 -2621.39706 5808.19979 -2621.4251 5807.35206 -2621.4251 5807.19899 -2621.45555 5807.06922 -2621.54225 5804.63196 -2623.97946 5804.54525 -2624.10923 5804.5148 -2624.2623 5804.5148 -2644.89055 5804.54525 -2645.04362 5804.63196 -2645.17339 5804.76173 -2645.2601 5804.9148 -2645.29055 5806.12214 -2645.29055 5806.37101 -2645.31859 5806.58606 -2645.39384 5806.77898 -2645.51506 5806.94009 -2645.67617 5807.06131 -2645.86909 5807.13656 -2646.08414 5807.1646 -2646.33301 5807.1646 -2647.35099 5807.13656 -2647.59986 5807.10366 -2647.69389 5807.08121 -2647.826 5807.10366 -2647.95811 5807.13656 -2648.05214 5807.1646 -2648.30101 5807.1646 -2649.31899 5807.13656 -2649.56786 5807.10348 -2649.66239 5807.08103 -2649.7945 5807.10348 -2649.92661 5807.13656 -2650.02114 5807.1646 -2650.27001 5807.1646 -2651.20081 5807.19505 -2651.35388 5807.28176 -2651.48365 5807.41153 -2651.57036 5807.5646 -2651.60081 5807.71767 -2651.57036 5807.84744 -2651.48365 5808.4801 -2650.85099 5808.72541 -2650.64968 5808.98786 -2650.50939 5809.27264 -2650.423 5809.58845 -2650.3919 5809.86819 -2650.3919 5810.02127 -2650.36145 5810.15104 -2650.27474 5810.29352 -2650.13226 5810.50811 -2649.99742 5810.60803 -2649.90813 5810.67285 -2649.79084 5810.6953 -2649.65873 5810.6953 -2649.34356 5810.66485 -2649.19048 5810.56434 -2649.01128 5810.42893 -2648.86386 5810.20411 -2648.54279 5810.04208 -2648.1953 5809.94284 -2647.82495 5809.90943 -2647.443 5809.94284 -2647.06105 5810.04208 -2646.6907 5810.20411 -2646.34321 5810.42403 -2646.02914 5810.69514 -2645.75803 5811.00921 -2645.53811 5811.3567 -2645.37608 5811.72705 -2645.27684 5812.109 -2645.24343 5812.49095 -2645.27684 5812.8613 -2645.37608 5813.20879 -2645.53811 5813.52342 -2645.75842 5813.65374 -2645.84136 5813.80578 -2645.86873 5813.95685 -2645.83645 5814.08443 -2645.74933 5814.16947 -2645.62036 5814.1993 -2645.46879 5814.1993 -2640.89367 5814.15798 -2640.30252 5814.04413 -2639.74766 5813.85882 -2639.2124 5813.69494 -2638.88008 5813.60643 -2638.76209 5813.48117 -2638.6842 5813.33619 -2638.657 5813.14746 -2638.657 5812.89859 -2638.62896 5812.68354 -2638.55371 5812.49062 -2638.43249 5812.32951 -2638.27138 5812.20829 -2638.07846 5812.13304 -2637.86341 5812.105 -2637.61454 5812.105 -2632.65946 5812.13304 -2632.41059 5812.20829 -2632.19554 5812.32951 -2632.00262 5812.49062 -2631.84151 5812.68354 -2631.72029 5812.89859 -2631.64504 5813.14746 -2631.617 5816.70254 -2631.617 5816.95141 -2631.64504 5817.16646 -2631.72029 5817.35938 -2631.84151 5817.52049 -2632.00262 5817.64171 -2632.19554 5817.71696 -2632.41059 5817.745 -2632.65946 5817.745 -2637.61454 5817.71696 -2637.86341 5817.64171 -2638.07846 5817.52049 -2638.27138 5817.35938 -2638.43249 5817.21389 -2638.52391 5817.11397 -2638.6132 5817.04915 -2638.73049 5817.0267 -2638.8626 5817.0267 -2648.9199 5817.05715 -2649.07297 5817.14386 -2649.20274 5817.27363 -2649.28945 5817.4267 -2649.3199 5817.98739 -2649.3199 5818.10482 -2649.30228 5819.16426 -2649.30228 5819.26146 -2649.29029 5819.36631 -2649.24783 5819.66807 -2649.15629 5820.00155 -2649.12345 5823.70245 -2649.12345 5824.03593 -2649.15629 5824.35118 -2649.25504 5824.44254 -2649.29029 5824.53974 -2649.30228 5825.2296 -2649.30228 5825.20827 -2649.37259 5825.10973 -2649.55694 5825.06784 -2649.68034 5825.06784 -2649.81066 5825.10973 -2649.93406 5825.20827 -2650.11841 5825.29981 -2650.42017 5825.33071 -2650.734 5825.29981 -2651.04783 5825.20827 -2651.34959 5825.11 -2651.53344 5825.06811 -2651.65684 5825.06811 -2651.78716 5825.11 -2651.91056 5825.20827 -2652.09441 5825.29981 -2652.39617 5825.33071 -2652.71 5825.29981 -2653.02383 5825.20827 -2653.32559 5825.10973 -2653.50994 5825.06784 -2653.63334 5825.06784 -2653.76366 5825.10973 -2653.88706 5825.20827 -2654.07141 5825.29981 -2654.37317 5825.33071 -2654.687 5825.29981 -2655.00083 5825.20827 -2655.30259 5825.10973 -2655.48694 5825.06784 -2655.61034 5825.06784 -2655.74066 5825.10973 -2655.86406 5825.20827 -2656.04841 5825.29981 -2656.35017 5825.33071 -2656.664 5825.29981 -2656.97783 5825.20827 -2657.27959 5825.10973 -2657.46394 5825.06784 -2657.58734 5825.06784 -2657.71766 5825.10973 -2657.84106 5825.20827 -2658.02541 5825.29981 -2658.32717 5825.33071 -2658.641 5825.29981 -2658.95483 5825.20827 -2659.25659 5825.10973 -2659.44094 5825.06784 -2659.56434 5825.06784 -2659.69466 5825.10973 -2659.81806 5825.20827 -2660.00241 5825.29981 -2660.30417 5825.33071 -2660.618 5825.29981 -2660.93183 5825.20827 -2661.23359 5825.10973 -2661.41794 5825.06784 -2661.54134 5825.06784 -2661.67166 5825.10973 -2661.79506 5825.20827 -2661.97941 5825.29981 -2662.28117 5825.33071 -2662.595 5825.29981 -2662.90883 5825.20827 -2663.21059 5825.10973 -2663.39494 5825.06784 -2663.51834 5825.06784 -2663.64866 5825.10973 -2663.77206 5825.20827 -2663.95641 5825.29981 -2664.25817 5825.33071 -2664.572 5825.29981 -2664.88583 5825.20827 -2665.18759 5825.10973 -2665.37194 5825.06784 -2665.49534 5825.06784 -2665.62566 5825.10973 -2665.74906 5825.20827 -2665.93341 5825.29981 -2666.23517 5825.33071 -2666.549 5825.29981 -2666.86283 5825.20827 -2667.16459 5825.10973 -2667.34894 5825.06784 -2667.47234 5825.06784 -2667.60266 5825.10973 -2667.72606 5825.20827 -2667.91041 5825.29981 -2668.21217 5825.33071 -2668.526 5825.29981 -2668.83983 5825.20827 -2669.14159 5825.10973 -2669.32594 5825.06784 -2669.44934 5825.06784 -2669.57966 5825.10973 -2669.70306 5825.20827 -2669.88741 5825.29981 -2670.18917 5825.33071 -2670.503 5825.29981 -2670.81683 5825.20827 -2671.11859 5825.10973 -2671.30294 5825.06784 -2671.42634 5825.06784 -2671.55666 5825.10973 -2671.68006 5825.20827 -2671.86441 5825.29981 -2672.16617 5825.33071 -2672.48 5825.29981 -2672.79383 5825.20827 -2673.09559 5825.10973 -2673.27994 5825.06784 -2673.40334 5825.06784 -2673.53366 5825.10973 -2673.65706 5825.20827 -2673.84141 5825.29981 -2674.14317 5825.33071 -2674.457 5825.29981 -2674.77083 5825.20827 -2675.07259 5825.10973 -2675.25694 5825.06784 -2675.38034 5825.06784 -2675.51066 5825.10973 -2675.63406 5825.20827 -2675.81841 5825.29981 -2676.12017 5825.33071 -2676.434 5825.29981 -2676.74783 5825.20827 -2677.04959 5825.11 -2677.23344 5825.06811 -2677.35684 5825.06811 -2677.48716 5825.11 -2677.61056 5825.20827 -2677.79441 5825.29981 -2678.09617 5825.33071 -2678.41 5825.29981 -2678.72383 5825.20827 -2679.02559 5825.10973 -2679.20994 5825.06784 -2679.33334 5825.06784 -2679.46366 5825.10973 -2679.58706 5825.20827 -2679.77141 5825.29981 -2680.07317 5825.33071 -2680.387 5825.29981 -2680.70083 5825.20827 -2681.00259 5825.10973 -2681.18694 5825.06784 -2681.31034 5825.06784 -2681.44066 5825.10973 -2681.56406 5825.20827 -2681.74841 5825.29981 -2682.05017 5825.33071 -2682.364 5825.29981 -2682.67783 5825.20827 -2682.97959 5825.10973 -2683.16394 5825.06784 -2683.28734 5825.06784 -2683.41766 5825.10973 -2683.54106 5825.20827 -2683.72541 5825.29981 -2684.02717 5825.33071 -2684.341 5825.29981 -2684.65483 5825.20827 -2684.95659 5825.10973 -2685.14094 5825.06784 -2685.26434 5825.06784 -2685.39466 5825.10973 -2685.51806 5825.20827 -2685.70241 5825.29981 -2686.00417 5825.33071 -2686.318 5825.29981 -2686.63183 5825.20827 -2686.93359 5825.10973 -2687.11794 5825.06784 -2687.24134 5825.06784 -2687.37166 5825.10973 -2687.49506 5825.20827 -2687.67941 5825.29981 -2687.98117 5825.33071 -2688.295 5825.29981 -2688.60883 5825.20827 -2688.91059 5825.10973 -2689.09494 5825.06784 -2689.21834 5825.06784 -2689.34866 5825.10973 -2689.47206 5825.20827 -2689.65641 5825.2296 -2689.72672 5824.53974 -2689.72672 5824.44254 -2689.73871 5824.33769 -2689.78117 5823.99822 -2689.88414 5823.8506 -2689.96618 5823.74999 -2690.10184 5823.71434 -2690.27708 5823.74999 -2690.44216 5823.8506 -2690.57782 5823.99822 -2690.65986 5824.35118 -2690.77004 5824.44254 -2690.80529 5824.53974 -2690.81727 5825.2296 -2690.81727 5825.20827 -2690.88759 5825.10973 -2691.07194 5825.06784 -2691.19534 5825.06784 -2691.32566 5825.10973 -2691.44906 5825.20827 -2691.63341 5825.29981 -2691.93517 5825.33071 -2692.249 5825.29981 -2692.56283 5825.20827 -2692.86459 5825.10973 -2693.04894 5825.06784 -2693.17234 5825.06784 -2693.30266 5825.10973 -2693.42606 5825.20827 -2693.61041 5825.29981 -2693.91217 5825.33071 -2694.226 5825.29981 -2694.53983 5825.20827 -2694.84159 5825.10973 -2695.02594 5825.06784 -2695.14934 5825.06784 -2695.27966 5825.10973 -2695.40306 5825.20827 -2695.58741 5825.2296 -2695.65773 5824.53974 -2695.65773 5824.44254 -2695.66971 5824.33769 -2695.71217 5823.99822 -2695.81514 5823.8506 -2695.89718 5823.74999 -2696.03284 5823.71434 -2696.20808 5823.74999 -2696.37316 5823.8506 -2696.50882 5823.99822 -2696.59086 5824.35118 -2696.70104 5824.44254 -2696.73629 5824.53974 -2696.74827 5825.2296 -2696.74827 5825.20827 -2696.81859 5825.10973 -2697.00294 5825.06784 -2697.12634 5825.06784 -2697.25666 5825.10973 -2697.38006 5825.20827 -2697.56441 5825.29981 -2697.86617 5825.33071 -2698.18 5825.29981 -2698.49383 5825.20827 -2698.79559 5825.10973 -2698.97994 5825.06784 -2699.10334 5825.06784 -2699.23366 5825.10973 -2699.35706 5825.20827 -2699.54141 5825.29981 -2699.84317 5825.33071 -2700.157 5825.29981 -2700.47083 5825.20827 -2700.77259 5825.10973 -2700.95694 5825.06784 -2701.08034 5825.06784 -2701.21066 5825.10973 -2701.33406 5825.20827 -2701.51841 5825.29981 -2701.82017 5825.33071 -2702.134 5825.29981 -2702.44783 5825.20827 -2702.74959 5825.11 -2702.93344 5825.06811 -2703.05684 5825.06811 -2703.18716 5825.11 -2703.31056 5825.20827 -2703.49441 5825.29981 -2703.79617 5825.33071 -2704.11 5825.29981 -2704.42383 5825.20827 -2704.72559 5825.10973 -2704.90994 5825.06784 -2705.03334 5825.06784 -2705.16366 5825.10973 -2705.28706 5825.20827 -2705.47141 5825.29981 -2705.77317 5825.33071 -2706.087 5825.29981 -2706.40083 5825.20827 -2706.70259 5825.10973 -2706.88694 5825.06784 -2707.01034 5825.06784 -2707.14066 5825.10973 -2707.26406 5825.20827 -2707.44841 5825.29981 -2707.75017 5825.33071 -2708.064 5825.29981 -2708.37783 5825.20827 -2708.67959 5825.10973 -2708.86394 5825.06784 -2708.98734 5825.06784 -2709.11766 5825.10973 -2709.24106 5825.20827 -2709.42541 5825.29981 -2709.72717 5825.33071 -2710.041 5825.29981 -2710.35483 5825.20827 -2710.65659 5825.10973 -2710.84094 5825.06784 -2710.96434 5825.06784 -2711.09466 5825.10973 -2711.21806 5825.20827 -2711.40241 5825.2296 -2711.47273 5824.53974 -2711.47273 5824.44254 -2711.48471 5824.33769 -2711.52717 5823.99822 -2711.63014 5823.8506 -2711.71218 5823.74999 -2711.84784 5823.71434 -2712.02308 5823.74999 -2712.18816 5823.8506 -2712.32382 5823.99822 -2712.40586 5824.35118 -2712.51604 5824.44254 -2712.55129 5824.53974 -2712.56327 5825.2296 -2712.56327 5825.20827 -2712.63359 5825.10973 -2712.81794 5825.06784 -2712.94134 5825.06784 -2713.07166 5825.10973 -2713.19506 5825.20827 -2713.37941 5825.29981 -2713.68117 5825.33071 -2713.995 5825.29981 -2714.30883 5825.20827 -2714.61059 5825.10973 -2714.79494 5825.06784 -2714.91834 5825.06784 -2715.04866 5825.10973 -2715.17206 5825.20827 -2715.35641 5825.29981 -2715.65817 5825.33071 -2715.972 5825.3053 -2716.23008 5825.31489 -2716.36457 5825.36862 -2716.48824 5825.46039 -2716.58702 5825.61001 -2716.65953 5825.87014 -2716.80972 5826.04665 -2716.96048 5826.83391 -2717.74774 5827.03288 -2717.99344 5827.16685 -2718.25636 5827.24459 -2718.5465 5827.2628 -2718.77792 5827.2628 -2720.75427 5827.30056 -2720.92392 5827.40671 -2721.06154 5827.56122 -2721.14115 5827.7349 -2721.14771 5828.23609 -2721.05587 5828.84559 -2721.019 5832.75841 -2721.019 5833.36791 -2721.05587 5833.95661 -2721.16375 5834.52802 -2721.34181 5835.07379 -2721.58744 5835.58598 -2721.89707 5836.05711 -2722.26618 5836.48032 -2722.68939 5836.84943 -2723.16052 5837.15906 -2723.67271 5837.40469 -2724.21848 5837.58275 -2724.78989 5837.69063 -2725.37859 5837.72677 -2725.976 5837.69063 -2726.57341 5837.58275 -2727.16211 5837.40469 -2727.73352 5837.15906 -2728.27929 5836.84943 -2728.79148 5836.48032 -2729.26261 5836.05711 -2729.68582 5835.58598 -2730.05493 5835.07379 -2730.36456 5834.52802 -2730.61019 5833.95661 -2730.78825 5833.36791 -2730.89613 5832.75841 -2730.933 5828.84559 -2730.933 5828.23609 -2730.89613 5827.64739 -2730.78825 5827.07598 -2730.61019 5826.53021 -2730.36456 5826.01802 -2730.05493 5825.54689 -2729.68582 5825.12368 -2729.26261 5824.75457 -2728.79148 5824.44494 -2728.27929 5824.19931 -2727.73352 5824.02125 -2727.16211 5823.91337 -2726.57341 5823.87723 -2725.976 5823.91337 -2725.37859 5824.02125 -2724.78989 5824.20125 -2724.21417 5824.23637 -2724.05967 5824.20876 -2723.90365 5824.12273 -2723.7706 5823.99179 -2723.68138 5823.83649 -2723.65 5797.86976 -2723.65 5797.71669 -2723.68045 5797.58692 -2723.76716 5796.91246 -2724.44161 5796.66676 -2724.64058 5796.40384 -2724.77455 5796.1137 -2724.85229 5795.88228 -2724.8705 5780.9092 -2724.8705 5780.75613 -2724.90095 5780.57735 -2725.00109 5780.42907 -2725.13692 5780.10779 -2725.36189 5779.74184 -2725.53253 5779.61767 -2725.62298 5779.53675 -2725.75357 5779.51102 -2725.90502 5779.54427 -2726.05501 5779.6316 -2726.1814 5779.76012 -2726.26555 5779.91089 -2726.29505 5795.31841 -2726.29505 5795.90605 -2726.13584 5796.288 -2726.10243 5796.66995 -2726.13584 5797.0403 -2726.23508 5797.38779 -2726.39711 5797.70186 -2726.61703 5797.97297 -2726.88814 5798.19289 -2727.20221 5798.35492 -2727.5497 5798.45416 -2727.92005 5798.48757 -2728.302 5798.45416 -2728.68395 5798.35492 -2729.0543 5798.19289 -2729.40179 5797.97297 -2729.71586 5797.70186 -2729.98697 5797.38779 -2730.20689 5797.0403 -2730.36892 5796.66995 -2730.46816 5796.288 -2730.50157 5795.90605 -2730.46816 5795.5357 -2730.36892 5795.47588 -2730.34103 5795.30683 -2730.30355 5777.75718 -2730.30355 5777.62507 -2730.326 5777.50778 -2730.39082 5777.41849 -2730.49074 5777.28384 -2730.70503 5777.12273 -2730.86614 5776.92981 -2730.98736 5776.71476 -2731.06261 5776.46589 -2731.09065 5772.18011 -2731.09065 5771.93124 -2731.06261 5771.71619 -2730.98736 5771.52327 -2730.86614 5771.36216 -2730.70503 5771.15172 -2730.35818 5771.01846 -2730.26363 5770.8585 -2730.23025 5770.69854 -2730.26363 5770.56528 -2730.35818 5770.35484 -2730.70503 5770.19373 -2730.86614 5770.00081 -2730.98736 5769.78576 -2731.06261 5769.53689 -2731.09065 5768.72667 -2731.09065 5768.72667 -2729.43483 5770.73765 -2729.43483 5770.89072 -2729.40438 5771.02049 -2729.31767 5771.1072 -2729.1879 5771.13765 -2729.03483 5771.13765 -2727.56317 5771.1072 -2727.4101 5771.02049 -2727.28033 5770.89072 -2727.19362 5770.73765 -2727.16317 5768.72667 -2727.16317 5768.72667 -2725.50735 5769.53689 -2725.50735 5769.78576 -2725.53539 5770.00081 -2725.61064 5770.19373 -2725.73186 5770.35484 -2725.89297 5770.56528 -2726.23982 5770.69854 -2726.33437 5770.8585 -2726.36775 5771.01846 -2726.33437 5771.15172 -2726.23982 5771.36216 -2725.89297 5771.52327 -2725.73186 5771.71619 -2725.61064 5771.93124 -2725.53539 5772.18011 -2725.50735 5773.05522 -2725.50735 5773.20829 -2725.4769 5773.33806 -2725.39019 5773.42477 -2725.26042 5773.49029 -2725.08937 5773.58658 -2724.68827 5773.5964 -2724.62628 5773.63 -2724.18367 5773.63 -2723.15484 5773.60755 -2723.02272 5773.54273 -2722.90544 5773.44281 -2722.81615 5773.31581 -2722.73635 5773.17736 -2722.68201 5773.02864 -2722.68201 5772.89019 -2722.73635 5772.72871 -2722.83781 5772.51366 -2722.91306 5772.26479 -2722.9411 5772.04512 -2722.9411 5772.04512 -2721.58055 5772.49875 -2721.58055 5772.65182 -2721.5501 5772.78159 -2721.46339 5772.8683 -2721.33362 5772.89875 -2721.18055 5772.89875 -2720.29945 5772.8683 -2720.14638 5772.78159 -2720.01661 5772.65182 -2719.9299 5772.49875 -2719.89945 5772.04512 -2719.89945 5772.04512 -2718.5389 5772.26479 -2718.5389 5772.51366 -2718.56694 5772.72871 -2718.64219 5772.89019 -2718.74365 5773.02864 -2718.79799 5773.17736 -2718.79799 5773.31581 -2718.74365 5773.44281 -2718.66385 5773.54273 -2718.57456 5773.60755 -2718.45728 5773.63 -2718.32516 5773.63 -2715.93386 5773.59955 -2715.78079 5773.51284 -2715.65102 5773.38307 -2715.56431 5773.23 -2715.53386 5773.07693 -2715.56431 5772.94716 -2715.65102 5770.67803 -2717.92014 5770.59132 -2718.04991 5770.56088 -2718.20298 5770.56088 -2719.89945 5769.0609 -2719.89945 5768.90534 -2719.86516 5768.74872 -2719.89431 5768.61591 -2719.98227 5755.53102 -2733.06716 5755.44431 -2733.19693 5755.41386 -2733.35 5755.44431 -2733.50307 5755.53102 -2733.63284 5755.66079 -2733.71955 5755.81386 -2733.75 5821.48154 -2733.75 5821.79597 -2733.78305 5822.07661 -2733.87423 5822.33674 -2734.02442 5822.51324 -2734.17517 5831.23321 -2742.89504 5831.36298 -2742.98175 5831.51605 -2743.0122 5872.5258 -2743.0122 5872.68575 -2742.97882 5872.81902 -2742.88427 5872.90335 -2742.74431 5872.95154 -2742.60659 5873.07276 -2742.41367 5873.23387 -2742.25256 5873.42679 -2742.13134 5873.64184 -2742.05609 5873.89071 -2742.02805 5874.84825 -2742.02805 5875.00132 -2741.9976 5875.13109 -2741.91089 5875.2178 -2741.78112 5875.24825 -2741.62805 5875.24825 -2741.1071 5877.49462 -2741.1071 5877.49462 -2741.62805 5877.52507 -2741.78112 5877.61178 -2741.91089 5877.74155 -2741.9976 5877.89462 -2742.02805 5879.75129 -2742.02805 5880.00016 -2742.05609 5880.21521 -2742.13134 5880.33456 -2742.20633 5880.49368 -2742.26402 5880.66241 -2742.25074 5880.81055 -2742.16887 5880.91157 -2742.03307 5880.94737 -2741.86764 5880.94737 -2741.1071 5883.19375 -2741.1071 5883.19375 -2742.01574 5883.16571 -2742.26461 5883.09046 -2742.47966 5882.96924 -2742.67258 5882.80813 -2742.83369 5882.61521 -2742.95491 5882.40016 -2743.03016 5882.15129 -2743.0582 5881.19375 -2743.0582 5881.04068 -2743.08865 5880.91091 -2743.17536 5880.8242 -2743.30513 5880.79375 -2743.4582 5880.79375 -2745.78149 5880.76571 -2746.03036 5880.69046 -2746.24541 5880.6086 -2746.37569 5880.55426 -2746.51414 5880.55426 -2746.66286 5880.6086 -2746.80131 5880.69046 -2746.93159 5880.76571 -2747.14664 5880.79375 -2747.39551 5880.79375 -2750.10649 5880.76571 -2750.35536 5880.69046 -2750.57041 5880.6086 -2750.70069 5880.55426 -2750.83914 5880.55426 -2750.98786 5880.6086 -2751.12631 5880.69046 -2751.25659 5880.76571 -2751.47164 5880.79375 -2751.72051 5880.79375 -2754.43149 5880.76571 -2754.68036 5880.69046 -2754.89541 5880.6086 -2755.02569 5880.55426 -2755.16414 5880.55426 -2755.31286 5880.6086 -2755.45131 5880.69046 -2755.58159 5880.76571 -2755.79664 5880.79375 -2756.04551 5880.79375 -2756.46202 5878.54738 -2756.46202 5878.54738 -2755.87395 5878.51693 -2755.72088 5878.43022 -2755.59111 5878.30045 -2755.5044 5878.14738 -2755.47395 5875.49463 -2755.47395 5875.34155 -2755.5044 5875.21178 -2755.59111 5875.12507 -2755.72088 5875.09463 -2755.87395 5875.09463 -2756.46202 5872.84825 -2756.46202 5872.84825 -2756.04551 5872.87629 -2755.79664 5872.95154 -2755.58159 5873.0334 -2755.45131 5873.08774 -2755.31286 5873.08774 -2755.16414 5873.0334 -2755.02569 5872.95154 -2754.89541 5872.90328 -2754.75749 5872.81895 -2754.61753 5872.68568 -2754.52298 5872.52573 -2754.4896 5831.94306 -2754.4896 5831.78999 -2754.52005 5831.66022 -2754.60676 5831.57351 -2754.73653 5831.54306 -2754.8896 5831.57351 -2755.04267 5831.66022 -2755.17244 5836.09542 -2759.60764 5836.22519 -2759.69435 5836.37826 -2759.7248 5851.72542 -2759.7248 5851.85753 -2759.70235 5851.97481 -2759.63753 5852.06411 -2759.53761 5852.19926 -2759.32252 5852.36037 -2759.16141 5852.55329 -2759.04019 5852.76834 -2758.96494 5853.01721 -2758.9369 5854.94079 -2758.9369 5855.18966 -2758.96494 5855.40471 -2759.04019 5855.56619 -2759.14165 5855.70464 -2759.19599 5855.85336 -2759.19599 5855.99181 -2759.14165 5856.15329 -2759.04019 5856.36834 -2758.96494 5856.61721 -2758.9369 5858.54079 -2758.9369 5858.78966 -2758.96494 5859.00471 -2759.04019 5859.19763 -2759.16141 5859.35874 -2759.32252 5859.47996 -2759.51544 5859.55521 -2759.73049 5859.58073 -2759.95699 5859.62284 -2760.09579 5859.71167 -2760.21046 5859.83556 -2760.2859 5859.97821 -2760.3122 5872.5258 -2760.3122 5872.68575 -2760.27882 5872.81902 -2760.18427 5872.90335 -2760.04431 5872.95154 -2759.90659 5873.0334 -2759.77631 5873.08774 -2759.63786 5873.08774 -2759.48914 5873.0334 -2759.35069 5872.95154 -2759.22041 5872.87629 -2759.00536 5872.84825 -2758.75649 5872.84825 -2758.33998 5875.09463 -2758.33998 5875.09463 -2758.92805 5875.12507 -2759.08112 5875.21178 -2759.21089 5875.34155 -2759.2976 5875.49463 -2759.32805 5878.14738 -2759.32805 5878.30045 -2759.2976 5878.43022 -2759.21089 5878.51693 -2759.08112 5878.54738 -2758.92805 5878.54738 -2758.33998 5880.79375 -2758.33998 5880.79375 -2758.75649 5880.76571 -2759.00536 5880.69046 -2759.22041 5880.6086 -2759.35069 5880.55426 -2759.48914 5880.55426 -2759.63786 5880.6086 -2759.77631 5880.69046 -2759.90659 5880.76571 -2760.12164 5880.79375 -2760.37051 5880.79375 -2763.08149 5880.76571 -2763.33036 5880.69046 -2763.54541 5880.6086 -2763.67569 5880.55426 -2763.81414 5880.55426 -2763.96286 5880.6086 -2764.10131 5880.69046 -2764.23159 5880.76571 -2764.44664 5880.79375 -2764.69551 5880.79375 -2767.40649 5880.76571 -2767.65536 5880.69046 -2767.87041 5880.6086 -2768.00069 5880.55426 -2768.13914 5880.55426 -2768.28786 5880.6086 -2768.42631 5880.69046 -2768.55659 5880.76571 -2768.77164 5880.79375 -2769.02051 5880.79375 -2771.73149 5880.76571 -2771.98036 5880.69046 -2772.19541 5880.6086 -2772.32569 5880.55426 -2772.46414 5880.55426 -2772.61286 5880.6086 -2772.75131 5880.69046 -2772.88159 5880.76571 -2773.09664 5880.79375 -2773.34551 5880.79375 -2776.05649 5880.76571 -2776.30536 5880.69046 -2776.52041 5880.6086 -2776.65069 5880.55426 -2776.78914 5880.55426 -2776.93786 5880.6086 -2777.07631 5880.69046 -2777.20659 5880.76571 -2777.42164 5880.79375 -2777.67051 5880.79375 -2780.38149 5880.76571 -2780.63036 5880.69046 -2780.84541 5880.56924 -2781.03833 5880.40813 -2781.19944 5880.21521 -2781.32066 5880.00016 -2781.39591 5879.75129 -2781.42395 5873.89071 -2781.42395 5873.64184 -2781.39591 5873.42679 -2781.32066 5873.23387 -2781.19944 5873.07276 -2781.03833 5872.95154 -2780.84541 5872.88323 -2780.65019 5872.7989 -2780.51023 5872.66563 -2780.41568 5872.50568 -2780.3823 5871.73596 -2780.3823 5871.58288 -2780.41275 5871.40365 -2780.51329 5871.25584 -2780.64908 5870.93479 -2780.87389 5870.5873 -2781.03592 5870.21695 -2781.13516 5869.835 -2781.16857 5869.45305 -2781.13516 5869.0827 -2781.03592 5868.73521 -2780.87389 5868.42114 -2780.65397 5868.15003 -2780.38286 5867.93011 -2780.06879 5867.76808 -2779.7213 5867.66884 -2779.35095 5867.63543 -2778.969 5867.66884 -2778.58705 5867.76808 -2778.2167 5867.93011 -2777.86921 5868.15003 -2777.55514 5868.42114 -2777.28403 5868.58648 -2777.16826 5868.69251 -2777.05846 5868.7497 -2776.91693 5868.7497 -2776.76428 5868.69251 -2776.62275 5868.58648 -2776.51294 5868.40514 -2776.38597 5868.13403 -2776.11486 5867.91411 -2775.80079 5867.75208 -2775.4533 5867.65284 -2775.08295 5867.61943 -2774.701 5867.65284 -2774.31905 5867.75208 -2773.9487 5867.91411 -2773.60121 5868.13403 -2773.28714 5868.40514 -2773.01603 5868.64168 -2772.85041 5868.74772 -2772.7406 5868.8049 -2772.59907 5868.8049 -2772.44642 5868.74772 -2772.30489 5868.64168 -2772.19508 5868.45014 -2772.06097 5868.17903 -2771.78986 5867.95911 -2771.47579 5867.79708 -2771.1283 5867.69784 -2770.75795 5867.66443 -2770.376 5867.69784 -2769.99405 5867.79708 -2769.6237 5867.95911 -2769.27621 5868.17903 -2768.96214 5868.45014 -2768.69103 5868.76421 -2768.47111 5869.1117 -2768.30908 5869.32856 -2768.25097 5869.47443 -2768.17733 5869.57868 -2768.05151 5869.62392 -2767.89449 5869.60259 -2767.73249 5869.51826 -2767.59253 5869.38499 -2767.49798 5869.22504 -2767.4646 5859.84233 -2767.4646 5859.68237 -2767.49798 5859.54911 -2767.59253 5859.46478 -2767.73249 5859.44096 -2767.80056 5859.31974 -2767.99348 5859.15863 -2768.15459 5859.06069 -2768.21613 5858.96077 -2768.30543 5858.89595 -2768.42271 5858.8735 -2768.55482 5858.8735 -2769.27745 5858.89595 -2769.40956 5858.96077 -2769.52684 5859.07863 -2769.62741 5859.23974 -2769.78852 5859.36096 -2769.98144 5859.43621 -2770.19649 5859.46425 -2770.44536 5859.46425 -2772.76264 5859.43621 -2773.01151 5859.36096 -2773.22656 5859.23974 -2773.41948 5858.96077 -2773.68116 5858.89595 -2773.79844 5858.8735 -2773.93055 5858.8735 -2777.27035 5858.90395 -2777.42342 5858.99066 -2777.55319 5859.12043 -2777.6399 5859.2735 -2777.67035 5859.49589 -2777.67035 5859.74476 -2777.69839 5859.95981 -2777.77364 5860.15273 -2777.89486 5860.31384 -2778.05597 5860.43506 -2778.24889 5860.51031 -2778.46394 5860.53835 -2778.71281 5860.53835 -2782.21119 5860.51031 -2782.46006 5860.43506 -2782.67511 5860.31384 -2782.86803 5860.15273 -2783.02914 5859.95981 -2783.15036 5859.74476 -2783.22561 5859.49589 -2783.25365 5855.21011 -2783.25365 5854.96124 -2783.22561 5854.74619 -2783.15036 5854.55327 -2783.02914 5854.39216 -2782.86803 5854.18172 -2782.52118 5854.04846 -2782.42663 5853.8885 -2782.39325 5853.72854 -2782.42663 5853.59528 -2782.52118 5853.38484 -2782.86803 5853.22373 -2783.02914 5853.03081 -2783.15036 5852.81576 -2783.22561 5852.56689 -2783.25365 5851.75667 -2783.25365 5851.75667 -2781.59783 5853.76765 -2781.59783 5853.92072 -2781.56738 5854.05049 -2781.48067 5854.1372 -2781.3509 5854.16765 -2781.19783 5854.16765 -2779.72617 5854.1372 -2779.5731 5854.05049 -2779.44333 5853.92072 -2779.35662 5853.76765 -2779.32617 5851.75667 -2779.32617 5851.75667 -2777.67035 5852.56689 -2777.67035 5852.81576 -2777.69839 5853.03081 -2777.77364 5853.22373 -2777.89486 5853.38484 -2778.05597 5853.59528 -2778.40282 5853.72854 -2778.49737 5853.8885 -2778.53075 5854.04846 -2778.49737 5854.18172 -2778.40282 5854.39216 -2778.05597 5854.55327 -2777.89486 5854.74619 -2777.77364 5854.96124 -2777.69839 5855.21011 -2777.67035 5855.60194 -2777.67035 5855.74462 -2777.64404 5855.86853 -2777.56856 5855.95736 -2777.45386 5855.99944 -2777.31501 5856.0461 -2776.87727 5856.0461 -2773.94777 5856.01029 -2773.78235 5855.90928 -2773.64654 5855.76114 -2773.56467 5855.59241 -2773.55139 5855.43329 -2773.60908 5855.28571 -2773.70181 5855.07066 -2773.77706 5854.82179 -2773.8051 5854.60212 -2773.8051 5854.60212 -2772.44455 5855.05575 -2772.44455 5855.20882 -2772.4141 5855.33859 -2772.32739 5855.4253 -2772.19762 5855.45575 -2772.04455 5855.45575 -2771.16345 5855.4253 -2771.01038 5855.33859 -2770.88061 5855.20882 -2770.7939 5855.05575 -2770.76345 5854.60212 -2770.76345 5854.60212 -2769.4029 5854.82179 -2769.4029 5855.07066 -2769.43094 5855.28571 -2769.50619 5855.43329 -2769.59892 5855.59241 -2769.65661 5855.76114 -2769.64333 5855.90928 -2769.56146 5856.01029 -2769.42565 5856.0461 -2769.26023 5856.0461 -2768.57204 5856.01029 -2768.40661 5855.90928 -2768.27081 5855.76114 -2768.18894 5855.59241 -2768.17566 5855.43329 -2768.23335 5855.36571 -2768.27581 5855.15066 -2768.35106 5854.90179 -2768.3791 5852.97821 -2768.3791 5852.72934 -2768.35106 5852.51429 -2768.27581 5852.32137 -2768.15459 5852.05975 -2767.87572 5851.94247 -2767.8109 5851.81036 -2767.78845 5846.75048 -2767.78845 5846.58672 -2767.82351 5846.45167 -2767.92253 5846.36899 -2768.06817 5846.35318 -2768.23489 5846.40701 -2768.39347 5846.52105 -2768.51611 5846.77086 -2768.69103 5847.04197 -2768.96214 5847.26189 -2769.27621 5847.42392 -2769.6237 5847.52316 -2769.99405 5847.55657 -2770.376 5847.52316 -2770.75795 5847.42392 -2771.1283 5847.26189 -2771.47579 5847.04197 -2771.78986 5846.77086 -2772.06097 5846.49831 -2772.25181 5846.39227 -2772.36162 5846.33509 -2772.50315 5846.33509 -2772.6558 5846.39227 -2772.79733 5846.49831 -2772.90713 5846.56386 -2772.95303 5846.83497 -2773.22414 5847.05489 -2773.53821 5847.21692 -2773.8857 5847.31616 -2774.25605 5847.34957 -2774.638 5847.31616 -2775.01995 5847.21692 -2775.3903 5847.05489 -2775.73779 5846.83497 -2776.05186 5846.56386 -2776.32297 5846.34554 -2776.47584 5846.2395 -2776.58564 5846.18232 -2776.72718 5846.18232 -2776.87982 5846.2395 -2777.02136 5846.34554 -2777.13116 5846.56386 -2777.28403 5846.83497 -2777.55514 5847.02652 -2777.8287 5847.13653 -2777.93487 5847.27835 -2777.99201 5847.43124 -2777.99177 5847.57287 -2777.93419 5847.82053 -2777.77247 5848.03224 -2777.69839 5848.28111 -2777.67035 5849.09133 -2777.67035 5849.09133 -2779.32617 5847.62973 -2779.32617 5847.46068 -2779.36365 5847.32331 -2779.46906 5847.24335 -2779.62265 5847.21692 -2779.7213 5847.05489 -2780.06879 5846.83497 -2780.38286 5846.56386 -2780.65397 5846.24979 -2780.87389 5845.9023 -2781.03592 5845.53195 -2781.13516 5845.15 -2781.16857 5844.76805 -2781.13516 5844.3977 -2781.03592 5844.05021 -2780.87389 5843.73614 -2780.65397 5843.59501 -2780.52714 5843.46151 -2780.44342 5843.35956 -2780.39788 5843.249 -2780.3823 5841.94256 -2780.3823 5841.62813 -2780.34925 5841.34749 -2780.25807 5841.08736 -2780.10788 5840.91085 -2779.95712 5826.16642 -2765.21264 5826.02124 -2765.11992 5825.85054 -2765.09684 5825.68596 -2765.1477 5825.55803 -2765.26305 5825.49047 -2765.4215 5825.49581 -2765.59367 5825.54389 -2765.78354 5825.57658 -2766.178 5825.54389 -2766.57246 5825.44673 -2766.95617 5825.28773 -2767.31865 5825.07124 -2767.65001 5824.80316 -2767.94122 5824.4908 -2768.18434 5824.14269 -2768.37272 5823.76833 -2768.50124 5823.37791 -2768.56639 5822.98209 -2768.56639 5822.59167 -2768.50124 5822.21731 -2768.37272 5821.95424 -2768.23036 5821.86206 -2768.19439 5821.76386 -2768.18215 5790.41365 -2768.18215 5790.26058 -2768.2126 5790.13081 -2768.29931 5790.0441 -2768.42908 5790.01365 -2768.58215 5790.01365 -2793.15653 5790.04817 -2793.61085 5790.05799 -2793.67285 5790.15703 -2794.08537 5790.17642 -2794.14507 5790.33877 -2794.53702 5790.36727 -2794.59295 5790.58894 -2794.95468 5790.62583 -2795.00546 5790.90477 -2795.332 5791.27693 -2795.75642 5791.57628 -2796.20443 5791.81459 -2796.68767 5791.98779 -2797.19789 5792.0929 -2797.72634 5792.12814 -2798.264 5792.0929 -2798.80166 5791.98779 -2799.33011 5791.81459 -2799.84033 5791.57628 -2800.32357 5791.27693 -2800.77157 5790.92167 -2801.17667 5790.51657 -2801.53193 5790.06857 -2801.83128 5789.58533 -2802.06959 5789.07511 -2802.24279 5788.54666 -2802.3479 5788.009 -2802.38314 5787.47134 -2802.3479 5786.94289 -2802.24279 5786.43267 -2802.06959 5785.94943 -2801.83128 5785.50143 -2801.53193 5785.09633 -2801.17667 5784.74107 -2800.77157 5784.44172 -2800.32357 5784.20341 -2799.84033 5784.03021 -2799.33011 5783.9251 -2798.80166 5783.88986 -2798.264 5783.9251 -2797.72634 5784.03021 -2797.19789 5784.20341 -2796.68767 5784.44172 -2796.20443 5784.74107 -2795.75643 5785.11669 -2795.32806 5785.39262 -2795.00586 5785.42986 -2794.95468 5785.65153 -2794.59295 5785.68003 -2794.53702 5785.84238 -2794.14507 5785.86177 -2794.08537 5785.96081 -2793.67285 5785.97063 -2793.61085 5786.00515 -2793.15653 5786.00515 -2768.58215 5785.9747 -2768.42908 5785.88799 -2768.29931 5785.75822 -2768.2126 5785.60515 -2768.18215 5759.78814 -2768.18215 5759.68994 -2768.19439 5759.59776 -2768.23036 5759.33469 -2768.37272 5758.96033 -2768.50124 5758.56991 -2768.56639 5758.17409 -2768.56639 5757.78367 -2768.50124 5757.40931 -2768.37272 5757.0612 -2768.18434 5756.74884 -2767.94122 5756.48076 -2767.65001 5756.26427 -2767.31865 5756.10527 -2766.95617 5756.00811 -2766.57246 5755.97542 -2766.178 5756.00811 -2765.78354 5756.10527 -2765.39983 5756.26427 -2765.03735 5756.3547 -2764.83762 5756.34815 -2764.67394 5756.27654 -2764.52661 5756.15188 -2764.42033 5755.99507 -2764.37294 5755.90605 -2764.36516 5755.5357 -2764.26592 5755.18821 -2764.10389 5754.87414 -2763.88397 5754.60303 -2763.61286 5754.38311 -2763.29879 5754.22108 -2762.9513 5754.12184 -2762.58095 5754.08843 -2762.199 5754.12184 -2761.81705 5754.22108 -2761.4467 5754.38311 -2761.09921 5754.60303 -2760.78514 5754.87414 -2760.51403 5755.18821 -2760.29411 5755.5357 -2760.13208 5755.90605 -2760.03284 5756.288 -2759.99943 5756.66995 -2760.03284 5757.0403 -2760.13208 5757.38779 -2760.29411 5757.70186 -2760.51403 5757.84561 -2760.64294 5757.97848 -2760.72548 5758.07981 -2760.77035 5758.18955 -2760.7857 5780.96055 -2760.7857 5781.11214 -2760.75586 5781.29319 -2760.65516 5781.44183 -2760.51915 5781.76321 -2760.29411 5782.1107 -2760.13208 5782.48105 -2760.03284 5782.863 -2759.99943 5783.24495 -2760.03284 5783.6153 -2760.13208 5783.96279 -2760.29411 5784.27686 -2760.51403 5784.54797 -2760.78514 5784.76789 -2761.09921 5784.92992 -2761.4467 5785.02916 -2761.81705 5785.06257 -2762.199 5785.02916 -2762.58095 5784.92992 -2762.9513 5784.76789 -2763.29879 5784.59603 -2763.54422 5784.52977 -2763.70419 5784.53732 -2763.87718 5784.61727 -2764.03077 5784.75464 -2764.13617 5784.92369 -2764.17365 5821.76423 -2764.17365 5821.86243 -2764.16141 5821.95461 -2764.12544 5822.21731 -2763.98328 5822.59167 -2763.85476 5822.98209 -2763.78961 5823.37791 -2763.78961 5823.78531 -2763.85759 5823.95201 -2763.85012 5824.10116 -2763.77529 5824.2068 -2763.64611 5824.25054 -2763.48508 5824.22478 -2763.32021 5824.13399 -2763.1802 5814.01228 -2753.05846 5813.88251 -2752.97175 5813.72944 -2752.9413 5795.75788 -2752.9413 5795.61453 -2752.96787 5795.49023 -2753.04404 5795.40148 -2753.1597 5795.36007 -2753.29949 5795.37151 -2753.44483 5795.41016 -2753.58905 5795.44357 -2753.971 5795.41016 -2754.35295 5795.31092 -2754.7233 5795.13447 -2755.09137 5795.06821 -2755.25134 5795.07576 -2755.42433 5795.15572 -2755.57792 5795.29309 -2755.68332 5795.46213 -2755.7208 5804.09969 -2755.7208 5804.25276 -2755.69035 5804.38253 -2755.60364 5804.43014 -2755.55603 5804.74421 -2755.33611 5805.0917 -2755.17408 5805.46205 -2755.07484 5805.844 -2755.04143 5806.22595 -2755.07484 5806.5963 -2755.17408 5806.94379 -2755.33611 5807.25786 -2755.55603 5807.52897 -2755.82714 5807.74889 -2756.14121 5807.91092 -2756.4887 5808.01016 -2756.85905 5808.04357 -2757.241 5808.01016 -2757.62295 5807.91092 -2757.9933 5807.74889 -2758.34079 5807.52897 -2758.65486 5807.25786 -2758.92597 5806.94379 -2759.14589 5806.5963 -2759.30792 5806.22595 -2759.40716 5805.844 -2759.44057 5805.46205 -2759.40716 5805.0917 -2759.30792 5804.74421 -2759.14589 5804.43014 -2758.92597 5804.38213 -2758.87796 5804.25236 -2758.79125 5804.09929 -2758.7608 5764.08918 -2758.7608 5763.9689 -2758.77931 5763.85975 -2758.83314 5763.52879 -2759.06489 5763.1813 -2759.22692 5762.81095 -2759.32616 5762.429 -2759.35957 5762.04705 -2759.32616 5761.6767 -2759.22692 5761.32921 -2759.06489 5761.01514 -2758.84497 5760.74403 -2758.57386 5760.52411 -2758.25979 5760.36208 -2757.9123 5760.26284 -2757.54195 5760.22943 -2757.16 5760.26284 -2756.77805 5760.36208 -2756.4077 5760.52411 -2756.06021 5760.74403 -2755.74614 5761.01514 -2755.47503 5761.3469 -2755.24273 5761.41275 -2755.20291 5761.5365 -2755.08561 5761.60015 -2754.92742 5761.59214 -2754.7571 5761.48384 -2754.35295 5761.45043 -2753.971 5761.48384 -2753.58905 5761.52249 -2753.44483 5761.53393 -2753.29949 5761.49252 -2753.1597 5761.40377 -2753.04404 5761.27947 -2752.96787 5761.13612 -2752.9413 5756.50951 -2752.9413 5756.35321 -2752.9731 5756.22177 -2753.06344 5756.13607 -2753.19795 5756.10975 -2753.35526 5756.14698 -2753.51035 5756.26792 -2753.7697 5756.36716 -2754.14005 5756.40057 -2754.522 5756.36716 -2754.90395 5756.26792 -2755.2743 5756.10589 -2755.62179 5755.88597 -2755.93586 5755.83826 -2755.98357 5755.75155 -2756.11334 5755.7211 -2756.26641 5755.7211 -2757.80965 5755.69 -2758.12546 5755.60361 -2758.41024 5755.46332 -2758.67269 5755.26201 -2758.91799 5752.95366 -2761.22626 5752.86695 -2761.35603 5752.8365 -2761.50911 5752.8365 -2800.77621 5752.86695 -2800.92928 5752.95366 -2801.05905 5754.64501 -2802.7504 5755.09273 -2803.1442 5755.60822 -2803.49275 5756.16478 -2803.77104 5756.75291 -2803.97429 5757.36254 -2804.09904 5757.41455 -2804.10588 5758.54677 -2804.17971 5759.07522 -2804.28483 5759.58548 -2804.45804 5760.06877 -2804.69637 5760.51682 -2804.99575 5760.92196 -2805.35104 5761.27725 -2805.75618 5761.57663 -2806.20423 5761.81496 -2806.68752 5761.98817 -2807.19778 5762.0933 -2807.72629 5762.12854 -2808.264 5762.0933 -2808.80171 5761.98817 -2809.33022 5761.81496 -2809.84048 5761.57663 -2810.32377 5761.27725 -2810.77182 5760.92196 -2811.17696 5760.51682 -2811.53225 5760.06877 -2811.83163 5759.58548 -2812.06996 5759.07522 -2812.24317 5758.54671 -2812.3483 5758.009 -2812.38354 5757.47129 -2812.3483 5756.94278 -2812.24317 5756.43252 -2812.06996 5755.94923 -2811.83163 5755.50118 -2811.53225 5755.09604 -2811.17696 5754.74075 -2810.77182 5754.44137 -2810.32377 5754.20304 -2809.84048 5754.02983 -2809.33022 5753.92471 -2808.80177 5753.85088 -2807.66955 5753.73283 -2807.05845 5753.53606 -2806.46812 5753.26391 -2805.90853 5752.92106 -2805.38925 5752.49554 -2804.90015 5750.25559 -2802.6602 5750.05428 -2802.41489 5749.91399 -2802.15244 5749.8276 -2801.86766 5749.7965 -2801.55185 5749.7965 -2760.73345 5749.8276 -2760.41764 5749.91399 -2760.13286 5750.05428 -2759.87041 5750.25559 -2759.62511 5752.56394 -2757.31684 5752.65065 -2757.18707 5752.6811 -2757.03399 5752.6811 -2756.26661 5752.65065 -2756.11354 5752.56394 -2755.98377 5752.51603 -2755.93586 5752.29611 -2755.62179 5752.13408 -2755.2743 5752.03484 -2754.90395 5752.00143 -2754.522 5752.03484 -2754.14005 5752.13408 -2753.7697 5752.25502 -2753.51035 5752.29225 -2753.35526 5752.26593 -2753.19795 5752.18023 -2753.06344 5752.04879 -2752.9731 5751.89249 -2752.9413 5735.269 -2752.9413 5735.11841 -2752.97073 5734.98998 -2753.05468 5734.90808 -2753.13442 5734.59179 -2753.35589 5734.2443 -2753.51792 5733.87395 -2753.61716 5733.492 -2753.65057 5733.11005 -2753.61716 5732.7397 -2753.51792 5732.39221 -2753.35589 5732.07814 -2753.13597 5731.80703 -2752.86486 5731.58711 -2752.55079 5731.42508 -2752.2033 5731.32584 -2751.83295 5731.29243 -2751.451 5731.32584 -2751.06905 5731.42508 -2750.6987 5731.58711 -2750.35121 5731.80703 -2750.03714 5732.07814 -2749.76603 5732.39221 -2749.54611 5732.7397 -2749.38408 5733.11005 -2749.28484 5733.492 -2749.25143 5733.87395 -2749.28484 5734.2443 -2749.38408 5734.59179 -2749.54611 5734.90586 -2749.76603 5735.02201 -2749.87511 5735.20981 -2750.01122 5735.36676 -2750.0797 5735.57855 -2750.1139 5764.84905 -2750.1139 5765.00534 -2750.0821 5765.13678 -2749.99176 5765.22248 -2749.85725 5765.2488 -2749.69994 5765.21157 -2749.54485 5765.16608 -2749.4473 5765.06684 -2749.07695 5765.03343 -2748.695 5765.06684 -2748.31305 5765.16608 -2747.9427 5765.23181 -2747.80175 5765.26904 -2747.64666 5765.24272 -2747.48935 5765.15702 -2747.35484 5765.02558 -2747.2645 5764.86928 -2747.2327 5721.59668 -2747.2327 5721.43063 -2747.25789 5721.28644 -2747.31762 5721.16347 -2747.40548 5721.01585 -2747.54108 5720.69479 -2747.76589 5720.3473 -2747.92792 5719.97695 -2748.02716 5719.595 -2748.06057 5719.21305 -2748.02716 5718.8427 -2747.92792 5718.49521 -2747.76589 5718.18114 -2747.54597 5717.91003 -2747.27486 5717.69011 -2746.96079 5717.52808 -2746.6133 5717.42884 -2746.24295 5717.39543 -2745.861 5717.42884 -2745.47905 5717.52808 -2745.1087 5717.6492 -2744.84895 5717.68644 -2744.69386 5717.66011 -2744.53655 5717.57442 -2744.40204 5717.44297 -2744.3117 5717.28668 -2744.2799 5714.51096 -2744.2799 5714.34437 -2744.30511 5714.1998 -2744.36491 5714.07745 -2744.4522 5713.92918 -2744.58784 5713.60779 -2744.81289 5713.2603 -2744.97492 5712.88995 -2745.07416 5712.508 -2745.10757 5712.12605 -2745.07416 5711.7557 -2744.97492 5711.40821 -2744.81289 5711.09414 -2744.59297 5710.82303 -2744.32186 5710.60311 -2744.00779 5710.44108 -2743.6603 5710.34184 -2743.28995 5710.30843 -2742.908 5710.34184 -2742.52605 5710.44108 -2742.1557 5710.60311 -2741.80821 5710.82303 -2741.49414 5711.09414 -2741.22303 5711.40821 -2741.00311 5711.7557 -2740.84108 5712.12605 -2740.74184 5712.508 -2740.70843 5712.88995 -2740.74184 5713.2603 -2740.84108 5713.60779 -2741.00311 5713.92785 -2741.22723 5714.05499 -2741.34544 5714.18103 -2741.42477 5714.32736 -2741.4525 5715.36889 -2741.4525 5715.51224 -2741.42593 5715.63654 -2741.34976 5715.7253 -2741.2341 5715.7667 -2741.09431 5715.75526 -2740.94897 5715.69684 -2740.73095 5715.66343 -2740.349 5715.69684 -2739.96705 5715.79608 -2739.5967 5715.95811 -2739.24921 5716.17803 -2738.93514 5716.44914 -2738.66403 5716.76321 -2738.44411 5717.1107 -2738.28208 5717.48105 -2738.18284 5717.863 -2738.14943 5718.24495 -2738.18284 5718.6153 -2738.28208 5718.96279 -2738.44411 5719.27723 -2738.66429 5719.35084 -2738.73757 5719.48039 -2738.82382 5719.63305 -2738.8541 5749.54205 -2738.8541 5749.6854 -2738.82753 5749.80971 -2738.75136 5749.89846 -2738.6357 5749.93986 -2738.49591 5749.92842 -2738.35057 5749.86984 -2738.13195 5749.83643 -2737.75 5749.86984 -2737.36805 5749.94678 -2737.08093 5749.95822 -2736.93559 5749.91681 -2736.7958 5749.82806 -2736.68014 5749.70375 -2736.60397 5749.56041 -2736.5774 5724.3418 -2736.5774 5724.155 -2736.62182 5724.03778 -2736.69651 5723.89002 -2736.83196 5723.56879 -2737.05689 5723.2213 -2737.21892 5722.85095 -2737.31816 5722.469 -2737.35157 5722.08705 -2737.31816 5721.7167 -2737.21892 5721.36921 -2737.05689 5721.05514 -2736.83697 5720.78403 -2736.56586 5720.56411 -2736.25179 5720.40208 -2735.9043 5720.30284 -2735.53395 5720.26943 -2735.152 5720.30284 -2734.77005 5720.41288 -2734.37655 5720.45011 -2734.22146 5720.42378 -2734.06415 5720.33809 -2733.92964 5720.20664 -2733.8393 5720.05035 -2733.8075 5594.91696 -2733.8075 5594.76389 -2733.83795 5594.63412 -2733.92466 5583.07276 -2745.48601 5582.82706 -2745.68498 5582.56414 -2745.81895 5582.274 -2745.89669 5582.04258 -2745.9149 5576.80553 -2745.9149 5575.9464 -2745.95855 5575.11516 -2746.0838 5574.30021 -2746.28992 5573.50939 -2746.57493 5572.75031 -2746.93608 5572.03028 -2747.36989 5571.35624 -2747.87219 5570.77068 -2748.40291 5570.68403 -2748.47456 5570.39821 -2748.74451 5570.20862 -2748.88643 5570.09957 -2749.01079 5570.05014 -2749.16863 5570.0688 -2749.33297 5570.15235 -2749.47571 5570.28651 -2749.57245 5570.44833 -2749.60665 5662.79291 -2749.60665 5663.32444 -2749.64149 5663.834 -2749.74285 5664.32598 -2749.90985 5664.79195 -2750.13964 5665.22393 -2750.42829 5665.62442 -2750.7795 5682.2266 -2767.38168 5682.57781 -2767.78217 5682.86646 -2768.21415 5683.09625 -2768.68012 5683.26325 -2769.1721 5683.36461 -2769.68166 5683.39945 -2770.21319 5683.39945 -2810.62121 5683.42068 -2810.74978 5683.4537 -2810.84705 5683.56008 -2811.38187 5683.59574 -2811.926 5683.56008 -2812.47013 5683.4537 -2813.00495 5683.27842 -2813.52131 5683.03724 -2814.01037 5682.73429 -2814.46377 5682.37475 -2814.87375 5681.96477 -2815.23329 5681.51137 -2815.53624 5681.02231 -2815.77742 5680.50595 -2815.9527 5679.97113 -2816.05908 5679.427 -2816.09474 5678.88287 -2816.05908 5678.34805 -2815.9527 5677.83169 -2815.77742 5677.34263 -2815.53624 5676.88923 -2815.23329 5676.47925 -2814.87375 5676.11971 -2814.46377 5675.81676 -2814.01037 5675.57558 -2813.52131 5675.4003 -2813.00495 5675.29392 -2812.47013 5675.25826 -2811.926 5675.29392 -2811.38187 5675.4003 -2810.84705 5675.43272 -2810.75155 5675.45395 -2810.62298 5675.45395 -2772.01135 5675.4235 -2771.85828 5675.33679 -2771.72851 5661.27759 -2757.66931 5661.14782 -2757.5826 5660.99475 -2757.55215 5558.65239 -2757.55215 5558.12086 -2757.51731 5557.6113 -2757.41595 5557.11932 -2757.24895 5556.65335 -2757.01916 5556.22137 -2756.73051 5555.82088 -2756.3793 5542.77839 -2743.33671 5542.64862 -2743.25 5542.49555 -2743.21955 5525.02304 -2743.21955 5524.65074 -2743.267 5519.97126 -2743.267 5519.72239 -2743.23896 5519.50734 -2743.16371 5519.43071 -2743.11556 5519.29226 -2743.06122 5519.14353 -2743.06122 5519.00509 -2743.11556 5518.81546 -2743.23471 5518.60041 -2743.30996 5518.35154 -2743.338 5516.36759 -2743.338 5516.05857 -2743.3665 5515.91134 -2743.41068 5515.82813 -2743.47531 5515.72828 -2743.34829 5515.58633 -2743.27112 5515.50945 -2743.2478 5515.247 -2743.10752 5515.00169 -2742.9062 5513.18625 -2741.09072 5513.05648 -2741.00401 5512.9034 -2740.97356 5512.75033 -2741.004 5512.62056 -2741.09071 5512.53385 -2741.22048 5512.5034 -2741.37356 5512.5034 -2743.84431 5512.53921 -2744.00973 5512.64022 -2744.14554 5512.78836 -2744.22741 5512.95709 -2744.24069 5513.15729 -2744.15719 5513.37234 -2744.08194 5513.62121 -2744.0539 5513.84087 -2744.0539 5513.84087 -2745.41445 5513.38725 -2745.41445 5513.23418 -2745.4449 5513.10441 -2745.53161 5513.0177 -2745.66138 5512.98725 -2745.81445 5512.98725 -2746.69555 5513.0177 -2746.84862 5513.10441 -2746.97839 5513.23418 -2747.0651 5513.38725 -2747.09555 5513.84087 -2747.09555 5513.84087 -2748.7348 5513.87132 -2748.88787 5513.95803 -2749.01764 5514.0878 -2749.10435 5514.24087 -2749.1348 5514.92512 -2749.1348 5515.0782 -2749.10435 5515.20797 -2749.01764 5515.29468 -2748.88787 5515.32512 -2748.7348 5515.32512 -2747.09555 5516.58725 -2747.09555 5516.58725 -2747.41364 5516.55921 -2747.66251 5516.48396 -2747.87756 5516.36274 -2748.07048 5516.20163 -2748.23159 5516.00871 -2748.35281 5515.79366 -2748.42806 5515.67015 -2748.44198 5515.52426 -2748.48783 5515.40624 -2748.58508 5515.33334 -2748.71952 5515.31622 -2748.87148 5515.35738 -2749.01877 5515.4508 -2749.13984 5515.64306 -2749.23809 5515.83598 -2749.35931 5515.99709 -2749.52042 5516.11831 -2749.71334 5516.19356 -2749.92839 5516.2216 -2750.17726 5516.2216 -2754.69759 5516.24568 -2754.83428 5516.31502 -2754.95451 5516.42128 -2755.04381 5516.79185 -2755.25509 5517.32278 -2755.48457 5517.44575 -2755.5158 5517.57231 -2755.50695 5517.6953 -2755.47827 5517.99274 -2755.46854 5518.21465 -2755.50517 5518.33418 -2755.5068 5518.44885 -2755.47304 5518.7297 -2755.34208 5519.10005 -2755.24284 5519.482 -2755.20943 5519.86395 -2755.24284 5520.2343 -2755.34208 5520.58179 -2755.50411 5520.89586 -2755.72403 5521.16697 -2755.99514 5521.38689 -2756.30921 5521.54892 -2756.6567 5521.64816 -2757.02705 5521.68157 -2757.409 5521.64816 -2757.79095 5521.54892 -2758.1613 5521.38689 -2758.50879 5521.16697 -2758.82286 5520.89586 -2759.09397 5520.58179 -2759.31389 5520.2343 -2759.47592 5519.86395 -2759.57516 5519.482 -2759.60857 5519.10005 -2759.57516 5518.7297 -2759.47592 5518.38221 -2759.31389 5518.06814 -2759.09397 5518.02023 -2759.04606 5517.89046 -2758.95935 5517.73739 -2758.9289 5517.06204 -2758.93013 5516.59963 -2758.97147 5516.52822 -2758.98861 5516.36987 -2759.0667 5516.26057 -2759.20535 5516.2216 -2759.37756 5516.2216 -2759.97474 5516.19356 -2760.22361 5516.11831 -2760.43866 5515.99709 -2760.63158 5515.83598 -2760.79269 5515.64306 -2760.91391 5515.42801 -2760.98916 5515.17914 -2761.0172 5508.92486 -2761.0172 5508.67599 -2760.98916 5508.46094 -2760.91391 5508.26802 -2760.79269 5508.10691 -2760.63158 5507.98569 -2760.43866 5507.91044 -2760.22361 5507.8824 -2759.97474 5507.8824 -2751.79103 5507.84597 -2751.62425 5507.74331 -2751.48785 5507.59313 -2751.40667 5507.42278 -2751.3955 5507.26329 -2751.45638 5507.14371 -2751.57822 5507.00459 -2751.79963 5506.84348 -2751.96074 5506.73469 -2752.0291 5506.63477 -2752.11839 5506.56995 -2752.23568 5506.5475 -2752.36779 5506.5475 -2757.94615 5506.5164 -2758.26196 5506.43001 -2758.54674 5506.28972 -2758.80919 5506.08841 -2759.0545 5504.4408 -2760.70211 5504.19549 -2760.90342 5503.93304 -2761.04371 5503.64826 -2761.1301 5503.33245 -2761.1612 5498.51735 -2761.1612 5498.20154 -2761.1301 5497.91676 -2761.04371 5497.65431 -2760.90342 5497.409 -2760.70211 5494.91139 -2758.2045 5494.71008 -2757.95919 5494.62437 -2757.79885 5494.50988 -2757.66612 5494.34964 -2757.59509 5494.17441 -2757.59939 5494.01784 -2757.6782 5493.91 -2757.81638 5493.8716 -2757.9874 5493.8716 -2759.97479 5493.84356 -2760.22366 5493.76831 -2760.43871 5493.64709 -2760.63163 5493.48598 -2760.79274 5493.29306 -2760.91396 5493.07801 -2760.98921 5492.82914 -2761.01725 5492.1932 -2761.01725 5492.021 -2761.05622 5491.88234 -2761.16552 5491.80425 -2761.32387 5491.74254 -2761.60201 5491.70655 -2762.07507 5491.70655 -2766.04813 5491.737 -2766.2012 5491.82371 -2766.33097 5496.59643 -2771.10369 5496.7262 -2771.1904 5496.87927 -2771.22085 5502.84554 -2771.22085 5502.99457 -2771.19205 5503.12214 -2771.1098 5503.20988 -2770.98593 5503.24516 -2770.8383 5503.22289 -2770.68815 5503.14627 -2770.55711 5503.0909 -2770.49396 5502.80225 -2770.06197 5502.57245 -2769.596 5502.40545 -2769.10401 5502.30409 -2768.59444 5502.27011 -2768.076 5502.30409 -2767.55756 5502.40545 -2767.04799 5502.57245 -2766.556 5502.80225 -2766.09003 5503.0909 -2765.65804 5503.43346 -2765.26741 5503.82409 -2764.92485 5504.25608 -2764.6362 5504.72205 -2764.4064 5505.21404 -2764.2394 5505.72651 -2764.13746 5506.12558 -2764.1054 5506.23305 -2764.10343 5506.78083 -2764.13812 5507.28996 -2764.2394 5507.78195 -2764.4064 5508.24792 -2764.6362 5508.67991 -2764.92485 5509.07054 -2765.26741 5509.4131 -2765.65804 5509.70175 -2766.09003 5509.93155 -2766.556 5510.09855 -2767.04799 5510.19991 -2767.55756 5510.23389 -2768.076 5510.19991 -2768.59444 5510.09855 -2769.10401 5509.93155 -2769.596 5509.70175 -2770.06197 5509.4131 -2770.49396 5509.35773 -2770.55711 5509.28111 -2770.68815 5509.25884 -2770.8383 5509.29412 -2770.98593 5509.38186 -2771.1098 5509.50943 -2771.19205 5509.65846 -2771.22085 5513.19454 -2771.22085 5513.34362 -2771.19203 5513.47122 -2771.10973 5513.76105 -2770.83215 5513.89612 -2770.7285 5514.04368 -2770.63449 5514.19861 -2770.55383 5514.36025 -2770.48688 5514.52684 -2770.43434 5514.69764 -2770.39647 5514.87082 -2770.37367 5515.05433 -2770.36565 5518.58466 -2770.36565 5518.75371 -2770.32817 5518.89108 -2770.22277 5518.97103 -2770.06918 5518.97858 -2769.89619 5518.73808 -2769.3713 5518.63884 -2769.00095 5518.60543 -2768.619 5518.63884 -2768.23705 5518.73808 -2767.8667 5518.90011 -2767.51921 5519.12003 -2767.20514 5519.39114 -2766.93403 5519.70521 -2766.71411 5520.0527 -2766.55208 5520.42305 -2766.45284 5520.805 -2766.41943 5521.18695 -2766.45284 5521.5573 -2766.55208 5521.90479 -2766.71411 5522.21886 -2766.93403 5522.48997 -2767.20514 5522.70989 -2767.51921 5522.87192 -2767.8667 5522.97116 -2768.23705 5523.00457 -2768.619 5522.97116 -2769.00095 5522.87192 -2769.3713 5522.71132 -2769.7157 5522.67409 -2769.87079 5522.70041 -2770.0281 5522.78611 -2770.16261 5522.91755 -2770.25295 5523.07385 -2770.28475 5525.08364 -2770.28475 5525.33251 -2770.31279 5525.41942 -2770.3432 5525.55153 -2770.36565 5529.50004 -2770.36565 5529.86527 -2770.3976 5530.12844 -2770.46812 5530.23197 -2770.48175 5530.79264 -2770.48175 5531.04151 -2770.50979 5531.25656 -2770.58504 5531.44948 -2770.70626 5531.61059 -2770.86737 5531.73181 -2771.06029 5531.80706 -2771.27534 5531.8351 -2771.52421 5531.8351 -2773.44779 5531.80706 -2773.69666 5531.73181 -2773.91171 5531.63035 -2774.07319 5531.57601 -2774.21164 5531.57601 -2774.36036 5531.63035 -2774.49881 5531.73181 -2774.66029 5531.80706 -2774.87534 5531.8351 -2775.12421 5531.8351 -2775.34388 5530.47455 -2775.34388 5530.47455 -2774.89025 5530.4441 -2774.73718 5530.35739 -2774.60741 5530.22762 -2774.5207 5530.07455 -2774.49025 5529.19345 -2774.49025 5529.04038 -2774.5207 5528.91061 -2774.60741 5528.8239 -2774.73718 5528.79345 -2774.89025 5528.79345 -2775.34388 5527.4329 -2775.34388 5527.4329 -2775.12588 5527.46967 -2774.82223 5527.45443 -2774.65505 5527.37193 -2774.50885 5527.2367 -2774.40938 5527.07257 -2774.37415 5526.51138 -2774.37415 5526.34801 -2774.40904 5526.21313 -2774.50761 5526.13027 -2774.65268 5526.1139 -2774.81894 5526.1261 -2774.92721 5526.1261 -2775.14688 5524.76555 -2775.14688 5524.76555 -2774.77415 5524.7351 -2774.62108 5524.64839 -2774.49131 5524.51862 -2774.4046 5524.36555 -2774.37415 5523.48445 -2774.37415 5523.33138 -2774.4046 5523.20161 -2774.49131 5523.1149 -2774.62108 5523.08445 -2774.77415 5523.08445 -2775.14688 5521.7239 -2775.14688 5521.7239 -2774.92721 5521.7361 -2774.81894 5521.71973 -2774.65268 5521.63687 -2774.50761 5521.50199 -2774.40904 5521.33862 -2774.37415 5516.04156 -2774.37415 5515.89248 -2774.40297 5515.76488 -2774.48527 5515.47505 -2774.76285 5515.33998 -2774.8665 5515.19651 -2774.95791 5514.95646 -2775.07559 5514.81836 -2775.18719 5514.74217 -2775.34757 5514.7429 -2775.52513 5514.82041 -2775.68488 5514.95942 -2775.79534 5515.13255 -2775.83475 5517.27914 -2775.83475 5517.52801 -2775.86279 5517.74306 -2775.93804 5517.93598 -2776.05926 5518.09709 -2776.22037 5518.21831 -2776.41329 5518.29356 -2776.62834 5518.3216 -2776.87721 5518.3216 -2781.3506 5518.34498 -2781.48536 5518.4124 -2781.60436 5518.51596 -2781.69369 5518.84533 -2781.88887 5519.49615 -2782.19455 5520.1738 -2782.43497 5520.87175 -2782.60781 5521.26521 -2782.66618 5521.43531 -2782.65468 5521.58517 -2782.57339 5521.68757 -2782.43708 5521.7239 -2782.27051 5521.7239 -2782.04713 5523.08445 -2782.04713 5523.08445 -2782.34525 5523.1149 -2782.49832 5523.20161 -2782.62809 5523.33138 -2782.7148 5523.48445 -2782.74525 5524.36555 -2782.74525 5524.51862 -2782.7148 5524.64839 -2782.62809 5524.7351 -2782.49832 5524.76555 -2782.34525 5524.76555 -2782.04713 5526.1261 -2782.04713 5526.12252 -2782.29856 5526.13889 -2782.46481 5526.22173 -2782.60988 5526.3566 -2782.70845 5526.51997 -2782.74335 5527.01665 -2782.7434 5527.18004 -2782.70852 5527.31493 -2782.60995 5527.3978 -2782.46488 5527.41418 -2782.29861 5527.3929 -2782.10979 5527.3929 -2781.89013 5528.75345 -2781.89013 5528.75345 -2782.3436 5528.78389 -2782.49666 5528.87059 -2782.62643 5529.00035 -2782.71314 5529.15341 -2782.7436 5530.03451 -2782.74368 5530.1876 -2782.71324 5530.31738 -2782.62654 5530.4041 -2782.49676 5530.43455 -2782.34368 5530.43455 -2781.89013 5531.7951 -2781.89013 5531.7951 -2782.10979 5531.76706 -2782.35866 5531.69181 -2782.57371 5531.59035 -2782.73519 5531.53601 -2782.87364 5531.53601 -2783.02236 5531.59035 -2783.16081 5531.69181 -2783.32229 5531.76706 -2783.53734 5531.7951 -2783.78621 5531.7951 -2785.70979 5531.76706 -2785.95866 5531.69181 -2786.17371 5531.57059 -2786.36663 5531.40948 -2786.52774 5531.21656 -2786.64896 5531.00151 -2786.72421 5530.75266 -2786.75225 5526.53405 -2786.75185 5525.74493 -2786.75375 5525.607 -2786.77864 5525.32888 -2786.88162 5525.08364 -2786.90925 5522.9215 -2786.90925 5522.76843 -2786.9397 5522.63866 -2787.02641 5522.55195 -2787.15618 5522.5215 -2787.30925 5522.5215 -2787.50399 5522.55195 -2787.65706 5522.63866 -2787.78683 5522.68697 -2787.83514 5522.90689 -2788.14921 5523.06892 -2788.4967 5523.16816 -2788.86705 5523.20157 -2789.249 5523.16816 -2789.63095 5523.06892 -2790.0013 5522.90689 -2790.34879 5522.68697 -2790.66286 5522.41586 -2790.93397 5522.10179 -2791.15389 5521.7543 -2791.31592 5521.38395 -2791.41516 5521.002 -2791.44857 5520.62005 -2791.41516 5520.2497 -2791.31592 5519.90221 -2791.15389 5519.58814 -2790.93397 5519.31703 -2790.66286 5519.09711 -2790.34879 5518.93508 -2790.0013 5518.83584 -2789.63095 5518.80243 -2789.249 5518.83584 -2788.86705 5518.93508 -2788.4967 5519.09711 -2788.14921 5519.31703 -2787.83514 5519.36434 -2787.78783 5519.45105 -2787.65806 5519.4815 -2787.50499 5519.4815 -2787.15375 5519.45105 -2787.00068 5519.36434 -2786.87091 5519.23457 -2786.7842 5519.0815 -2786.75375 5518.63683 -2786.75375 5518.47687 -2786.78713 5518.34361 -2786.88168 5518.25927 -2787.02164 5518.21831 -2787.13871 5518.09709 -2787.33163 5517.93598 -2787.49274 5517.74306 -2787.61396 5517.52801 -2787.68921 5517.27914 -2787.71725 5511.02486 -2787.71725 5510.77599 -2787.68921 5510.56094 -2787.61396 5510.36802 -2787.49274 5510.20691 -2787.33163 5510.08569 -2787.13871 5510.00455 -2786.90683 5509.92022 -2786.76687 5509.78696 -2786.67232 5509.627 -2786.63894 5509.46704 -2786.67232 5509.33378 -2786.76687 5509.24945 -2786.90683 5509.16831 -2787.13871 5509.04709 -2787.33163 5508.88598 -2787.49274 5508.69306 -2787.61396 5508.47801 -2787.68921 5508.22914 -2787.71725 5501.97486 -2787.71725 5501.72599 -2787.68921 5501.51094 -2787.61396 5501.31802 -2787.49274 5501.15691 -2787.33163 5501.03569 -2787.13871 5500.96044 -2786.92366 5500.9324 -2786.67479 5500.9324 -2776.87721 5500.96044 -2776.62834 5501.03569 -2776.41329 5501.15691 -2776.22037 5501.31802 -2776.05926 5501.4632 -2775.96804 5501.58503 -2775.84846 5501.64592 -2775.68897 5501.63475 -2775.51862 5501.55357 -2775.36844 5501.41717 -2775.26578 5501.25038 -2775.22935 5495.89213 -2775.22935 5495.70875 -2775.22134 5495.53543 -2775.19853 5495.36476 -2775.16069 5495.19804 -2775.10812 5495.03653 -2775.04122 5494.88147 -2774.9605 5494.73403 -2774.86657 5494.59534 -2774.76015 5494.46001 -2774.63615 5488.29125 -2768.46739 5488.16725 -2768.33206 5488.06083 -2768.19337 5487.9669 -2768.04593 5487.88618 -2767.89087 5487.81928 -2767.72936 5487.76671 -2767.56264 5487.72887 -2767.39197 5487.70606 -2767.21865 5487.69805 -2767.03527 5487.69805 -2762.07507 5487.66206 -2761.60201 5487.60035 -2761.32387 5487.52226 -2761.16552 5487.3836 -2761.05622 5487.2114 -2761.01725 5486.57486 -2761.01725 5486.32599 -2760.98921 5486.11094 -2760.91396 5485.91802 -2760.79274 5485.75691 -2760.63163 5485.63569 -2760.43871 5485.56044 -2760.22366 5485.5324 -2759.97479 5485.5324 -2750.17721 5485.56044 -2749.92834 5485.63569 -2749.71329 5485.75691 -2749.52037 5485.91802 -2749.35926 5486.11094 -2749.23804 5486.27406 -2749.18096 5486.40716 -2749.10285 5486.50078 -2748.98017 5486.52699 -2748.88303 5486.60158 -2749.00682 5486.73484 -2749.10137 5486.8948 -2749.13475 5492.82914 -2749.13475 5493.07801 -2749.16279 5493.25192 -2749.22365 5493.40895 -2749.24532 5493.56206 -2749.20429 5493.68722 -2749.10701 5493.76476 -2748.96875 5493.78251 -2748.81123 5493.77243 -2748.696 5493.80584 -2748.31405 5493.85448 -2748.13253 5493.86592 -2747.98719 5493.82451 -2747.8474 5493.73576 -2747.73174 5493.61146 -2747.65557 5493.46811 -2747.629 5488.13751 -2747.629 5487.98444 -2747.65945 5487.85467 -2747.74616 5487.70086 -2747.89997 5487.38679 -2748.11989 5487.0393 -2748.28192 5486.79127 -2748.34838 5486.6454 -2748.42202 5486.54115 -2748.54784 5486.50979 -2748.65672 5486.44606 -2748.54358 5486.32507 -2748.44779 5486.17681 -2748.40493 5485.90505 -2748.38116 5485.5347 -2748.28192 5485.18721 -2748.11989 5484.87314 -2747.89997 5484.60203 -2747.62886 5484.46946 -2747.43953 5484.34094 -2747.32205 5484.17468 -2747.27032 5484.00219 -2747.29412 5483.85615 -2747.38895 5483.76425 -2747.53685 5483.72796 -2747.64056 5483.60674 -2747.83348 5483.44563 -2747.99459 5483.25271 -2748.11581 5483.03766 -2748.19106 5482.78879 -2748.2191 5481.3184 -2748.2191 5481.15162 -2748.25553 5481.01522 -2748.35819 5480.93404 -2748.50837 5480.92287 -2748.67872 5480.98375 -2748.83821 5481.10559 -2748.95779 5481.26708 -2749.05926 5481.42819 -2749.22037 5481.54941 -2749.41329 5481.62466 -2749.62834 5481.6527 -2749.87721 5481.6527 -2759.67479 5481.62466 -2759.92366 5481.54941 -2760.13871 5481.42819 -2760.33163 5481.26708 -2760.49274 5481.07416 -2760.61396 5480.85911 -2760.68921 5480.61024 -2760.71725 5478.87469 -2760.71725 5478.73134 -2760.74382 5478.60704 -2760.81999 5478.51829 -2760.93565 5478.47688 -2761.07544 5478.48832 -2761.22078 5478.52216 -2761.34705 5478.55557 -2761.729 5478.52216 -2762.11095 5478.42292 -2762.4813 5478.26089 -2762.82879 5478.04097 -2763.14286 5477.75556 -2763.42827 5477.66786 -2763.56044 5477.63843 -2763.71629 5477.67189 -2763.87134 5477.76297 -2764.00119 5477.89737 -2764.08543 5478.05393 -2764.11081 5478.23716 -2764.10369 5478.78083 -2764.13812 5479.28996 -2764.2394 5479.78195 -2764.4064 5480.24792 -2764.6362 5480.67991 -2764.92485 5481.07054 -2765.26741 5481.4131 -2765.65804 5481.70175 -2766.09003 5481.93155 -2766.556 5482.09855 -2767.04799 5482.19991 -2767.55756 5482.23389 -2768.076 5482.19991 -2768.59444 5482.09855 -2769.10401 5481.93155 -2769.596 5481.70175 -2770.06197 5481.4131 -2770.49396 5481.07054 -2770.88459 5480.67991 -2771.22715 5480.24792 -2771.5158 5479.78195 -2771.7456 5479.28378 -2771.9147 5478.7741 -2772.01539 5478.65798 -2772.02789 5478.25486 -2772.04864 5478.12511 -2772.04656 5477.7191 -2772.01394 5477.59801 -2771.99449 5477.21092 -2771.91225 5477.08177 -2771.87248 5476.72406 -2771.74659 5476.25608 -2771.5158 5475.82409 -2771.22715 5475.43346 -2770.88459 5475.0909 -2770.49396 5474.80225 -2770.06197 5474.57245 -2769.596 5474.40545 -2769.10401 5474.30409 -2768.59444 5474.27011 -2768.076 5474.30409 -2767.55756 5474.40545 -2767.04799 5474.57245 -2766.556 5474.80225 -2766.09003 5475.0909 -2765.65804 5475.43346 -2765.26741 5475.82409 -2764.92485 5476.25832 -2764.6347 5476.37267 -2764.51826 5476.43098 -2764.36583 5476.42357 -2764.2028 5476.35166 -2764.05631 5476.22721 -2763.95072 5476.07096 -2763.90363 5475.97405 -2763.89516 5475.6037 -2763.79592 5475.25621 -2763.63389 5474.94214 -2763.41397 5474.67103 -2763.14286 5474.45111 -2762.82879 5474.28908 -2762.4813 5474.18984 -2762.11095 5474.15643 -2761.729 5474.18984 -2761.34705 5474.22368 -2761.22078 5474.23512 -2761.07544 5474.19371 -2760.93565 5474.10496 -2760.81999 5473.98066 -2760.74382 5473.83731 -2760.71725 5471.99376 -2760.71725 5471.74489 -2760.68921 5471.52984 -2760.61396 5471.33692 -2760.49274 5471.17404 -2760.32986 5471.04427 -2760.24315 5470.8912 -2760.21271 5470.73813 -2760.24315 5470.60836 -2760.32986 5470.52165 -2760.45963 5470.4912 -2760.61271 5470.4912 -2815.89219 5470.4836 -2816.87529 5470.54977 -2817.78802 5470.6887 -2818.69257 5470.89947 -2819.58312 5471.18076 -2820.45398 5471.53075 -2821.29957 5471.94721 -2822.11448 5472.42747 -2822.89349 5472.96846 -2823.63163 5473.56671 -2824.32416 5474.21841 -2824.96666 5474.91938 -2825.55502 5475.66513 -2826.08546 5476.45089 -2826.5546 5477.27163 -2826.95944 5478.12211 -2827.29738 5478.99688 -2827.56626 5479.89034 -2827.76436 5480.79677 -2827.89041 5481.71028 -2827.94361 5482.67502 -2827.9242 5928.39803 -2827.9242 5929.34721 -2827.94308 5930.20947 -2827.88874 5931.06436 -2827.76315 5931.9059 -2827.56719 5932.72832 -2827.30221 5933.52597 -2826.97002 5934.29336 -2826.5729 5935.02523 -2826.1136 5935.71655 -2825.59525 5936.36255 -2825.02144 5936.95882 -2824.39608 5937.50124 -2823.72349 5937.98609 -2823.00829 5938.41004 -2822.25539 5938.77017 -2821.46996 5939.06402 -2820.65741 5939.28955 -2819.8233 5939.44524 -2818.97339 5939.52999 -2818.1135 5939.54323 -2817.24952 5939.48484 -2816.36487 5939.4823 -2816.28781 5939.48229 -2742.26769 5939.43424 -2741.66416 5939.33024 -2741.1197 5939.16872 -2740.58946 5938.95152 -2740.07949 5938.68112 -2739.59562 5938.36061 -2739.14337 5937.99366 -2738.72793 5937.58445 -2738.35403 5937.13768 -2738.02594 5936.65843 -2737.74743 5936.15219 -2737.52166 5935.62474 -2737.35122 5935.08211 -2737.23807 5934.53049 -2737.1833 5923.06855 -2737.1833 5922.91548 -2737.21375 5922.78571 -2737.30046 5922.699 -2737.43023 5922.66855 -2737.5833 5922.66855 -2738.19648 5919.63477 -2738.19648 5919.63477 -2737.5833 5919.60433 -2737.43023 5919.51762 -2737.30046 5919.38785 -2737.21375 5919.23477 -2737.1833 5915.00723 -2737.1833 5914.85415 -2737.21375 5914.72438 -2737.30046 5914.63767 -2737.43023 5914.60723 -2737.5833 5914.60723 -2738.19648 5911.57345 -2738.19648 5911.57345 -2737.5833 5911.543 -2737.43023 5911.45629 -2737.30046 5911.32652 -2737.21375 5911.17345 -2737.1833 5883.59375 -2737.1833 5883.44068 -2737.21375 5883.31091 -2737.30046 5883.2242 -2737.43023 5883.19375 -2737.5833 5883.19375 -2738.2449 5880.94737 -2738.2449 5880.94737 -2737.5833 5880.91693 -2737.43023 5880.83022 -2737.30046 5880.70045 -2737.21375 5880.54738 -2737.1833 5877.89462 -2737.1833 5877.74155 -2737.21375 5877.61178 -2737.30046 5877.52507 -2737.43023 5877.49462 -2737.5833 5877.49462 -2738.2449 5875.24825 -2738.2449 5875.24825 -2737.5833 5875.2178 -2737.43023 5875.13109 -2737.30046 5875.00132 -2737.21375 5874.84825 -2737.1833 5848.7083 -2737.1833 5847.97163 -2737.16121 5847.84307 -2737.15012 5847.15891 -2737.05276 5847.03204 -2737.02749 5846.36282 -2736.85519 5846.23952 -2736.81606 5845.59342 -2736.57094 5845.47519 -2736.51843 5844.8601 -2736.20346 5844.74839 -2736.13823 5844.17184 -2735.75727 5844.06802 -2735.6801 5843.53705 -2735.23782 5843.44239 -2735.14966 5842.9635 -2734.65145 5842.87915 -2734.55338 5842.4582 -2734.00535 5842.38519 -2733.89856 5842.02732 -2733.3074 5841.96654 -2733.1932 5841.67613 -2732.56615 5841.62834 -2732.44594 5841.40894 -2731.79065 5841.37471 -2731.6659 5841.22901 -2730.99042 5841.20874 -2730.86238 5841.13833 -2730.17167 5841.1323 -2730.05304 5841.1323 -2629.58875 5841.14193 -2629.43895 5841.22102 -2628.82639 5841.24644 -2628.692 5841.39592 -2628.09512 5841.43665 -2627.96512 5841.65453 -2627.38963 5841.71011 -2627.26524 5841.99341 -2626.71898 5842.06307 -2626.6019 5842.40797 -2626.09229 5842.49077 -2625.9841 5842.89258 -2625.51804 5842.9874 -2625.42021 5843.44066 -2625.00403 5843.54621 -2624.91788 5844.04479 -2624.55722 5844.15964 -2624.48394 5844.69677 -2624.18369 5844.81936 -2624.12425 5845.38776 -2623.88849 5845.51643 -2623.84371 5846.10838 -2623.67563 5846.24139 -2623.64611 5846.84886 -2623.54799 5846.98405 -2623.53418 5847.66146 -2623.5059 5935.30742 -2623.5059 5935.88391 -2623.46636 5936.39434 -2623.37137 5936.89079 -2623.21918 5937.36681 -2623.01176 5937.81629 -2622.75178 5938.23345 -2622.44258 5938.61291 -2622.08814 5938.9498 -2621.69302 5939.23979 -2621.26229 5939.47915 -2620.8015 5939.6648 -2620.31657 5939.79435 -2619.81374 5939.86613 -2619.29951 5939.8823 -2618.75532 5939.8823 -2545.9715 5939.78782 -2545.02357 5939.62612 -2544.10466 5939.39808 -2543.19993 5939.10491 -2542.31415 5938.74816 -2541.45202 5938.32971 -2540.61808 5937.85179 -2539.81675 5937.3169 -2539.05226 5936.72789 -2538.32865 5936.08786 -2537.64974 5935.4002 -2537.01913 5934.66854 -2536.44015 5933.89675 -2535.91586 5933.08891 -2535.44902 5932.24928 -2535.04211 5931.38231 -2534.69728 5930.49258 -2534.41635 5929.58479 -2534.2008 5928.66373 -2534.05178 5927.73895 -2533.971 5483.12352 -2533.97097 Z M 5520.6335 -2538.18251 L 5520.86492 -2538.1643 5742.52114 -2538.1643 5742.83557 -2538.19735 5743.11621 -2538.28853 5743.37634 -2538.43872 5743.55285 -2538.58948 5753.07988 -2548.1165 5753.19041 -2548.19464 5753.29502 -2548.24458 5753.43246 -2548.28207 5753.82995 -2548.31684 5754.2003 -2548.41608 5754.54779 -2548.57811 5754.86186 -2548.79803 5755.13297 -2549.06914 5755.35289 -2549.38321 5755.51492 -2549.7307 5755.61416 -2550.10105 5755.64757 -2550.483 5755.61416 -2550.86495 5755.51492 -2551.2353 5755.35289 -2551.58279 5755.13297 -2551.89686 5754.86186 -2552.16797 5754.54779 -2552.38789 5754.2003 -2552.54992 5753.82995 -2552.64916 5753.448 -2552.68257 5753.06605 -2552.64916 5752.6957 -2552.54992 5752.34821 -2552.38789 5752.03414 -2552.16797 5751.76303 -2551.89686 5751.54311 -2551.58279 5751.38108 -2551.2353 5751.28184 -2550.86495 5751.24763 -2550.47387 5751.21162 -2550.33957 5751.16023 -2550.22945 5751.0806 -2550.11578 5742.07368 -2541.10886 5741.94391 -2541.02215 5741.79084 -2540.9917 5521.60046 -2540.9917 5521.44739 -2541.02215 5521.31762 -2541.10886 5504.74181 -2557.68472 5504.6523 -2557.82143 5504.62493 -2557.98252 5504.66426 -2558.14112 5504.76373 -2558.27076 5504.90675 -2558.3498 5505.06944 -2558.36505 5505.19636 -2558.35075 5507.51364 -2558.35075 5507.76251 -2558.37879 5507.97756 -2558.45404 5508.17048 -2558.57526 5508.31346 -2558.71824 5508.44323 -2558.80495 5508.59631 -2558.8354 5513.5135 -2558.8354 5513.66657 -2558.80495 5513.79634 -2558.71824 5513.88305 -2558.58847 5513.9135 -2558.4354 5513.9135 -2555.79926 5513.94154 -2555.55039 5514.01679 -2555.33534 5514.13801 -2555.14242 5514.29912 -2554.98131 5514.49204 -2554.86009 5514.70709 -2554.78484 5514.95596 -2554.7568 5518.84804 -2554.7568 5519.09691 -2554.78484 5519.31196 -2554.86009 5519.50488 -2554.98131 5519.66599 -2555.14242 5519.78721 -2555.33534 5519.86246 -2555.55039 5519.8905 -2555.79926 5519.8905 -2568.35274 5519.86246 -2568.60161 5519.78721 -2568.81666 5519.66599 -2569.00958 5519.50488 -2569.17069 5519.31196 -2569.29191 5519.09691 -2569.36716 5518.84804 -2569.3952 5514.95596 -2569.3952 5514.70709 -2569.36716 5514.49204 -2569.29191 5514.29912 -2569.17069 5514.13801 -2569.00958 5514.01679 -2568.81666 5513.94154 -2568.60161 5513.9135 -2568.35274 5513.9135 -2563.64574 5513.89433 -2563.52338 5513.83864 -2563.41275 5513.75178 -2563.32446 5513.57552 -2563.19613 5512.90968 -2562.79929 5512.20814 -2562.46962 5511.47767 -2562.2103 5510.7253 -2562.02382 5509.95828 -2561.91199 5509.20361 -2561.8754 5508.76569 -2561.8754 5508.60027 -2561.91121 5508.46446 -2562.01222 5508.38259 -2562.16036 5508.36931 -2562.32909 5508.45281 -2562.52929 5508.52806 -2562.74434 5508.5561 -2562.99321 5508.5561 -2564.91679 5508.52806 -2565.16566 5508.45281 -2565.38071 5508.33159 -2565.57363 5508.05252 -2565.83537 5507.9877 -2565.95266 5507.96525 -2566.08477 5507.96525 -2574.38941 5508.01244 -2574.85239 5508.054 -2574.99195 5508.14277 -2575.10739 5508.26699 -2575.18339 5508.41017 -2575.2099 5508.56979 -2575.2099 5508.81866 -2575.23794 5509.03371 -2575.31319 5509.22663 -2575.43441 5509.38774 -2575.59552 5509.50896 -2575.78844 5509.58421 -2576.00349 5509.61225 -2576.25236 5509.61225 -2580.86964 5509.58421 -2581.11851 5509.50896 -2581.33356 5509.38774 -2581.52648 5509.22663 -2581.68759 5509.03371 -2581.80881 5508.81866 -2581.88406 5508.56979 -2581.9121 5504.34621 -2581.9121 5504.09734 -2581.88406 5503.88229 -2581.80881 5503.68937 -2581.68759 5503.52826 -2581.52648 5503.40704 -2581.33356 5503.33179 -2581.11851 5503.30375 -2580.86964 5503.30375 -2576.25236 5503.33179 -2576.00349 5503.40704 -2575.78844 5503.52826 -2575.59552 5503.68937 -2575.43441 5503.88229 -2575.31319 5504.09605 -2575.23839 5504.38625 -2575.20768 5504.52594 -2575.1662 5504.64151 -2575.07744 5504.71761 -2574.95318 5504.74415 -2574.8099 5504.74415 -2566.08439 5504.7217 -2565.95228 5504.65688 -2565.83499 5504.53952 -2565.73474 5504.37841 -2565.57363 5504.25719 -2565.38071 5504.18194 -2565.16566 5504.1539 -2564.91679 5504.1539 -2562.99321 5504.18194 -2562.74434 5504.25719 -2562.52929 5504.35865 -2562.36781 5504.41299 -2562.22936 5504.41299 -2562.08064 5504.35865 -2561.94219 5504.25719 -2561.78071 5504.18194 -2561.56566 5504.1539 -2561.31679 5504.1539 -2559.39321 5504.1682 -2559.26629 5504.15295 -2559.1036 5504.0739 -2558.96059 5503.94427 -2558.86112 5503.78567 -2558.82178 5503.62458 -2558.84916 5503.48787 -2558.93866 5492.37376 -2570.05282 5492.28705 -2570.18258 5492.2566 -2570.33566 5492.2566 -2582.15667 5492.27905 -2582.28878 5492.34387 -2582.40607 5492.44379 -2582.49536 5492.65848 -2582.63026 5492.81959 -2582.79137 5492.94081 -2582.98429 5493.01606 -2583.19934 5493.0441 -2583.44821 5493.0441 -2585.37179 5493.01606 -2585.62066 5492.94081 -2585.83571 5492.84764 -2585.98399 5492.78995 -2586.14311 5492.80323 -2586.31184 5492.8851 -2586.45998 5493.02091 -2586.56099 5493.18633 -2586.5968 5494.60553 -2586.59557 5495.03034 -2586.56213 5495.09234 -2586.55232 5495.50669 -2586.45284 5495.60682 -2586.41669 5495.73659 -2586.32998 5495.8233 -2586.20021 5495.85375 -2586.04714 5495.85375 -2585.80236 5495.88179 -2585.55349 5495.95704 -2585.33844 5496.07826 -2585.14552 5496.23937 -2584.98441 5496.43229 -2584.86319 5496.64734 -2584.78794 5496.89621 -2584.7599 5501.11979 -2584.7599 5501.36866 -2584.78794 5501.58371 -2584.86319 5501.77663 -2584.98441 5501.93774 -2585.14552 5502.05896 -2585.33844 5502.13421 -2585.55349 5502.16225 -2585.80236 5502.16225 -2590.41964 5502.13421 -2590.66851 5502.05896 -2590.88356 5501.93774 -2591.07648 5501.77663 -2591.23759 5501.58371 -2591.35881 5501.36866 -2591.43406 5501.11979 -2591.4621 5496.89621 -2591.4621 5496.64734 -2591.43406 5496.43229 -2591.35881 5496.23937 -2591.23759 5496.07826 -2591.07648 5495.95704 -2590.88356 5495.88179 -2590.66851 5495.85375 -2590.41964 5495.85375 -2589.86827 5495.8272 -2589.72498 5495.75109 -2589.60071 5495.63551 -2589.51195 5495.49581 -2589.47048 5495.03694 -2589.4242 5493.16911 -2589.4242 5493.037 -2589.44665 5492.91972 -2589.51147 5492.81959 -2589.62863 5492.65848 -2589.78974 5492.46556 -2589.91096 5492.25051 -2589.98621 5492.00164 -2590.01425 5489.68436 -2590.01425 5489.43549 -2589.98621 5489.22044 -2589.91096 5489.02752 -2589.78974 5488.86641 -2589.62863 5488.74519 -2589.43571 5488.66994 -2589.22066 5488.6419 -2588.97179 5488.6419 -2587.04821 5488.66994 -2586.79934 5488.74519 -2586.58429 5488.84665 -2586.42281 5488.90099 -2586.28436 5488.90099 -2586.13564 5488.84665 -2585.99719 5488.74519 -2585.83571 5488.66994 -2585.62066 5488.6419 -2585.37179 5488.6419 -2583.44821 5488.66994 -2583.19934 5488.74519 -2582.98429 5488.86641 -2582.79137 5489.02752 -2582.63026 5489.24201 -2582.49548 5489.34193 -2582.40619 5489.40675 -2582.28891 5489.4292 -2582.1568 5489.4292 -2569.60536 5489.46225 -2569.29093 5489.55343 -2569.01029 5489.70362 -2568.75016 5489.85438 -2568.57365 5491.93617 -2566.49176 5519.83474 -2538.59319 5520.08044 -2538.39422 5520.34336 -2538.26026 5520.6335 -2538.18251 Z M 5656.002 -2770.88543 L 5656.38395 -2770.91884 5656.7543 -2771.01808 5657.10179 -2771.18011 5657.41586 -2771.40003 5657.68697 -2771.67114 5657.90689 -2771.98521 5658.06892 -2772.3327 5658.16816 -2772.70305 5658.20157 -2773.085 5658.16816 -2773.46695 5658.06892 -2773.8373 5657.90689 -2774.18479 5657.87437 -2774.23122 5657.80811 -2774.39119 5657.81566 -2774.56418 5657.89562 -2774.71777 5658.03299 -2774.82317 5658.20203 -2774.86065 5659.71137 -2774.86065 5659.89475 -2774.86866 5660.06807 -2774.89147 5660.23874 -2774.92931 5660.40546 -2774.98188 5660.56697 -2775.04878 5660.72203 -2775.1295 5660.86947 -2775.22343 5661.00816 -2775.32985 5661.14349 -2775.45385 5672.71231 -2787.02268 5672.82611 -2787.10236 5673.08079 -2787.22111 5673.39486 -2787.44103 5673.66597 -2787.71214 5673.88589 -2788.02621 5674.04792 -2788.3737 5674.14716 -2788.74405 5674.18057 -2789.126 5674.14716 -2789.50795 5674.04792 -2789.8783 5673.88661 -2790.22422 5673.63126 -2790.58234 5673.57598 -2790.69265 5673.55695 -2790.81456 5673.55695 -2814.05931 5673.57546 -2814.17959 5673.62929 -2814.28874 5673.85089 -2814.60521 5674.01292 -2814.9527 5674.11216 -2815.32305 5674.14557 -2815.705 5674.11216 -2816.08695 5674.01292 -2816.4573 5673.85089 -2816.80479 5673.63097 -2817.11886 5673.35986 -2817.38997 5673.04579 -2817.60989 5672.6983 -2817.77192 5672.32795 -2817.87116 5671.946 -2817.90457 5671.56405 -2817.87116 5671.1937 -2817.77192 5670.84621 -2817.60989 5670.53214 -2817.38997 5670.26103 -2817.11886 5670.04111 -2816.80479 5669.87908 -2816.4573 5669.77984 -2816.08695 5669.74643 -2815.705 5669.77984 -2815.32305 5669.87908 -2814.9527 5670.04111 -2814.60521 5670.26351 -2814.2876 5670.31734 -2814.17845 5670.33585 -2814.05817 5670.33585 -2805.32988 5670.30405 -2805.17359 5670.21371 -2805.04215 5670.0792 -2804.95645 5669.92189 -2804.93013 5669.37595 -2805.07616 5668.994 -2805.10957 5668.61205 -2805.07616 5668.2417 -2804.97692 5667.89421 -2804.81489 5667.58014 -2804.59497 5667.53243 -2804.54726 5667.40266 -2804.46055 5667.24959 -2804.4301 5657.23241 -2804.4301 5657.1003 -2804.45255 5656.98302 -2804.51737 5656.89372 -2804.61729 5656.82574 -2804.72548 5656.66463 -2804.88659 5656.47171 -2805.00781 5656.34557 -2805.05195 5656.20561 -2805.13628 5656.11106 -2805.26954 5656.07768 -2805.4295 5656.11106 -2805.58946 5656.20561 -2805.72272 5656.34557 -2805.80705 5656.47171 -2805.85119 5656.66463 -2805.97241 5656.82574 -2806.13352 5656.8941 -2806.24231 5656.98339 -2806.34223 5657.10068 -2806.40705 5657.23279 -2806.4295 5657.32699 -2806.4295 5657.48006 -2806.39905 5657.60983 -2806.31234 5657.65814 -2806.26403 5657.97221 -2806.04411 5658.3197 -2805.88208 5658.69005 -2805.78284 5659.072 -2805.74943 5659.45395 -2805.78284 5659.8243 -2805.88208 5660.17179 -2806.04411 5660.48586 -2806.26403 5660.75697 -2806.53514 5660.97689 -2806.84921 5661.13892 -2807.1967 5661.23816 -2807.56705 5661.27157 -2807.949 5661.23816 -2808.33095 5661.13892 -2808.7013 5660.97689 -2809.04879 5660.75697 -2809.36286 5660.48586 -2809.63397 5660.17179 -2809.85389 5659.8243 -2810.01592 5659.45395 -2810.11516 5659.072 -2810.14857 5658.69005 -2810.11516 5658.3197 -2810.01592 5657.97221 -2809.85389 5657.65814 -2809.63397 5657.61083 -2809.58666 5657.48106 -2809.49995 5657.32799 -2809.4695 5657.23216 -2809.4695 5657.10005 -2809.49195 5656.98276 -2809.55677 5656.89347 -2809.65669 5656.82574 -2809.76448 5656.66463 -2809.92559 5656.47171 -2810.04681 5656.25666 -2810.12206 5656.00779 -2810.1501 5654.08421 -2810.1501 5653.83534 -2810.12206 5653.62029 -2810.04681 5653.45881 -2809.94535 5653.32036 -2809.89101 5653.17164 -2809.89101 5653.03319 -2809.94535 5652.87171 -2810.04681 5652.65666 -2810.12206 5652.40779 -2810.1501 5650.48421 -2810.1501 5650.23534 -2810.12206 5650.02029 -2810.04681 5649.82737 -2809.92559 5649.66626 -2809.76448 5649.59853 -2809.65669 5649.50924 -2809.55677 5649.39195 -2809.49195 5649.25984 -2809.4695 5646.17101 -2809.4695 5646.01794 -2809.49995 5645.88817 -2809.58666 5645.84086 -2809.63397 5645.52679 -2809.85389 5645.1793 -2810.01592 5644.80895 -2810.11516 5644.427 -2810.14857 5644.04505 -2810.11516 5643.6747 -2810.01592 5643.32721 -2809.85389 5643.01314 -2809.63397 5642.63205 -2809.25745 5642.49066 -2809.2008 5642.33834 -2809.20112 5642.19718 -2809.25835 5642.08766 -2809.36421 5641.97797 -2809.52086 5641.70686 -2809.79197 5641.39279 -2810.01189 5641.0453 -2810.17392 5640.67495 -2810.27316 5640.48508 -2810.28977 5640.33682 -2810.33262 5640.21583 -2810.42841 5640.1401 -2810.56288 5640.12091 -2810.71601 5640.16111 -2810.865 5640.25473 -2810.98769 5640.45111 -2811.08794 5640.64403 -2811.20916 5640.80514 -2811.37027 5640.92636 -2811.56319 5641.00161 -2811.77824 5641.02965 -2812.02711 5641.02965 -2812.1712 5641.0601 -2812.32427 5641.14681 -2812.45404 5641.27658 -2812.54075 5641.42965 -2812.5712 5643.60135 -2812.5712 5643.75442 -2812.54075 5643.88419 -2812.45404 5643.9709 -2812.32427 5644.00135 -2812.1712 5644.00135 -2811.94811 5644.02939 -2811.69924 5644.10464 -2811.48419 5644.22586 -2811.29127 5644.38697 -2811.13016 5644.57989 -2811.00894 5644.79494 -2810.93369 5645.04381 -2810.90565 5648.54219 -2810.90565 5648.79106 -2810.93369 5649.00611 -2811.00894 5649.19903 -2811.13016 5649.36014 -2811.29127 5649.48136 -2811.48419 5649.55661 -2811.69924 5649.58465 -2811.94811 5649.58465 -2816.23389 5649.55661 -2816.48276 5649.48136 -2816.69781 5649.36014 -2816.89073 5649.19903 -2817.05184 5648.85218 -2817.26228 5648.75763 -2817.39554 5648.72425 -2817.5555 5648.75763 -2817.71546 5648.85218 -2817.84872 5649.19903 -2818.05916 5649.36014 -2818.22027 5649.48136 -2818.41319 5649.55661 -2818.62824 5649.58465 -2818.87711 5649.58465 -2819.1003 5649.6151 -2819.25337 5649.70181 -2819.38314 5649.83158 -2819.46985 5649.98465 -2819.5003 5651.38956 -2819.5003 5651.56466 -2819.45994 5651.68648 -2819.3951 5652.02921 -2819.15511 5652.3767 -2818.99308 5652.74705 -2818.89384 5653.129 -2818.86043 5653.51095 -2818.89384 5653.8813 -2818.99308 5654.22879 -2819.15511 5654.54286 -2819.37503 5654.81397 -2819.64614 5655.03389 -2819.96021 5655.19592 -2820.3077 5655.29516 -2820.67805 5655.32857 -2821.06 5655.29516 -2821.44195 5655.19592 -2821.8123 5655.03389 -2822.15979 5654.81397 -2822.47386 5654.54286 -2822.74497 5654.22879 -2822.96489 5653.8813 -2823.12692 5653.51095 -2823.22616 5653.129 -2823.25957 5652.74705 -2823.22616 5652.3767 -2823.12692 5652.02921 -2822.96489 5651.71179 -2822.74262 5651.61715 -2822.65176 5651.48943 -2822.56921 5651.34012 -2822.5403 5649.98465 -2822.5403 5649.83158 -2822.57075 5649.70181 -2822.65746 5649.6151 -2822.78723 5649.58465 -2822.9403 5649.58465 -2823.16289 5649.55661 -2823.41176 5649.48136 -2823.62681 5649.36014 -2823.81973 5649.19903 -2823.98084 5649.00611 -2824.10206 5648.79106 -2824.17731 5648.54219 -2824.20535 5645.04381 -2824.20535 5644.79494 -2824.17731 5644.57989 -2824.10206 5644.38697 -2823.98084 5644.22586 -2823.81973 5644.10464 -2823.62681 5644.02939 -2823.41176 5644.00135 -2823.16289 5644.00135 -2818.87711 5644.02939 -2818.62824 5644.10464 -2818.41319 5644.22586 -2818.22027 5644.38697 -2818.05916 5644.73382 -2817.84872 5644.82837 -2817.71546 5644.86175 -2817.5555 5644.82837 -2817.39554 5644.73382 -2817.26228 5644.38697 -2817.05184 5644.22586 -2816.89073 5644.10464 -2816.69781 5644.02939 -2816.48276 5644.00135 -2816.23389 5644.00135 -2816.0112 5643.9709 -2815.85813 5643.88419 -2815.72836 5643.75442 -2815.64165 5643.60135 -2815.6112 5641.49797 -2815.6112 5641.39044 -2815.61985 5641.24981 -2815.66064 5641.13327 -2815.74931 5641.05645 -2815.87397 5641.02965 -2816.01793 5641.02965 -2816.31289 5641.00161 -2816.56176 5640.92636 -2816.77681 5640.80514 -2816.96973 5640.64403 -2817.13084 5640.29718 -2817.34128 5640.20263 -2817.47454 5640.16925 -2817.6345 5640.20263 -2817.79446 5640.29718 -2817.92772 5640.64403 -2818.13816 5640.80514 -2818.29927 5640.92636 -2818.49219 5641.00161 -2818.70724 5641.02965 -2818.95611 5641.02965 -2819.76633 5639.37382 -2819.76633 5639.37382 -2817.75535 5639.34338 -2817.60228 5639.25667 -2817.47251 5639.1269 -2817.3858 5638.97383 -2817.35535 5637.50217 -2817.35535 5637.3491 -2817.3858 5637.21933 -2817.47251 5637.13262 -2817.60228 5637.10217 -2817.75535 5637.10217 -2819.76633 5635.44635 -2819.76633 5635.44635 -2818.95611 5635.47439 -2818.70724 5635.54964 -2818.49219 5635.67086 -2818.29927 5635.83197 -2818.13816 5636.17882 -2817.92772 5636.27337 -2817.79446 5636.30675 -2817.6345 5636.27337 -2817.47454 5636.17882 -2817.34128 5635.83197 -2817.13084 5635.67086 -2816.96973 5635.54964 -2816.77681 5635.47439 -2816.56176 5635.44635 -2816.31289 5635.44635 -2812.02711 5635.47439 -2811.77824 5635.54964 -2811.56319 5635.631 -2811.43371 5635.68228 -2811.30991 5635.68979 -2811.17611 5635.6527 -2811.04734 5635.57515 -2810.93806 5631.90085 -2807.26376 5631.77108 -2807.17705 5631.61801 -2807.1466 5630.04859 -2807.1466 5629.89552 -2807.17705 5629.76575 -2807.26376 5629.67904 -2807.39353 5629.64859 -2807.5466 5629.67904 -2807.69967 5629.76575 -2807.82944 5630.79861 -2808.8623 5630.99992 -2809.10761 5631.14021 -2809.37006 5631.2266 -2809.65484 5631.2577 -2809.97065 5631.2577 -2810.60133 5631.284 -2810.74398 5631.35944 -2810.86787 5631.47411 -2810.95671 5631.61291 -2810.99882 5631.73606 -2811.01269 5631.95111 -2811.08794 5632.14403 -2811.20916 5632.30514 -2811.37027 5632.42636 -2811.56319 5632.50161 -2811.77824 5632.52965 -2812.02711 5632.52965 -2816.31289 5632.50161 -2816.56176 5632.42636 -2816.77681 5632.30514 -2816.96973 5632.14403 -2817.13084 5631.79718 -2817.34128 5631.70263 -2817.47454 5631.66925 -2817.6345 5631.70263 -2817.79446 5631.79718 -2817.92772 5632.14403 -2818.13816 5632.30514 -2818.29927 5632.42636 -2818.49219 5632.50161 -2818.70724 5632.52965 -2818.95611 5632.52965 -2823.24189 5632.50161 -2823.49076 5632.42636 -2823.70581 5632.30514 -2823.89873 5632.14403 -2824.05984 5631.95111 -2824.18106 5631.73606 -2824.25631 5631.48719 -2824.28435 5627.98881 -2824.28435 5627.73994 -2824.25631 5627.52489 -2824.18106 5627.33197 -2824.05984 5627.17086 -2823.89873 5627.04964 -2823.70581 5626.97439 -2823.49076 5626.94635 -2823.24189 5626.94635 -2822.81699 5626.92071 -2822.67609 5626.84709 -2822.55325 5626.73491 -2822.46422 5626.54241 -2822.36132 5626.2971 -2822.16001 5625.27904 -2821.14194 5625.00136 -2820.91157 5624.93616 -2820.868 5624.65254 -2820.71641 5624.5801 -2820.6864 5624.27236 -2820.59305 5624.193 -2820.57751 5623.45497 -2820.5094 5623.0837 -2820.40992 5622.73621 -2820.24789 5622.42214 -2820.02797 5622.15103 -2819.75686 5621.93111 -2819.44279 5621.76908 -2819.0953 5621.66984 -2818.72495 5621.63643 -2818.343 5621.66984 -2817.96105 5621.76908 -2817.5907 5621.93111 -2817.24321 5622.15103 -2816.92914 5622.42214 -2816.65803 5622.73621 -2816.43811 5623.0837 -2816.27608 5623.45405 -2816.17684 5623.836 -2816.14343 5624.21795 -2816.17684 5624.5883 -2816.27608 5624.93579 -2816.43811 5625.24986 -2816.65803 5625.52097 -2816.92914 5625.74089 -2817.24321 5625.84438 -2817.40807 5626.67037 -2818.23407 5626.80014 -2818.32078 5626.95322 -2818.35123 5627.10629 -2818.32078 5627.23606 -2818.23407 5627.33197 -2818.13816 5627.67882 -2817.92772 5627.77337 -2817.79446 5627.80675 -2817.6345 5627.77337 -2817.47454 5627.67882 -2817.34128 5627.33197 -2817.13084 5627.17086 -2816.96973 5627.04964 -2816.77681 5626.97439 -2816.56176 5626.94635 -2816.31289 5626.94635 -2812.02711 5626.97439 -2811.77824 5627.04964 -2811.56319 5627.17086 -2811.37027 5627.33197 -2811.20916 5627.52489 -2811.08794 5627.90574 -2810.95128 5628.02873 -2810.82476 5628.08531 -2810.65764 5628.0645 -2810.48243 5627.97032 -2810.33323 5626.86945 -2809.23236 5626.73968 -2809.14565 5626.58661 -2809.1152 5625.82834 -2809.1152 5625.44604 -2809.16615 5621.53415 -2809.16615 5621.38108 -2809.1966 5621.25131 -2809.28331 5621.1646 -2809.41308 5621.13415 -2809.56615 5621.13415 -2810.29775 5620.08857 -2810.29775 5620.08857 -2809.00141 5620.05584 -2808.84291 5619.96297 -2808.71037 5619.8252 -2808.62546 5619.66505 -2808.6021 5619.42584 -2808.61619 5619.28314 -2808.65167 5619.1629 -2808.73632 5619.08138 -2808.85869 5619.04958 -2809.00226 5619.07181 -2809.14761 5619.13811 -2809.33709 5619.16615 -2809.58596 5619.16615 -2813.47804 5619.13811 -2813.72691 5619.05987 -2813.9505 5619.03743 -2814.08261 5619.03743 -2814.52086 5618.86618 -2814.5676 5618.73203 -2814.68382 5618.66137 -2814.84665 5618.66812 -2815.02403 5618.75816 -2815.36005 5618.79157 -2815.742 5618.75816 -2816.12395 5618.65892 -2816.4943 5618.49689 -2816.84179 5618.27697 -2817.15586 5618.00586 -2817.42697 5617.69179 -2817.64689 5617.3443 -2817.80892 5616.97395 -2817.90816 5616.592 -2817.94157 5616.21005 -2817.90816 5615.8397 -2817.80892 5615.49221 -2817.64689 5615.17814 -2817.42697 5615.13073 -2817.37956 5615.00096 -2817.29285 5614.84789 -2817.2624 5614.73205 -2817.2624 5614.41624 -2817.2313 5614.13146 -2817.14491 5613.86901 -2817.00462 5613.6237 -2816.80331 5612.59689 -2815.7765 5612.39558 -2815.53119 5612.25529 -2815.26874 5612.1689 -2814.98396 5612.1378 -2814.66815 5612.1378 -2813.86034 5612.08698 -2813.47923 5612.03484 -2813.32217 5611.92358 -2813.19966 5611.77225 -2813.13267 5611.60675 -2813.13267 5611.45542 -2813.19966 5611.34416 -2813.32217 5611.29202 -2813.47923 5611.2408 -2813.86148 5611.2408 -2816.81971 5611.2671 -2816.96236 5611.34254 -2817.08625 5611.45721 -2817.17509 5611.59601 -2817.2172 5611.73976 -2817.23339 5611.95481 -2817.30864 5612.14773 -2817.42986 5612.30884 -2817.59097 5612.43006 -2817.78389 5612.50531 -2817.99894 5612.53335 -2818.24781 5612.53335 -2818.66552 5612.57107 -2818.83508 5612.67711 -2818.97267 5612.77399 -2819.04933 5613.27055 -2819.36302 5613.68435 -2819.55907 5613.83695 -2819.59716 5613.99244 -2819.57346 5614.26386 -2819.47466 5614.51021 -2819.4469 5616.43379 -2819.4469 5616.68266 -2819.47494 5616.89771 -2819.55019 5617.05919 -2819.65165 5617.19764 -2819.70599 5617.34636 -2819.70599 5617.48481 -2819.65165 5617.64629 -2819.55019 5617.86134 -2819.47494 5618.11021 -2819.4469 5618.32988 -2819.4469 5618.32988 -2820.80745 5617.87625 -2820.80745 5617.72318 -2820.8379 5617.59341 -2820.92461 5617.5067 -2821.05438 5617.47625 -2821.20745 5617.47625 -2822.08855 5617.5067 -2822.24162 5617.59341 -2822.37139 5617.72318 -2822.4581 5617.87625 -2822.48855 5618.32988 -2822.48855 5618.32988 -2823.8491 5618.11021 -2823.8491 5617.86134 -2823.82106 5617.64629 -2823.74581 5617.48481 -2823.64435 5617.34636 -2823.59001 5617.19764 -2823.59001 5617.05919 -2823.64435 5616.89771 -2823.74581 5616.68266 -2823.82106 5616.43379 -2823.8491 5614.51021 -2823.8491 5614.26134 -2823.82106 5614.04629 -2823.74581 5613.85337 -2823.62459 5613.69226 -2823.46348 5613.47647 -2823.10133 5613.3432 -2823.00678 5613.18325 -2822.9734 5611.57013 -2822.9734 5611.37529 -2822.96198 5611.27201 -2822.97216 5610.7452 -2822.93881 5610.21989 -2822.83799 5610.00526 -2822.78865 5607.20511 -2822.78865 5606.95624 -2822.76061 5606.74119 -2822.68536 5606.54827 -2822.56414 5606.38716 -2822.40303 5606.17672 -2822.05618 5606.04346 -2821.96163 5605.8835 -2821.92825 5605.72354 -2821.96163 5605.59028 -2822.05618 5605.37984 -2822.40303 5605.21873 -2822.56414 5605.02581 -2822.68536 5604.81076 -2822.76061 5604.56189 -2822.78865 5603.75167 -2822.78865 5603.75167 -2821.13283 5605.76265 -2821.13283 5605.91572 -2821.10238 5606.04549 -2821.01567 5606.1322 -2820.8859 5606.16265 -2820.73283 5606.16265 -2819.26117 5606.1322 -2819.1081 5606.04549 -2818.97833 5605.91572 -2818.89162 5605.76265 -2818.86117 5603.75167 -2818.86117 5603.75167 -2817.20535 5604.56189 -2817.20535 5604.81076 -2817.23339 5605.02581 -2817.30864 5605.21873 -2817.42986 5605.37984 -2817.59097 5605.59028 -2817.93782 5605.72354 -2818.03237 5605.8835 -2818.06575 5606.04346 -2818.03237 5606.17672 -2817.93782 5606.38716 -2817.59097 5606.54827 -2817.42986 5606.74119 -2817.30864 5606.95624 -2817.23339 5607.20511 -2817.20535 5607.8008 -2817.20535 5607.95387 -2817.1749 5608.08364 -2817.08819 5608.17035 -2816.95842 5608.2008 -2816.80535 5608.2008 -2814.9205 5608.17035 -2814.76743 5608.08364 -2814.63766 5607.95387 -2814.55095 5607.8008 -2814.5205 5607.22331 -2814.5205 5606.97444 -2814.49246 5606.75939 -2814.41721 5606.56647 -2814.29599 5606.40536 -2814.13488 5606.28414 -2813.94196 5606.20988 -2813.72974 5606.17895 -2813.41329 5606.13824 -2813.27256 5606.04958 -2813.15592 5605.92488 -2813.07903 5605.78085 -2813.0522 5603.10708 -2813.0522 5602.95401 -2813.08265 5602.82424 -2813.16935 5599.28933 -2816.7042 5599.19905 -2816.8429 5599.17264 -2817.00627 5599.21461 -2817.16635 5599.3178 -2817.29574 5599.46452 -2817.37229 5599.62968 -2817.38289 5599.81219 -2817.30864 5600.02724 -2817.23339 5600.27611 -2817.20535 5601.08633 -2817.20535 5601.08633 -2818.86117 5598.83365 -2818.86117 5598.68058 -2818.89162 5598.55081 -2818.97833 5598.4641 -2819.1081 5598.43365 -2819.26117 5598.43365 -2819.99188 5597.55055 -2819.99188 5597.55055 -2819.53825 5597.5201 -2819.38518 5597.43339 -2819.25541 5597.30362 -2819.1687 5597.15055 -2819.13825 5596.26945 -2819.13825 5596.11638 -2819.1687 5595.98661 -2819.25541 5595.8999 -2819.38518 5595.86945 -2819.53825 5595.86945 -2819.99188 5592.55055 -2819.99188 5592.55055 -2819.53825 5592.5201 -2819.38518 5592.43339 -2819.25541 5592.30362 -2819.1687 5592.15055 -2819.13825 5591.26945 -2819.13825 5591.11638 -2819.1687 5590.98661 -2819.25541 5590.8999 -2819.38518 5590.86945 -2819.53825 5590.86945 -2819.99188 5589.4291 -2819.99188 5589.27603 -2820.02232 5589.14626 -2820.10903 5589.05955 -2820.2388 5589.0291 -2820.39188 5589.0291 -2821.07613 5589.05955 -2821.2292 5589.14626 -2821.35897 5589.27603 -2821.44568 5589.4291 -2821.47613 5590.86945 -2821.47613 5590.86945 -2822.73825 5590.55136 -2822.73825 5590.30249 -2822.71021 5590.08744 -2822.63496 5589.89452 -2822.51374 5589.73341 -2822.35263 5589.53113 -2822.01178 5589.41485 -2821.91905 5589.27273 -2821.87521 5589.12442 -2821.88633 5588.99042 -2821.95086 5588.88926 -2822.05988 5588.80459 -2822.19463 5588.64348 -2822.35574 5588.45056 -2822.47696 5588.23551 -2822.55221 5587.98664 -2822.58025 5585.66936 -2822.58025 5585.42049 -2822.55221 5585.20544 -2822.47696 5585.01252 -2822.35574 5584.87024 -2822.21346 5584.74047 -2822.12675 5584.58739 -2822.0963 5583.99061 -2822.0963 5583.83753 -2822.12675 5583.70776 -2822.21346 5583.60448 -2822.31674 5583.41156 -2822.43796 5583.19651 -2822.51321 5582.94764 -2822.54125 5580.63036 -2822.54125 5580.38149 -2822.51321 5580.16644 -2822.43796 5579.97352 -2822.31674 5579.87024 -2822.21346 5579.74047 -2822.12675 5579.58739 -2822.0963 5578.95161 -2822.0963 5578.79853 -2822.12675 5578.66876 -2822.21346 5578.56548 -2822.31674 5578.37256 -2822.43796 5578.15751 -2822.51321 5577.90864 -2822.54125 5575.59136 -2822.54125 5575.34249 -2822.51321 5575.12744 -2822.43796 5574.93452 -2822.31674 5574.79184 -2822.17406 5574.66207 -2822.08735 5574.50899 -2822.0569 5574.19915 -2822.0569 5573.88334 -2822.0258 5573.59856 -2821.93941 5573.33611 -2821.79912 5573.0908 -2821.59781 5571.23979 -2819.7468 5571.13625 -2819.62064 5571.00981 -2819.51859 5570.85321 -2819.47525 5570.69229 -2819.49777 5570.55361 -2819.58245 5570.46005 -2819.71529 5570.42705 -2819.87439 5570.42705 -2820.11485 5570.39421 -2820.44833 5570.30267 -2820.75009 5570.15401 -2821.0282 5569.94144 -2821.28723 5567.54793 -2823.68074 5567.2889 -2823.89331 5567.01079 -2824.04197 5566.70903 -2824.13351 5566.37555 -2824.16635 5534.72495 -2824.16635 5534.57188 -2824.1968 5534.44211 -2824.28351 5534.3554 -2824.41328 5534.32495 -2824.56635 5534.32495 -2824.89514 5534.29691 -2825.14401 5534.22166 -2825.35906 5534.10044 -2825.55198 5533.93933 -2825.71309 5533.74641 -2825.83431 5533.53136 -2825.90956 5533.28249 -2825.9376 5530.57151 -2825.9376 5530.32264 -2825.90956 5530.10759 -2825.83431 5529.91717 -2825.71466 5529.71394 -2825.50541 5529.58276 -2825.41567 5529.427 -2825.3841 5529.27124 -2825.41567 5529.14006 -2825.50541 5528.93683 -2825.71466 5528.74641 -2825.83431 5528.53136 -2825.90956 5528.28249 -2825.9376 5525.57151 -2825.9376 5525.32264 -2825.90956 5525.10759 -2825.83431 5524.91467 -2825.71309 5524.75356 -2825.55198 5524.63234 -2825.35906 5524.55709 -2825.14401 5524.52905 -2824.89514 5524.52905 -2818.64086 5524.55709 -2818.39199 5524.63234 -2818.17694 5524.75356 -2817.98402 5524.91467 -2817.82291 5525.12896 -2817.68826 5525.22888 -2817.59897 5525.2937 -2817.48168 5525.31615 -2817.34957 5525.31615 -2816.68955 5525.34899 -2816.35607 5525.44053 -2816.05431 5525.58919 -2815.7762 5525.80176 -2815.51717 5527.21097 -2814.10796 5527.47 -2813.89539 5527.74811 -2813.74673 5528.04987 -2813.65519 5528.38335 -2813.62235 5534.44645 -2813.62235 5534.77993 -2813.65519 5535.08169 -2813.74673 5535.3598 -2813.89539 5535.61882 -2814.10796 5538.99247 -2817.48169 5539.142 -2817.57598 5539.31756 -2817.59661 5539.48488 -2817.53956 5539.61126 -2817.41597 5539.67204 -2817.24997 5539.62725 -2816.82479 5539.62725 -2814.63663 5541.87363 -2814.63663 5541.87363 -2817.51375 5541.90407 -2817.66682 5541.99078 -2817.79659 5542.12055 -2817.8833 5542.27363 -2817.91375 5544.92638 -2817.91375 5545.07945 -2817.8833 5545.20922 -2817.79659 5545.29593 -2817.66682 5545.32637 -2817.51375 5545.32637 -2814.63663 5547.57275 -2814.63663 5547.57275 -2816.82479 5547.54471 -2817.07366 5547.40409 -2817.46006 5547.41737 -2817.62879 5547.49924 -2817.77693 5547.63504 -2817.87794 5547.80047 -2817.91375 5550.0112 -2817.91375 5550.16428 -2817.8833 5550.29405 -2817.79659 5552.0108 -2816.07983 5552.09048 -2815.96604 5552.12644 -2815.83185 5552.11433 -2815.69346 5552.05562 -2815.56756 5551.89575 -2815.33924 5551.73232 -2814.98876 5551.63223 -2814.61523 5551.597 -2814.21254 5551.597 -2808.64746 5551.63223 -2808.24477 5551.73232 -2807.87124 5551.89575 -2807.52076 5552.11755 -2807.20399 5552.39099 -2806.93055 5552.70776 -2806.70875 5553.05824 -2806.54532 5553.43177 -2806.44523 5553.817 -2806.41153 5554.20223 -2806.44523 5554.57576 -2806.54532 5554.92624 -2806.70875 5555.24301 -2806.93055 5555.51645 -2807.20399 5555.73825 -2807.52076 5555.90168 -2807.87124 5555.93063 -2807.97927 5556.01058 -2808.13286 5556.14795 -2808.23827 5556.317 -2808.27575 5556.48605 -2808.23827 5556.62342 -2808.13286 5556.70337 -2807.97927 5556.73232 -2807.87124 5556.89575 -2807.52076 5557.11755 -2807.20399 5557.39099 -2806.93055 5557.70776 -2806.70875 5557.967 -2806.58786 5557.967 -2809.18 5556.437 -2809.18 5556.28393 -2809.21045 5556.15416 -2809.29716 5556.06745 -2809.42693 5556.037 -2809.58 5556.037 -2813.28 5556.06745 -2813.43307 5556.15416 -2813.56284 5556.28393 -2813.64955 5556.437 -2813.68 5557.967 -2813.68 5557.967 -2816.27214 5557.70776 -2816.15125 5557.39099 -2815.92945 5557.11755 -2815.65601 5556.89575 -2815.33924 5556.73232 -2814.98876 5556.70337 -2814.88073 5556.62342 -2814.72714 5556.48605 -2814.62173 5556.317 -2814.58425 5556.14795 -2814.62173 5556.01058 -2814.72714 5555.93063 -2814.88073 5555.90168 -2814.98876 5555.73825 -2815.33924 5555.49939 -2815.68037 5555.44556 -2815.78952 5555.42705 -2815.9098 5555.42705 -2816.53215 5555.39421 -2816.86563 5555.30267 -2817.16739 5555.15401 -2817.4455 5554.94144 -2817.70453 5552.38355 -2820.26241 5552.29685 -2820.39218 5552.2664 -2820.54525 5552.29685 -2820.69832 5552.38355 -2820.82809 5552.51332 -2820.9148 5552.6664 -2820.94525 5557.95159 -2820.94525 5558.10051 -2820.9165 5558.22801 -2820.83437 5558.31578 -2820.71067 5558.35119 -2820.5632 5558.32914 -2820.41314 5558.24879 -2820.18351 5558.22075 -2819.93464 5558.22075 -2819.61655 5559.48288 -2819.61655 5559.48288 -2820.54525 5559.51332 -2820.69832 5559.60003 -2820.82809 5559.7298 -2820.9148 5559.88288 -2820.94525 5560.56713 -2820.94525 5560.7202 -2820.9148 5560.84997 -2820.82809 5560.93668 -2820.69832 5560.96713 -2820.54525 5560.96713 -2819.61655 5561.42076 -2819.61655 5561.57383 -2819.5861 5561.7036 -2819.49939 5561.79031 -2819.36963 5561.82076 -2819.21655 5561.82077 -2818.33545 5561.79032 -2818.18238 5561.70361 -2818.05261 5561.57384 -2817.9659 5561.42077 -2817.93545 5560.96713 -2817.93545 5560.96713 -2816.5749 5561.18679 -2816.5749 5561.376 -2816.59622 5561.54226 -2816.57984 5561.68732 -2816.49699 5561.7859 -2816.36211 5561.82079 -2816.19874 5561.8208 -2815.26718 5561.78332 -2815.09813 5561.73232 -2814.98876 5561.70337 -2814.88073 5561.62342 -2814.72714 5561.48605 -2814.62173 5561.317 -2814.58425 5561.14795 -2814.62173 5561.01058 -2814.72714 5560.93063 -2814.88073 5560.90168 -2814.98876 5560.73825 -2815.33924 5560.51645 -2815.65601 5560.39755 -2815.7749 5559.88288 -2815.7749 5559.7298 -2815.80535 5559.667 -2815.84731 5559.667 -2813.68 5561.197 -2813.68 5561.35007 -2813.64955 5561.47984 -2813.56284 5561.56655 -2813.43307 5561.597 -2813.28 5561.597 -2809.58 5561.56655 -2809.42693 5561.47984 -2809.29716 5561.35007 -2809.21045 5561.197 -2809.18 5559.667 -2809.18 5559.667 -2806.5049 5559.63655 -2806.35182 5559.54984 -2806.22205 5541.24075 -2787.91288 5541.13301 -2787.83609 5541.00612 -2787.79864 5540.88623 -2787.78409 5540.48533 -2787.66796 5540.10825 -2787.48904 5539.76475 -2787.25194 5539.46374 -2786.96281 5539.213 -2786.62914 5539.01903 -2786.25956 5538.88686 -2785.86366 5538.81991 -2785.45169 5538.81991 -2785.03431 5538.88686 -2784.62234 5539.01903 -2784.22644 5539.213 -2783.85686 5539.46374 -2783.52319 5539.76475 -2783.23406 5540.10825 -2782.99696 5540.48533 -2782.81804 5540.88623 -2782.70191 5541.30057 -2782.6516 5541.71761 -2782.66841 5542.12656 -2782.7519 5542.51681 -2782.8999 5542.87828 -2783.10859 5543.20158 -2783.37256 5543.47835 -2783.68498 5543.70143 -2784.03774 5543.86503 -2784.42172 5544.00109 -2784.96959 5544.08134 -2785.0846 5550.91416 -2791.91742 5551.03695 -2792.00116 5551.18183 -2792.03429 5551.32881 -2792.01224 5551.45759 -2791.93804 5551.5504 -2791.82196 5551.59441 -2791.68 5552.967 -2791.68 5552.967 -2793.80458 5552.99745 -2793.95765 5553.08416 -2794.08742 5553.98416 -2794.98742 5565.22789 -2806.23115 5565.35935 -2806.37393 5565.55681 -2806.65565 5565.70704 -2806.97783 5565.7974 -2807.31503 5565.82706 -2807.65414 5565.86302 -2807.78833 5565.93063 -2807.97927 5566.01058 -2808.13286 5566.14795 -2808.23827 5566.317 -2808.27575 5566.48605 -2808.23827 5566.62342 -2808.13286 5566.70337 -2807.97927 5566.73232 -2807.87124 5566.89575 -2807.52076 5567.13361 -2807.18106 5567.18744 -2807.07191 5567.20595 -2806.95163 5567.20595 -2802.16205 5567.23879 -2801.82857 5567.33033 -2801.52681 5567.47899 -2801.2487 5567.69156 -2800.98967 5573.69258 -2794.98866 5573.77013 -2794.87937 5573.80722 -2794.7506 5573.79971 -2794.61681 5573.74843 -2794.493 5573.66719 -2794.36371 5573.59194 -2794.14866 5573.5639 -2793.89979 5573.5639 -2791.97621 5573.59194 -2791.72734 5573.67808 -2791.48116 5573.70013 -2791.3311 5573.66472 -2791.18363 5573.57696 -2791.05993 5573.44945 -2790.9778 5573.30053 -2790.94905 5571.437 -2790.94905 5571.28393 -2790.9795 5571.15416 -2791.06621 5571.06745 -2791.19598 5571.037 -2791.34905 5571.037 -2792.21254 5571.00177 -2792.61523 5570.90168 -2792.98876 5570.73825 -2793.33924 5570.51645 -2793.65601 5570.24301 -2793.92945 5569.92624 -2794.15125 5569.57576 -2794.31468 5569.20223 -2794.41477 5568.817 -2794.44847 5568.43177 -2794.41477 5568.05824 -2794.31468 5567.70776 -2794.15125 5567.39099 -2793.92945 5567.11755 -2793.65601 5566.89575 -2793.33924 5566.73232 -2792.98876 5566.70337 -2792.88073 5566.62342 -2792.72714 5566.48605 -2792.62173 5566.317 -2792.58425 5566.14795 -2792.62173 5566.01058 -2792.72714 5565.93063 -2792.88073 5565.90168 -2792.98876 5565.73825 -2793.33924 5565.51645 -2793.65601 5565.24301 -2793.92945 5564.92624 -2794.15125 5564.57576 -2794.31468 5564.20223 -2794.41477 5563.817 -2794.44847 5563.43177 -2794.41477 5563.05824 -2794.31468 5562.70776 -2794.15125 5562.39099 -2793.92945 5562.11755 -2793.65601 5561.89575 -2793.33924 5561.73232 -2792.98876 5561.70337 -2792.88073 5561.62342 -2792.72714 5561.48605 -2792.62173 5561.317 -2792.58425 5561.14795 -2792.62173 5561.01058 -2792.72714 5560.93063 -2792.88073 5560.90168 -2792.98876 5560.73825 -2793.33924 5560.51645 -2793.65601 5560.24301 -2793.92945 5559.92624 -2794.15125 5559.57576 -2794.31468 5559.20223 -2794.41477 5558.817 -2794.44847 5558.43177 -2794.41477 5558.05824 -2794.31468 5557.70776 -2794.15125 5557.39099 -2793.92945 5557.11755 -2793.65601 5556.89575 -2793.33924 5556.73232 -2792.98876 5556.70337 -2792.88073 5556.62342 -2792.72714 5556.48605 -2792.62173 5556.317 -2792.58425 5556.14795 -2792.62173 5556.01058 -2792.72714 5555.93063 -2792.88073 5555.90168 -2792.98876 5555.73825 -2793.33924 5555.51645 -2793.65601 5555.24301 -2793.92945 5554.92624 -2794.15125 5554.667 -2794.27214 5554.667 -2791.68 5556.197 -2791.68 5556.35007 -2791.64955 5556.47984 -2791.56284 5556.56655 -2791.43307 5556.597 -2791.28 5556.597 -2787.58 5556.56655 -2787.42693 5556.47984 -2787.29716 5556.35007 -2787.21045 5556.197 -2787.18 5554.667 -2787.18 5554.667 -2784.58786 5554.92624 -2784.70875 5555.24301 -2784.93055 5555.51645 -2785.20399 5555.73825 -2785.52076 5555.90168 -2785.87124 5555.93063 -2785.97927 5556.01058 -2786.13286 5556.14795 -2786.23827 5556.317 -2786.27575 5556.48605 -2786.23827 5556.62342 -2786.13286 5556.70337 -2785.97927 5556.77477 -2785.78019 5556.81225 -2785.61115 5556.81225 -2781.46216 5556.84275 -2781.09608 5556.84275 -2780.25536 5556.87079 -2780.00649 5556.94604 -2779.79144 5557.06726 -2779.59852 5557.22837 -2779.43741 5557.42129 -2779.31619 5557.63634 -2779.24094 5557.88521 -2779.2129 5559.80879 -2779.2129 5560.05766 -2779.24094 5560.27271 -2779.31619 5560.43419 -2779.41765 5560.57264 -2779.47199 5560.72136 -2779.47199 5560.85981 -2779.41765 5561.02129 -2779.31619 5561.23634 -2779.24094 5561.48521 -2779.2129 5561.70488 -2779.2129 5561.70488 -2780.57345 5561.25125 -2780.57345 5561.09818 -2780.6039 5560.96841 -2780.69061 5560.8817 -2780.82038 5560.85125 -2780.97345 5560.85125 -2781.85455 5560.8817 -2782.00762 5560.96841 -2782.13739 5561.09818 -2782.2241 5561.25125 -2782.25455 5561.70488 -2782.25455 5561.70488 -2783.6151 5561.48521 -2783.6151 5561.26554 -2783.59035 5561.09928 -2783.60672 5560.95421 -2783.68958 5560.85564 -2783.82446 5560.82075 -2783.98783 5560.82075 -2785.609 5560.85823 -2785.77805 5560.93063 -2785.97927 5561.01058 -2786.13286 5561.14795 -2786.23827 5561.317 -2786.27575 5561.48605 -2786.23827 5561.62342 -2786.13286 5561.70337 -2785.97927 5561.73232 -2785.87124 5561.89575 -2785.52076 5562.11755 -2785.20399 5562.39099 -2784.93055 5562.70776 -2784.70875 5563.05824 -2784.54532 5563.43177 -2784.44523 5563.817 -2784.41153 5564.20223 -2784.44523 5564.57576 -2784.54532 5564.92624 -2784.70875 5565.24301 -2784.93055 5565.51645 -2785.20399 5565.73825 -2785.52076 5565.90168 -2785.87124 5565.93063 -2785.97927 5566.01058 -2786.13286 5566.14795 -2786.23827 5566.317 -2786.27575 5566.48605 -2786.23827 5566.62342 -2786.13286 5566.70337 -2785.97927 5566.73232 -2785.87124 5566.89575 -2785.52076 5567.11755 -2785.20399 5567.39099 -2784.93055 5567.70776 -2784.70875 5568.05824 -2784.54532 5568.43177 -2784.44523 5568.817 -2784.41153 5569.20223 -2784.44523 5569.57576 -2784.54532 5569.92624 -2784.70875 5570.24301 -2784.93055 5570.51645 -2785.20399 5570.73825 -2785.52076 5570.90168 -2785.87124 5571.00177 -2786.24477 5571.037 -2786.64746 5571.037 -2787.32795 5571.06745 -2787.48102 5571.15416 -2787.61079 5571.28393 -2787.6975 5571.437 -2787.72795 5573.61414 -2787.72795 5573.76722 -2787.6975 5573.89699 -2787.61079 5573.94952 -2787.55826 5574.14244 -2787.43704 5574.35749 -2787.36179 5574.60636 -2787.33375 5576.92364 -2787.33375 5577.17251 -2787.36179 5577.38756 -2787.43704 5577.58048 -2787.55826 5577.63301 -2787.61079 5577.76278 -2787.6975 5577.91586 -2787.72795 5578.61514 -2787.72795 5578.72688 -2787.71203 5578.82972 -2787.66552 5579.06544 -2787.51569 5579.27949 -2787.44079 5579.52836 -2787.41275 5581.84564 -2787.41275 5582.09451 -2787.44079 5582.30956 -2787.51604 5582.50248 -2787.63726 5582.66359 -2787.79837 5582.78481 -2787.99129 5582.86006 -2788.20634 5582.8881 -2788.45521 5582.8881 -2790.37879 5582.86006 -2790.62766 5582.78481 -2790.84271 5582.68335 -2791.00419 5582.62901 -2791.14264 5582.62901 -2791.29136 5582.68335 -2791.42981 5582.78481 -2791.59129 5582.86006 -2791.80634 5582.8881 -2792.05521 5582.8881 -2793.97879 5582.86006 -2794.22766 5582.78481 -2794.44271 5582.66359 -2794.63563 5582.57171 -2794.72751 5582.485 -2794.85728 5582.45455 -2795.01036 5582.45455 -2795.83042 5582.477 -2795.96253 5582.54182 -2796.07982 5582.65948 -2796.18026 5582.82059 -2796.34137 5582.94181 -2796.53429 5583.01706 -2796.74934 5583.0451 -2796.99821 5583.0451 -2798.92179 5583.01706 -2799.17066 5582.94181 -2799.38571 5582.84035 -2799.54719 5582.78601 -2799.68564 5582.78601 -2799.83436 5582.84035 -2799.97281 5582.94181 -2800.13429 5583.01706 -2800.34934 5583.0451 -2800.59821 5583.0451 -2802.52179 5583.01706 -2802.77066 5582.94181 -2802.98571 5582.82059 -2803.17863 5582.65948 -2803.33974 5582.46656 -2803.46096 5582.25151 -2803.53621 5582.00264 -2803.56425 5579.68536 -2803.56425 5579.43649 -2803.53621 5579.22144 -2803.46096 5579.02852 -2803.33974 5578.88644 -2803.19766 5578.75667 -2803.11095 5578.60359 -2803.0805 5576.14201 -2803.0805 5575.98894 -2803.11095 5575.85917 -2803.19766 5575.80086 -2803.25597 5575.48679 -2803.47589 5575.1393 -2803.63792 5574.76895 -2803.73716 5574.387 -2803.77057 5574.00505 -2803.73716 5573.6347 -2803.63792 5573.28721 -2803.47589 5572.97314 -2803.25597 5572.70203 -2802.98486 5572.48211 -2802.67079 5572.32008 -2802.3233 5572.17918 -2801.801 5572.08765 -2801.68171 5571.95854 -2801.60464 5571.81009 -2801.58069 5571.6633 -2801.61323 5571.53889 -2801.69768 5570.54421 -2802.69235 5570.4575 -2802.82212 5570.42705 -2802.9752 5570.42705 -2806.9502 5570.44556 -2807.07048 5570.49939 -2807.17963 5570.73825 -2807.52076 5570.90168 -2807.87124 5571.00177 -2808.24477 5571.037 -2808.64746 5571.037 -2813.1359 5571.06357 -2813.27925 5571.13974 -2813.40355 5571.2554 -2813.4923 5571.39519 -2813.53371 5571.54053 -2813.52227 5571.91905 -2813.42084 5572.301 -2813.38743 5572.68295 -2813.42084 5573.0533 -2813.52008 5573.40079 -2813.68211 5573.71486 -2813.90203 5573.98597 -2814.17314 5574.20589 -2814.48721 5574.36792 -2814.8347 5574.4478 -2815.02598 5574.55683 -2815.12714 5574.69527 -2815.18148 5574.844 -2815.18148 5574.98245 -2815.12714 5575.12744 -2815.03604 5575.34249 -2814.96079 5575.59136 -2814.93275 5575.90945 -2814.93275 5575.90945 -2816.19487 5574.6901 -2816.19487 5574.54241 -2816.22314 5574.4156 -2816.30393 5574.32757 -2816.42583 5574.20589 -2816.68679 5573.98578 -2817.00113 5573.90171 -2817.1313 5573.87341 -2817.28366 5573.90515 -2817.43533 5573.99215 -2817.56357 5574.12136 -2817.64911 5574.27339 -2817.67913 5575.90945 -2817.67913 5575.90945 -2818.13275 5575.9399 -2818.28582 5576.02661 -2818.41559 5576.15638 -2818.5023 5576.30945 -2818.53275 5577.19055 -2818.53275 5577.34362 -2818.5023 5577.47339 -2818.41559 5577.5601 -2818.28582 5577.59055 -2818.13275 5577.59055 -2817.67913 5579.1879 -2817.67913 5579.34097 -2817.64868 5579.47074 -2817.56197 5579.55745 -2817.4322 5579.5879 -2817.27913 5579.5879 -2816.59487 5579.55745 -2816.4418 5579.47074 -2816.31203 5579.34097 -2816.22532 5579.1879 -2816.19487 5577.59055 -2816.19487 5577.59055 -2814.93275 5577.90864 -2814.93275 5578.15751 -2814.96079 5578.37256 -2815.03604 5578.56548 -2815.15726 5578.72659 -2815.31837 5578.84781 -2815.51129 5578.89195 -2815.63743 5578.97628 -2815.77739 5579.10954 -2815.87194 5579.2695 -2815.90532 5579.42946 -2815.87194 5579.56272 -2815.77739 5579.64705 -2815.63743 5579.69119 -2815.51129 5579.81241 -2815.31837 5579.97352 -2815.15726 5580.08171 -2815.08928 5580.18163 -2814.99998 5580.24645 -2814.8827 5580.2689 -2814.75059 5580.2689 -2810.37075 5580.3 -2810.05494 5580.38639 -2809.77016 5580.52668 -2809.50771 5580.72799 -2809.2624 5583.4561 -2806.53429 5583.70141 -2806.33298 5583.96386 -2806.19269 5584.24864 -2806.1063 5584.56445 -2806.0752 5584.86828 -2806.0752 5585.03507 -2806.03877 5585.17147 -2805.93611 5585.25265 -2805.78593 5585.26381 -2805.61558 5585.20293 -2805.45609 5585.08109 -2805.33651 5584.86637 -2805.20159 5584.70526 -2805.04048 5584.58404 -2804.84756 5584.50879 -2804.63251 5584.48075 -2804.38364 5584.48075 -2804.06555 5585.74287 -2804.06555 5585.74287 -2805.6752 5585.77332 -2805.82827 5585.86003 -2805.95804 5585.9898 -2806.04475 5586.14287 -2806.0752 5586.82712 -2806.0752 5586.9802 -2806.04475 5587.10997 -2805.95804 5587.19668 -2805.82827 5587.22712 -2805.6752 5587.22712 -2804.06555 5587.68075 -2804.06555 5587.83382 -2804.0351 5587.96359 -2803.94839 5588.0503 -2803.81862 5588.08075 -2803.66555 5588.08075 -2802.78445 5588.0503 -2802.63138 5587.96359 -2802.50161 5587.83382 -2802.4149 5587.68075 -2802.38445 5587.22712 -2802.38445 5587.22712 -2801.0239 5587.44679 -2801.0239 5587.69566 -2801.05194 5587.91071 -2801.12719 5588.07219 -2801.22865 5588.21064 -2801.28299 5588.35936 -2801.28299 5588.49781 -2801.22865 5588.65929 -2801.12719 5588.87434 -2801.05194 5589.12321 -2801.0239 5591.04679 -2801.0239 5591.29566 -2801.05194 5591.51071 -2801.12719 5591.70363 -2801.24841 5591.86474 -2801.40952 5591.93285 -2801.51791 5592.02214 -2801.61783 5592.13943 -2801.68265 5592.27154 -2801.7051 5597.41091 -2801.7051 5597.56398 -2801.67465 5597.69375 -2801.58794 5598.653 -2800.62869 5598.89831 -2800.42738 5599.16076 -2800.28709 5599.44554 -2800.2007 5599.76135 -2800.1696 5601.48723 -2800.1696 5601.86777 -2800.11898 5602.02483 -2800.06684 5602.14734 -2799.95558 5602.21433 -2799.80425 5602.21433 -2799.63875 5602.14734 -2799.48742 5602.02483 -2799.37616 5601.86777 -2799.32402 5601.62009 -2799.29611 5601.3965 -2799.21787 5601.26439 -2799.19542 5600.57634 -2799.19542 5600.4265 -2799.1663 5597.07576 -2799.1663 5596.92268 -2799.19675 5596.74328 -2799.29745 5596.59574 -2799.43315 5596.27479 -2799.65789 5595.9273 -2799.81992 5595.55695 -2799.91916 5595.175 -2799.95257 5594.79305 -2799.91916 5594.4227 -2799.81992 5594.07521 -2799.65789 5593.76114 -2799.43797 5593.49003 -2799.16686 5593.27011 -2798.85279 5593.10808 -2798.5053 5593.00884 -2798.13495 5592.97543 -2797.753 5593.00884 -2797.37105 5593.10808 -2797.0007 5593.27011 -2796.65321 5593.49003 -2796.33914 5593.76114 -2796.06803 5594.07521 -2795.84811 5594.4227 -2795.68608 5594.79305 -2795.58684 5595.175 -2795.55343 5595.40583 -2795.57362 5595.55764 -2795.55767 5595.69242 -2795.486 5595.79054 -2795.36907 5595.83771 -2795.22389 5595.82707 -2795.07162 5595.80384 -2794.98495 5595.77043 -2794.603 5595.80384 -2794.22105 5595.90308 -2793.8507 5596.06511 -2793.50321 5596.28503 -2793.18914 5596.55614 -2792.91803 5596.87021 -2792.69811 5597.2177 -2792.53608 5597.58805 -2792.43684 5597.97 -2792.40343 5598.35195 -2792.43684 5598.7223 -2792.53608 5599.06979 -2792.69811 5599.38386 -2792.91803 5599.60487 -2793.13905 5599.67872 -2793.19726 5599.76411 -2793.23663 5600.00081 -2793.31353 5600.26094 -2793.46372 5600.43745 -2793.61448 5601.03032 -2794.20735 5601.15321 -2794.29113 5601.29821 -2794.32423 5601.44528 -2794.30206 5601.62009 -2794.24089 5601.86896 -2794.21285 5605.78085 -2794.21285 5605.93392 -2794.1824 5606.06369 -2794.09569 5606.1504 -2793.96592 5606.18085 -2793.81285 5606.18085 -2789.90096 5606.2323 -2789.51723 5606.2323 -2787.01211 5606.20985 -2786.88 5606.14503 -2786.76271 5606.04511 -2786.67342 5605.87852 -2786.56874 5605.71741 -2786.40763 5605.59619 -2786.21471 5605.52094 -2785.99966 5605.4929 -2785.75079 5605.4929 -2783.82721 5605.52094 -2783.57834 5605.59619 -2783.36329 5605.69765 -2783.20181 5605.75199 -2783.06336 5605.75199 -2782.91464 5605.69765 -2782.77619 5605.59619 -2782.61471 5605.52094 -2782.39966 5605.4929 -2782.15079 5605.4929 -2780.22721 5605.52094 -2779.97834 5605.59619 -2779.76329 5605.71741 -2779.57037 5605.87852 -2779.40926 5606.07144 -2779.28804 5606.28649 -2779.21279 5606.53536 -2779.18475 5607.38326 -2779.18475 5607.53633 -2779.1543 5607.6661 -2779.06759 5614.7092 -2772.02449 5614.95451 -2771.82318 5615.21696 -2771.68289 5615.50174 -2771.5965 5615.81755 -2771.5654 5654.25709 -2771.5654 5654.41016 -2771.53495 5654.53993 -2771.44824 5654.58814 -2771.40003 5654.90221 -2771.18011 5655.2497 -2771.01808 5655.62005 -2770.91884 5656.002 -2770.88543 Z M 5568.82304 -2576.5068 L 5569.07191 -2576.53484 5569.28696 -2576.61009 5569.47988 -2576.73131 5569.64099 -2576.89242 5569.76221 -2577.08534 5569.83746 -2577.30039 5569.8655 -2577.54926 5569.8655 -2590.10274 5569.83746 -2590.35161 5569.76221 -2590.56666 5569.64099 -2590.75958 5569.47988 -2590.92069 5569.28696 -2591.04191 5569.14944 -2591.09003 5569.00948 -2591.17436 5568.91493 -2591.30763 5568.88155 -2591.46758 5568.88155 -2603.53534 5568.89818 -2603.64948 5568.98473 -2603.81235 5569.14373 -2604.17483 5569.24089 -2604.55854 5569.27358 -2604.953 5569.24089 -2605.34746 5569.14373 -2605.73117 5568.98473 -2606.09365 5568.76824 -2606.42501 5568.50016 -2606.71622 5568.1878 -2606.95934 5567.83969 -2607.14772 5567.46533 -2607.27624 5567.07491 -2607.34139 5566.67909 -2607.34139 5566.28867 -2607.27624 5565.91431 -2607.14772 5565.65106 -2607.00526 5565.55887 -2606.96929 5565.46068 -2606.95705 5538.74427 -2606.95705 5538.5912 -2606.9875 5538.46143 -2607.07421 5531.37649 -2614.15915 5531.24116 -2614.28315 5531.10247 -2614.38957 5530.95503 -2614.4835 5530.79997 -2614.56422 5530.63846 -2614.63112 5530.47174 -2614.68369 5530.30107 -2614.72153 5530.12775 -2614.74434 5529.94437 -2614.75235 5528.65665 -2614.75235 5528.50358 -2614.7828 5528.37381 -2614.86951 5528.2871 -2614.99928 5528.25665 -2615.15235 5528.25665 -2615.75689 5528.22861 -2616.00576 5528.15336 -2616.22081 5528.03214 -2616.41373 5527.87103 -2616.57484 5527.67811 -2616.69606 5527.46306 -2616.77131 5527.21419 -2616.79935 5523.71581 -2616.79935 5523.46694 -2616.77131 5523.25189 -2616.69606 5523.05897 -2616.57484 5522.89786 -2616.41373 5522.77664 -2616.22081 5522.70139 -2616.00576 5522.67335 -2615.75689 5522.67335 -2615.15235 5522.6429 -2614.99928 5522.55619 -2614.86951 5522.42642 -2614.7828 5522.27335 -2614.75235 5520.02777 -2614.75235 5519.86235 -2614.78816 5519.72654 -2614.88917 5519.64467 -2615.03731 5519.63139 -2615.20604 5519.71791 -2615.41104 5519.79316 -2615.62609 5519.8212 -2615.87496 5519.8212 -2619.76704 5519.79316 -2620.01591 5519.71791 -2620.23096 5519.59669 -2620.42388 5519.43558 -2620.58499 5519.24266 -2620.70621 5519.02761 -2620.78146 5518.77874 -2620.8095 5506.22526 -2620.8095 5505.97639 -2620.78146 5505.76134 -2620.70621 5505.56842 -2620.58499 5505.40731 -2620.42388 5505.28609 -2620.23096 5505.21084 -2620.01591 5505.1828 -2619.76704 5505.1828 -2615.87496 5505.21084 -2615.62609 5505.28609 -2615.41104 5505.37261 -2615.20604 5505.35933 -2615.03731 5505.27746 -2614.88917 5505.14165 -2614.78816 5504.97623 -2614.75235 5504.53166 -2614.75235 5504.37859 -2614.7828 5504.24882 -2614.8695 5499.88638 -2619.23186 5499.75106 -2619.35585 5499.61235 -2619.46229 5499.46494 -2619.5562 5499.30985 -2619.63693 5499.14837 -2619.70382 5498.98162 -2619.75639 5498.81097 -2619.79423 5498.63978 -2619.81676 5498.38064 -2619.82527 5498.22582 -2619.86201 5498.09758 -2619.9562 5498.0162 -2620.09294 5497.96791 -2620.23096 5497.84669 -2620.42388 5497.68558 -2620.58499 5497.49266 -2620.70621 5497.27761 -2620.78146 5497.02874 -2620.8095 5484.47526 -2620.8095 5484.22639 -2620.78146 5484.01134 -2620.70621 5483.81842 -2620.58499 5483.65731 -2620.42388 5483.53609 -2620.23096 5483.4878 -2620.09294 5483.40346 -2619.95298 5483.2702 -2619.85843 5483.11024 -2619.82505 5481.38192 -2619.82505 5481.23963 -2619.85121 5481.11596 -2619.92628 5481.02707 -2620.04044 5480.90936 -2620.39381 5480.78814 -2620.58673 5480.62703 -2620.74784 5480.43411 -2620.86906 5480.21906 -2620.94431 5479.97019 -2620.97235 5476.47181 -2620.97235 5476.22294 -2620.94431 5476.00789 -2620.86906 5475.81497 -2620.74784 5475.65386 -2620.58673 5475.53264 -2620.39381 5475.45739 -2620.17876 5475.42935 -2619.92989 5475.42935 -2615.64411 5475.45739 -2615.39524 5475.53264 -2615.18019 5475.65386 -2614.98727 5475.81497 -2614.82616 5476.16182 -2614.61572 5476.25637 -2614.48246 5476.28975 -2614.3225 5476.25637 -2614.16254 5476.16182 -2614.02928 5475.81497 -2613.81884 5475.65386 -2613.65773 5475.53264 -2613.46481 5475.45739 -2613.24976 5475.42935 -2613.00089 5475.42935 -2612.19068 5477.08518 -2612.19068 5477.08518 -2614.20165 5477.11562 -2614.35472 5477.20233 -2614.48449 5477.3321 -2614.5712 5477.48517 -2614.60165 5478.95682 -2614.60165 5479.1099 -2614.5712 5479.23967 -2614.48449 5479.32638 -2614.35472 5479.35682 -2614.20165 5479.35682 -2612.19068 5481.01265 -2612.19068 5481.01265 -2613.00089 5480.98461 -2613.24976 5480.90936 -2613.46481 5480.78814 -2613.65773 5480.62703 -2613.81884 5480.28018 -2614.02928 5480.18563 -2614.16254 5480.15225 -2614.3225 5480.18563 -2614.48246 5480.28018 -2614.61572 5480.62703 -2614.82616 5480.78814 -2614.98727 5480.90936 -2615.18019 5480.98461 -2615.39524 5481.03416 -2615.60014 5481.123 -2615.71481 5481.24689 -2615.79025 5481.38954 -2615.81655 5483.11038 -2615.81655 5483.27034 -2615.78317 5483.4036 -2615.68862 5483.48794 -2615.54866 5483.53609 -2615.41104 5483.65731 -2615.21812 5483.81842 -2615.05701 5484.01134 -2614.93579 5484.22639 -2614.86054 5484.47526 -2614.8325 5497.02874 -2614.8325 5497.27761 -2614.86054 5497.49266 -2614.93579 5497.68558 -2615.05701 5497.75614 -2615.12757 5497.8859 -2615.21427 5498.03898 -2615.24472 5498.19205 -2615.21428 5498.32182 -2615.12757 5502.11242 -2611.33704 5502.24774 -2611.21305 5502.38645 -2611.10661 5502.53386 -2611.0127 5502.68895 -2610.93197 5502.85043 -2610.86508 5503.01718 -2610.81251 5503.18783 -2610.77467 5503.36117 -2610.75185 5503.54453 -2610.74385 5504.90006 -2610.74385 5505.04898 -2610.7151 5505.17649 -2610.63297 5505.26425 -2610.50927 5505.29966 -2610.3618 5505.27762 -2610.21174 5505.21084 -2610.02091 5505.1828 -2609.77204 5505.1828 -2605.87996 5505.21084 -2605.63109 5505.28609 -2605.41604 5505.40731 -2605.22312 5505.56842 -2605.06201 5505.76134 -2604.94079 5505.97639 -2604.86554 5506.22526 -2604.8375 5518.77874 -2604.8375 5519.02761 -2604.86554 5519.24266 -2604.94079 5519.43558 -2605.06201 5519.59669 -2605.22312 5519.71791 -2605.41604 5519.79316 -2605.63109 5519.8212 -2605.87996 5519.8212 -2609.77204 5519.79316 -2610.02091 5519.72638 -2610.21174 5519.70434 -2610.3618 5519.73975 -2610.50927 5519.82751 -2610.63297 5519.95502 -2610.7151 5520.10394 -2610.74385 5522.80259 -2610.74385 5522.91433 -2610.72793 5523.01717 -2610.68142 5523.40582 -2610.44272 5523.50037 -2610.30946 5523.53375 -2610.1495 5523.50037 -2609.98954 5523.40582 -2609.85628 5523.05897 -2609.64584 5522.89786 -2609.48473 5522.77664 -2609.29181 5522.70139 -2609.07676 5522.67335 -2608.82789 5522.67335 -2606.29241 5522.64331 -2606.14032 5522.60002 -2606.03502 5522.51291 -2605.90427 5519.80766 -2603.19903 5519.59509 -2602.94 5519.44643 -2602.66189 5519.35489 -2602.36013 5519.32205 -2602.02665 5519.32205 -2599.58096 5519.29745 -2599.44285 5519.22668 -2599.32173 5519.10805 -2599.18232 5518.97121 -2599.07844 5518.80342 -2599.04155 5517.33143 -2599.04155 5517.17147 -2599.07493 5517.03821 -2599.16948 5516.95388 -2599.30944 5516.87806 -2599.52611 5516.75684 -2599.71903 5516.59573 -2599.88014 5516.40281 -2600.00136 5516.18776 -2600.07661 5515.93889 -2600.10465 5511.65311 -2600.10465 5511.40424 -2600.07661 5511.18919 -2600.00136 5510.99627 -2599.88014 5510.83516 -2599.71903 5510.62472 -2599.37218 5510.49146 -2599.27763 5510.3315 -2599.24425 5510.17154 -2599.27763 5510.03828 -2599.37218 5509.82784 -2599.71903 5509.66673 -2599.88014 5509.47381 -2600.00136 5509.25876 -2600.07661 5509.00989 -2600.10465 5508.19967 -2600.10465 5508.19967 -2598.44883 5510.21065 -2598.44883 5510.36372 -2598.41838 5510.49349 -2598.33167 5510.5802 -2598.2019 5510.61065 -2598.04883 5510.60979 -2597.29169 5510.57416 -2596.75074 5510.53066 -2596.59392 5510.42776 -2596.39407 5510.33894 -2596.27916 5510.21495 -2596.20354 5510.07213 -2596.17718 5508.19967 -2596.17718 5508.19967 -2594.52135 5508.86495 -2594.52135 5509.01802 -2594.4909 5509.14778 -2594.4042 5509.23449 -2594.27443 5509.26495 -2594.12136 5509.23451 -2593.96829 5509.14781 -2593.83852 5506.99457 -2591.68505 5506.81734 -2591.55737 5506.67314 -2591.49764 5506.45767 -2591.4626 5504.34626 -2591.46211 5504.09734 -2591.43406 5503.88229 -2591.35881 5503.68937 -2591.23759 5503.52826 -2591.07648 5503.40704 -2590.88356 5503.33179 -2590.66851 5503.30375 -2590.41964 5503.30375 -2585.80236 5503.33179 -2585.55349 5503.40704 -2585.33844 5503.52826 -2585.14552 5503.68937 -2584.98441 5503.88229 -2584.86319 5504.09734 -2584.78794 5504.34621 -2584.7599 5508.56979 -2584.7599 5508.81866 -2584.78794 5509.03371 -2584.86319 5509.22663 -2584.98441 5509.38774 -2585.14552 5509.50896 -2585.33844 5509.58421 -2585.55349 5509.61225 -2585.80236 5509.61225 -2588.31345 5509.65092 -2588.8205 5509.66074 -2588.8825 5509.77331 -2589.35141 5509.7927 -2589.4111 5509.97725 -2589.85663 5510.00574 -2589.91256 5510.25771 -2590.32373 5510.2946 -2590.37451 5510.62911 -2590.76427 5514.26898 -2594.40419 5514.39875 -2594.4909 5514.55182 -2594.52135 5515.93889 -2594.52135 5516.18776 -2594.54939 5516.40281 -2594.62464 5516.59573 -2594.74586 5516.75684 -2594.90697 5516.87806 -2595.09989 5516.95331 -2595.31494 5516.97024 -2595.46524 5517.01235 -2595.60404 5517.10119 -2595.71871 5517.22508 -2595.79415 5517.36773 -2595.82045 5518.80342 -2595.82045 5518.93553 -2595.798 5519.05282 -2595.73318 5519.15326 -2595.61552 5519.31437 -2595.45441 5519.50729 -2595.33319 5519.72234 -2595.25794 5519.97121 -2595.2299 5521.89479 -2595.2299 5522.14366 -2595.25794 5522.35871 -2595.33319 5522.52019 -2595.43465 5522.65864 -2595.48899 5522.80736 -2595.48899 5522.94581 -2595.43465 5523.10729 -2595.33319 5523.32234 -2595.25794 5523.57121 -2595.2299 5523.79088 -2595.2299 5523.79088 -2596.59045 5523.33725 -2596.59045 5523.18418 -2596.6209 5523.05441 -2596.70761 5522.9677 -2596.83738 5522.93725 -2596.99045 5522.93725 -2597.87155 5522.9677 -2598.02462 5523.05441 -2598.15439 5523.18418 -2598.2411 5523.33725 -2598.27155 5523.79088 -2598.27155 5523.79088 -2599.6321 5523.57121 -2599.6321 5523.32234 -2599.60406 5523.07526 -2599.5176 5522.9252 -2599.49556 5522.77773 -2599.53096 5522.65403 -2599.61873 5522.5719 -2599.74624 5522.54315 -2599.89516 5522.54315 -2601.2135 5522.5736 -2601.36658 5522.66031 -2601.49635 5524.09723 -2602.93327 5524.35876 -2603.15039 5524.42396 -2603.19395 5524.68921 -2603.33573 5524.76165 -2603.36574 5525.04947 -2603.45305 5525.12637 -2603.46834 5525.46388 -2603.49965 5527.21419 -2603.49965 5527.46306 -2603.52769 5527.67811 -2603.60294 5527.87103 -2603.72416 5528.03214 -2603.88527 5528.15336 -2604.07819 5528.22861 -2604.29324 5528.25665 -2604.54211 5528.25665 -2608.82789 5528.22861 -2609.07676 5528.15336 -2609.29181 5528.03214 -2609.48473 5527.87103 -2609.64584 5527.52418 -2609.85628 5527.42963 -2609.98954 5527.39625 -2610.1495 5527.42963 -2610.30946 5527.52418 -2610.44272 5527.91283 -2610.68142 5528.01567 -2610.72793 5528.12741 -2610.74385 5528.95723 -2610.74385 5529.1103 -2610.7134 5529.24007 -2610.62669 5536.32501 -2603.54175 5536.46034 -2603.41775 5536.59903 -2603.31133 5536.74647 -2603.2174 5536.90153 -2603.13668 5537.06304 -2603.06978 5537.22976 -2603.01721 5537.40043 -2602.97937 5537.57375 -2602.95656 5537.75713 -2602.94855 5564.47305 -2602.94855 5564.62612 -2602.9181 5564.75589 -2602.83139 5564.8426 -2602.70162 5564.87305 -2602.54855 5564.87305 -2591.46779 5564.83967 -2591.30784 5564.74512 -2591.17457 5564.60516 -2591.09024 5564.46704 -2591.04191 5564.27412 -2590.92069 5564.11301 -2590.75958 5563.99179 -2590.56666 5563.91654 -2590.35161 5563.8885 -2590.10274 5563.8885 -2577.54926 5563.91654 -2577.30039 5563.99179 -2577.08534 5564.11301 -2576.89242 5564.27412 -2576.73131 5564.46704 -2576.61009 5564.68209 -2576.53484 5564.93096 -2576.5068 5568.82304 -2576.5068 Z M 5697.71486 -2757.94418 L 5698.24639 -2757.90935 5740.39791 -2757.90935 5740.92944 -2757.94418 5741.439 -2758.04554 5741.93062 -2758.21243 5742.4267 -2758.45822 5742.60429 -2758.4998 5744.92421 -2758.4998 5745.41969 -2758.53524 5745.89109 -2758.63778 5746.34309 -2758.80637 5746.7665 -2759.03757 5747.1527 -2759.32668 5747.49382 -2759.6678 5747.78293 -2760.054 5748.01413 -2760.47741 5748.18272 -2760.92941 5748.28526 -2761.40081 5748.31968 -2761.882 5748.28526 -2762.36319 5748.18272 -2762.83459 5748.01413 -2763.28659 5747.78293 -2763.71 5747.49382 -2764.0962 5747.1527 -2764.43732 5746.7665 -2764.72643 5746.34309 -2764.95763 5745.89109 -2765.12622 5745.41969 -2765.22876 5744.92421 -2765.2642 5742.60459 -2765.2642 5742.42697 -2765.3058 5741.93061 -2765.55178 5741.8032 -2765.59503 5741.66524 -2765.67554 5741.56979 -2765.80362 5741.53206 -2765.95884 5741.55808 -2766.11645 5741.6437 -2766.2513 5741.77526 -2766.3419 5741.93178 -2766.3738 5744.92421 -2766.3738 5745.41969 -2766.40924 5745.89109 -2766.51178 5746.34309 -2766.68037 5746.7665 -2766.91157 5747.1527 -2767.20068 5747.49382 -2767.5418 5747.78293 -2767.928 5748.01413 -2768.35141 5748.18272 -2768.80341 5748.28526 -2769.27481 5748.31968 -2769.756 5748.28526 -2770.23719 5748.18272 -2770.70859 5748.01413 -2771.16059 5747.78293 -2771.584 5747.49382 -2771.9702 5747.1527 -2772.31132 5746.7665 -2772.60043 5746.34309 -2772.83163 5746.17097 -2772.9303 5746.0793 -2773.06233 5746.047 -2773.21979 5746.047 -2788.00354 5746.01896 -2788.25241 5745.94371 -2788.46746 5745.82249 -2788.66038 5745.66138 -2788.82149 5745.46846 -2788.94271 5745.25341 -2789.01796 5745.00454 -2789.046 5728.11869 -2789.046 5727.96561 -2789.07645 5727.83584 -2789.16316 5727.30636 -2789.69264 5727.21965 -2789.82241 5727.1892 -2789.97549 5727.1892 -2790.17609 5727.22501 -2790.34151 5727.32602 -2790.47732 5727.47416 -2790.55919 5727.64289 -2790.57247 5727.83414 -2790.49459 5728.04919 -2790.41934 5728.29806 -2790.3913 5730.94994 -2790.3913 5731.19881 -2790.41934 5731.41386 -2790.49459 5731.60678 -2790.61581 5731.76789 -2790.77692 5731.88911 -2790.96984 5731.96436 -2791.18489 5731.9924 -2791.43376 5731.9924 -2792.17624 5731.96436 -2792.42511 5731.92957 -2792.5925 5731.96436 -2792.75989 5731.9924 -2793.00876 5731.9924 -2793.14175 5732.02284 -2793.29482 5732.10954 -2793.42458 5732.2393 -2793.51129 5732.39236 -2793.54175 5732.81941 -2793.5418 5732.97251 -2793.51136 5733.1023 -2793.42464 5733.37817 -2793.14875 5733.62387 -2792.94977 5733.88678 -2792.81579 5734.17691 -2792.73803 5734.40842 -2792.7198 5735.00869 -2792.7198 5735.16176 -2792.68935 5735.29153 -2792.60264 5735.44614 -2792.44803 5735.76021 -2792.22811 5736.1077 -2792.06608 5736.47805 -2791.96684 5736.86 -2791.93343 5737.24195 -2791.96684 5737.6123 -2792.06608 5737.95979 -2792.22811 5738.27386 -2792.44803 5738.54497 -2792.71914 5738.76489 -2793.03321 5738.92692 -2793.3807 5739.02616 -2793.75105 5739.05957 -2794.133 5739.05191 -2794.22053 5739.07218 -2794.38562 5739.15785 -2794.52819 5739.2941 -2794.62359 5739.45737 -2794.65533 5739.61944 -2794.61791 5739.8657 -2794.50308 5740.23605 -2794.40384 5740.618 -2794.37043 5740.99995 -2794.40384 5741.3703 -2794.50308 5741.71779 -2794.66511 5742.03186 -2794.88503 5742.30297 -2795.15614 5742.52289 -2795.47021 5742.68492 -2795.8177 5742.78416 -2796.18805 5742.81757 -2796.57 5742.78416 -2796.95195 5742.68492 -2797.3223 5742.52289 -2797.66979 5742.30297 -2797.98386 5742.03186 -2798.25497 5741.71779 -2798.47489 5741.3703 -2798.63692 5740.99995 -2798.73616 5740.618 -2798.76957 5740.23605 -2798.73616 5739.8657 -2798.63692 5739.51821 -2798.47489 5739.20414 -2798.25497 5739.08855 -2798.14564 5738.94477 -2798.03936 5738.78505 -2797.96872 5738.6224 -2797.9442 5732.3924 -2797.9442 5732.23933 -2797.97465 5732.10956 -2798.06136 5732.02285 -2798.19113 5731.9924 -2798.3442 5731.9924 -2798.47624 5731.96436 -2798.72511 5731.88911 -2798.94016 5731.76789 -2799.13308 5731.60678 -2799.29419 5731.41386 -2799.41541 5731.19881 -2799.49066 5730.94994 -2799.5187 5730.5482 -2799.5187 5730.5482 -2798.3442 5730.51776 -2798.19114 5730.43107 -2798.06138 5730.30132 -2797.97467 5730.14827 -2797.9442 5729.09987 -2797.94401 5728.94678 -2797.97443 5728.81698 -2798.06114 5728.73026 -2798.19092 5728.6998 -2798.34401 5728.6998 -2799.5187 5728.29806 -2799.5187 5728.04919 -2799.49066 5727.64289 -2799.33753 5727.47416 -2799.35081 5727.32602 -2799.43268 5727.22501 -2799.56849 5727.1892 -2799.73391 5727.1892 -2800.72653 5727.15 -2801.22109 5727.15 -2804.93254 5727.12196 -2805.18141 5727.04671 -2805.39646 5726.96469 -2805.52699 5726.907 -2805.68611 5726.92028 -2805.85484 5727.00216 -2806.00298 5727.13796 -2806.10399 5727.30338 -2806.1398 5727.947 -2806.1398 5727.947 -2808.0909 5725.677 -2808.0909 5725.677 -2807.18226 5725.70504 -2806.93339 5725.78029 -2806.71834 5725.86231 -2806.58781 5725.92 -2806.42869 5725.90672 -2806.25996 5725.82484 -2806.11182 5725.68904 -2806.01081 5725.52362 -2805.975 5724.87038 -2805.975 5724.70496 -2806.01081 5724.56916 -2806.11182 5724.48728 -2806.25996 5724.474 -2806.42869 5724.53169 -2806.58781 5724.61371 -2806.71834 5724.68896 -2806.93339 5724.717 -2807.18226 5724.717 -2811.86174 5724.68896 -2812.11061 5724.61371 -2812.32566 5724.49249 -2812.51858 5724.33138 -2812.67969 5724.13846 -2812.80091 5723.92341 -2812.87616 5723.67454 -2812.9042 5717.71946 -2812.9042 5717.47059 -2812.87616 5717.25554 -2812.80091 5717.06262 -2812.67969 5716.90151 -2812.51858 5716.78029 -2812.32566 5716.70504 -2812.11061 5716.677 -2811.86174 5716.677 -2807.18226 5716.69188 -2807.05019 5716.67551 -2806.88393 5716.59265 -2806.73886 5716.45777 -2806.64029 5716.2944 -2806.6054 5707.87782 -2806.6054 5707.45638 -2806.57223 5707.06064 -2806.47723 5706.68465 -2806.32148 5706.33764 -2806.10884 5706.01619 -2805.83429 5700.13291 -2799.95101 5699.85836 -2799.62956 5699.64572 -2799.28255 5699.48997 -2798.90656 5699.39497 -2798.51082 5699.36304 -2798.1051 5699.39497 -2797.69938 5699.48997 -2797.30364 5699.64572 -2796.92765 5699.85396 -2796.58783 5699.89788 -2796.48741 5699.9129 -2796.37883 5699.9129 -2795.75421 5699.94094 -2795.50534 5700.01619 -2795.29029 5700.11765 -2795.12881 5700.17199 -2794.99036 5700.17199 -2794.84164 5700.11765 -2794.70319 5700.01619 -2794.54171 5699.94094 -2794.32666 5699.9129 -2794.07779 5699.9129 -2793.62 5699.88245 -2793.46693 5699.79574 -2793.33716 5699.66597 -2793.25045 5699.5129 -2793.22 5693.79946 -2793.22 5693.64638 -2793.25045 5693.51661 -2793.33716 5693.4299 -2793.46693 5693.39946 -2793.62 5693.39946 -2810.05066 5693.42869 -2810.20076 5693.57022 -2810.55036 5693.71212 -2811.09147 5693.78366 -2811.64629 5693.78366 -2812.20571 5693.71212 -2812.76053 5693.57022 -2813.30164 5693.36029 -2813.82017 5693.08578 -2814.3076 5692.75119 -2814.75592 5692.36201 -2815.15778 5691.92465 -2815.50657 5691.44627 -2815.79656 5690.93473 -2816.023 5690.39844 -2816.18217 5689.8462 -2816.27145 5689.28707 -2816.28938 5688.73025 -2816.23567 5688.18486 -2816.11119 5687.65987 -2815.91798 5687.16389 -2815.65923 5686.70508 -2815.33918 5686.29096 -2814.96309 5685.92833 -2814.53713 5685.62315 -2814.06829 5685.38043 -2813.56428 5685.20415 -2813.03336 5685.09722 -2812.48426 5685.06137 -2811.926 5685.09722 -2811.36774 5685.20415 -2810.81864 5685.38043 -2810.28772 5685.44392 -2810.13278 5685.45394 -2810.04377 5685.45394 -2770.70179 5685.48878 -2770.17026 5685.59014 -2769.6607 5685.75715 -2769.16872 5685.98694 -2768.70275 5686.27558 -2768.27076 5686.6268 -2767.87028 5695.41488 -2759.0822 5695.81536 -2758.73098 5696.24735 -2758.44234 5696.71332 -2758.21255 5697.2053 -2758.04554 5697.71486 -2757.94418 Z M 5551.44705 -2549.75284 L 5551.829 -2549.71943 5552.21095 -2549.75284 5552.5813 -2549.85208 5552.92879 -2550.01411 5553.24286 -2550.23403 5553.51397 -2550.50514 5553.73389 -2550.81921 5553.89592 -2551.1667 5553.99516 -2551.53705 5554.02857 -2551.919 5553.99516 -2552.30095 5553.89592 -2552.6713 5553.73389 -2553.01879 5553.51199 -2553.33569 5553.45816 -2553.44483 5553.43965 -2553.56512 5553.43965 -2554.85509 5553.4701 -2555.00817 5553.55681 -2555.13794 5553.68658 -2555.22465 5553.83965 -2555.25509 5553.99272 -2555.22465 5554.12249 -2555.13794 5554.27912 -2554.98131 5554.47204 -2554.86009 5554.68709 -2554.78484 5554.93596 -2554.7568 5555.64775 -2554.7568 5555.64775 -2558.6764 5553.83965 -2558.6764 5553.68658 -2558.70685 5553.55681 -2558.79356 5553.4701 -2558.92333 5553.43965 -2559.0764 5553.43965 -2565.0756 5553.4701 -2565.22867 5553.55681 -2565.35844 5553.68658 -2565.44515 5553.83965 -2565.4756 5555.64775 -2565.4756 5555.64775 -2569.3952 5554.93596 -2569.3952 5554.68709 -2569.36716 5554.47204 -2569.29191 5554.27912 -2569.17069 5554.12249 -2569.01406 5553.99272 -2568.92735 5553.83965 -2568.89691 5553.68658 -2568.92735 5553.55681 -2569.01406 5553.4701 -2569.14383 5553.43965 -2569.29691 5553.43965 -2576.60509 5553.4701 -2576.75817 5553.55681 -2576.88794 5553.68658 -2576.97465 5553.83965 -2577.00509 5553.99272 -2576.97465 5554.12249 -2576.88794 5554.27912 -2576.73131 5554.47204 -2576.61009 5554.68709 -2576.53484 5554.93596 -2576.5068 5558.82804 -2576.5068 5559.07691 -2576.53484 5559.29196 -2576.61009 5559.48488 -2576.73131 5559.64599 -2576.89242 5559.76721 -2577.08534 5559.84246 -2577.30039 5559.8705 -2577.54926 5559.8705 -2590.10274 5559.84246 -2590.35161 5559.76721 -2590.56666 5559.64599 -2590.75958 5559.48488 -2590.92069 5559.29196 -2591.04191 5559.07691 -2591.11716 5558.82804 -2591.1452 5554.93596 -2591.1452 5554.68709 -2591.11716 5554.47204 -2591.04191 5554.27912 -2590.92069 5554.12249 -2590.76406 5553.99272 -2590.67735 5553.83965 -2590.64691 5553.68658 -2590.67735 5553.55681 -2590.76406 5553.4701 -2590.89383 5553.43965 -2591.04691 5553.43965 -2591.97825 5553.40681 -2592.31173 5553.31527 -2592.61349 5553.16661 -2592.8916 5552.95404 -2593.15063 5549.87163 -2596.23304 5549.6126 -2596.44561 5549.33449 -2596.59427 5549.03273 -2596.68581 5548.64879 -2596.72484 5548.50912 -2596.74971 5548.3773 -2596.79822 5548.25498 -2596.86976 5548.13665 -2596.97538 5548.00985 -2597.14577 5547.69593 -2597.61557 5547.34067 -2598.02067 5546.93557 -2598.37593 5546.48757 -2598.67528 5546.00433 -2598.91359 5545.49411 -2599.08679 5544.96566 -2599.1919 5544.428 -2599.22714 5543.89034 -2599.1919 5543.36189 -2599.08679 5542.85167 -2598.91359 5542.36843 -2598.67528 5541.92043 -2598.37593 5541.51533 -2598.02067 5541.16007 -2597.61557 5540.86072 -2597.16757 5540.62241 -2596.68433 5540.44921 -2596.17411 5540.3441 -2595.64566 5540.30886 -2595.108 5540.3441 -2594.57034 5540.44921 -2594.04189 5540.62241 -2593.53167 5540.86068 -2593.04851 5541.1758 -2592.57732 5541.23721 -2592.42455 5541.23187 -2592.25998 5541.16069 -2592.1115 5541.03573 -2592.00428 5540.87817 -2591.95648 5540.70305 -2591.94116 5540.3327 -2591.84192 5539.98521 -2591.67989 5539.67114 -2591.45997 5539.44009 -2591.22892 5539.34416 -2591.15812 5539.23162 -2591.11874 5539.11247 -2591.11428 5538.83804 -2591.1452 5537.20601 -2591.1452 5537.04891 -2591.17734 5536.91706 -2591.26859 5536.83164 -2591.4043 5536.80639 -2591.56265 5536.84535 -2591.71819 5536.94227 -2591.84594 5537.34067 -2592.19533 5537.69593 -2592.60043 5537.99528 -2593.04843 5538.12329 -2593.308 5536.228 -2593.308 5536.228 -2591.5452 5536.19755 -2591.39213 5536.11084 -2591.26236 5535.98107 -2591.17565 5535.828 -2591.1452 5534.94596 -2591.1452 5534.69709 -2591.11716 5534.48204 -2591.04191 5534.28912 -2590.92069 5534.12801 -2590.75958 5534.00679 -2590.56666 5533.93154 -2590.35161 5533.9035 -2590.10274 5533.9035 -2577.54926 5533.93154 -2577.30039 5534.00679 -2577.08534 5534.12801 -2576.89242 5534.28912 -2576.73131 5534.48204 -2576.61009 5534.69709 -2576.53484 5534.94596 -2576.5068 5538.83804 -2576.5068 5539.08691 -2576.53484 5539.30196 -2576.61009 5539.49488 -2576.73131 5539.65599 -2576.89242 5539.77721 -2577.08534 5539.85246 -2577.30039 5539.8805 -2577.54926 5539.8805 -2586.40504 5539.91095 -2586.55811 5539.99766 -2586.68788 5540.71755 -2587.40777 5540.82777 -2587.48576 5540.93411 -2587.53664 5541.07187 -2587.57428 5541.46695 -2587.60884 5541.8373 -2587.70808 5542.18479 -2587.87011 5542.49886 -2588.09003 5542.76997 -2588.36114 5542.98989 -2588.67521 5543.13598 -2588.98851 5543.22643 -2589.11268 5543.35702 -2589.1936 5543.50847 -2589.21934 5543.65846 -2589.18609 5543.78485 -2589.09876 5543.869 -2588.97023 5543.8985 -2588.81946 5543.8985 -2577.54926 5543.92654 -2577.30039 5544.00179 -2577.08534 5544.12301 -2576.89242 5544.28412 -2576.73131 5544.47704 -2576.61009 5544.69209 -2576.53484 5544.94096 -2576.5068 5548.83304 -2576.5068 5549.08191 -2576.53484 5549.29696 -2576.61009 5549.48988 -2576.73131 5549.66548 -2576.86385 5549.81855 -2576.89429 5549.97162 -2576.86385 5550.10139 -2576.77714 5550.1881 -2576.64737 5550.21855 -2576.49429 5550.21855 -2569.40771 5550.1881 -2569.25463 5550.10139 -2569.12486 5549.97162 -2569.03815 5549.81855 -2569.00771 5549.66548 -2569.03815 5549.48988 -2569.17069 5549.29696 -2569.29191 5549.08191 -2569.36716 5548.83304 -2569.3952 5544.94096 -2569.3952 5544.69209 -2569.36716 5544.47704 -2569.29191 5544.28412 -2569.17069 5544.12301 -2569.00958 5544.00179 -2568.81666 5543.92654 -2568.60161 5543.8985 -2568.35274 5543.8985 -2555.80323 5543.86512 -2555.64327 5543.83858 -2555.60587 5543.88225 -2555.57506 5543.96706 -2555.43458 5544.00179 -2555.33534 5544.12301 -2555.14242 5544.28412 -2554.98131 5544.47704 -2554.86009 5544.69209 -2554.78484 5544.94096 -2554.7568 5548.83304 -2554.7568 5549.08191 -2554.78484 5549.29696 -2554.86009 5549.48988 -2554.98131 5549.66548 -2555.11385 5549.81855 -2555.14429 5549.97162 -2555.11385 5550.10139 -2555.02714 5550.1881 -2554.89737 5550.21855 -2554.74429 5550.21855 -2553.5654 5550.20004 -2553.44512 5550.14621 -2553.33597 5549.92411 -2553.01879 5549.76208 -2552.6713 5549.66284 -2552.30095 5549.62943 -2551.919 5549.66284 -2551.53705 5549.76208 -2551.1667 5549.92411 -2550.81921 5550.14403 -2550.50514 5550.41514 -2550.23403 5550.72921 -2550.01411 5551.0767 -2549.85208 5551.44705 -2549.75284 Z M 5835.89757 -2551.8536 L 5836.31461 -2551.87041 5836.72356 -2551.9539 5837.11381 -2552.1019 5837.47528 -2552.31059 5837.79858 -2552.57456 5838.07535 -2552.88698 5838.29843 -2553.23974 5838.46203 -2553.62372 5838.56191 -2554.02897 5838.5955 -2554.445 5838.56191 -2554.86103 5838.46203 -2555.26628 5838.29843 -2555.65026 5838.06767 -2556.01517 5838.02154 -2556.11767 5838.00575 -2556.22896 5838.00575 -2557.99107 5838.03776 -2558.14785 5838.12866 -2558.27955 5838.26391 -2558.36507 5838.42186 -2558.39074 5838.57723 -2558.35245 5838.70515 -2558.25632 5838.78516 -2558.11773 5838.85203 -2557.91744 5839.046 -2557.54786 5839.29674 -2557.21419 5839.59775 -2556.92506 5839.94125 -2556.68796 5840.31833 -2556.50904 5840.71923 -2556.39291 5841.13357 -2556.3426 5841.55061 -2556.35941 5841.95956 -2556.4429 5842.34981 -2556.5909 5842.71128 -2556.79959 5843.03458 -2557.06356 5843.31135 -2557.37598 5843.53443 -2557.72874 5843.69803 -2558.11272 5843.79791 -2558.51797 5843.8315 -2558.934 5843.79791 -2559.35003 5843.69803 -2559.75528 5843.53443 -2560.13926 5843.30387 -2560.50385 5843.25774 -2560.60635 5843.24195 -2560.71764 5843.24195 -2562.41344 5843.2724 -2562.56652 5843.35911 -2562.69629 5843.41144 -2562.74862 5843.53266 -2562.94154 5843.60791 -2563.15659 5843.63595 -2563.40546 5843.63595 -2571.23454 5843.60791 -2571.48341 5843.53266 -2571.69846 5843.41144 -2571.89138 5843.25033 -2572.05249 5843.05741 -2572.17371 5842.84236 -2572.24896 5842.59349 -2572.277 5839.88251 -2572.277 5839.63364 -2572.24896 5839.41859 -2572.17371 5839.22567 -2572.05249 5839.06456 -2571.89138 5838.94334 -2571.69846 5838.86809 -2571.48341 5838.84005 -2571.23454 5838.84005 -2563.40546 5838.86809 -2563.15659 5838.94334 -2562.94154 5839.06456 -2562.74862 5839.11629 -2562.69689 5839.203 -2562.56712 5839.23345 -2562.41404 5839.23345 -2560.70313 5839.21286 -2560.57646 5839.15323 -2560.46283 5839.046 -2560.32014 5838.85203 -2559.95056 5838.78516 -2559.75027 5838.70515 -2559.61168 5838.57723 -2559.51555 5838.42186 -2559.47726 5838.26391 -2559.50293 5838.12866 -2559.58845 5838.03776 -2559.72015 5838.00575 -2559.87693 5838.00575 -2575.34237 5837.99774 -2575.52577 5837.97493 -2575.69907 5837.93708 -2575.86976 5837.88452 -2576.03646 5837.81761 -2576.19799 5837.7369 -2576.35303 5837.64296 -2576.50049 5837.53655 -2576.63916 5837.41253 -2576.77451 5833.70954 -2580.47742 5833.63777 -2580.57521 5833.5986 -2580.69002 5833.59565 -2580.81129 5833.63595 -2581.12462 5833.63595 -2588.95054 5833.60791 -2589.19941 5833.53266 -2589.41446 5833.41144 -2589.60738 5833.25033 -2589.76849 5833.05741 -2589.88971 5832.84236 -2589.96496 5832.59349 -2589.993 5829.88251 -2589.993 5829.63364 -2589.96496 5829.41859 -2589.88971 5829.22567 -2589.76849 5829.06456 -2589.60738 5828.94334 -2589.41446 5828.86809 -2589.19941 5828.84005 -2588.95054 5828.84005 -2581.12146 5828.86809 -2580.87259 5828.94334 -2580.65754 5829.06456 -2580.46462 5829.11629 -2580.41289 5829.19981 -2580.2906 5829.23312 -2580.14631 5829.24154 -2579.93954 5829.26427 -2579.76683 5829.30212 -2579.59614 5829.35468 -2579.42944 5829.42159 -2579.26791 5829.5023 -2579.11287 5829.59624 -2578.96541 5829.70265 -2578.82674 5829.82667 -2578.69139 5833.88009 -2574.63806 5833.9668 -2574.50829 5833.99725 -2574.35521 5833.99725 -2572.27126 5833.9668 -2572.11818 5833.88009 -2571.98841 5833.75032 -2571.9017 5833.59725 -2571.87126 5833.44418 -2571.9017 5833.31441 -2571.98841 5833.25033 -2572.05249 5833.05741 -2572.17371 5832.84236 -2572.24896 5832.59349 -2572.277 5832.17698 -2572.277 5832.17698 -2569.5385 5833.59725 -2569.5385 5833.75032 -2569.50805 5833.88009 -2569.42134 5833.9668 -2569.29157 5833.99725 -2569.1385 5833.99725 -2565.5015 5833.9668 -2565.34843 5833.88009 -2565.21866 5833.75032 -2565.13195 5833.59725 -2565.1015 5832.17698 -2565.1015 5832.17698 -2562.363 5832.59349 -2562.363 5832.84236 -2562.39104 5833.05741 -2562.46629 5833.25033 -2562.58751 5833.31441 -2562.65159 5833.44418 -2562.7383 5833.59725 -2562.76874 5833.75032 -2562.7383 5833.88009 -2562.65159 5833.9668 -2562.52182 5833.99725 -2562.36874 5833.99725 -2556.21386 5833.97666 -2556.08719 5833.91703 -2555.97356 5833.81 -2555.83114 5833.61603 -2555.46156 5833.48386 -2555.06566 5833.41691 -2554.65369 5833.41691 -2554.23631 5833.48386 -2553.82434 5833.61603 -2553.42844 5833.81 -2553.05886 5834.06074 -2552.72519 5834.36175 -2552.43606 5834.70525 -2552.19896 5835.08233 -2552.02004 5835.48323 -2551.90391 5835.89757 -2551.8536 Z M 5634.49275 -2571.67408 L 5635.06377 -2571.70927 5635.21543 -2571.72863 5635.77698 -2571.83799 5635.92481 -2571.87696 5636.4673 -2572.05863 5636.6088 -2572.11655 5637.12296 -2572.36741 5637.25569 -2572.44329 5637.73275 -2572.75907 5637.85445 -2572.85161 5638.28625 -2573.22691 5638.39484 -2573.33453 5638.774 -2573.76293 5638.86763 -2573.8838 5639.18769 -2574.358 5639.26476 -2574.49004 5639.52023 -2575.00193 5639.57942 -2575.1429 5639.76595 -2575.68373 5639.80625 -2575.83121 5639.92061 -2576.3915 5639.94154 -2576.54603 5639.98166 -2577.13572 5639.97872 -2577.44467 5639.9905 -2577.54926 5639.9905 -2590.10274 5639.96246 -2590.35161 5639.88721 -2590.56666 5639.76599 -2590.75958 5639.60488 -2590.92069 5639.41196 -2591.04191 5639.19691 -2591.11716 5638.94804 -2591.1452 5635.05596 -2591.1452 5634.80709 -2591.11716 5634.59204 -2591.04191 5634.39912 -2590.92069 5634.23801 -2590.75958 5634.11679 -2590.56666 5634.04154 -2590.35161 5634.0135 -2590.10274 5634.0135 -2583.10634 5633.98996 -2582.97114 5633.92209 -2582.85185 5633.8179 -2582.76251 5633.68965 -2582.71366 5633.08348 -2582.59611 5632.9364 -2582.55693 5632.39439 -2582.37384 5632.25305 -2582.31555 5631.73954 -2582.06334 5631.60701 -2581.98712 5631.13079 -2581.67009 5631.00933 -2581.57723 5630.65869 -2581.27086 5630.52763 -2581.19453 5630.37757 -2581.17248 5630.23009 -2581.20788 5630.10639 -2581.29565 5630.02426 -2581.42316 5629.9955 -2581.57208 5629.9955 -2590.10274 5629.96746 -2590.35161 5629.89221 -2590.56666 5629.77099 -2590.75958 5629.60988 -2590.92069 5629.41696 -2591.04191 5629.20191 -2591.11716 5628.95304 -2591.1452 5628.84174 -2591.1452 5628.66954 -2591.18417 5628.53088 -2591.29347 5628.45279 -2591.45182 5628.39326 -2591.72091 5628.3652 -2592.09312 5628.3652 -2593.30605 5628.39504 -2593.45764 5628.49623 -2593.63922 5628.63206 -2593.78713 5628.85689 -2594.10821 5629.01892 -2594.4557 5629.11816 -2594.82605 5629.15157 -2595.208 5629.11816 -2595.58995 5629.01892 -2595.9603 5628.85689 -2596.30779 5628.63697 -2596.62186 5628.36586 -2596.89297 5628.05179 -2597.11289 5627.7043 -2597.27492 5627.33395 -2597.37416 5626.952 -2597.40757 5626.57005 -2597.37416 5626.1997 -2597.27492 5625.85221 -2597.11289 5625.53814 -2596.89297 5625.26703 -2596.62186 5625.04711 -2596.30779 5624.88508 -2595.9603 5624.78584 -2595.58995 5624.75243 -2595.208 5624.78584 -2594.82605 5624.88508 -2594.4557 5625.04711 -2594.10821 5625.26703 -2593.79414 5625.38818 -2593.65926 5625.47573 -2593.52102 5625.52197 -2593.41842 5625.5378 -2593.307 5625.5378 -2591.82369 5625.50845 -2591.50599 5625.46766 -2591.36536 5625.379 -2591.24882 5625.25433 -2591.172 5624.81209 -2591.11716 5624.59704 -2591.04191 5624.40412 -2590.92069 5624.24301 -2590.75958 5624.12179 -2590.56666 5624.04654 -2590.35161 5624.0185 -2590.10274 5624.0185 -2577.54926 5624.04654 -2577.30039 5624.12179 -2577.08534 5624.24301 -2576.89242 5624.40412 -2576.73131 5624.59704 -2576.61009 5624.81209 -2576.53484 5625.06096 -2576.5068 5628.60488 -2576.5068 5628.73989 -2576.48333 5628.85905 -2576.41566 5628.94838 -2576.31175 5628.9974 -2576.18378 5629.05845 -2575.87248 5629.09761 -2575.72469 5629.27999 -2575.18244 5629.33809 -2575.04103 5629.58963 -2574.52719 5629.66568 -2574.39456 5629.98208 -2573.91792 5630.07478 -2573.79634 5630.45065 -2573.36503 5630.55841 -2573.25658 5630.98731 -2572.87798 5631.1083 -2572.78451 5631.58292 -2572.46507 5631.71506 -2572.38818 5632.22728 -2572.13337 5632.36833 -2572.07437 5632.90941 -2571.88854 5633.05694 -2571.84844 5633.61763 -2571.73476 5633.76914 -2571.71424 5634.33987 -2571.67466 5634.49275 -2571.67408 Z M 5574.67709 -2576.53484 L 5574.92596 -2576.5068 5578.81804 -2576.5068 5579.06691 -2576.53484 5579.28196 -2576.61009 5579.47488 -2576.73131 5579.63599 -2576.89242 5579.75721 -2577.08534 5579.83246 -2577.30039 5579.8605 -2577.54926 5579.8605 -2590.10274 5579.83246 -2590.35161 5579.75721 -2590.56666 5579.63599 -2590.75958 5579.47488 -2590.92069 5579.28196 -2591.04191 5579.0689 -2591.11646 5578.76719 -2591.14727 5578.63583 -2591.18407 5578.52448 -2591.26286 5578.44608 -2591.3745 5578.40975 -2591.50599 5578.3924 -2591.7018 5578.3923 -2610.26478 5578.42275 -2610.41786 5578.50946 -2610.54763 5578.55697 -2610.59514 5578.77689 -2610.90921 5578.93892 -2611.2567 5579.03816 -2611.62705 5579.07157 -2612.009 5579.03816 -2612.39095 5578.93892 -2612.7613 5578.77689 -2613.10879 5578.55697 -2613.42286 5578.28586 -2613.69397 5577.97179 -2613.91389 5577.6243 -2614.07592 5577.25395 -2614.17516 5576.872 -2614.20857 5576.49005 -2614.17516 5576.1197 -2614.07592 5575.77221 -2613.91389 5575.45814 -2613.69397 5575.18703 -2613.42286 5574.96711 -2613.10879 5574.80508 -2612.7613 5574.70584 -2612.39095 5574.67243 -2612.009 5574.70584 -2611.62705 5574.80508 -2611.2567 5574.96711 -2610.90921 5575.18703 -2610.59514 5575.23514 -2610.54703 5575.32185 -2610.41726 5575.3523 -2610.26419 5575.3523 -2591.70181 5575.33495 -2591.50599 5575.29862 -2591.37448 5575.2202 -2591.26284 5575.10881 -2591.18404 5574.97743 -2591.14726 5574.67506 -2591.11645 5574.46204 -2591.04191 5574.26912 -2590.92069 5574.10801 -2590.75958 5573.98679 -2590.56666 5573.91154 -2590.35161 5573.8835 -2590.10274 5573.8835 -2577.54926 5573.91154 -2577.30039 5573.98679 -2577.08534 5574.10801 -2576.89242 5574.26912 -2576.73131 5574.46204 -2576.61009 5574.67709 -2576.53484 Z M 5541.007 -2552.89043 L 5541.38895 -2552.92384 5541.7593 -2553.02308 5542.10679 -2553.18511 5542.42086 -2553.40503 5542.69197 -2553.67614 5542.91189 -2553.99021 5543.07392 -2554.3377 5543.17316 -2554.70805 5543.20657 -2555.09 5543.19103 -2555.26761 5543.21057 -2555.43054 5543.25125 -2555.49958 5543.18577 -2555.55384 5543.11213 -2555.6997 5543.07392 -2555.8423 5542.91189 -2556.18979 5542.69197 -2556.50386 5542.42086 -2556.77497 5542.10679 -2556.99489 5541.7593 -2557.15692 5541.38895 -2557.25616 5540.99238 -2557.29085 5540.85477 -2557.32842 5540.74922 -2557.37887 5540.63885 -2557.45693 5539.99766 -2558.09812 5539.91095 -2558.22789 5539.8805 -2558.38096 5539.8805 -2568.35274 5539.85246 -2568.60161 5539.77721 -2568.81666 5539.65599 -2569.00958 5539.49488 -2569.17069 5539.30196 -2569.29191 5539.08691 -2569.36716 5538.83804 -2569.3952 5534.94596 -2569.3952 5534.69709 -2569.36716 5534.48204 -2569.29191 5534.28912 -2569.17069 5534.12801 -2569.00958 5534.00679 -2568.81666 5533.93154 -2568.60161 5533.9035 -2568.35274 5533.9035 -2555.79926 5533.93154 -2555.55039 5534.00679 -2555.33534 5534.12801 -2555.14242 5534.28912 -2554.98131 5534.48204 -2554.86009 5534.69709 -2554.78484 5534.94596 -2554.7568 5538.51717 -2554.7568 5538.68358 -2554.72054 5538.81982 -2554.61834 5538.90119 -2554.46873 5538.93822 -2554.34168 5539.10211 -2553.99021 5539.32203 -2553.67614 5539.59314 -2553.40503 5539.90721 -2553.18511 5540.2547 -2553.02308 5540.62505 -2552.92384 5541.007 -2552.89043 Z M 5620.849 -2553.12643 L 5621.23095 -2553.15984 5621.6013 -2553.25908 5621.94879 -2553.42111 5622.26286 -2553.64103 5622.53397 -2553.91214 5622.75389 -2554.22621 5622.91592 -2554.5737 5623.01516 -2554.94405 5623.04857 -2555.326 5623.01516 -2555.70795 5622.91592 -2556.0783 5622.75389 -2556.42579 5622.53397 -2556.73986 5622.26286 -2557.01097 5621.94879 -2557.23089 5621.6013 -2557.39292 5621.23095 -2557.49216 5620.83549 -2557.52675 5620.69779 -2557.56437 5620.59171 -2557.61509 5620.48143 -2557.69311 5619.95766 -2558.21687 5619.87095 -2558.34664 5619.8405 -2558.49971 5619.8405 -2568.35274 5619.81246 -2568.60161 5619.73721 -2568.81666 5619.61599 -2569.00958 5619.45488 -2569.17069 5619.26196 -2569.29191 5619.04691 -2569.36716 5618.79804 -2569.3952 5614.90596 -2569.3952 5614.65709 -2569.36716 5614.44204 -2569.29191 5614.24912 -2569.17069 5614.08801 -2569.00958 5613.96679 -2568.81666 5613.89154 -2568.60161 5613.8635 -2568.35274 5613.8635 -2555.79926 5613.89154 -2555.55039 5613.96679 -2555.33534 5614.08801 -2555.14242 5614.24912 -2554.98131 5614.44204 -2554.86009 5614.65709 -2554.78484 5614.90596 -2554.7568 5618.44187 -2554.7568 5618.58955 -2554.72854 5618.71637 -2554.64775 5618.80439 -2554.52585 5618.94411 -2554.22621 5619.16403 -2553.91214 5619.43514 -2553.64103 5619.74921 -2553.42111 5620.0967 -2553.25908 5620.46705 -2553.15984 5620.849 -2553.12643 Z M 5524.70209 -2576.53484 L 5524.95096 -2576.5068 5528.84304 -2576.5068 5529.09191 -2576.53484 5529.30696 -2576.61009 5529.49988 -2576.73131 5529.66099 -2576.89242 5529.78221 -2577.08534 5529.85746 -2577.30039 5529.8855 -2577.54926 5529.8855 -2586.92184 5529.91595 -2587.07491 5530.04838 -2587.2504 5530.15885 -2587.32852 5530.26377 -2587.37862 5530.40128 -2587.41614 5530.79795 -2587.45084 5531.1683 -2587.55008 5531.51579 -2587.71211 5531.82986 -2587.93203 5532.10097 -2588.20314 5532.32089 -2588.51721 5532.48292 -2588.8647 5532.58216 -2589.23505 5532.61557 -2589.617 5532.58216 -2589.99895 5532.48292 -2590.3693 5532.3061 -2590.7485 5532.26909 -2590.89822 5532.29147 -2591.0508 5532.36991 -2591.18358 5532.52241 -2591.29133 5532.628 -2591.32584 5532.628 -2593.308 5530.73271 -2593.308 5530.86072 -2593.04843 5531.16007 -2592.60043 5531.33874 -2592.39668 5531.42078 -2592.24906 5531.43459 -2592.08073 5531.37769 -2591.92172 5531.26024 -2591.80036 5531.10317 -2591.73829 5530.93448 -2591.74657 5530.79795 -2591.78316 5530.416 -2591.81657 5530.03405 -2591.78316 5529.6637 -2591.68392 5529.31621 -2591.52189 5529.00214 -2591.30197 5528.83276 -2591.17565 5528.67969 -2591.1452 5524.95096 -2591.1452 5524.70209 -2591.11716 5524.48704 -2591.04191 5524.29412 -2590.92069 5524.13301 -2590.75958 5524.01179 -2590.56666 5523.93654 -2590.35161 5523.9085 -2590.10274 5523.9085 -2577.54926 5523.93654 -2577.30039 5524.01179 -2577.08534 5524.13301 -2576.89242 5524.29412 -2576.73131 5524.48704 -2576.61009 5524.70209 -2576.53484 Z M 5610.416 -2553.52043 L 5610.79795 -2553.55384 5611.1683 -2553.65308 5611.51579 -2553.81511 5611.82986 -2554.03503 5612.10097 -2554.30614 5612.32089 -2554.62021 5612.48292 -2554.9677 5612.58216 -2555.33805 5612.61557 -2555.72 5612.58216 -2556.10195 5612.48292 -2556.4723 5612.32089 -2556.81979 5612.10097 -2557.13386 5611.82986 -2557.40497 5611.51579 -2557.62489 5611.1683 -2557.78692 5610.79795 -2557.88616 5610.40171 -2557.92082 5610.26415 -2557.95837 5610.15873 -2558.00873 5610.04832 -2558.08681 5609.96266 -2558.17247 5609.87595 -2558.30224 5609.8455 -2558.45532 5609.8455 -2568.35274 5609.81746 -2568.60161 5609.74221 -2568.81666 5609.62099 -2569.00958 5609.45988 -2569.17069 5609.26696 -2569.29191 5609.05191 -2569.36716 5608.80304 -2569.3952 5604.91096 -2569.3952 5604.66209 -2569.36716 5604.44704 -2569.29191 5604.25412 -2569.17069 5604.09301 -2569.00958 5603.97179 -2568.81666 5603.89654 -2568.60161 5603.8685 -2568.35274 5603.8685 -2555.79926 5603.89654 -2555.55039 5603.97179 -2555.33534 5604.09301 -2555.14242 5604.25412 -2554.98131 5604.44704 -2554.86009 5604.66209 -2554.78484 5604.91096 -2554.7568 5608.20725 -2554.7568 5608.33307 -2554.7365 5608.44611 -2554.67765 5608.53491 -2554.58623 5608.73103 -2554.30614 5609.00214 -2554.03503 5609.31621 -2553.81511 5609.6637 -2553.65308 5610.03405 -2553.55384 5610.416 -2553.52043 Z M 5828.48609 -2631.95587 L 5829.09559 -2631.919 5833.00841 -2631.919 5833.61791 -2631.95587 5834.20661 -2632.06375 5834.77802 -2632.24181 5835.32379 -2632.48744 5835.83598 -2632.79707 5836.30711 -2633.16618 5836.73032 -2633.58939 5837.09943 -2634.06052 5837.40906 -2634.57271 5837.65469 -2635.11848 5837.83275 -2635.68989 5837.94063 -2636.27859 5837.97677 -2636.876 5837.94063 -2637.47341 5837.83275 -2638.06211 5837.65469 -2638.63352 5837.40906 -2639.17929 5837.09943 -2639.69148 5836.73032 -2640.16261 5836.30711 -2640.58582 5835.83598 -2640.95493 5835.32379 -2641.26456 5834.77802 -2641.51019 5834.20661 -2641.68825 5833.61791 -2641.79613 5833.00841 -2641.833 5829.09559 -2641.833 5828.48609 -2641.79613 5827.89739 -2641.68825 5827.32598 -2641.51019 5826.78021 -2641.26456 5826.26802 -2640.95493 5825.79689 -2640.58582 5825.37368 -2640.16261 5825.00457 -2639.69148 5824.69494 -2639.17929 5824.44931 -2638.63352 5824.27125 -2638.06211 5824.16337 -2637.47341 5824.12723 -2636.876 5824.16337 -2636.27859 5824.27125 -2635.68989 5824.44931 -2635.11848 5824.69494 -2634.57271 5825.00457 -2634.06052 5825.37368 -2633.58939 5825.79689 -2633.16618 5826.26802 -2632.79707 5826.78021 -2632.48744 5827.32598 -2632.24181 5827.89739 -2632.06375 5828.48609 -2631.95587 Z M 5931.03924 -2778.05266 L 5931.59917 -2778.08717 5931.75083 -2778.10653 5932.31238 -2778.21589 5932.46021 -2778.25486 5933.0027 -2778.43653 5933.1442 -2778.49445 5933.65836 -2778.74531 5933.79109 -2778.82119 5934.26815 -2779.13697 5934.38985 -2779.22951 5934.82165 -2779.60481 5934.93024 -2779.71243 5935.3094 -2780.14083 5935.40303 -2780.2617 5935.72309 -2780.7359 5935.80016 -2780.86794 5936.05563 -2781.37983 5936.11482 -2781.5208 5936.30135 -2782.06163 5936.34165 -2782.20911 5936.45601 -2782.7694 5936.47694 -2782.92393 5936.51736 -2783.51805 5936.51755 -2783.67399 5936.48013 -2784.24461 5936.46018 -2784.39619 5936.34861 -2784.9573 5936.30906 -2785.10499 5936.12526 -2785.64676 5936.06679 -2785.78802 5935.8139 -2786.3012 5935.73751 -2786.43363 5935.41986 -2786.90944 5935.32684 -2787.03078 5934.94985 -2787.4611 5934.8418 -2787.56927 5934.41191 -2787.94675 5934.29068 -2788.0399 5933.81523 -2788.35809 5933.68288 -2788.43464 5933.16999 -2788.6881 5933.0288 -2788.74674 5932.48723 -2788.93115 5932.33959 -2788.97086 5931.7786 -2789.08307 5931.62705 -2789.10319 5931.05622 -2789.14128 5930.90333 -2789.14146 5930.33241 -2789.10477 5930.1808 -2789.08502 5929.61954 -2788.97419 5929.4718 -2788.93483 5928.92979 -2788.75174 5928.78845 -2788.69345 5928.27494 -2788.44124 5928.14241 -2788.36502 5927.66619 -2788.04799 5927.54473 -2787.95513 5927.11391 -2787.57871 5927.0056 -2787.4708 5926.62756 -2787.0414 5926.53425 -2786.92029 5926.21544 -2786.44526 5926.13872 -2786.31302 5925.88458 -2785.80046 5925.82576 -2785.65934 5925.64064 -2785.11802 5925.60073 -2784.97043 5925.48779 -2784.40959 5925.46747 -2784.25806 5925.42864 -2783.68728 5925.42825 -2783.53439 5925.46419 -2782.96342 5925.48375 -2782.81179 5925.59385 -2782.25038 5925.63301 -2782.10259 5925.81539 -2781.56034 5925.87349 -2781.41893 5926.12503 -2780.90509 5926.20108 -2780.77246 5926.51748 -2780.29582 5926.61018 -2780.17424 5926.98605 -2779.74293 5927.09381 -2779.63448 5927.52271 -2779.25588 5927.6437 -2779.16241 5928.11832 -2778.84297 5928.25046 -2778.76608 5928.76268 -2778.51127 5928.90373 -2778.45227 5929.44481 -2778.26644 5929.59234 -2778.22634 5930.15303 -2778.11266 5930.30454 -2778.09214 5930.86418 -2778.05333 5931.03924 -2778.05266 Z M 5931.01964 -2571.63536 L 5931.57957 -2571.66987 5931.73123 -2571.68923 5932.29278 -2571.79859 5932.44061 -2571.83756 5932.9831 -2572.01923 5933.1246 -2572.07715 5933.63876 -2572.32801 5933.77149 -2572.40389 5934.24855 -2572.71967 5934.37025 -2572.81221 5934.80205 -2573.18751 5934.91064 -2573.29513 5935.2898 -2573.72353 5935.38343 -2573.8444 5935.70349 -2574.3186 5935.78056 -2574.45064 5936.03603 -2574.96253 5936.09522 -2575.1035 5936.28175 -2575.64433 5936.32205 -2575.79181 5936.43641 -2576.3521 5936.45734 -2576.50663 5936.49776 -2577.10075 5936.49795 -2577.25669 5936.46053 -2577.82731 5936.44058 -2577.97889 5936.32901 -2578.54 5936.28946 -2578.68769 5936.10566 -2579.22946 5936.04719 -2579.37072 5935.7943 -2579.8839 5935.71791 -2580.01633 5935.40026 -2580.49214 5935.30724 -2580.61348 5934.93025 -2581.0438 5934.8222 -2581.15197 5934.39231 -2581.52945 5934.27108 -2581.6226 5933.79563 -2581.94079 5933.66328 -2582.01734 5933.15039 -2582.2708 5933.0092 -2582.32944 5932.46763 -2582.51385 5932.31999 -2582.55356 5931.759 -2582.66577 5931.60745 -2582.68589 5931.03662 -2582.72398 5930.88373 -2582.72416 5930.31281 -2582.68747 5930.1612 -2582.66772 5929.59994 -2582.55689 5929.4522 -2582.51753 5928.91019 -2582.33444 5928.76885 -2582.27615 5928.25534 -2582.02394 5928.12281 -2581.94772 5927.64659 -2581.63069 5927.52513 -2581.53783 5927.09431 -2581.16141 5926.986 -2581.0535 5926.60796 -2580.6241 5926.51465 -2580.50299 5926.19584 -2580.02796 5926.11912 -2579.89572 5925.86498 -2579.38316 5925.80616 -2579.24204 5925.62104 -2578.70072 5925.58113 -2578.55313 5925.46819 -2577.99229 5925.44787 -2577.84076 5925.40904 -2577.26998 5925.40865 -2577.11709 5925.44459 -2576.54612 5925.46415 -2576.39449 5925.57425 -2575.83308 5925.61341 -2575.68529 5925.79579 -2575.14304 5925.85389 -2575.00163 5926.10543 -2574.48779 5926.18148 -2574.35516 5926.49788 -2573.87852 5926.59058 -2573.75694 5926.96645 -2573.32563 5927.07421 -2573.21718 5927.50311 -2572.83858 5927.6241 -2572.74511 5928.09872 -2572.42567 5928.23086 -2572.34878 5928.74308 -2572.09397 5928.88413 -2572.03497 5929.42521 -2571.84914 5929.57274 -2571.80904 5930.13343 -2571.69536 5930.28494 -2571.67484 5930.84458 -2571.63603 5931.01964 -2571.63536 Z M 5604.66209 -2576.53484 L 5604.91096 -2576.5068 5608.80304 -2576.5068 5609.05191 -2576.53484 5609.26696 -2576.61009 5609.45988 -2576.73131 5609.62099 -2576.89242 5609.74221 -2577.08534 5609.81746 -2577.30039 5609.8455 -2577.54926 5609.8455 -2590.10274 5609.81746 -2590.35161 5609.74221 -2590.56666 5609.62099 -2590.75958 5609.45988 -2590.92069 5609.26696 -2591.04191 5609.05191 -2591.11716 5608.86512 -2591.1382 5608.70905 -2591.18978 5608.58689 -2591.29977 5608.51928 -2591.4496 5608.51765 -2591.61397 5608.58225 -2591.76512 5608.81689 -2592.10021 5608.97892 -2592.4477 5609.07816 -2592.81805 5609.11157 -2593.2 5609.07816 -2593.58195 5608.97892 -2593.9523 5608.81689 -2594.29979 5608.59697 -2594.61386 5608.32586 -2594.88497 5608.01179 -2595.10489 5607.6643 -2595.26692 5607.29395 -2595.36616 5606.912 -2595.39957 5606.53005 -2595.36616 5606.1597 -2595.26692 5605.81221 -2595.10489 5605.49814 -2594.88497 5605.22703 -2594.61386 5605.00711 -2594.29979 5604.84508 -2593.9523 5604.74584 -2593.58195 5604.71243 -2593.2 5604.74584 -2592.81805 5604.84508 -2592.4477 5605.00711 -2592.10021 5605.23509 -2591.77463 5605.29979 -2591.62299 5605.29784 -2591.45813 5605.22956 -2591.30806 5605.10655 -2591.19828 5604.94971 -2591.14744 5604.66089 -2591.11674 5604.44704 -2591.04191 5604.25412 -2590.92069 5604.09301 -2590.75958 5603.97179 -2590.56666 5603.89654 -2590.35161 5603.8685 -2590.10274 5603.8685 -2577.54926 5603.89654 -2577.30039 5603.97179 -2577.08534 5604.09301 -2576.89242 5604.25412 -2576.73131 5604.44704 -2576.61009 5604.66209 -2576.53484 Z M 5618.79804 -2576.5068 L 5619.04691 -2576.53484 5619.26196 -2576.61009 5619.45488 -2576.73131 5619.61599 -2576.89242 5619.73721 -2577.08534 5619.81246 -2577.30039 5619.8405 -2577.54926 5619.8405 -2590.10274 5619.81246 -2590.35161 5619.73721 -2590.56666 5619.61599 -2590.75958 5619.45488 -2590.92069 5619.26196 -2591.04191 5619.07753 -2591.10644 5618.93575 -2591.19248 5618.84105 -2591.32862 5618.80971 -2591.49148 5618.84712 -2591.65305 5618.97892 -2591.9357 5619.07816 -2592.30605 5619.11157 -2592.688 5619.07816 -2593.06995 5618.97892 -2593.4403 5618.81689 -2593.78779 5618.59697 -2594.10186 5618.32586 -2594.37297 5618.01179 -2594.59289 5617.6643 -2594.75492 5617.29395 -2594.85416 5616.912 -2594.88757 5616.53005 -2594.85416 5616.1597 -2594.75492 5615.81221 -2594.59289 5615.49814 -2594.37297 5615.22703 -2594.10186 5615.00711 -2593.78779 5614.84508 -2593.4403 5614.74584 -2593.06995 5614.71243 -2592.688 5614.74584 -2592.30605 5614.84508 -2591.9357 5614.9632 -2591.68238 5614.99987 -2591.53877 5614.98173 -2591.39166 5614.91126 -2591.26126 5614.79815 -2591.16548 5614.44204 -2591.04191 5614.24912 -2590.92069 5614.08801 -2590.75958 5613.96679 -2590.56666 5613.89154 -2590.35161 5613.8635 -2590.10274 5613.8635 -2577.54926 5613.89154 -2577.30039 5613.96679 -2577.08534 5614.08801 -2576.89242 5614.24912 -2576.73131 5614.44204 -2576.61009 5614.65709 -2576.53484 5614.90596 -2576.5068 5618.79804 -2576.5068 Z M 5484.22639 -2604.86554 L 5484.47526 -2604.8375 5497.02874 -2604.8375 5497.27761 -2604.86554 5497.49266 -2604.94079 5497.68558 -2605.06201 5497.85332 -2605.22974 5497.97548 -2605.31321 5498.11963 -2605.34656 5498.32567 -2605.30476 5498.71609 -2605.23961 5499.11191 -2605.23961 5499.50233 -2605.30476 5499.87669 -2605.43328 5500.2248 -2605.62166 5500.53716 -2605.86478 5500.80524 -2606.15599 5501.02173 -2606.48735 5501.18073 -2606.84983 5501.27789 -2607.23354 5501.31058 -2607.628 5501.27789 -2608.02246 5501.18073 -2608.40617 5501.02173 -2608.76865 5500.80524 -2609.10001 5500.53716 -2609.39122 5500.2248 -2609.63434 5499.87669 -2609.82272 5499.50233 -2609.95124 5499.11191 -2610.01639 5498.71609 -2610.01639 5498.41394 -2609.96597 5498.27471 -2609.96731 5498.14437 -2610.01629 5498.03871 -2610.10699 5497.84669 -2610.42888 5497.68558 -2610.58999 5497.49266 -2610.71121 5497.27761 -2610.78646 5497.02874 -2610.8145 5484.47526 -2610.8145 5484.22639 -2610.78646 5484.01134 -2610.71121 5483.81842 -2610.58999 5483.65731 -2610.42888 5483.53609 -2610.23596 5483.46084 -2610.02091 5483.4328 -2609.77204 5483.4328 -2605.87996 5483.46084 -2605.63109 5483.53609 -2605.41604 5483.65731 -2605.22312 5483.81842 -2605.06201 5484.01134 -2604.94079 5484.22639 -2604.86554 Z M 5574.67709 -2554.78484 L 5574.92596 -2554.7568 5578.81804 -2554.7568 5579.06691 -2554.78484 5579.28196 -2554.86009 5579.47488 -2554.98131 5579.63599 -2555.14242 5579.75721 -2555.33534 5579.83246 -2555.55039 5579.8605 -2555.79926 5579.8605 -2568.35274 5579.83246 -2568.60161 5579.75721 -2568.81666 5579.63599 -2569.00958 5579.47488 -2569.17069 5579.28196 -2569.29191 5579.06691 -2569.36716 5578.81804 -2569.3952 5574.92596 -2569.3952 5574.67709 -2569.36716 5574.46204 -2569.29191 5574.26912 -2569.17069 5574.10801 -2569.00958 5573.98679 -2568.81666 5573.91154 -2568.60161 5573.8835 -2568.35274 5573.8835 -2555.79926 5573.91154 -2555.55039 5573.98679 -2555.33534 5574.10801 -2555.14242 5574.26912 -2554.98131 5574.46204 -2554.86009 5574.67709 -2554.78484 Z M 5564.68209 -2554.78484 L 5564.93096 -2554.7568 5568.82304 -2554.7568 5569.07191 -2554.78484 5569.28696 -2554.86009 5569.47988 -2554.98131 5569.64099 -2555.14242 5569.76221 -2555.33534 5569.83746 -2555.55039 5569.8655 -2555.79926 5569.8655 -2568.35274 5569.83746 -2568.60161 5569.76221 -2568.81666 5569.64099 -2569.00958 5569.47988 -2569.17069 5569.28696 -2569.29191 5569.07191 -2569.36716 5568.82304 -2569.3952 5564.93096 -2569.3952 5564.68209 -2569.36716 5564.46704 -2569.29191 5564.27412 -2569.17069 5564.11301 -2569.00958 5563.99179 -2568.81666 5563.91654 -2568.60161 5563.8885 -2568.35274 5563.8885 -2555.79926 5563.91654 -2555.55039 5563.99179 -2555.33534 5564.11301 -2555.14242 5564.27412 -2554.98131 5564.46704 -2554.86009 5564.68209 -2554.78484 Z M 5518.84804 -2576.5068 L 5519.09691 -2576.53484 5519.31196 -2576.61009 5519.50488 -2576.73131 5519.66599 -2576.89242 5519.78721 -2577.08534 5519.86246 -2577.30039 5519.8905 -2577.54926 5519.8905 -2590.10274 5519.86246 -2590.35161 5519.78721 -2590.56666 5519.66599 -2590.75958 5519.50488 -2590.92069 5519.31196 -2591.04191 5519.09691 -2591.11716 5518.84804 -2591.1452 5514.95596 -2591.1452 5514.70709 -2591.11716 5514.49204 -2591.04191 5514.29912 -2590.92069 5514.13801 -2590.75958 5514.01679 -2590.56666 5513.94154 -2590.35161 5513.9135 -2590.10274 5513.9135 -2577.54926 5513.94154 -2577.30039 5514.01679 -2577.08534 5514.13801 -2576.89242 5514.29912 -2576.73131 5514.49204 -2576.61009 5514.70709 -2576.53484 5514.95596 -2576.5068 5518.84804 -2576.5068 Z M 5859.63364 -2562.39104 L 5859.88251 -2562.363 5862.59349 -2562.363 5862.84236 -2562.39104 5863.05741 -2562.46629 5863.25033 -2562.58751 5863.41144 -2562.74862 5863.53266 -2562.94154 5863.60791 -2563.15659 5863.63595 -2563.40546 5863.63595 -2571.23454 5863.60791 -2571.48341 5863.53266 -2571.69846 5863.41144 -2571.89138 5863.25033 -2572.05249 5863.03544 -2572.18752 5862.93552 -2572.27681 5862.8707 -2572.39409 5862.84825 -2572.52621 5862.84825 -2573.46831 5862.86676 -2573.58859 5862.92059 -2573.69774 5863.14289 -2574.01521 5863.30492 -2574.3627 5863.40416 -2574.73305 5863.43757 -2575.115 5863.40416 -2575.49695 5863.30492 -2575.8673 5863.14289 -2576.21479 5862.92297 -2576.52886 5862.65186 -2576.79997 5862.33779 -2577.01989 5861.9903 -2577.18192 5861.61995 -2577.28116 5861.238 -2577.31457 5860.85605 -2577.28116 5860.4857 -2577.18192 5860.13821 -2577.01989 5859.82414 -2576.79997 5859.55303 -2576.52886 5859.33311 -2576.21479 5859.17108 -2575.8673 5859.07184 -2575.49695 5859.03843 -2575.115 5859.07184 -2574.73305 5859.17108 -2574.3627 5859.33311 -2574.01521 5859.55481 -2573.6986 5859.60864 -2573.58945 5859.62715 -2573.46917 5859.62715 -2572.52583 5859.6047 -2572.39372 5859.53988 -2572.27643 5859.43996 -2572.18714 5859.22567 -2572.05249 5859.06456 -2571.89138 5858.94334 -2571.69846 5858.86809 -2571.48341 5858.84005 -2571.23454 5858.84005 -2563.40546 5858.86809 -2563.15659 5858.94334 -2562.94154 5859.06456 -2562.74862 5859.22567 -2562.58751 5859.41859 -2562.46629 5859.63364 -2562.39104 Z M 5698.88287 -2807.79292 L 5699.427 -2807.75726 5699.97113 -2807.79292 5700.50595 -2807.8993 5701.02231 -2808.07458 5701.51137 -2808.31576 5701.96477 -2808.61871 5702.37475 -2808.97825 5702.73429 -2809.38823 5703.03724 -2809.84163 5703.27842 -2810.33069 5703.4537 -2810.84705 5703.56008 -2811.38187 5703.59574 -2811.926 5703.56008 -2812.47013 5703.4537 -2813.00495 5703.27842 -2813.52131 5703.03724 -2814.01037 5702.73429 -2814.46377 5702.37475 -2814.87375 5701.96477 -2815.23329 5701.51137 -2815.53624 5701.02231 -2815.77742 5700.50595 -2815.9527 5699.97113 -2816.05908 5699.427 -2816.09474 5698.88287 -2816.05908 5698.34805 -2815.9527 5697.83169 -2815.77742 5697.34263 -2815.53624 5696.88923 -2815.23329 5696.47925 -2814.87375 5696.11971 -2814.46377 5695.81676 -2814.01037 5695.57558 -2813.52131 5695.4003 -2813.00495 5695.29392 -2812.47013 5695.25826 -2811.926 5695.29392 -2811.38187 5695.4003 -2810.84705 5695.57558 -2810.33069 5695.81676 -2809.84163 5696.11971 -2809.38823 5696.47925 -2808.97825 5696.88923 -2808.61871 5697.34263 -2808.31576 5697.83169 -2808.07458 5698.34805 -2807.8993 5698.88287 -2807.79292 Z M 5794.68259 -2804.17204 L 5794.93146 -2804.144 5801.08654 -2804.144 5801.33541 -2804.17204 5801.55046 -2804.24729 5801.74338 -2804.36851 5801.90449 -2804.52962 5802.02571 -2804.72254 5802.10096 -2804.93759 5802.129 -2805.18646 5802.129 -2811.34154 5802.10096 -2811.59041 5802.02571 -2811.80546 5801.90449 -2811.99838 5801.74338 -2812.15949 5801.55046 -2812.28071 5801.33541 -2812.35596 5801.08654 -2812.384 5794.93146 -2812.384 5794.68259 -2812.35596 5794.46754 -2812.28071 5794.27462 -2812.15949 5794.11351 -2811.99838 5793.99229 -2811.80546 5793.91704 -2811.59041 5793.889 -2811.34154 5793.889 -2805.18646 5793.91704 -2804.93759 5793.99229 -2804.72254 5794.11351 -2804.52962 5794.27462 -2804.36851 5794.46754 -2804.24729 5794.68259 -2804.17204 Z M 5788.009 -2804.14446 L 5788.54671 -2804.1797 5789.07522 -2804.28483 5789.58548 -2804.45804 5790.06877 -2804.69637 5790.51682 -2804.99575 5790.92196 -2805.35104 5791.27725 -2805.75618 5791.57663 -2806.20423 5791.81496 -2806.68752 5791.98817 -2807.19778 5792.0933 -2807.72629 5792.12854 -2808.264 5792.0933 -2808.80171 5791.98817 -2809.33022 5791.81496 -2809.84048 5791.57663 -2810.32377 5791.27725 -2810.77182 5790.92196 -2811.17696 5790.51682 -2811.53225 5790.06877 -2811.83163 5789.58548 -2812.06996 5789.07522 -2812.24317 5788.54671 -2812.3483 5788.009 -2812.38354 5787.47129 -2812.3483 5786.94278 -2812.24317 5786.43252 -2812.06996 5785.94923 -2811.83163 5785.50118 -2811.53225 5785.09604 -2811.17696 5784.74075 -2810.77182 5784.44137 -2810.32377 5784.20304 -2809.84048 5784.02983 -2809.33022 5783.9247 -2808.80171 5783.88946 -2808.264 5783.9247 -2807.72629 5784.02983 -2807.19778 5784.20304 -2806.68752 5784.44137 -2806.20423 5784.74075 -2805.75618 5785.09604 -2805.35104 5785.50118 -2804.99575 5785.94923 -2804.69637 5786.43252 -2804.45804 5786.94278 -2804.28483 5787.47129 -2804.1797 5788.009 -2804.14446 Z M 5768.009 -2794.14486 L 5768.54666 -2794.1801 5769.07511 -2794.28521 5769.58533 -2794.45841 5770.06857 -2794.69672 5770.51657 -2794.99607 5770.92167 -2795.35133 5771.27693 -2795.75643 5771.57628 -2796.20443 5771.81459 -2796.68767 5771.98779 -2797.19789 5772.0929 -2797.72634 5772.12814 -2798.264 5772.0929 -2798.80166 5771.98779 -2799.33011 5771.81459 -2799.84033 5771.57628 -2800.32357 5771.27693 -2800.77157 5770.92167 -2801.17667 5770.51657 -2801.53193 5770.06857 -2801.83128 5769.58533 -2802.06959 5769.07511 -2802.24279 5768.54666 -2802.3479 5768.009 -2802.38314 5767.47134 -2802.3479 5766.94289 -2802.24279 5766.43267 -2802.06959 5765.94943 -2801.83128 5765.50143 -2801.53193 5765.09633 -2801.17667 5764.74107 -2800.77157 5764.44172 -2800.32357 5764.20341 -2799.84033 5764.03021 -2799.33011 5763.9251 -2798.80166 5763.88986 -2798.264 5763.9251 -2797.72634 5764.03021 -2797.19789 5764.20341 -2796.68767 5764.44172 -2796.20443 5764.74107 -2795.75643 5765.09633 -2795.35133 5765.50143 -2794.99607 5765.94943 -2794.69672 5766.43267 -2794.45841 5766.94289 -2794.28521 5767.47134 -2794.1801 5768.009 -2794.14486 Z M 5778.009 -2804.14486 L 5778.54666 -2804.1801 5779.07511 -2804.28521 5779.58533 -2804.45841 5780.06857 -2804.69672 5780.51657 -2804.99607 5780.92167 -2805.35133 5781.27693 -2805.75643 5781.57628 -2806.20443 5781.81459 -2806.68767 5781.98779 -2807.19789 5782.0929 -2807.72634 5782.12814 -2808.264 5782.0929 -2808.80166 5781.98779 -2809.33011 5781.81459 -2809.84033 5781.57628 -2810.32357 5781.27693 -2810.77157 5780.92167 -2811.17667 5780.51657 -2811.53193 5780.06857 -2811.83128 5779.58533 -2812.06959 5779.07511 -2812.24279 5778.54666 -2812.3479 5778.009 -2812.38314 5777.47134 -2812.3479 5776.94289 -2812.24279 5776.43267 -2812.06959 5775.94943 -2811.83128 5775.50143 -2811.53193 5775.09633 -2811.17667 5774.74107 -2810.77157 5774.44172 -2810.32357 5774.20341 -2809.84033 5774.03021 -2809.33011 5773.9251 -2808.80166 5773.88986 -2808.264 5773.9251 -2807.72634 5774.03021 -2807.19789 5774.20341 -2806.68767 5774.44172 -2806.20443 5774.74107 -2805.75643 5775.09633 -2805.35133 5775.50143 -2804.99607 5775.94943 -2804.69672 5776.43267 -2804.45841 5776.94289 -2804.28521 5777.47134 -2804.1801 5778.009 -2804.14486 Z M 5768.009 -2804.14486 L 5768.54666 -2804.1801 5769.07511 -2804.28521 5769.58533 -2804.45841 5770.06857 -2804.69672 5770.51657 -2804.99607 5770.92167 -2805.35133 5771.27693 -2805.75643 5771.57628 -2806.20443 5771.81459 -2806.68767 5771.98779 -2807.19789 5772.0929 -2807.72634 5772.12814 -2808.264 5772.0929 -2808.80166 5771.98779 -2809.33011 5771.81459 -2809.84033 5771.57628 -2810.32357 5771.27693 -2810.77157 5770.92167 -2811.17667 5770.51657 -2811.53193 5770.06857 -2811.83128 5769.58533 -2812.06959 5769.07511 -2812.24279 5768.54666 -2812.3479 5768.009 -2812.38314 5767.47134 -2812.3479 5766.94289 -2812.24279 5766.43267 -2812.06959 5765.94943 -2811.83128 5765.50143 -2811.53193 5765.09633 -2811.17667 5764.74107 -2810.77157 5764.44172 -2810.32357 5764.20341 -2809.84033 5764.03021 -2809.33011 5763.9251 -2808.80166 5763.88986 -2808.264 5763.9251 -2807.72634 5764.03021 -2807.19789 5764.20341 -2806.68767 5764.44172 -2806.20443 5764.74107 -2805.75643 5765.09633 -2805.35133 5765.50143 -2804.99607 5765.94943 -2804.69672 5766.43267 -2804.45841 5766.94289 -2804.28521 5767.47134 -2804.1801 5768.009 -2804.14486 Z M 5777.47134 -2794.1801 L 5778.009 -2794.14486 5778.54666 -2794.1801 5779.07511 -2794.28521 5779.58533 -2794.45841 5780.06857 -2794.69672 5780.51657 -2794.99607 5780.92167 -2795.35133 5781.27693 -2795.75643 5781.57628 -2796.20443 5781.81459 -2796.68767 5781.98779 -2797.19789 5782.0929 -2797.72634 5782.12814 -2798.264 5782.0929 -2798.80166 5781.98779 -2799.33011 5781.81459 -2799.84033 5781.57628 -2800.32357 5781.27693 -2800.77157 5780.92167 -2801.17667 5780.51657 -2801.53193 5780.06857 -2801.83128 5779.58533 -2802.06959 5779.07511 -2802.24279 5778.54666 -2802.3479 5778.009 -2802.38314 5777.47134 -2802.3479 5776.94289 -2802.24279 5776.43267 -2802.06959 5775.94943 -2801.83128 5775.50143 -2801.53193 5775.09633 -2801.17667 5774.74107 -2800.77157 5774.44172 -2800.32357 5774.20341 -2799.84033 5774.03021 -2799.33011 5773.9251 -2798.80166 5773.88986 -2798.264 5773.9251 -2797.72634 5774.03021 -2797.19789 5774.20341 -2796.68767 5774.44172 -2796.20443 5774.74107 -2795.75643 5775.09633 -2795.35133 5775.50143 -2794.99607 5775.94943 -2794.69672 5776.43267 -2794.45841 5776.94289 -2794.28521 5777.47134 -2794.1801 Z M 5918.37041 -2747.25915 L 5918.56284 -2747.27429 5918.98724 -2747.34327 5919.17456 -2747.38985 5919.58184 -2747.52769 5919.75894 -2747.60444 5920.138 -2747.80738 5920.30007 -2747.91221 5920.6406 -2748.17474 5920.78322 -2748.30479 5921.07594 -2748.61974 5921.19523 -2748.77149 5921.43217 -2749.13029 5921.52488 -2749.29958 5921.69958 -2749.69246 5921.76319 -2749.8747 5921.87083 -2750.29071 5921.90387 -2750.48398 5921.94173 -2750.92645 5921.94202 -2751.12251 5921.90663 -2751.55077 5921.87492 -2751.74116 5921.76952 -2752.15801 5921.70692 -2752.3406 5921.5344 -2752.73445 5921.44263 -2752.90425 5921.20769 -2753.26436 5921.08924 -2753.41676 5920.79827 -2753.73333 5920.65637 -2753.86418 5920.3173 -2754.12858 5920.15582 -2754.23431 5919.77788 -2754.43935 5919.60121 -2754.51708 5919.1947 -2754.65718 5919.00765 -2754.7048 5918.58363 -2754.77613 5918.3913 -2754.79234 5917.96132 -2754.79297 5917.76894 -2754.77732 5917.34472 -2754.70723 5917.15753 -2754.66016 5916.75061 -2754.52125 5916.57371 -2754.44404 5916.19518 -2754.24011 5916.03338 -2754.13485 5915.69354 -2753.87144 5915.55126 -2753.74101 5915.25937 -2753.42529 5915.14048 -2753.27324 5914.90448 -2752.91382 5914.81221 -2752.74428 5914.63854 -2752.35094 5914.57541 -2752.16854 5914.46879 -2751.752 5914.43652 -2751.56169 5914.39985 -2751.13329 5914.39932 -2750.94027 5914.43361 -2750.51167 5914.46482 -2750.32119 5914.56913 -2749.90406 5914.63125 -2749.72131 5914.80274 -2749.32702 5914.89407 -2749.15697 5915.12807 -2748.79625 5915.24611 -2748.64353 5915.53625 -2748.32621 5915.67781 -2748.19499 5916.01618 -2747.9297 5916.17739 -2747.82355 5916.55479 -2747.61752 5916.73126 -2747.53932 5917.1374 -2747.39816 5917.32432 -2747.35005 5917.74815 -2747.27761 5917.94045 -2747.2609 5918.37041 -2747.25915 Z M 5918.47041 -2778.85915 L 5918.66284 -2778.87429 5919.08724 -2778.94327 5919.27456 -2778.98985 5919.68184 -2779.12769 5919.85894 -2779.20444 5920.238 -2779.40738 5920.40007 -2779.51221 5920.7406 -2779.77474 5920.88322 -2779.90479 5921.17594 -2780.21974 5921.29523 -2780.37149 5921.53217 -2780.73029 5921.62488 -2780.89958 5921.79958 -2781.29246 5921.86319 -2781.4747 5921.97083 -2781.89071 5922.00387 -2782.08398 5922.04173 -2782.52645 5922.04202 -2782.72251 5922.00663 -2783.15077 5921.97492 -2783.34116 5921.86952 -2783.75801 5921.80692 -2783.9406 5921.6344 -2784.33445 5921.54263 -2784.50425 5921.30769 -2784.86436 5921.18924 -2785.01676 5920.89827 -2785.33333 5920.75637 -2785.46418 5920.4173 -2785.72858 5920.25582 -2785.83431 5919.87788 -2786.03935 5919.70121 -2786.11708 5919.2947 -2786.25718 5919.10765 -2786.3048 5918.68363 -2786.37613 5918.4913 -2786.39234 5918.06132 -2786.39297 5917.86894 -2786.37732 5917.44472 -2786.30723 5917.25753 -2786.26016 5916.85061 -2786.12125 5916.67371 -2786.04404 5916.29518 -2785.84011 5916.13338 -2785.73485 5915.79354 -2785.47144 5915.65126 -2785.34101 5915.35937 -2785.02529 5915.24048 -2784.87324 5915.00448 -2784.51382 5914.91221 -2784.34428 5914.73854 -2783.95094 5914.67541 -2783.76854 5914.56879 -2783.352 5914.53652 -2783.16169 5914.49985 -2782.73329 5914.49932 -2782.54027 5914.53361 -2782.11167 5914.56482 -2781.92119 5914.66913 -2781.50406 5914.73125 -2781.32131 5914.90274 -2780.92702 5914.99407 -2780.75697 5915.22807 -2780.39625 5915.34611 -2780.24353 5915.63625 -2779.92621 5915.77781 -2779.79499 5916.11618 -2779.5297 5916.27739 -2779.42355 5916.65479 -2779.21752 5916.83126 -2779.13932 5917.2374 -2778.99816 5917.42432 -2778.95005 5917.84815 -2778.87761 5918.04045 -2778.8609 5918.47041 -2778.85915 Z M 5931.61852 -2538.56762 L 5931.74294 -2538.6307 5932.53905 -2539.11967 5933.29265 -2539.67191 5933.99873 -2540.28373 5934.6526 -2540.95107 5935.24989 -2541.66948 5935.78664 -2542.43419 5936.21198 -2543.15947 5934.68191 -2543.15947 5934.53277 -2543.18832 5934.40513 -2543.27069 5934.31742 -2543.39471 5934.15828 -2543.74677 5933.94001 -2544.06971 5933.6703 -2544.35112 5933.35691 -2544.5829 5933.00886 -2544.75839 5932.63616 -2544.87252 5932.24953 -2544.92203 5931.8601 -2544.90549 5931.47906 -2544.82337 5931.11739 -2544.67804 5930.78547 -2544.47367 5930.49287 -2544.21615 5930.248 -2543.91288 5930.0579 -2543.57259 5929.92805 -2543.20507 5929.86218 -2542.82089 5929.86218 -2542.43111 5929.92805 -2542.04693 5930.0579 -2541.67941 5930.248 -2541.33912 5930.49287 -2541.03585 5930.78547 -2540.77833 5931.11739 -2540.57396 5931.36767 -2540.47339 5931.49936 -2540.38707 5931.58753 -2540.25662 5931.61852 -2540.10224 5931.61852 -2538.56762 Z M 5490.71853 -2538.31762 L 5490.84294 -2538.3807 5491.63905 -2538.86967 5492.39265 -2539.42191 5493.09873 -2540.03373 5493.7526 -2540.70107 5494.34989 -2541.41948 5494.88664 -2542.18419 5495.31198 -2542.90947 5493.78191 -2542.90947 5493.63277 -2542.93832 5493.50513 -2543.02069 5493.41742 -2543.14471 5493.25828 -2543.49677 5493.04001 -2543.81971 5492.7703 -2544.10112 5492.45691 -2544.3329 5492.10886 -2544.50839 5491.73616 -2544.62252 5491.34953 -2544.67203 5490.9601 -2544.65549 5490.57906 -2544.57337 5490.21739 -2544.42804 5489.88547 -2544.22367 5489.59287 -2543.96615 5489.348 -2543.66288 5489.1579 -2543.32259 5489.02805 -2542.95507 5488.96218 -2542.57089 5488.96218 -2542.18111 5489.02805 -2541.79693 5489.1579 -2541.42941 5489.348 -2541.08912 5489.59287 -2540.78585 5489.88547 -2540.52833 5490.21739 -2540.32396 5490.46767 -2540.22339 5490.59936 -2540.13707 5490.68753 -2540.00662 5490.71853 -2539.85224 5490.71853 -2538.31762 Z M 5490.16853 -2801.86762 L 5490.29294 -2801.9307 5491.08905 -2802.41967 5491.84265 -2802.97191 5492.54873 -2803.58373 5493.2026 -2804.25107 5493.79989 -2804.96948 5494.33664 -2805.73419 5494.76198 -2806.45947 5493.23191 -2806.45947 5493.08277 -2806.48832 5492.95513 -2806.57069 5492.86742 -2806.69471 5492.70828 -2807.04677 5492.49001 -2807.36971 5492.2203 -2807.65112 5491.90691 -2807.8829 5491.55886 -2808.05839 5491.18616 -2808.17252 5490.79953 -2808.22203 5490.4101 -2808.20549 5490.02906 -2808.12337 5489.66739 -2807.97804 5489.33547 -2807.77367 5489.04287 -2807.51615 5488.798 -2807.21288 5488.6079 -2806.87259 5488.47805 -2806.50507 5488.41218 -2806.12089 5488.41218 -2805.73111 5488.47805 -2805.34693 5488.6079 -2804.97941 5488.798 -2804.63912 5489.04287 -2804.33585 5489.33547 -2804.07833 5489.66739 -2803.87396 5489.91767 -2803.77339 5490.04936 -2803.68707 5490.13753 -2803.55662 5490.16853 -2803.40224 5490.16853 -2801.86762 Z M 5931.46853 -2802.76762 L 5931.59294 -2802.8307 5932.38905 -2803.31967 5933.14265 -2803.87191 5933.84873 -2804.48373 5934.5026 -2805.15107 5935.09989 -2805.86948 5935.63664 -2806.63419 5936.06198 -2807.35947 5934.53191 -2807.35947 5934.38277 -2807.38832 5934.25513 -2807.47069 5934.16742 -2807.59471 5934.00828 -2807.94677 5933.79001 -2808.26971 5933.5203 -2808.55112 5933.20691 -2808.7829 5932.85886 -2808.95839 5932.48616 -2809.07252 5932.09953 -2809.12203 5931.7101 -2809.10549 5931.32906 -2809.02337 5930.96739 -2808.87804 5930.63547 -2808.67367 5930.34287 -2808.41615 5930.098 -2808.11288 5929.9079 -2807.77259 5929.77805 -2807.40507 5929.71218 -2807.02089 5929.71218 -2806.63111 5929.77805 -2806.24693 5929.9079 -2805.87941 5930.098 -2805.53912 5930.34287 -2805.23585 5930.63547 -2804.97833 5930.96739 -2804.77396 5931.21767 -2804.67339 5931.34936 -2804.58707 5931.43753 -2804.45662 5931.46853 -2804.30224 5931.46853 -2802.76762 Z M 5920.53548 -2802.60553 L 5920.53548 -2804.46032 5920.56225 -2804.6042 5920.63898 -2804.72882 5920.75539 -2804.81749 5920.95691 -2804.9191 5921.2703 -2805.15088 5921.54001 -2805.43229 5921.75828 -2805.75523 5921.91883 -2806.11041 5922.01705 -2806.48762 5922.0501 -2806.876 5922.01705 -2807.26438 5921.91883 -2807.64159 5921.75828 -2807.99677 5921.54001 -2808.31971 5921.2703 -2808.60112 5920.95691 -2808.8329 5920.60886 -2809.00839 5920.23616 -2809.12252 5919.84953 -2809.17203 5919.4601 -2809.15549 5919.07906 -2809.07337 5918.71739 -2808.92804 5918.38547 -2808.72367 5918.09287 -2808.46615 5917.848 -2808.16288 5917.6579 -2807.82259 5917.58852 -2807.62622 5917.50404 -2807.48681 5917.37095 -2807.39269 5917.21137 -2807.35947 5915.9485 -2807.35947 5916.12282 -2807.03233 5916.62793 -2806.24636 5917.19543 -2805.50418 5917.23979 -2805.45505 5917.76511 -2805.45505 5917.93757 -2805.41596 5918.38547 -2805.02833 5918.71739 -2804.82396 5919.07906 -2804.67863 5919.2445 -2804.6196 5919.34599 -2804.53028 5919.41193 -2804.41225 5919.43477 -2804.27899 5919.43477 -2802.60553 5920.53548 -2802.60553 Z M 5479.23548 -2801.87202 L 5479.23548 -2803.56032 5479.26225 -2803.7042 5479.33898 -2803.82882 5479.45539 -2803.91749 5479.65691 -2804.0191 5479.9703 -2804.25088 5480.24001 -2804.53229 5480.45828 -2804.85523 5480.61883 -2805.21041 5480.71705 -2805.58762 5480.7501 -2805.976 5480.71705 -2806.36438 5480.61883 -2806.74159 5480.45828 -2807.09677 5480.24001 -2807.41971 5479.9703 -2807.70112 5479.65691 -2807.9329 5479.30886 -2808.10839 5478.93616 -2808.22252 5478.54953 -2808.27203 5478.1601 -2808.25549 5477.77906 -2808.17337 5477.41739 -2808.02804 5477.08547 -2807.82367 5476.79287 -2807.56615 5476.548 -2807.26288 5476.3579 -2806.92259 5476.28852 -2806.72622 5476.20404 -2806.58681 5476.07095 -2806.49269 5475.91137 -2806.45947 5474.6485 -2806.45947 5474.82282 -2806.13233 5475.32793 -2805.34636 5475.89543 -2804.60418 5476.52153 -2803.91073 5477.20207 -2803.27061 5477.93252 -2802.6881 5478.70801 -2802.16706 5479.23548 -2801.87202 Z M 5920.68548 -2538.57202 L 5920.68548 -2540.26032 5920.71225 -2540.4042 5920.78898 -2540.52882 5920.90539 -2540.61749 5921.10691 -2540.7191 5921.4203 -2540.95088 5921.69001 -2541.23229 5921.90828 -2541.55523 5922.06883 -2541.91041 5922.16705 -2542.28762 5922.2001 -2542.676 5922.16705 -2543.06438 5922.06883 -2543.44159 5921.90828 -2543.79677 5921.69001 -2544.11971 5921.4203 -2544.40112 5921.10691 -2544.6329 5920.75886 -2544.80839 5920.38616 -2544.92252 5919.99953 -2544.97203 5919.6101 -2544.95549 5919.22906 -2544.87337 5918.86739 -2544.72804 5918.53547 -2544.52367 5918.24287 -2544.26615 5917.998 -2543.96288 5917.8079 -2543.62259 5917.73852 -2543.42622 5917.65404 -2543.28681 5917.52095 -2543.19269 5917.36137 -2543.15947 5916.0985 -2543.15947 5916.27282 -2542.83233 5916.77793 -2542.04636 5917.34543 -2541.30418 5917.97153 -2540.61073 5918.65207 -2539.97061 5919.38252 -2539.3881 5920.15801 -2538.86706 5920.68548 -2538.57202 Z M 5479.78548 -2538.32202 L 5479.78548 -2540.01032 5479.81225 -2540.1542 5479.88898 -2540.27882 5480.00539 -2540.36749 5480.20691 -2540.4691 5480.5203 -2540.70088 5480.79001 -2540.98229 5481.00828 -2541.30523 5481.16883 -2541.66041 5481.26705 -2542.03762 5481.3001 -2542.426 5481.26705 -2542.81438 5481.16883 -2543.19159 5481.00828 -2543.54677 5480.79001 -2543.86971 5480.5203 -2544.15112 5480.20691 -2544.3829 5479.85886 -2544.55839 5479.48616 -2544.67252 5479.09953 -2544.72203 5478.7101 -2544.70549 5478.32906 -2544.62337 5477.96739 -2544.47804 5477.63547 -2544.27367 5477.34287 -2544.01615 5477.098 -2543.71288 5476.9079 -2543.37259 5476.83852 -2543.17622 5476.75404 -2543.03681 5476.62095 -2542.94269 5476.46137 -2542.90947 5475.1985 -2542.90947 5475.37282 -2542.58233 5475.87793 -2541.79636 5476.44543 -2541.05418 5477.07153 -2540.36073 5477.75207 -2539.72061 5478.48252 -2539.1381 5479.25801 -2538.61706 5479.78548 -2538.32202 Z M 5491.39953 -2552.27997 L 5491.78616 -2552.32948 5492.15886 -2552.44361 5492.50691 -2552.6191 5492.8203 -2552.85088 5493.09001 -2553.13229 5493.30828 -2553.45523 5493.37701 -2553.60729 5493.46473 -2553.73131 5493.59236 -2553.81368 5493.7415 -2553.84253 5495.31198 -2553.84253 5494.88664 -2554.56781 5494.34989 -2555.33252 5493.7526 -2556.05093 5493.09873 -2556.71827 5492.39265 -2557.33009 5491.63905 -2557.88233 5490.84294 -2558.3713 5490.71853 -2558.43438 5490.71853 -2557.07967 5490.68753 -2556.92529 5490.59936 -2556.79484 5490.46767 -2556.70852 5490.26739 -2556.62804 5489.93547 -2556.42367 5489.64287 -2556.16615 5489.398 -2555.86288 5489.2079 -2555.52259 5489.07805 -2555.15507 5489.01218 -2554.77089 5489.01218 -2554.38111 5489.07805 -2553.99693 5489.2079 -2553.62941 5489.398 -2553.28912 5489.64287 -2552.98585 5489.93547 -2552.72833 5490.26739 -2552.52396 5490.62906 -2552.37863 5491.0101 -2552.29651 5491.39953 -2552.27997 Z M 5932.14953 -2816.72997 L 5932.53616 -2816.77948 5932.90886 -2816.89361 5933.25691 -2817.0691 5933.5703 -2817.30088 5933.84001 -2817.58229 5934.05828 -2817.90523 5934.12701 -2818.05729 5934.21473 -2818.18131 5934.34236 -2818.26368 5934.4915 -2818.29253 5936.06198 -2818.29253 5935.63664 -2819.01781 5935.09989 -2819.78252 5934.5026 -2820.50093 5933.84873 -2821.16827 5933.14265 -2821.78009 5932.38905 -2822.33233 5931.59294 -2822.8213 5931.46853 -2822.88438 5931.46853 -2821.52967 5931.43753 -2821.37529 5931.34936 -2821.24484 5931.21767 -2821.15852 5931.01739 -2821.07804 5930.68547 -2820.87367 5930.39287 -2820.61615 5930.148 -2820.31288 5929.9579 -2819.97259 5929.82805 -2819.60507 5929.76218 -2819.22089 5929.76218 -2818.83111 5929.82805 -2818.44693 5929.9579 -2818.07941 5930.148 -2817.73912 5930.39287 -2817.43585 5930.68547 -2817.17833 5931.01739 -2816.97396 5931.37906 -2816.82863 5931.7601 -2816.74651 5932.14953 -2816.72997 Z M 5932.29953 -2552.52997 L 5932.68616 -2552.57948 5933.05886 -2552.69361 5933.40691 -2552.8691 5933.7203 -2553.10088 5933.99001 -2553.38229 5934.20828 -2553.70523 5934.27701 -2553.85729 5934.36473 -2553.98131 5934.49236 -2554.06368 5934.6415 -2554.09253 5936.21198 -2554.09253 5935.78664 -2554.81781 5935.24989 -2555.58252 5934.6526 -2556.30093 5933.99873 -2556.96827 5933.29265 -2557.58009 5932.53905 -2558.13233 5931.74294 -2558.6213 5931.61852 -2558.68438 5931.61852 -2557.32967 5931.58753 -2557.17529 5931.49936 -2557.04484 5931.36767 -2556.95852 5931.16739 -2556.87804 5930.83547 -2556.67367 5930.54287 -2556.41615 5930.298 -2556.11288 5930.1079 -2555.77259 5929.97805 -2555.40507 5929.91218 -2555.02089 5929.91218 -2554.63111 5929.97805 -2554.24693 5930.1079 -2553.87941 5930.298 -2553.53912 5930.54287 -2553.23585 5930.83547 -2552.97833 5931.16739 -2552.77396 5931.52906 -2552.62863 5931.9101 -2552.54651 5932.29953 -2552.52997 Z M 5490.84953 -2815.82997 L 5491.23616 -2815.87948 5491.60886 -2815.99361 5491.95691 -2816.1691 5492.2703 -2816.40088 5492.54001 -2816.68229 5492.75828 -2817.00523 5492.82701 -2817.15729 5492.91473 -2817.28131 5493.04236 -2817.36368 5493.1915 -2817.39253 5494.76198 -2817.39253 5494.33664 -2818.11781 5493.79989 -2818.88252 5493.2026 -2819.60093 5492.54873 -2820.26827 5491.84265 -2820.88009 5491.08905 -2821.43233 5490.29294 -2821.9213 5490.16853 -2821.98438 5490.16853 -2820.62967 5490.13753 -2820.47529 5490.04936 -2820.34484 5489.91767 -2820.25852 5489.71739 -2820.17804 5489.38547 -2819.97367 5489.09287 -2819.71615 5488.848 -2819.41288 5488.6579 -2819.07259 5488.52805 -2818.70507 5488.46218 -2818.32089 5488.46218 -2817.93111 5488.52805 -2817.54693 5488.6579 -2817.17941 5488.848 -2816.83912 5489.09287 -2816.53585 5489.38547 -2816.27833 5489.71739 -2816.07396 5490.07906 -2815.92863 5490.4601 -2815.84651 5490.84953 -2815.82997 Z M 5479.09953 -2552.32997 L 5479.48616 -2552.37948 5479.85886 -2552.49361 5480.20691 -2552.6691 5480.5203 -2552.90088 5480.79001 -2553.18229 5481.00828 -2553.50523 5481.16883 -2553.86041 5481.26705 -2554.23762 5481.3001 -2554.626 5481.26705 -2555.01438 5481.16883 -2555.39159 5481.00828 -2555.74677 5480.79001 -2556.06971 5480.5203 -2556.35112 5480.20691 -2556.5829 5480.00539 -2556.68451 5479.88898 -2556.77318 5479.81225 -2556.8978 5479.78548 -2557.04168 5479.78548 -2558.42998 5479.25801 -2558.13494 5478.48252 -2557.6139 5477.75207 -2557.03139 5477.07153 -2556.39127 5476.44543 -2555.69782 5475.87793 -2554.95564 5475.37282 -2554.16967 5475.1985 -2553.84253 5476.58205 -2553.84253 5476.72063 -2553.81775 5476.84204 -2553.7465 5476.93126 -2553.6376 5477.098 -2553.33912 5477.34287 -2553.03585 5477.63547 -2552.77833 5477.96739 -2552.57396 5478.32906 -2552.42863 5478.7101 -2552.34651 5479.09953 -2552.32997 Z M 5478.54953 -2815.87997 L 5478.93616 -2815.92948 5479.30886 -2816.04361 5479.65691 -2816.2191 5479.9703 -2816.45088 5480.24001 -2816.73229 5480.45828 -2817.05523 5480.61883 -2817.41041 5480.71705 -2817.78762 5480.7501 -2818.176 5480.71705 -2818.56438 5480.61883 -2818.94159 5480.45828 -2819.29677 5480.24001 -2819.61971 5479.9703 -2819.90112 5479.65691 -2820.1329 5479.45539 -2820.23451 5479.33898 -2820.32318 5479.26225 -2820.4478 5479.23548 -2820.59168 5479.23548 -2821.97998 5478.70801 -2821.68494 5477.93252 -2821.1639 5477.20207 -2820.58139 5476.52153 -2819.94127 5475.89543 -2819.24782 5475.32793 -2818.50564 5474.82282 -2817.71967 5474.6485 -2817.39253 5476.03205 -2817.39253 5476.17063 -2817.36775 5476.29204 -2817.2965 5476.38126 -2817.1876 5476.548 -2816.88912 5476.79287 -2816.58585 5477.08547 -2816.32833 5477.41739 -2816.12396 5477.77906 -2815.97863 5478.1601 -2815.89651 5478.54953 -2815.87997 Z M 5919.99953 -2552.57997 L 5920.38616 -2552.62948 5920.75886 -2552.74361 5921.10691 -2552.9191 5921.4203 -2553.15088 5921.69001 -2553.43229 5921.90828 -2553.75523 5922.06883 -2554.11041 5922.16705 -2554.48762 5922.2001 -2554.876 5922.16705 -2555.26438 5922.06883 -2555.64159 5921.90828 -2555.99677 5921.69001 -2556.31971 5921.4203 -2556.60112 5921.10691 -2556.8329 5920.90539 -2556.93451 5920.78898 -2557.02318 5920.71225 -2557.1478 5920.68548 -2557.29168 5920.68548 -2558.67998 5920.15801 -2558.38494 5919.38252 -2557.8639 5918.65207 -2557.28139 5917.97153 -2556.64127 5917.34543 -2555.94782 5916.77793 -2555.20564 5916.27282 -2554.41967 5916.0985 -2554.09253 5917.48205 -2554.09253 5917.62063 -2554.06775 5917.74204 -2553.9965 5917.83126 -2553.8876 5917.998 -2553.58912 5918.24287 -2553.28585 5918.53547 -2553.02833 5918.86739 -2552.82396 5919.22906 -2552.67863 5919.6101 -2552.59651 5919.99953 -2552.57997 Z M 5919.84953 -2816.77997 L 5920.23616 -2816.82948 5920.60886 -2816.94361 5920.95691 -2817.1191 5921.2703 -2817.35088 5921.54001 -2817.63229 5921.75828 -2817.95523 5921.91883 -2818.31041 5922.01705 -2818.68762 5922.0501 -2819.076 5922.01705 -2819.46438 5921.91883 -2819.84159 5921.75828 -2820.19677 5921.54001 -2820.51971 5921.2703 -2820.80112 5920.95691 -2821.0329 5920.75539 -2821.13451 5920.63898 -2821.22318 5920.56225 -2821.3478 5920.53548 -2821.49168 5920.53548 -2822.87998 5920.00801 -2822.58494 5919.23252 -2822.0639 5918.50207 -2821.48139 5917.82153 -2820.84127 5917.19543 -2820.14782 5916.62793 -2819.40564 5916.12282 -2818.61967 5915.9485 -2818.29253 5917.33205 -2818.29253 5917.47063 -2818.26775 5917.59204 -2818.1965 5917.68126 -2818.0876 5917.848 -2817.78912 5918.09287 -2817.48585 5918.38547 -2817.22833 5918.71739 -2817.02396 5919.07906 -2816.87863 5919.4601 -2816.79651 5919.84953 -2816.77997 Z M 5521.52442 -2544.64787 L 5521.97876 -2544.70032 5522.41977 -2544.82151 5522.8371 -2545.0086 5523.22099 -2545.2572 5523.56243 -2545.56149 5523.85342 -2545.91434 5524.08714 -2546.30747 5524.2581 -2546.73166 5524.36231 -2547.17699 5524.39732 -2547.633 5524.36231 -2548.08901 5524.2581 -2548.53434 5524.08714 -2548.95853 5523.85342 -2549.35166 5523.56243 -2549.70451 5523.22099 -2550.0088 5522.8371 -2550.2574 5522.41977 -2550.44449 5521.97876 -2550.56568 5521.52442 -2550.61813 5521.0674 -2550.60061 5520.61841 -2550.51354 5520.18798 -2550.35894 5519.78619 -2550.14046 5519.42246 -2549.8632 5519.10531 -2549.53366 5518.84219 -2549.15958 5518.63925 -2548.74971 5518.50126 -2548.31367 5518.43144 -2547.86168 5518.43144 -2547.40432 5518.50126 -2546.95233 5518.63925 -2546.51629 5518.84219 -2546.10642 5519.10531 -2545.73234 5519.42246 -2545.4028 5519.78619 -2545.12554 5520.18798 -2544.90706 5520.61841 -2544.75246 5521.0674 -2544.66539 5521.52442 -2544.64787 Z M 5506.98242 -2809.25587 L 5507.43676 -2809.30832 5507.87777 -2809.42951 5508.2951 -2809.6166 5508.67899 -2809.8652 5509.02043 -2810.16949 5509.31142 -2810.52234 5509.54514 -2810.91547 5509.7161 -2811.33966 5509.82031 -2811.78499 5509.85532 -2812.241 5509.82031 -2812.69701 5509.7161 -2813.14234 5509.54514 -2813.56653 5509.31142 -2813.95966 5509.02043 -2814.31251 5508.67899 -2814.6168 5508.2951 -2814.8654 5507.87777 -2815.05249 5507.43676 -2815.17368 5506.98242 -2815.22613 5506.5254 -2815.20861 5506.07641 -2815.12154 5505.64598 -2814.96694 5505.24419 -2814.74846 5504.88046 -2814.4712 5504.56331 -2814.14166 5504.30019 -2813.76758 5504.09725 -2813.35771 5503.95926 -2812.92167 5503.88944 -2812.46968 5503.88944 -2812.01232 5503.95926 -2811.56033 5504.09725 -2811.12429 5504.30019 -2810.71442 5504.56331 -2810.34034 5504.88046 -2810.0108 5505.24419 -2809.73354 5505.64598 -2809.51506 5506.07641 -2809.36046 5506.5254 -2809.27339 5506.98242 -2809.25587 Z M 5900.73642 -2559.13287 L 5901.19076 -2559.18532 5901.63177 -2559.30651 5902.0491 -2559.4936 5902.43299 -2559.7422 5902.77443 -2560.04649 5903.06542 -2560.39934 5903.29914 -2560.79247 5903.4701 -2561.21666 5903.57431 -2561.66199 5903.60932 -2562.118 5903.57431 -2562.57401 5903.4701 -2563.01934 5903.29914 -2563.44353 5903.06542 -2563.83666 5902.77443 -2564.18951 5902.43299 -2564.4938 5902.0491 -2564.7424 5901.63177 -2564.92949 5901.19076 -2565.05068 5900.73642 -2565.10313 5900.2794 -2565.08561 5899.83041 -2564.99854 5899.39998 -2564.84394 5898.99819 -2564.62546 5898.63446 -2564.3482 5898.31731 -2564.01866 5898.05419 -2563.64458 5897.85125 -2563.23471 5897.71326 -2562.79867 5897.64344 -2562.34668 5897.64344 -2561.88932 5897.71326 -2561.43733 5897.85125 -2561.00129 5898.05419 -2560.59142 5898.31731 -2560.21734 5898.63446 -2559.8878 5898.99819 -2559.61054 5899.39998 -2559.39206 5899.83041 -2559.23746 5900.2794 -2559.15039 5900.73642 -2559.13287 Z M 5903.55742 -2800.70587 L 5904.01176 -2800.75832 5904.45277 -2800.87951 5904.8701 -2801.0666 5905.25399 -2801.3152 5905.59543 -2801.61949 5905.88642 -2801.97234 5906.12014 -2802.36547 5906.2911 -2802.78966 5906.39531 -2803.23499 5906.43032 -2803.691 5906.39531 -2804.14701 5906.2911 -2804.59234 5906.12014 -2805.01653 5905.88642 -2805.40966 5905.59543 -2805.76251 5905.25399 -2806.0668 5904.8701 -2806.3154 5904.45277 -2806.50249 5904.01176 -2806.62368 5903.55742 -2806.67613 5903.1004 -2806.65861 5902.65141 -2806.57154 5902.22098 -2806.41694 5901.81919 -2806.19846 5901.45546 -2805.9212 5901.13831 -2805.59166 5900.87519 -2805.21758 5900.67225 -2804.80771 5900.53426 -2804.37167 5900.46444 -2803.91968 5900.46444 -2803.46232 5900.53426 -2803.01033 5900.67225 -2802.57429 5900.87519 -2802.16442 5901.13831 -2801.79034 5901.45546 -2801.4608 5901.81919 -2801.18354 5902.22098 -2800.96506 5902.65141 -2800.81046 5903.1004 -2800.72339 5903.55742 -2800.70587 Z M 5934.3601 -2546.39651 L 5934.74953 -2546.37997 5935.13616 -2546.42948 5935.50886 -2546.54361 5935.85691 -2546.7191 5936.1703 -2546.95088 5936.44001 -2547.23229 5936.65828 -2547.55523 5936.81883 -2547.91041 5936.91705 -2548.28762 5936.9501 -2548.676 5936.91705 -2549.06438 5936.81883 -2549.44159 5936.65828 -2549.79677 5936.44001 -2550.11971 5936.1703 -2550.40112 5935.85691 -2550.6329 5935.50886 -2550.80839 5935.13616 -2550.92252 5934.74953 -2550.97203 5934.3601 -2550.95549 5933.97906 -2550.87337 5933.61739 -2550.72804 5933.28547 -2550.52367 5932.99287 -2550.26615 5932.748 -2549.96288 5932.5579 -2549.62259 5932.42805 -2549.25507 5932.36218 -2548.87089 5932.36218 -2548.48111 5932.42805 -2548.09693 5932.5579 -2547.72941 5932.748 -2547.38912 5932.99287 -2547.08585 5933.28547 -2546.82833 5933.61739 -2546.62396 5933.97906 -2546.47863 5934.3601 -2546.39651 Z M 5493.29953 -2809.67997 L 5493.68616 -2809.72948 5494.05886 -2809.84361 5494.40691 -2810.0191 5494.7203 -2810.25088 5494.99001 -2810.53229 5495.20828 -2810.85523 5495.36883 -2811.21041 5495.46705 -2811.58762 5495.5001 -2811.976 5495.46705 -2812.36438 5495.36883 -2812.74159 5495.20828 -2813.09677 5494.99001 -2813.41971 5494.7203 -2813.70112 5494.40691 -2813.9329 5494.05886 -2814.10839 5493.68616 -2814.22252 5493.29953 -2814.27203 5492.9101 -2814.25549 5492.52906 -2814.17337 5492.16739 -2814.02804 5491.83547 -2813.82367 5491.54287 -2813.56615 5491.298 -2813.26288 5491.1079 -2812.92259 5490.97805 -2812.55507 5490.91218 -2812.17089 5490.91218 -2811.78111 5490.97805 -2811.39693 5491.1079 -2811.02941 5491.298 -2810.68912 5491.54287 -2810.38585 5491.83547 -2810.12833 5492.16739 -2809.92396 5492.52906 -2809.77863 5492.9101 -2809.69651 5493.29953 -2809.67997 Z M 5917.19953 -2546.17997 L 5917.58616 -2546.22948 5917.95886 -2546.34361 5918.30691 -2546.5191 5918.6203 -2546.75088 5918.89001 -2547.03229 5919.10828 -2547.35523 5919.26883 -2547.71041 5919.36705 -2548.08762 5919.4001 -2548.476 5919.36705 -2548.86438 5919.26883 -2549.24159 5919.10828 -2549.59677 5918.89001 -2549.91971 5918.6203 -2550.20112 5918.30691 -2550.4329 5917.95886 -2550.60839 5917.58616 -2550.72252 5917.19953 -2550.77203 5916.8101 -2550.75549 5916.42906 -2550.67337 5916.06739 -2550.52804 5915.73547 -2550.32367 5915.44287 -2550.06615 5915.198 -2549.76288 5915.0079 -2549.42259 5914.87805 -2549.05507 5914.81218 -2548.67089 5914.81218 -2548.28111 5914.87805 -2547.89693 5915.0079 -2547.52941 5915.198 -2547.18912 5915.44287 -2546.88585 5915.73547 -2546.62833 5916.06739 -2546.42396 5916.42906 -2546.27863 5916.8101 -2546.19651 5917.19953 -2546.17997 Z M 5917.04953 -2810.37997 L 5917.43616 -2810.42948 5917.80886 -2810.54361 5918.15691 -2810.7191 5918.4703 -2810.95088 5918.74001 -2811.23229 5918.95828 -2811.55523 5919.11883 -2811.91041 5919.21705 -2812.28762 5919.2501 -2812.676 5919.21705 -2813.06438 5919.11883 -2813.44159 5918.95828 -2813.79677 5918.74001 -2814.11971 5918.4703 -2814.40112 5918.15691 -2814.6329 5917.80886 -2814.80839 5917.43616 -2814.92252 5917.04953 -2814.97203 5916.6601 -2814.95549 5916.27906 -2814.87337 5915.91739 -2814.72804 5915.58547 -2814.52367 5915.29287 -2814.26615 5915.048 -2813.96288 5914.8579 -2813.62259 5914.72805 -2813.25507 5914.66218 -2812.87089 5914.66218 -2812.48111 5914.72805 -2812.09693 5914.8579 -2811.72941 5915.048 -2811.38912 5915.29287 -2811.08585 5915.58547 -2810.82833 5915.91739 -2810.62396 5916.27906 -2810.47863 5916.6601 -2810.39651 5917.04953 -2810.37997 Z M 5493.4601 -2546.14651 L 5493.84953 -2546.12997 5494.23616 -2546.17948 5494.60886 -2546.29361 5494.95691 -2546.4691 5495.2703 -2546.70088 5495.54001 -2546.98229 5495.75828 -2547.30523 5495.91883 -2547.66041 5496.01705 -2548.03762 5496.0501 -2548.426 5496.01705 -2548.81438 5495.91883 -2549.19159 5495.75828 -2549.54677 5495.54001 -2549.86971 5495.2703 -2550.15112 5494.95691 -2550.3829 5494.60886 -2550.55839 5494.23616 -2550.67252 5493.84953 -2550.72203 5493.4601 -2550.70549 5493.07906 -2550.62337 5492.71739 -2550.47804 5492.38547 -2550.27367 5492.09287 -2550.01615 5491.848 -2549.71288 5491.6579 -2549.37259 5491.52805 -2549.00507 5491.46218 -2548.62089 5491.46218 -2548.23111 5491.52805 -2547.84693 5491.6579 -2547.47941 5491.848 -2547.13912 5492.09287 -2546.83585 5492.38547 -2546.57833 5492.71739 -2546.37396 5493.07906 -2546.22863 5493.4601 -2546.14651 Z M 5934.59953 -2810.57997 L 5934.98616 -2810.62948 5935.35886 -2810.74361 5935.70691 -2810.9191 5936.0203 -2811.15088 5936.29001 -2811.43229 5936.50828 -2811.75523 5936.66883 -2812.11041 5936.76705 -2812.48762 5936.8001 -2812.876 5936.76705 -2813.26438 5936.66883 -2813.64159 5936.50828 -2813.99677 5936.29001 -2814.31971 5936.0203 -2814.60112 5935.70691 -2814.8329 5935.35886 -2815.00839 5934.98616 -2815.12252 5934.59953 -2815.17203 5934.2101 -2815.15549 5933.82906 -2815.07337 5933.46739 -2814.92804 5933.13547 -2814.72367 5932.84287 -2814.46615 5932.598 -2814.16288 5932.4079 -2813.82259 5932.27805 -2813.45507 5932.21218 -2813.07089 5932.21218 -2812.68111 5932.27805 -2812.29693 5932.4079 -2811.92941 5932.598 -2811.58912 5932.84287 -2811.28585 5933.13547 -2811.02833 5933.46739 -2810.82396 5933.82906 -2810.67863 5934.2101 -2810.59651 5934.59953 -2810.57997 Z M 5476.29953 -2545.92997 L 5476.68616 -2545.97948 5477.05886 -2546.09361 5477.40691 -2546.2691 5477.7203 -2546.50088 5477.99001 -2546.78229 5478.20828 -2547.10523 5478.36883 -2547.46041 5478.46705 -2547.83762 5478.5001 -2548.226 5478.46705 -2548.61438 5478.36883 -2548.99159 5478.20828 -2549.34677 5477.99001 -2549.66971 5477.7203 -2549.95112 5477.40691 -2550.1829 5477.05886 -2550.35839 5476.68616 -2550.47252 5476.29953 -2550.52203 5475.9101 -2550.50549 5475.52906 -2550.42337 5475.16739 -2550.27804 5474.83547 -2550.07367 5474.54287 -2549.81615 5474.298 -2549.51288 5474.1079 -2549.17259 5473.97805 -2548.80507 5473.91218 -2548.42089 5473.91218 -2548.03111 5473.97805 -2547.64693 5474.1079 -2547.27941 5474.298 -2546.93912 5474.54287 -2546.63585 5474.83547 -2546.37833 5475.16739 -2546.17396 5475.52906 -2546.02863 5475.9101 -2545.94651 5476.29953 -2545.92997 Z M 5484.64953 -2801.07997 L 5485.03616 -2801.12948 5485.40886 -2801.24361 5485.75691 -2801.4191 5486.0703 -2801.65088 5486.34001 -2801.93229 5486.55828 -2802.25523 5486.71883 -2802.61041 5486.81705 -2802.98762 5486.8501 -2803.376 5486.81705 -2803.76438 5486.71883 -2804.14159 5486.55828 -2804.49677 5486.34001 -2804.81971 5486.0703 -2805.10112 5485.75691 -2805.3329 5485.40886 -2805.50839 5485.03616 -2805.62252 5484.64953 -2805.67203 5484.2601 -2805.65549 5483.87906 -2805.57337 5483.51739 -2805.42804 5483.18547 -2805.22367 5482.89287 -2804.96615 5482.648 -2804.66288 5482.4579 -2804.32259 5482.32805 -2803.95507 5482.26218 -2803.57089 5482.26218 -2803.18111 5482.32805 -2802.79693 5482.4579 -2802.42941 5482.648 -2802.08912 5482.89287 -2801.78585 5483.18547 -2801.52833 5483.51739 -2801.32396 5483.87906 -2801.17863 5484.2601 -2801.09651 5484.64953 -2801.07997 Z M 5926.09953 -2537.77997 L 5926.48616 -2537.82948 5926.85886 -2537.94361 5927.20691 -2538.1191 5927.5203 -2538.35088 5927.79001 -2538.63229 5928.00828 -2538.95523 5928.16883 -2539.31041 5928.26705 -2539.68762 5928.3001 -2540.076 5928.26705 -2540.46438 5928.16883 -2540.84159 5928.00828 -2541.19677 5927.79001 -2541.51971 5927.5203 -2541.80112 5927.20691 -2542.0329 5926.85886 -2542.20839 5926.48616 -2542.32252 5926.09953 -2542.37203 5925.7101 -2542.35549 5925.32906 -2542.27337 5924.96739 -2542.12804 5924.63547 -2541.92367 5924.34287 -2541.66615 5924.098 -2541.36288 5923.9079 -2541.02259 5923.77805 -2540.65507 5923.71218 -2540.27089 5923.71218 -2539.88111 5923.77805 -2539.49693 5923.9079 -2539.12941 5924.098 -2538.78912 5924.34287 -2538.48585 5924.63547 -2538.22833 5924.96739 -2538.02396 5925.32906 -2537.87863 5925.7101 -2537.79651 5926.09953 -2537.77997 Z M 5925.94953 -2801.97997 L 5926.33616 -2802.02948 5926.70886 -2802.14361 5927.05691 -2802.3191 5927.3703 -2802.55088 5927.64001 -2802.83229 5927.85828 -2803.15523 5928.01883 -2803.51041 5928.11705 -2803.88762 5928.1501 -2804.276 5928.11705 -2804.66438 5928.01883 -2805.04159 5927.85828 -2805.39677 5927.64001 -2805.71971 5927.3703 -2806.00112 5927.05691 -2806.2329 5926.70886 -2806.40839 5926.33616 -2806.52252 5925.94953 -2806.57203 5925.5601 -2806.55549 5925.17906 -2806.47337 5924.81739 -2806.32804 5924.48547 -2806.12367 5924.19287 -2805.86615 5923.948 -2805.56288 5923.7579 -2805.22259 5923.62805 -2804.85507 5923.56218 -2804.47089 5923.56218 -2804.08111 5923.62805 -2803.69693 5923.7579 -2803.32941 5923.948 -2802.98912 5924.19287 -2802.68585 5924.48547 -2802.42833 5924.81739 -2802.22396 5925.17906 -2802.07863 5925.5601 -2801.99651 5925.94953 -2801.97997 Z M 5485.19953 -2537.52997 L 5485.58616 -2537.57948 5485.95886 -2537.69361 5486.30691 -2537.8691 5486.6203 -2538.10088 5486.89001 -2538.38229 5487.10828 -2538.70523 5487.26883 -2539.06041 5487.36705 -2539.43762 5487.4001 -2539.826 5487.36705 -2540.21438 5487.26883 -2540.59159 5487.10828 -2540.94677 5486.89001 -2541.26971 5486.6203 -2541.55112 5486.30691 -2541.7829 5485.95886 -2541.95839 5485.58616 -2542.07252 5485.19953 -2542.12203 5484.8101 -2542.10549 5484.42906 -2542.02337 5484.06739 -2541.87804 5483.73547 -2541.67367 5483.44287 -2541.41615 5483.198 -2541.11288 5483.0079 -2540.77259 5482.87805 -2540.40507 5482.81218 -2540.02089 5482.81218 -2539.63111 5482.87805 -2539.24693 5483.0079 -2538.87941 5483.198 -2538.53912 5483.44287 -2538.23585 5483.73547 -2537.97833 5484.06739 -2537.77396 5484.42906 -2537.62863 5484.8101 -2537.54651 5485.19953 -2537.52997 Z M 5475.3601 -2809.49651 L 5475.74953 -2809.47997 5476.13616 -2809.52948 5476.50886 -2809.64361 5476.85691 -2809.8191 5477.1703 -2810.05088 5477.44001 -2810.33229 5477.65828 -2810.65523 5477.81883 -2811.01041 5477.91705 -2811.38762 5477.9501 -2811.776 5477.91705 -2812.16438 5477.81883 -2812.54159 5477.65828 -2812.89677 5477.44001 -2813.21971 5477.1703 -2813.50112 5476.85691 -2813.7329 5476.50886 -2813.90839 5476.13616 -2814.02252 5475.74953 -2814.07203 5475.3601 -2814.05549 5474.97906 -2813.97337 5474.61739 -2813.82804 5474.28547 -2813.62367 5473.99287 -2813.36615 5473.748 -2813.06288 5473.5579 -2812.72259 5473.42805 -2812.35507 5473.36218 -2811.97089 5473.36218 -2811.58111 5473.42805 -2811.19693 5473.5579 -2810.82941 5473.748 -2810.48912 5473.99287 -2810.18585 5474.28547 -2809.92833 5474.61739 -2809.72396 5474.97906 -2809.57863 5475.3601 -2809.49651 Z M 5485.19953 -2554.82997 L 5485.58616 -2554.87948 5485.95886 -2554.99361 5486.30691 -2555.1691 5486.6203 -2555.40088 5486.89001 -2555.68229 5487.10828 -2556.00523 5487.26883 -2556.36041 5487.36705 -2556.73762 5487.4001 -2557.126 5487.36705 -2557.51438 5487.26883 -2557.89159 5487.10828 -2558.24677 5486.89001 -2558.56971 5486.6203 -2558.85112 5486.30691 -2559.0829 5485.95886 -2559.25839 5485.58616 -2559.37252 5485.19953 -2559.42203 5484.8101 -2559.40549 5484.42906 -2559.32337 5484.06739 -2559.17804 5483.73547 -2558.97367 5483.44287 -2558.71615 5483.198 -2558.41288 5483.0079 -2558.07259 5482.87805 -2557.70507 5482.81218 -2557.32089 5482.81218 -2556.93111 5482.87805 -2556.54693 5483.0079 -2556.17941 5483.198 -2555.83912 5483.44287 -2555.53585 5483.73547 -2555.27833 5484.06739 -2555.07396 5484.42906 -2554.92863 5484.8101 -2554.84651 5485.19953 -2554.82997 Z M 5925.94953 -2819.27997 L 5926.33616 -2819.32948 5926.70886 -2819.44361 5927.05691 -2819.6191 5927.3703 -2819.85088 5927.64001 -2820.13229 5927.85828 -2820.45523 5928.01883 -2820.81041 5928.11705 -2821.18762 5928.1501 -2821.576 5928.11705 -2821.96438 5928.01883 -2822.34159 5927.85828 -2822.69677 5927.64001 -2823.01971 5927.3703 -2823.30112 5927.05691 -2823.5329 5926.70886 -2823.70839 5926.33616 -2823.82252 5925.94953 -2823.87203 5925.5601 -2823.85549 5925.17906 -2823.77337 5924.81739 -2823.62804 5924.48547 -2823.42367 5924.19287 -2823.16615 5923.948 -2822.86288 5923.7579 -2822.52259 5923.62805 -2822.15507 5923.56218 -2821.77089 5923.56218 -2821.38111 5923.62805 -2820.99693 5923.7579 -2820.62941 5923.948 -2820.28912 5924.19287 -2819.98585 5924.48547 -2819.72833 5924.81739 -2819.52396 5925.17906 -2819.37863 5925.5601 -2819.29651 5925.94953 -2819.27997 Z M 5926.09953 -2555.07997 L 5926.48616 -2555.12948 5926.85886 -2555.24361 5927.20691 -2555.4191 5927.5203 -2555.65088 5927.79001 -2555.93229 5928.00828 -2556.25523 5928.16883 -2556.61041 5928.26705 -2556.98762 5928.3001 -2557.376 5928.26705 -2557.76438 5928.16883 -2558.14159 5928.00828 -2558.49677 5927.79001 -2558.81971 5927.5203 -2559.10112 5927.20691 -2559.3329 5926.85886 -2559.50839 5926.48616 -2559.62252 5926.09953 -2559.67203 5925.7101 -2559.65549 5925.32906 -2559.57337 5924.96739 -2559.42804 5924.63547 -2559.22367 5924.34287 -2558.96615 5924.098 -2558.66288 5923.9079 -2558.32259 5923.77805 -2557.95507 5923.71218 -2557.57089 5923.71218 -2557.18111 5923.77805 -2556.79693 5923.9079 -2556.42941 5924.098 -2556.08912 5924.34287 -2555.78585 5924.63547 -2555.52833 5924.96739 -2555.32396 5925.32906 -2555.17863 5925.7101 -2555.09651 5926.09953 -2555.07997 Z M 5484.2601 -2818.39651 L 5484.64953 -2818.37997 5485.03616 -2818.42948 5485.40886 -2818.54361 5485.75691 -2818.7191 5486.0703 -2818.95088 5486.34001 -2819.23229 5486.55828 -2819.55523 5486.71883 -2819.91041 5486.81705 -2820.28762 5486.8501 -2820.676 5486.81705 -2821.06438 5486.71883 -2821.44159 5486.55828 -2821.79677 5486.34001 -2822.11971 5486.0703 -2822.40112 5485.75691 -2822.6329 5485.40886 -2822.80839 5485.03616 -2822.92252 5484.64953 -2822.97203 5484.2601 -2822.95549 5483.87906 -2822.87337 5483.51739 -2822.72804 5483.18547 -2822.52367 5482.89287 -2822.26615 5482.648 -2821.96288 5482.4579 -2821.62259 5482.32805 -2821.25507 5482.26218 -2820.87089 5482.26218 -2820.48111 5482.32805 -2820.09693 5482.4579 -2819.72941 5482.648 -2819.38912 5482.89287 -2819.08585 5483.18547 -2818.82833 5483.51739 -2818.62396 5483.87906 -2818.47863 5484.2601 -2818.39651 Z M 5706.2722 -2589.09785 L 5706.2722 -2592.95924 5706.24416 -2593.20811 5706.16891 -2593.42316 5706.04769 -2593.61608 5705.88658 -2593.77719 5705.69366 -2593.89841 5705.47861 -2593.97366 5705.22974 -2594.0017 5702.3526 -2594.0017 5702.3526 -2589.09785 5706.2722 -2589.09785 Z M 5692.42739 -2575.45434 L 5692.67626 -2575.4263 5695.5534 -2575.4263 5695.5534 -2580.33015 5691.6338 -2580.33015 5691.6338 -2576.46876 5691.66184 -2576.21989 5691.73709 -2576.00484 5691.85831 -2575.81192 5692.01942 -2575.65081 5692.21234 -2575.52959 5692.42739 -2575.45434 Z M 5691.6338 -2592.95924 L 5691.6338 -2589.09785 5695.5534 -2589.09785 5695.5534 -2594.0017 5692.67626 -2594.0017 5692.42739 -2593.97366 5692.21234 -2593.89841 5692.01942 -2593.77719 5691.85831 -2593.61608 5691.73709 -2593.42316 5691.66184 -2593.20811 5691.6338 -2592.95924 Z M 5705.22974 -2575.4263 L 5705.47861 -2575.45434 5705.69366 -2575.52959 5705.88658 -2575.65081 5706.04769 -2575.81192 5706.16891 -2576.00484 5706.24416 -2576.21989 5706.2722 -2576.46876 5706.2722 -2580.33015 5702.3526 -2580.33015 5702.3526 -2575.4263 5705.22974 -2575.4263 Z M 5480.96024 -2775.18475 L 5481.20911 -2775.21279 5481.42416 -2775.28804 5481.61708 -2775.40926 5481.77819 -2775.57037 5481.89941 -2775.76329 5481.97466 -2775.97834 5482.0027 -2776.22721 5482.0027 -2778.41538 5479.06735 -2778.41538 5479.06735 -2775.18475 5480.96024 -2775.18475 Z M 5474.23665 -2775.18475 L 5474.23665 -2778.41538 5471.3013 -2778.41538 5471.3013 -2776.22721 5471.32934 -2775.97834 5471.40459 -2775.76329 5471.52581 -2775.57037 5471.68692 -2775.40926 5471.87984 -2775.28804 5472.09489 -2775.21279 5472.34376 -2775.18475 5474.23665 -2775.18475 Z M 5471.3013 -2786.02479 L 5471.3013 -2783.83663 5474.23665 -2783.83663 5474.23665 -2787.06725 5472.34376 -2787.06725 5472.09489 -2787.03921 5471.87984 -2786.96396 5471.68692 -2786.84274 5471.52581 -2786.68163 5471.40459 -2786.48871 5471.32934 -2786.27366 5471.3013 -2786.02479 Z M 5482.0027 -2783.83663 L 5482.0027 -2786.02479 5481.97466 -2786.27366 5481.89941 -2786.48871 5481.77819 -2786.68163 5481.61708 -2786.84274 5481.42416 -2786.96396 5481.20911 -2787.03921 5480.96024 -2787.06725 5479.06735 -2787.06725 5479.06735 -2783.83663 5482.0027 -2783.83663 Z M 5706.71405 -2755.56074 L 5706.71405 -2754.6521 5711.42103 -2754.6521 5711.42103 -2756.6032 5707.75651 -2756.6032 5707.50764 -2756.57516 5707.29259 -2756.49991 5707.09967 -2756.37869 5706.93856 -2756.21758 5706.81734 -2756.02466 5706.74209 -2755.80961 5706.71405 -2755.56074 Z M 5723.45949 -2749.8388 L 5723.70836 -2749.86684 5723.92341 -2749.94209 5724.11633 -2750.06331 5724.27744 -2750.22442 5724.39866 -2750.41734 5724.47391 -2750.63239 5724.50195 -2750.88126 5724.50195 -2751.7899 5719.79497 -2751.7899 5719.79497 -2749.8388 5723.45949 -2749.8388 Z M 5707.50764 -2749.86684 L 5707.75651 -2749.8388 5711.42103 -2749.8388 5711.42103 -2751.7899 5706.71405 -2751.7899 5706.71405 -2750.88126 5706.74209 -2750.63239 5706.81734 -2750.41734 5706.93856 -2750.22442 5707.09967 -2750.06331 5707.29259 -2749.94209 5707.50764 -2749.86684 Z M 5724.50195 -2754.6521 L 5724.50195 -2755.56074 5724.47391 -2755.80961 5724.39866 -2756.02466 5724.27744 -2756.21758 5724.11633 -2756.37869 5723.92341 -2756.49991 5723.70836 -2756.57516 5723.45949 -2756.6032 5719.79497 -2756.6032 5719.79497 -2754.6521 5724.50195 -2754.6521 Z M 5513.52763 -2805.98475 L 5513.52763 -2809.21537 5511.28125 -2809.21537 5511.28125 -2807.02721 5511.30929 -2806.77834 5511.38454 -2806.56329 5511.50576 -2806.37037 5511.66687 -2806.20926 5511.85979 -2806.08804 5512.07484 -2806.01279 5512.32371 -2805.98475 5513.52763 -2805.98475 Z M 5541.87363 -2805.98475 L 5541.87363 -2809.21537 5539.62725 -2809.21537 5539.62725 -2807.02721 5539.65529 -2806.77834 5539.73054 -2806.56329 5539.85176 -2806.37037 5540.01287 -2806.20926 5540.20579 -2806.08804 5540.42084 -2806.01279 5540.66971 -2805.98475 5541.87363 -2805.98475 Z M 5513.52763 -2814.63663 L 5513.52763 -2817.86725 5512.32371 -2817.86725 5512.07484 -2817.83921 5511.85979 -2817.76396 5511.66687 -2817.64274 5511.50576 -2817.48163 5511.38454 -2817.28871 5511.30929 -2817.07366 5511.28125 -2816.82479 5511.28125 -2814.63663 5513.52763 -2814.63663 Z M 5516.98037 -2809.21537 L 5516.98037 -2805.98475 5518.18429 -2805.98475 5518.43316 -2806.01279 5518.64821 -2806.08804 5518.84113 -2806.20926 5519.00224 -2806.37037 5519.12346 -2806.56329 5519.19871 -2806.77834 5519.22675 -2807.02721 5519.22675 -2809.21537 5516.98037 -2809.21537 Z M 5546.53029 -2805.98475 L 5546.77916 -2806.01279 5546.99421 -2806.08804 5547.18713 -2806.20926 5547.34824 -2806.37037 5547.46946 -2806.56329 5547.54471 -2806.77834 5547.57275 -2807.02721 5547.57275 -2809.21537 5545.32637 -2809.21537 5545.32637 -2805.98475 5546.53029 -2805.98475 Z M 5519.22675 -2814.63663 L 5519.22675 -2816.82479 5519.19871 -2817.07366 5519.12346 -2817.28871 5519.00224 -2817.48163 5518.84113 -2817.64274 5518.64821 -2817.76396 5518.43316 -2817.83921 5518.18429 -2817.86725 5516.98037 -2817.86725 5516.98037 -2814.63663 5519.22675 -2814.63663 Z M 5595.62775 -2554.7568 L 5595.62775 -2558.6764 5593.8735 -2558.6764 5593.8735 -2555.79926 5593.90154 -2555.55039 5593.97679 -2555.33534 5594.09801 -2555.14242 5594.25912 -2554.98131 5594.45204 -2554.86009 5594.66709 -2554.78484 5594.91596 -2554.7568 5595.62775 -2554.7568 Z M 5523.9085 -2568.35274 L 5523.9085 -2565.4756 5525.66275 -2565.4756 5525.66275 -2569.3952 5524.95096 -2569.3952 5524.70209 -2569.36716 5524.48704 -2569.29191 5524.29412 -2569.17069 5524.13301 -2569.00958 5524.01179 -2568.81666 5523.93654 -2568.60161 5523.9085 -2568.35274 Z M 5593.8735 -2568.35274 L 5593.8735 -2565.4756 5595.62775 -2565.4756 5595.62775 -2569.3952 5594.91596 -2569.3952 5594.66709 -2569.36716 5594.45204 -2569.29191 5594.25912 -2569.17069 5594.09801 -2569.00958 5593.97679 -2568.81666 5593.90154 -2568.60161 5593.8735 -2568.35274 Z M 5528.13125 -2558.6764 L 5528.13125 -2554.7568 5528.84304 -2554.7568 5529.09191 -2554.78484 5529.30696 -2554.86009 5529.49988 -2554.98131 5529.66099 -2555.14242 5529.78221 -2555.33534 5529.85746 -2555.55039 5529.8855 -2555.79926 5529.8855 -2558.6764 5528.13125 -2558.6764 Z M 5524.70209 -2554.78484 L 5524.95096 -2554.7568 5525.66275 -2554.7568 5525.66275 -2558.6764 5523.9085 -2558.6764 5523.9085 -2555.79926 5523.93654 -2555.55039 5524.01179 -2555.33534 5524.13301 -2555.14242 5524.29412 -2554.98131 5524.48704 -2554.86009 5524.70209 -2554.78484 Z M 5529.8855 -2565.4756 L 5529.8855 -2568.35274 5529.85746 -2568.60161 5529.78221 -2568.81666 5529.66099 -2569.00958 5529.49988 -2569.17069 5529.30696 -2569.29191 5529.09191 -2569.36716 5528.84304 -2569.3952 5528.13125 -2569.3952 5528.13125 -2565.4756 5529.8855 -2565.4756 Z M 5598.09625 -2558.6764 L 5598.09625 -2554.7568 5598.80804 -2554.7568 5599.05691 -2554.78484 5599.27196 -2554.86009 5599.46488 -2554.98131 5599.62599 -2555.14242 5599.74721 -2555.33534 5599.82246 -2555.55039 5599.8505 -2555.79926 5599.8505 -2558.6764 5598.09625 -2558.6764 Z M 5558.11625 -2558.6764 L 5558.11625 -2554.7568 5558.82804 -2554.7568 5559.07691 -2554.78484 5559.29196 -2554.86009 5559.48488 -2554.98131 5559.64599 -2555.14242 5559.76721 -2555.33534 5559.84246 -2555.55039 5559.8705 -2555.79926 5559.8705 -2558.6764 5558.11625 -2558.6764 Z M 5558.11625 -2569.3952 L 5558.11625 -2565.4756 5559.8705 -2565.4756 5559.8705 -2568.35274 5559.84246 -2568.60161 5559.76721 -2568.81666 5559.64599 -2569.00958 5559.48488 -2569.17069 5559.29196 -2569.29191 5559.07691 -2569.36716 5558.82804 -2569.3952 5558.11625 -2569.3952 Z M 5599.8505 -2565.4756 L 5599.8505 -2568.35274 5599.82246 -2568.60161 5599.74721 -2568.81666 5599.62599 -2569.00958 5599.46488 -2569.17069 5599.27196 -2569.29191 5599.05691 -2569.36716 5598.80804 -2569.3952 5598.09625 -2569.3952 5598.09625 -2565.4756 5599.8505 -2565.4756 Z M 5709.02874 -2604.9375 L 5709.27761 -2604.96554 5709.49266 -2605.04079 5709.68558 -2605.16201 5709.84669 -2605.32312 5709.96791 -2605.51604 5710.04316 -2605.73109 5710.0712 -2605.97996 5710.0712 -2606.69175 5706.1516 -2606.69175 5706.1516 -2604.9375 5709.02874 -2604.9375 Z M 5483.4328 -2679.73704 L 5483.4328 -2679.02525 5487.3524 -2679.02525 5487.3524 -2680.7795 5484.47526 -2680.7795 5484.22639 -2680.75146 5484.01134 -2680.67621 5483.81842 -2680.55499 5483.65731 -2680.39388 5483.53609 -2680.20096 5483.46084 -2679.98591 5483.4328 -2679.73704 Z M 5699.3524 -2604.9375 L 5699.3524 -2606.69175 5695.4328 -2606.69175 5695.4328 -2605.97996 5695.46084 -2605.73109 5695.53609 -2605.51604 5695.65731 -2605.32312 5695.81842 -2605.16201 5696.01134 -2605.04079 5696.22639 -2604.96554 5696.47526 -2604.9375 5699.3524 -2604.9375 Z M 5494.1516 -2700.7695 L 5494.1516 -2699.01525 5498.0712 -2699.01525 5498.0712 -2699.72704 5498.04316 -2699.97591 5497.96791 -2700.19096 5497.84669 -2700.38388 5497.68558 -2700.54499 5497.49266 -2700.66621 5497.27761 -2700.74146 5497.02874 -2700.7695 5494.1516 -2700.7695 Z M 5494.1516 -2666.56175 L 5494.1516 -2664.8075 5497.02874 -2664.8075 5497.27761 -2664.83554 5497.49266 -2664.91079 5497.68558 -2665.03201 5497.84669 -2665.19312 5497.96791 -2665.38604 5498.04316 -2665.60109 5498.0712 -2665.84996 5498.0712 -2666.56175 5494.1516 -2666.56175 Z M 5487.3524 -2699.01525 L 5487.3524 -2700.7695 5484.47526 -2700.7695 5484.22639 -2700.74146 5484.01134 -2700.66621 5483.81842 -2700.54499 5483.65731 -2700.38388 5483.53609 -2700.19096 5483.46084 -2699.97591 5483.4328 -2699.72704 5483.4328 -2699.01525 5487.3524 -2699.01525 Z M 5484.22639 -2664.83554 L 5484.47526 -2664.8075 5487.3524 -2664.8075 5487.3524 -2666.56175 5483.4328 -2666.56175 5483.4328 -2665.84996 5483.46084 -2665.60109 5483.53609 -2665.38604 5483.65731 -2665.19312 5483.81842 -2665.03201 5484.01134 -2664.91079 5484.22639 -2664.83554 Z M 5484.22639 -2694.82054 L 5484.47526 -2694.7925 5487.3524 -2694.7925 5487.3524 -2696.54675 5483.4328 -2696.54675 5483.4328 -2695.83496 5483.46084 -2695.58609 5483.53609 -2695.37104 5483.65731 -2695.17812 5483.81842 -2695.01701 5484.01134 -2694.89579 5484.22639 -2694.82054 Z M 5498.0712 -2669.03025 L 5498.0712 -2669.74204 5498.04316 -2669.99091 5497.96791 -2670.20596 5497.84669 -2670.39888 5497.68558 -2670.55999 5497.49266 -2670.68121 5497.27761 -2670.75646 5497.02874 -2670.7845 5494.1516 -2670.7845 5494.1516 -2669.03025 5498.0712 -2669.03025 Z M 5494.1516 -2696.54675 L 5494.1516 -2694.7925 5497.02874 -2694.7925 5497.27761 -2694.82054 5497.49266 -2694.89579 5497.68558 -2695.01701 5497.84669 -2695.17812 5497.96791 -2695.37104 5498.04316 -2695.58609 5498.0712 -2695.83496 5498.0712 -2696.54675 5494.1516 -2696.54675 Z M 5487.3524 -2669.03025 L 5487.3524 -2670.7845 5484.47526 -2670.7845 5484.22639 -2670.75646 5484.01134 -2670.68121 5483.81842 -2670.55999 5483.65731 -2670.39888 5483.53609 -2670.20596 5483.46084 -2669.99091 5483.4328 -2669.74204 5483.4328 -2669.03025 5487.3524 -2669.03025 Z M 5494.1516 -2680.7795 L 5494.1516 -2679.02525 5498.0712 -2679.02525 5498.0712 -2679.73704 5498.04316 -2679.98591 5497.96791 -2680.20096 5497.84669 -2680.39388 5497.68558 -2680.55499 5497.49266 -2680.67621 5497.27761 -2680.75146 5497.02874 -2680.7795 5494.1516 -2680.7795 Z M 5487.3524 -2674.8025 L 5487.3524 -2676.55675 5483.4328 -2676.55675 5483.4328 -2675.84496 5483.46084 -2675.59609 5483.53609 -2675.38104 5483.65731 -2675.18812 5483.81842 -2675.02701 5484.01134 -2674.90579 5484.22639 -2674.83054 5484.47526 -2674.8025 5487.3524 -2674.8025 Z M 5497.02874 -2674.8025 L 5497.27761 -2674.83054 5497.49266 -2674.90579 5497.68558 -2675.02701 5497.84669 -2675.18812 5497.96791 -2675.38104 5498.04316 -2675.59609 5498.0712 -2675.84496 5498.0712 -2676.55675 5494.1516 -2676.55675 5494.1516 -2674.8025 5497.02874 -2674.8025 Z M 5922.66855 -2741.25553 L 5922.66855 -2742.26259 5922.64051 -2742.51146 5922.56526 -2742.72651 5922.44404 -2742.91943 5922.28293 -2743.08054 5922.09001 -2743.20176 5921.87496 -2743.27701 5921.62609 -2743.30505 5919.63477 -2743.30505 5919.63477 -2741.25553 5922.66855 -2741.25553 Z M 5914.40723 -2797.49695 L 5914.40723 -2799.54647 5911.37345 -2799.54647 5911.37345 -2798.53941 5911.40149 -2798.29054 5911.47674 -2798.07549 5911.59796 -2797.88257 5911.75907 -2797.72146 5911.95199 -2797.60024 5912.16704 -2797.52499 5912.41591 -2797.49695 5914.40723 -2797.49695 Z M 5914.60723 -2741.25553 L 5914.60723 -2743.30505 5912.61591 -2743.30505 5912.36704 -2743.27701 5912.15199 -2743.20176 5911.95907 -2743.08054 5911.79796 -2742.91943 5911.67674 -2742.72651 5911.60149 -2742.51146 5911.57345 -2742.26259 5911.57345 -2741.25553 5914.60723 -2741.25553 Z M 5911.37345 -2803.61259 L 5911.37345 -2802.60553 5914.40723 -2802.60553 5914.40723 -2804.65505 5912.41591 -2804.65505 5912.16704 -2804.62701 5911.95199 -2804.55176 5911.75907 -2804.43054 5911.59796 -2804.26943 5911.47674 -2804.07651 5911.40149 -2803.86146 5911.37345 -2803.61259 Z M 5919.43477 -2799.54647 L 5919.43477 -2797.49695 5921.42609 -2797.49695 5921.67496 -2797.52499 5921.89001 -2797.60024 5922.08293 -2797.72146 5922.24404 -2797.88257 5922.36526 -2798.07549 5922.44051 -2798.29054 5922.46855 -2798.53941 5922.46855 -2799.54647 5919.43477 -2799.54647 Z M 5601.08633 -2821.13283 L 5601.08633 -2822.78865 5600.27611 -2822.78865 5600.02724 -2822.76061 5599.81219 -2822.68536 5599.61927 -2822.56414 5599.45816 -2822.40303 5599.39523 -2822.30288 5599.28433 -2822.18689 5599.13678 -2822.12382 5598.97631 -2822.12382 5598.82875 -2822.18689 5598.68659 -2822.35263 5598.52548 -2822.51374 5598.33256 -2822.63496 5598.11751 -2822.71021 5597.86864 -2822.73825 5597.55055 -2822.73825 5597.55055 -2821.47613 5599.3111 -2821.47613 5599.45094 -2821.45088 5599.57313 -2821.37835 5599.66225 -2821.26767 5599.70706 -2821.13283 5601.08633 -2821.13283 Z M 5877.44383 -2799.49845 L 5877.44383 -2801.9909 5876.28911 -2801.9909 5876.04024 -2801.96286 5875.82519 -2801.88761 5875.63227 -2801.76639 5875.47116 -2801.60528 5875.34994 -2801.41236 5875.27469 -2801.19731 5875.24665 -2800.94844 5875.24665 -2799.49845 5877.44383 -2799.49845 Z M 5882.99535 -2799.49845 L 5882.99535 -2800.94844 5882.96731 -2801.19731 5882.89206 -2801.41236 5882.77084 -2801.60528 5882.60973 -2801.76639 5882.41681 -2801.88761 5882.20176 -2801.96286 5881.95289 -2801.9909 5880.79817 -2801.9909 5880.79817 -2799.49845 5882.99535 -2799.49845 Z M 5880.79817 -2795.55355 L 5880.79817 -2793.0611 5881.95289 -2793.0611 5882.20176 -2793.08914 5882.41681 -2793.16439 5882.60973 -2793.28561 5882.77084 -2793.44672 5882.89206 -2793.63964 5882.96731 -2793.85469 5882.99535 -2794.10356 5882.99535 -2795.55355 5880.79817 -2795.55355 Z M 5876.04024 -2793.08914 L 5876.28911 -2793.0611 5877.44383 -2793.0611 5877.44383 -2795.55355 5875.24665 -2795.55355 5875.24665 -2794.10356 5875.27469 -2793.85469 5875.34994 -2793.63964 5875.47116 -2793.44672 5875.63227 -2793.28561 5875.82519 -2793.16439 5876.04024 -2793.08914 Z M 5684.4232 -2586.684 L 5684.4232 -2587.91154 5684.39516 -2588.16041 5684.31991 -2588.37546 5684.19869 -2588.56838 5684.03758 -2588.72949 5683.84466 -2588.85071 5683.62961 -2588.92596 5683.38074 -2588.954 5682.4721 -2588.954 5682.4721 -2586.684 5684.4232 -2586.684 Z M 5678.45239 -2580.94204 L 5678.70126 -2580.914 5679.6099 -2580.914 5679.6099 -2583.184 5677.6588 -2583.184 5677.6588 -2581.95646 5677.68684 -2581.70759 5677.76209 -2581.49254 5677.88331 -2581.29962 5678.04442 -2581.13851 5678.23734 -2581.01729 5678.45239 -2580.94204 Z M 5682.4721 -2583.184 L 5682.4721 -2580.914 5683.38074 -2580.914 5683.62961 -2580.94204 5683.84466 -2581.01729 5684.03758 -2581.13851 5684.19869 -2581.29962 5684.31991 -2581.49254 5684.39516 -2581.70759 5684.4232 -2581.95646 5684.4232 -2583.184 5682.4721 -2583.184 Z M 5679.6099 -2586.684 L 5679.6099 -2588.954 5678.70126 -2588.954 5678.45239 -2588.92596 5678.23734 -2588.85071 5678.04442 -2588.72949 5677.88331 -2588.56838 5677.76209 -2588.37546 5677.68684 -2588.16041 5677.6588 -2587.91154 5677.6588 -2586.684 5679.6099 -2586.684 Z M 5731.447 -2808.0909 L 5731.447 -2806.1398 5732.67454 -2806.1398 5732.92341 -2806.16784 5733.13846 -2806.24309 5733.33138 -2806.36431 5733.49249 -2806.52542 5733.61371 -2806.71834 5733.68896 -2806.93339 5733.717 -2807.18226 5733.717 -2808.0909 5731.447 -2808.0909 Z M 5727.947 -2810.9531 L 5727.947 -2812.9042 5726.71946 -2812.9042 5726.47059 -2812.87616 5726.25554 -2812.80091 5726.06262 -2812.67969 5725.90151 -2812.51858 5725.78029 -2812.32566 5725.70504 -2812.11061 5725.677 -2811.86174 5725.677 -2810.9531 5727.947 -2810.9531 Z M 5731.447 -2812.9042 L 5731.447 -2810.9531 5733.717 -2810.9531 5733.717 -2811.86174 5733.68896 -2812.11061 5733.61371 -2812.32566 5733.49249 -2812.51858 5733.33138 -2812.67969 5733.13846 -2812.80091 5732.92341 -2812.87616 5732.67454 -2812.9042 5731.447 -2812.9042 Z M 5520.8799 -2749.997 L 5520.8799 -2752.267 5519.97126 -2752.267 5519.72239 -2752.23896 5519.50734 -2752.16371 5519.31442 -2752.04249 5519.15331 -2751.88138 5519.03209 -2751.68846 5518.95684 -2751.47341 5518.9288 -2751.22454 5518.9288 -2749.997 5520.8799 -2749.997 Z M 5525.6932 -2749.997 L 5525.6932 -2751.22454 5525.66516 -2751.47341 5525.58991 -2751.68846 5525.46869 -2751.88138 5525.30758 -2752.04249 5525.11466 -2752.16371 5524.89961 -2752.23896 5524.65074 -2752.267 5523.7421 -2752.267 5523.7421 -2749.997 5525.6932 -2749.997 Z M 5523.7421 -2746.497 L 5523.7421 -2744.227 5524.65074 -2744.227 5524.89961 -2744.25504 5525.11466 -2744.33029 5525.30758 -2744.45151 5525.46869 -2744.61262 5525.58991 -2744.80554 5525.66516 -2745.02059 5525.6932 -2745.26946 5525.6932 -2746.497 5523.7421 -2746.497 Z M 5520.8799 -2744.227 L 5520.8799 -2746.497 5518.9288 -2746.497 5518.9288 -2745.26946 5518.95684 -2745.02059 5519.03209 -2744.80554 5519.15331 -2744.61262 5519.31442 -2744.45151 5519.50734 -2744.33029 5519.72239 -2744.25504 5519.97126 -2744.227 5520.8799 -2744.227 Z M 5497.32764 -2716.42675 L 5497.57651 -2716.45479 5497.79156 -2716.53004 5497.98448 -2716.65126 5498.14559 -2716.81237 5498.26681 -2717.00529 5498.29827 -2717.0952 5498.3826 -2717.23516 5498.51587 -2717.32971 5498.67582 -2717.36309 5498.83578 -2717.32971 5498.96904 -2717.23516 5499.07119 -2717.04429 5499.19241 -2716.85137 5499.35352 -2716.69026 5499.54644 -2716.56904 5499.76149 -2716.49379 5500.01036 -2716.46575 5500.32845 -2716.46575 5500.32845 -2717.72788 5498.94238 -2717.72788 5498.7701 -2717.68887 5497.00955 -2717.68887 5497.00955 -2716.42675 5497.32764 -2716.42675 Z M 5880.29903 -2580.079 L 5880.29903 -2582.8175 5878.84005 -2582.8175 5878.84005 -2581.12146 5878.83189 -2580.9175 5878.74328 -2580.76064 5878.88364 -2580.69666 5878.98935 -2580.58432 5879.06456 -2580.46462 5879.22567 -2580.30351 5879.41859 -2580.18229 5879.63364 -2580.10704 5879.88251 -2580.079 5880.29903 -2580.079 Z M 5592.55055 -2822.73825 L 5592.55055 -2821.47613 5595.86945 -2821.47613 5595.86945 -2822.73825 5595.55136 -2822.73825 5595.30249 -2822.71021 5595.08744 -2822.63496 5594.89452 -2822.51374 5594.73341 -2822.35263 5594.61219 -2822.15971 5594.58755 -2822.0893 5594.50322 -2821.94934 5594.36996 -2821.85479 5594.21 -2821.82141 5594.05004 -2821.85479 5593.91678 -2821.94934 5593.83245 -2822.0893 5593.80781 -2822.15971 5593.68659 -2822.35263 5593.52548 -2822.51374 5593.33256 -2822.63496 5593.11751 -2822.71021 5592.86864 -2822.73825 5592.55055 -2822.73825 Z M 5878.84005 -2588.95054 L 5878.84005 -2587.2545 5880.29903 -2587.2545 5880.29903 -2589.993 5879.88251 -2589.993 5879.63364 -2589.96496 5879.41859 -2589.88971 5879.22567 -2589.76849 5879.06456 -2589.60738 5878.94334 -2589.41446 5878.86809 -2589.19941 5878.84005 -2588.95054 Z M 5882.17698 -2582.8175 L 5882.17698 -2580.079 5882.59349 -2580.079 5882.84236 -2580.10704 5883.05741 -2580.18229 5883.25033 -2580.30351 5883.41144 -2580.46462 5883.53266 -2580.65754 5883.60791 -2580.87259 5883.63595 -2581.12146 5883.63595 -2582.8175 5882.17698 -2582.8175 Z M 5883.63595 -2587.2545 L 5883.63595 -2588.95054 5883.60791 -2589.19941 5883.53266 -2589.41446 5883.41144 -2589.60738 5883.25033 -2589.76849 5883.05741 -2589.88971 5882.84236 -2589.96496 5882.59349 -2589.993 5882.17698 -2589.993 5882.17698 -2587.2545 5883.63595 -2587.2545 Z M 5828.84005 -2571.23454 L 5828.84005 -2569.5385 5830.29903 -2569.5385 5830.29903 -2572.277 5829.88251 -2572.277 5829.63364 -2572.24896 5829.41859 -2572.17371 5829.22567 -2572.05249 5829.06456 -2571.89138 5828.94334 -2571.69846 5828.86809 -2571.48341 5828.84005 -2571.23454 Z M 5830.29903 -2562.363 L 5830.29903 -2565.1015 5828.84005 -2565.1015 5828.84005 -2563.40546 5828.86809 -2563.15659 5828.94334 -2562.94154 5829.06456 -2562.74862 5829.22567 -2562.58751 5829.41859 -2562.46629 5829.63364 -2562.39104 5829.88251 -2562.363 5830.29903 -2562.363 Z M 5756.2088 -2800.0642 L 5756.2088 -2801.95963 5755.94923 -2801.83163 5755.50118 -2801.53225 5755.09604 -2801.17696 5754.74075 -2800.77182 5754.44137 -2800.32377 5754.31337 -2800.0642 5756.2088 -2800.0642 Z M 5759.8092 -2796.4638 L 5759.8092 -2794.56837 5760.06877 -2794.69637 5760.51682 -2794.99575 5760.92196 -2795.35104 5761.27725 -2795.75618 5761.57663 -2796.20423 5761.70463 -2796.4638 5759.8092 -2796.4638 Z M 5756.2088 -2794.56837 L 5756.2088 -2796.4638 5754.31337 -2796.4638 5754.44137 -2796.20423 5754.74075 -2795.75618 5755.09604 -2795.35104 5755.50118 -2794.99575 5755.94923 -2794.69637 5756.2088 -2794.56837 Z M 5759.8092 -2801.95963 L 5759.8092 -2800.0642 5761.70463 -2800.0642 5761.57663 -2800.32377 5761.27725 -2800.77182 5760.92196 -2801.17696 5760.51682 -2801.53225 5760.06877 -2801.83163 5759.8092 -2801.95963 Z M 5538.12329 -2596.908 L 5537.99528 -2597.16757 5537.69593 -2597.61557 5537.34067 -2598.02067 5536.93557 -2598.37593 5536.48757 -2598.67528 5536.228 -2598.80329 5536.228 -2596.908 5538.12329 -2596.908 Z M 5799.809 -2801.95929 L 5799.809 -2800.064 5801.70429 -2800.064 5801.57628 -2800.32357 5801.27693 -2800.77157 5800.92167 -2801.17667 5800.51657 -2801.53193 5800.06857 -2801.83128 5799.809 -2801.95929 Z M 5794.44172 -2800.32357 L 5794.31371 -2800.064 5796.209 -2800.064 5796.209 -2801.95929 5795.94943 -2801.83128 5795.50143 -2801.53193 5795.09633 -2801.17667 5794.74107 -2800.77157 5794.44172 -2800.32357 Z M 5532.628 -2596.908 L 5532.628 -2598.80329 5532.36843 -2598.67528 5531.92043 -2598.37593 5531.51533 -2598.02067 5531.16007 -2597.61557 5530.86072 -2597.16757 5530.73271 -2596.908 5532.628 -2596.908 Z M 5796.209 -2794.56871 L 5796.209 -2796.464 5794.31371 -2796.464 5794.44172 -2796.20443 5794.74107 -2795.75643 5795.09633 -2795.35133 5795.50143 -2794.99607 5795.94943 -2794.69672 5796.209 -2794.56871 Z M 5799.809 -2796.464 L 5799.809 -2794.56871 5800.06857 -2794.69672 5800.51657 -2794.99607 5800.92167 -2795.35133 5801.27693 -2795.75643 5801.57628 -2796.20443 5801.70429 -2796.464 5799.809 -2796.464 Z M 5500.32512 -2577.14545 L 5500.32512 -2575.2099 5501.11979 -2575.2099 5501.36866 -2575.23794 5501.58371 -2575.31319 5501.77663 -2575.43441 5501.93774 -2575.59552 5502.05896 -2575.78844 5502.13421 -2576.00349 5502.16225 -2576.25236 5502.16225 -2577.14545 5500.32512 -2577.14545 Z M 5497.69088 -2575.2099 L 5497.69088 -2577.14545 5495.85375 -2577.14545 5495.85375 -2576.25236 5495.88179 -2576.00349 5495.95704 -2575.78844 5496.07826 -2575.59552 5496.23937 -2575.43441 5496.43229 -2575.31319 5496.64734 -2575.23794 5496.89621 -2575.2099 5497.69088 -2575.2099 Z M 5495.85375 -2580.86964 L 5495.85375 -2579.97655 5497.69088 -2579.97655 5497.69088 -2581.9121 5496.89621 -2581.9121 5496.64734 -2581.88406 5496.43229 -2581.80881 5496.23937 -2581.68759 5496.07826 -2581.52648 5495.95704 -2581.33356 5495.88179 -2581.11851 5495.85375 -2580.86964 Z M 5502.16225 -2579.97655 L 5502.16225 -2580.86964 5502.13421 -2581.11851 5502.05896 -2581.33356 5501.93774 -2581.52648 5501.77663 -2581.68759 5501.58371 -2581.80881 5501.36866 -2581.88406 5501.11979 -2581.9121 5500.32512 -2581.9121 5500.32512 -2579.97655 5502.16225 -2579.97655 Z M 5552.70776 -2784.70875 L 5552.967 -2784.58786 5552.967 -2787.18 5551.597 -2787.18 5551.597 -2786.64746 5551.63223 -2786.24477 5551.73232 -2785.87124 5551.89575 -2785.52076 5552.11755 -2785.20399 5552.39099 -2784.93055 5552.70776 -2784.70875 Z M 5821.445 -2627.85 L 5821.445 -2628.82754 5821.41696 -2629.07641 5821.34171 -2629.29146 5821.22049 -2629.48438 5821.05938 -2629.64549 5820.86646 -2629.76671 5820.65141 -2629.84196 5820.40254 -2629.87 5819.775 -2629.87 5819.775 -2627.85 5821.445 -2627.85 Z M 5817.475 -2627.85 L 5817.475 -2629.87 5816.84746 -2629.87 5816.59859 -2629.84196 5816.38354 -2629.76671 5816.19062 -2629.64549 5816.02951 -2629.48438 5815.90829 -2629.29146 5815.83304 -2629.07641 5815.805 -2628.82754 5815.805 -2627.85 5817.475 -2627.85 Z M 5820.40254 -2622.83 L 5820.65141 -2622.85804 5820.86646 -2622.93329 5821.05938 -2623.05451 5821.22049 -2623.21562 5821.34171 -2623.40854 5821.41696 -2623.62359 5821.445 -2623.87246 5821.445 -2624.85 5819.775 -2624.85 5819.775 -2622.83 5820.40254 -2622.83 Z M 5817.475 -2622.83 L 5817.475 -2624.85 5815.805 -2624.85 5815.805 -2623.87246 5815.83304 -2623.62359 5815.90829 -2623.40854 5816.02951 -2623.21562 5816.19062 -2623.05451 5816.38354 -2622.93329 5816.59859 -2622.85804 5816.84746 -2622.83 5817.475 -2622.83 Z M 5476.22294 -2607.70069 L 5476.47181 -2607.67265 5477.08518 -2607.67265 5477.08518 -2609.52533 5475.42935 -2609.52533 5475.42935 -2608.71511 5475.45739 -2608.46624 5475.53264 -2608.25119 5475.65386 -2608.05827 5475.81497 -2607.89716 5476.00789 -2607.77594 5476.22294 -2607.70069 Z M 5479.97019 -2607.67265 L 5480.21906 -2607.70069 5480.43411 -2607.77594 5480.62703 -2607.89716 5480.78814 -2608.05827 5480.90936 -2608.25119 5480.98461 -2608.46624 5481.01265 -2608.71511 5481.01265 -2609.52533 5479.35682 -2609.52533 5479.35682 -2607.67265 5479.97019 -2607.67265 Z M 5479.23482 -2698.30732 L 5479.23482 -2696.45465 5479.84819 -2696.45465 5480.09706 -2696.48269 5480.31211 -2696.55794 5480.50503 -2696.67916 5480.66614 -2696.84027 5480.78736 -2697.03319 5480.86261 -2697.24824 5480.89065 -2697.49711 5480.89065 -2698.30732 5479.23482 -2698.30732 Z M 5639.37382 -2824.28435 L 5639.37382 -2822.43168 5641.02965 -2822.43168 5641.02965 -2823.24189 5641.00161 -2823.49076 5640.92636 -2823.70581 5640.80514 -2823.89873 5640.64403 -2824.05984 5640.45111 -2824.18106 5640.23606 -2824.25631 5639.98719 -2824.28435 5639.37382 -2824.28435 Z M 5637.10217 -2822.43168 L 5637.10217 -2824.28435 5636.48881 -2824.28435 5636.23994 -2824.25631 5636.02489 -2824.18106 5635.83197 -2824.05984 5635.67086 -2823.89873 5635.54964 -2823.70581 5635.47439 -2823.49076 5635.44635 -2823.24189 5635.44635 -2822.43168 5637.10217 -2822.43168 Z M 5503.68165 -2599.06219 L 5503.68165 -2598.44883 5505.53433 -2598.44883 5505.53433 -2600.10465 5504.72411 -2600.10465 5504.47524 -2600.07661 5504.26019 -2600.00136 5504.06727 -2599.88014 5503.90616 -2599.71903 5503.78494 -2599.52611 5503.70969 -2599.31106 5503.68165 -2599.06219 Z M 5847.23865 -2782.21119 L 5847.23865 -2781.59783 5849.09133 -2781.59783 5849.09133 -2783.25365 5848.28111 -2783.25365 5848.03224 -2783.22561 5847.81719 -2783.15036 5847.62427 -2783.02914 5847.46316 -2782.86803 5847.34194 -2782.67511 5847.26669 -2782.46006 5847.23865 -2782.21119 Z M 5764.20865 -2730.04819 L 5764.20865 -2729.43483 5766.06133 -2729.43483 5766.06133 -2731.09065 5765.25111 -2731.09065 5765.00224 -2731.06261 5764.78719 -2730.98736 5764.59427 -2730.86614 5764.43316 -2730.70503 5764.31194 -2730.51211 5764.23669 -2730.29706 5764.20865 -2730.04819 Z M 5505.53433 -2594.52135 L 5505.53433 -2596.17718 5503.68165 -2596.17718 5503.68165 -2595.56381 5503.70969 -2595.31494 5503.78494 -2595.09989 5503.90616 -2594.90697 5504.06727 -2594.74586 5504.26019 -2594.62464 5504.47524 -2594.54939 5504.72411 -2594.52135 5505.53433 -2594.52135 Z M 5766.06133 -2725.50735 L 5766.06133 -2727.16317 5764.20865 -2727.16317 5764.20865 -2726.54981 5764.23669 -2726.30094 5764.31194 -2726.08589 5764.43316 -2725.89297 5764.59427 -2725.73186 5764.78719 -2725.61064 5765.00224 -2725.53539 5765.25111 -2725.50735 5766.06133 -2725.50735 Z M 5823.70245 -2641.21545 L 5824.03593 -2641.24829 5824.33769 -2641.33983 5824.6158 -2641.48849 5824.85956 -2641.68854 5825.05961 -2641.9323 5825.20827 -2642.21041 5825.2296 -2642.28073 5823.33232 -2642.28073 5823.33232 -2641.21545 5823.70245 -2641.21545 Z M 5820.37168 -2641.21545 L 5820.37168 -2642.28073 5818.4744 -2642.28073 5818.49573 -2642.21041 5818.64439 -2641.9323 5818.84444 -2641.68854 5819.0882 -2641.48849 5819.36631 -2641.33983 5819.66807 -2641.24829 5820.00155 -2641.21545 5820.37168 -2641.21545 Z M 5515.62845 -2744.02127 L 5515.74009 -2743.94323 5515.83303 -2744.06443 5516.00871 -2744.15719 5516.20163 -2744.27841 5516.36274 -2744.43952 5516.48396 -2744.63244 5516.55921 -2744.84749 5516.58725 -2745.09636 5516.58725 -2745.41445 5515.32512 -2745.41445 5515.32512 -2744.0539 5515.47021 -2744.0539 5515.62845 -2744.02127 Z M 5621.13415 -2812.76625 L 5621.13415 -2813.47804 5621.10611 -2813.72691 5621.03086 -2813.94196 5620.90964 -2814.13488 5620.74853 -2814.29599 5620.55561 -2814.41721 5620.34056 -2814.49246 5620.08857 -2814.5205 5620.08857 -2812.76625 5621.13415 -2812.76625 Z M 5502.70797 -2716.44785 L 5502.71798 -2716.47628 5502.8436 -2716.60174 5502.98448 -2716.69026 5503.14559 -2716.85137 5503.26681 -2717.04429 5503.34206 -2717.25934 5503.3701 -2717.50821 5503.3701 -2717.72788 5502.00955 -2717.72788 5502.00955 -2716.46575 5502.32764 -2716.46575 5502.50458 -2716.48569 5502.65907 -2716.47286 5502.70797 -2716.44785 Z M 5772.27664 -2618.15375 L 5772.52551 -2618.18179 5772.74056 -2618.25704 5772.93348 -2618.37826 5773.09459 -2618.53937 5773.21581 -2618.73229 5773.29106 -2618.94734 5773.3191 -2619.19621 5773.3191 -2619.41587 5771.95855 -2619.41587 5771.95855 -2618.15375 5772.27664 -2618.15375 Z M 5528.79345 -2776.82813 L 5528.79345 -2778.09025 5528.47536 -2778.09025 5528.22649 -2778.06221 5528.01144 -2777.98696 5527.81852 -2777.86574 5527.65741 -2777.70463 5527.53619 -2777.51171 5527.46094 -2777.29666 5527.4329 -2777.04779 5527.4329 -2776.82813 5528.79345 -2776.82813 Z M 5766.52864 -2618.23275 L 5766.77751 -2618.26079 5766.99256 -2618.33604 5767.18548 -2618.45726 5767.34659 -2618.61837 5767.46781 -2618.81129 5767.54306 -2619.02634 5767.5711 -2619.27521 5767.5711 -2619.49487 5766.21055 -2619.49487 5766.21055 -2618.23275 5766.52864 -2618.23275 Z M 5530.75264 -2779.14375 L 5531.00151 -2779.17179 5531.21656 -2779.24704 5531.40948 -2779.36826 5531.57059 -2779.52937 5531.69181 -2779.72229 5531.76706 -2779.93734 5531.7951 -2780.18621 5531.7951 -2780.40587 5530.43455 -2780.40587 5530.43455 -2779.14375 5530.75264 -2779.14375 Z M 5803.30188 -2602.7559 L 5803.30188 -2604.11645 5802.03975 -2604.11645 5802.03975 -2603.79836 5802.06779 -2603.54949 5802.14304 -2603.33444 5802.26426 -2603.14152 5802.42537 -2602.98041 5802.61829 -2602.85919 5802.83334 -2602.78394 5803.08221 -2602.7559 5803.30188 -2602.7559 Z M 5526.53725 -2598.27155 L 5526.53725 -2598.58964 5526.50921 -2598.83851 5526.43396 -2599.05356 5526.31274 -2599.24648 5526.15163 -2599.40759 5525.95871 -2599.52881 5525.74366 -2599.60406 5525.49479 -2599.6321 5525.27513 -2599.6321 5525.27513 -2598.27155 5526.53725 -2598.27155 Z M 5822.09213 -2621.6611 L 5822.09213 -2620.30055 5823.35425 -2620.30055 5823.35425 -2620.61864 5823.32621 -2620.86751 5823.25096 -2621.08256 5823.12974 -2621.27548 5822.96863 -2621.43659 5822.77571 -2621.55781 5822.56066 -2621.63306 5822.31179 -2621.6611 5822.09213 -2621.6611 Z M 5621.07625 -2822.48855 L 5621.07625 -2822.80664 5621.04821 -2823.05551 5620.97296 -2823.27056 5620.85174 -2823.46348 5620.69063 -2823.62459 5620.49771 -2823.74581 5620.28266 -2823.82106 5620.03379 -2823.8491 5619.81412 -2823.8491 5619.81412 -2822.48855 5621.07625 -2822.48855 Z M 5853.11787 -2769.4029 L 5853.11787 -2770.76345 5851.85575 -2770.76345 5851.85575 -2770.44536 5851.88379 -2770.19649 5851.95904 -2769.98144 5852.08026 -2769.78852 5852.24137 -2769.62741 5852.43429 -2769.50619 5852.64934 -2769.43094 5852.89821 -2769.4029 5853.11787 -2769.4029 Z M 5564.45125 -2782.25455 L 5564.45125 -2782.57264 5564.42321 -2782.82151 5564.34796 -2783.03656 5564.22674 -2783.22948 5564.06563 -2783.39059 5563.87271 -2783.51181 5563.65766 -2783.58706 5563.40879 -2783.6151 5563.18912 -2783.6151 5563.18912 -2782.25455 5564.45125 -2782.25455 Z M 5476.50688 -2714.4989 L 5476.50688 -2715.85945 5475.24475 -2715.85945 5475.24475 -2715.54136 5475.27279 -2715.29249 5475.34804 -2715.07744 5475.46926 -2714.88452 5475.63037 -2714.72341 5475.82329 -2714.60219 5476.03834 -2714.52694 5476.28721 -2714.4989 5476.50688 -2714.4989 Z M 5585.74287 -2801.0239 L 5585.74287 -2802.38445 5584.48075 -2802.38445 5584.48075 -2802.06636 5584.50879 -2801.81749 5584.58404 -2801.60244 5584.70526 -2801.40952 5584.86637 -2801.24841 5585.05929 -2801.12719 5585.27434 -2801.05194 5585.52321 -2801.0239 5585.74287 -2801.0239 Z M 5523.08445 -2776.63113 L 5523.08445 -2777.89325 5522.76636 -2777.89325 5522.51749 -2777.86521 5522.30244 -2777.78996 5522.10952 -2777.66874 5521.94841 -2777.50763 5521.82719 -2777.31471 5521.75194 -2777.09966 5521.7239 -2776.85079 5521.7239 -2776.63113 5523.08445 -2776.63113 Z M 5525.08364 -2779.30075 L 5525.33251 -2779.32879 5525.54756 -2779.40404 5525.74048 -2779.52526 5525.90159 -2779.68637 5526.02281 -2779.87929 5526.09806 -2780.09434 5526.1261 -2780.34321 5526.1261 -2780.56287 5524.76555 -2780.56287 5524.76555 -2779.30075 5525.08364 -2779.30075 Z M 5770.27745 -2618.15375 L 5770.27745 -2619.41587 5768.9169 -2619.41587 5768.9169 -2619.19621 5768.94494 -2618.94734 5769.02019 -2618.73229 5769.14141 -2618.53937 5769.30252 -2618.37826 5769.49544 -2618.25704 5769.71049 -2618.18179 5769.95936 -2618.15375 5770.27745 -2618.15375 Z M 5531.8351 -2776.82813 L 5531.8351 -2777.04779 5531.80706 -2777.29666 5531.73181 -2777.51171 5531.61059 -2777.70463 5531.44948 -2777.86574 5531.25656 -2777.98696 5531.04151 -2778.06221 5530.79264 -2778.09025 5530.47455 -2778.09025 5530.47455 -2776.82813 5531.8351 -2776.82813 Z M 5494.76149 -2716.45479 L 5495.01036 -2716.42675 5495.32845 -2716.42675 5495.32845 -2717.68887 5493.9679 -2717.68887 5493.9679 -2717.46921 5493.99594 -2717.22034 5494.07119 -2717.00529 5494.19241 -2716.81237 5494.35352 -2716.65126 5494.54644 -2716.53004 5494.76149 -2716.45479 Z M 5802.03975 -2606.11564 L 5802.03975 -2605.79755 5803.30188 -2605.79755 5803.30188 -2607.1581 5803.08221 -2607.1581 5802.83334 -2607.13006 5802.61829 -2607.05481 5802.42537 -2606.93359 5802.26426 -2606.77248 5802.14304 -2606.57956 5802.06779 -2606.36451 5802.03975 -2606.11564 Z M 5853.11787 -2772.44455 L 5853.11787 -2773.8051 5852.89821 -2773.8051 5852.64934 -2773.77706 5852.43429 -2773.70181 5852.24137 -2773.58059 5852.08026 -2773.41948 5851.95904 -2773.22656 5851.88379 -2773.01151 5851.85575 -2772.76264 5851.85575 -2772.44455 5853.11787 -2772.44455 Z M 5822.31179 -2617.2589 L 5822.56066 -2617.28694 5822.77571 -2617.36219 5822.96863 -2617.48341 5823.12974 -2617.64452 5823.25096 -2617.83744 5823.32621 -2618.05249 5823.35425 -2618.30136 5823.35425 -2618.61945 5822.09213 -2618.61945 5822.09213 -2617.2589 5822.31179 -2617.2589 Z M 5525.27513 -2596.59045 L 5525.27513 -2595.2299 5525.49479 -2595.2299 5525.74366 -2595.25794 5525.95871 -2595.33319 5526.15163 -2595.45441 5526.31274 -2595.61552 5526.43396 -2595.80844 5526.50921 -2596.02349 5526.53725 -2596.27236 5526.53725 -2596.59045 5525.27513 -2596.59045 Z M 5770.56088 -2721.58055 L 5770.56088 -2722.9411 5770.34121 -2722.9411 5770.09234 -2722.91306 5769.87729 -2722.83781 5769.68437 -2722.71659 5769.52326 -2722.55548 5769.40204 -2722.36256 5769.32679 -2722.14751 5769.29875 -2721.89864 5769.29875 -2721.58055 5770.56088 -2721.58055 Z M 5620.03379 -2819.4469 L 5620.28266 -2819.47494 5620.49771 -2819.55019 5620.69063 -2819.67141 5620.85174 -2819.83252 5620.97296 -2820.02544 5621.04821 -2820.24049 5621.07625 -2820.48936 5621.07625 -2820.80745 5619.81412 -2820.80745 5619.81412 -2819.4469 5620.03379 -2819.4469 Z M 5563.18912 -2780.57345 L 5563.18912 -2779.2129 5563.40879 -2779.2129 5563.65766 -2779.24094 5563.87271 -2779.31619 5564.06563 -2779.43741 5564.22674 -2779.59852 5564.34796 -2779.79144 5564.42321 -2780.00649 5564.45125 -2780.25536 5564.45125 -2780.57345 5563.18912 -2780.57345 Z M 5522.51749 -2779.32879 L 5522.76636 -2779.30075 5523.08445 -2779.30075 5523.08445 -2780.56287 5521.7239 -2780.56287 5521.7239 -2780.34321 5521.75194 -2780.09434 5521.82719 -2779.87929 5521.94841 -2779.68637 5522.10952 -2779.52526 5522.30244 -2779.40404 5522.51749 -2779.32879 Z M 5524.76555 -2777.89325 L 5524.76555 -2776.63113 5526.1261 -2776.63113 5526.1261 -2776.85079 5526.09806 -2777.09966 5526.02281 -2777.31471 5525.90159 -2777.50763 5525.74048 -2777.66874 5525.54756 -2777.78996 5525.33251 -2777.86521 5525.08364 -2777.89325 5524.76555 -2777.89325 Z M 5528.75345 -2779.14375 L 5528.75345 -2780.40587 5527.3929 -2780.40587 5527.3929 -2780.18621 5527.42094 -2779.93734 5527.49619 -2779.72229 5527.61741 -2779.52937 5527.77852 -2779.36826 5527.97144 -2779.24704 5528.18649 -2779.17179 5528.43536 -2779.14375 5528.75345 -2779.14375 Z M 5820.37168 -2645.34827 L 5820.37168 -2646.23473 5818.4744 -2646.23473 5818.49573 -2646.16441 5818.59427 -2645.98006 5818.63616 -2645.85666 5818.63616 -2645.72634 5818.59427 -2645.60294 5818.49573 -2645.41859 5818.4744 -2645.34827 5820.37168 -2645.34827 Z M 5823.33232 -2646.23473 L 5823.33232 -2645.34827 5825.2296 -2645.34827 5825.20827 -2645.41859 5825.10973 -2645.60294 5825.06784 -2645.72634 5825.06784 -2645.85666 5825.10973 -2645.98006 5825.20827 -2646.16441 5825.2296 -2646.23473 5823.33232 -2646.23473 Z M 5825.2296 -2647.32528 L 5825.20827 -2647.39559 5825.10973 -2647.57994 5825.06784 -2647.70334 5825.06784 -2647.83366 5825.10973 -2647.95706 5825.20827 -2648.14141 5825.2296 -2648.21173 5823.33232 -2648.21173 5823.33232 -2647.32528 5825.2296 -2647.32528 Z M 5820.37168 -2647.32528 L 5820.37168 -2648.21173 5818.4744 -2648.21173 5818.49573 -2648.14141 5818.59427 -2647.95706 5818.63616 -2647.83366 5818.63616 -2647.70334 5818.59427 -2647.57994 5818.49573 -2647.39559 5818.4744 -2647.32528 5820.37168 -2647.32528 Z M 5823.33232 -2644.25772 L 5823.33232 -2643.37127 5825.2296 -2643.37127 5825.20827 -2643.44159 5825.10973 -2643.62594 5825.06784 -2643.74934 5825.06784 -2643.87966 5825.10973 -2644.00306 5825.20827 -2644.18741 5825.2296 -2644.25772 5823.33232 -2644.25772 Z M 5818.49573 -2643.44159 L 5818.4744 -2643.37127 5820.37168 -2643.37127 5820.37168 -2644.25772 5818.4744 -2644.25772 5818.49573 -2644.18741 5818.59427 -2644.00306 5818.63616 -2643.87966 5818.63616 -2643.74934 5818.59427 -2643.62594 5818.49573 -2643.44159 Z M 5559.44392 -2817.16938 L 5559.48288 -2817.14015 5559.48288 -2817.93545 5558.22075 -2817.93545 5558.22075 -2817.61736 5558.24879 -2817.36849 5558.30702 -2817.20208 5558.33214 -2817.20911 5558.78214 -2817.24848 5558.85186 -2817.24848 5559.30186 -2817.20911 5559.44392 -2817.16938 Z \",\"M 5611.95256 -2808.64425 L 5611.80364 -2808.6155 5611.57536 -2808.6155 5611.42644 -2808.64425 5611.29894 -2808.72638 5611.21117 -2808.85008 5611.17576 -2808.99755 5611.19781 -2809.14761 5611.26411 -2809.33709 5611.29202 -2809.58477 5611.34416 -2809.74183 5611.45542 -2809.86434 5611.60675 -2809.93133 5611.77225 -2809.93133 5611.92358 -2809.86434 5612.03484 -2809.74183 5612.08698 -2809.58477 5612.11489 -2809.33709 5612.18119 -2809.14761 5612.20324 -2808.99755 5612.16783 -2808.85008 5612.08006 -2808.72638 5611.95256 -2808.64425 Z \",\"M 5606.49792 -2799.24282 L 5606.35045 -2799.20741 5606.20039 -2799.22946 5606.00991 -2799.29611 5605.76223 -2799.32402 5605.60517 -2799.37616 5605.48266 -2799.48742 5605.41567 -2799.63875 5605.41567 -2799.80425 5605.48266 -2799.95558 5605.60517 -2800.06684 5605.76223 -2800.11898 5606.00991 -2800.14689 5606.20039 -2800.21354 5606.35045 -2800.23559 5606.49792 -2800.20018 5606.62162 -2800.11241 5606.70375 -2799.98491 5606.7325 -2799.83599 5606.7325 -2799.60701 5606.70375 -2799.45809 5606.62162 -2799.33059 5606.49792 -2799.24282 Z \",\"M 5613.89158 -2793.51466 L 5613.74025 -2793.44767 5613.57475 -2793.44767 5613.42342 -2793.51466 5613.31216 -2793.63717 5613.26002 -2793.79423 5613.23211 -2794.04191 5613.16546 -2794.23239 5613.14341 -2794.38245 5613.17882 -2794.52992 5613.26659 -2794.65362 5613.39409 -2794.73575 5613.54301 -2794.7645 5613.77199 -2794.7645 5613.92091 -2794.73575 5614.04841 -2794.65362 5614.13618 -2794.52992 5614.17159 -2794.38245 5614.14954 -2794.23239 5614.08289 -2794.04191 5614.05498 -2793.79423 5614.00284 -2793.63717 5613.89158 -2793.51466 Z \",\"M 5613.97319 -2786.2695 L 5613.82012 -2786.29995 5613.69035 -2786.38666 5613.32646 -2786.75055 5613.23975 -2786.88032 5613.2093 -2787.03339 5613.2093 -2789.51895 5613.26002 -2789.89977 5613.31216 -2790.05683 5613.42342 -2790.17934 5613.57475 -2790.24633 5613.74025 -2790.24633 5613.89158 -2790.17934 5614.00284 -2790.05683 5614.05498 -2789.89977 5614.1064 -2789.51694 5614.1064 -2788.76635 5614.1375 -2788.45054 5614.22389 -2788.16576 5614.36418 -2787.90331 5614.56549 -2787.658 5615.27115 -2786.95234 5615.35786 -2786.82257 5615.38831 -2786.6695 5615.35786 -2786.51643 5615.27115 -2786.38666 5615.14138 -2786.29995 5614.98831 -2786.2695 5613.97319 -2786.2695 Z \",\"M 5656.89992 -2778.8996 L 5656.74685 -2778.86915 5641.29859 -2778.86915 5641.12954 -2778.90663 5641.0753 -2778.93192 5640.70495 -2779.03116 5640.323 -2779.06457 5639.94105 -2779.03116 5639.5707 -2778.93192 5639.51646 -2778.90663 5639.34741 -2778.86915 5638.50981 -2778.86915 5638.3554 -2778.90016 5638.22492 -2778.98837 5638.13861 -2779.12012 5638.10986 -2779.27497 5638.14311 -2779.42892 5638.23321 -2779.5581 5638.39714 -2779.71503 5638.774 -2780.14083 5638.86763 -2780.2617 5639.18769 -2780.7359 5639.26476 -2780.86794 5639.52023 -2781.37983 5639.57942 -2781.5208 5639.76595 -2782.06163 5639.80625 -2782.20911 5639.92061 -2782.7694 5639.94154 -2782.92393 5639.98196 -2783.51805 5639.98215 -2783.67399 5639.94473 -2784.24461 5639.92478 -2784.39619 5639.81321 -2784.9573 5639.77366 -2785.10499 5639.58986 -2785.64676 5639.53139 -2785.78802 5639.2785 -2786.3012 5639.20211 -2786.43363 5638.88446 -2786.90944 5638.79144 -2787.03078 5638.41445 -2787.4611 5638.3064 -2787.56927 5637.87651 -2787.94675 5637.75528 -2788.0399 5637.27983 -2788.35809 5637.14748 -2788.43464 5636.63459 -2788.6881 5636.4934 -2788.74674 5635.95183 -2788.93115 5635.80419 -2788.97086 5635.2432 -2789.08307 5635.09165 -2789.10319 5634.52082 -2789.14128 5634.36793 -2789.14146 5633.79701 -2789.10477 5633.6454 -2789.08502 5633.08414 -2788.97419 5632.9364 -2788.93483 5632.39439 -2788.75174 5632.25305 -2788.69345 5631.73954 -2788.44124 5631.60701 -2788.36502 5631.13079 -2788.04799 5631.00933 -2787.95513 5630.57851 -2787.57871 5630.4702 -2787.4708 5630.09216 -2787.0414 5629.99885 -2786.92029 5629.68004 -2786.44526 5629.60332 -2786.31302 5629.34918 -2785.80046 5629.29036 -2785.65934 5629.10524 -2785.11802 5629.06533 -2784.97043 5628.95239 -2784.40959 5628.93207 -2784.25806 5628.89324 -2783.68728 5628.89285 -2783.53439 5628.92879 -2782.96342 5628.94835 -2782.81179 5629.05845 -2782.25038 5629.09761 -2782.10259 5629.27999 -2781.56034 5629.33809 -2781.41893 5629.48598 -2781.11683 5629.52614 -2780.96239 5629.50273 -2780.80454 5629.41948 -2780.6684 5629.28964 -2780.57564 5629.13386 -2780.54102 5628.97695 -2780.57006 5628.84387 -2780.65812 5623.34149 -2786.16055 5623.20616 -2786.28455 5623.06747 -2786.39097 5622.92003 -2786.4849 5622.76497 -2786.56562 5622.60346 -2786.63252 5622.43674 -2786.68509 5622.26607 -2786.72293 5622.09275 -2786.74574 5621.90937 -2786.75375 5619.93464 -2786.75375 5619.78157 -2786.7842 5619.6518 -2786.87091 5618.27719 -2788.24552 5618.18449 -2788.39063 5618.16139 -2788.56126 5618.21215 -2788.7258 5618.32739 -2788.85375 5618.48573 -2788.9214 5618.65784 -2788.91622 5618.76749 -2788.88856 5619.03431 -2788.8585 5620.09169 -2788.8585 5620.34056 -2788.88654 5620.55561 -2788.96179 5620.74853 -2789.08301 5620.90964 -2789.24412 5621.03086 -2789.43704 5621.10511 -2789.64925 5621.13604 -2789.96598 5621.17675 -2790.10672 5621.2654 -2790.22337 5621.39011 -2790.30027 5621.53415 -2790.3271 5645.43065 -2790.3271 5645.74646 -2790.3582 5646.03124 -2790.44459 5646.29369 -2790.58488 5646.539 -2790.78619 5647.02575 -2791.27294 5647.15552 -2791.35965 5647.30859 -2791.3901 5649.29846 -2791.3901 5649.43057 -2791.36765 5649.54786 -2791.30283 5649.63715 -2791.20291 5649.70526 -2791.09452 5649.86637 -2790.93341 5650.05929 -2790.81219 5650.27434 -2790.73694 5650.52321 -2790.7089 5652.44679 -2790.7089 5652.69566 -2790.73694 5652.91071 -2790.81219 5653.07219 -2790.91365 5653.21064 -2790.96799 5653.35936 -2790.96799 5653.49781 -2790.91365 5653.65929 -2790.81219 5653.87434 -2790.73694 5654.12321 -2790.7089 5656.04679 -2790.7089 5656.29566 -2790.73694 5656.51071 -2790.81219 5656.70363 -2790.93341 5656.86474 -2791.09452 5656.93285 -2791.20291 5657.02214 -2791.30283 5657.13943 -2791.36765 5657.27154 -2791.3901 5664.05512 -2791.3901 5664.20393 -2791.36139 5664.33138 -2791.27938 5664.42635 -2791.18869 5664.74421 -2790.96611 5665.0917 -2790.80408 5665.46205 -2790.70484 5665.844 -2790.67143 5666.22595 -2790.70484 5666.5963 -2790.80408 5666.94379 -2790.96611 5667.25786 -2791.18603 5667.52897 -2791.45714 5667.74889 -2791.77121 5667.91092 -2792.1187 5668.01016 -2792.48905 5668.04357 -2792.871 5668.01016 -2793.25295 5667.91092 -2793.6233 5667.74889 -2793.97079 5667.52897 -2794.28486 5667.25786 -2794.55597 5666.94379 -2794.77589 5666.5963 -2794.93792 5666.22595 -2795.03716 5665.844 -2795.07057 5665.46205 -2795.03716 5665.0917 -2794.93792 5664.74421 -2794.77589 5664.29166 -2794.46055 5664.13859 -2794.4301 5657.27141 -2794.4301 5657.1393 -2794.45255 5657.02202 -2794.51737 5656.93272 -2794.61729 5656.86474 -2794.72548 5656.70363 -2794.88659 5656.51071 -2795.00781 5656.36507 -2795.05877 5656.22511 -2795.1431 5656.13056 -2795.27637 5656.09718 -2795.43632 5656.13056 -2795.59628 5656.22511 -2795.72954 5656.36507 -2795.81388 5656.47171 -2795.85119 5656.66463 -2795.97241 5656.82574 -2796.13352 5656.8941 -2796.24231 5656.98339 -2796.34223 5657.10068 -2796.40705 5657.23279 -2796.4295 5660.7188 -2796.4295 5660.89528 -2796.38847 5661.01548 -2796.3241 5661.35821 -2796.08411 5661.7057 -2795.92208 5662.07605 -2795.82284 5662.458 -2795.78943 5662.83995 -2795.82284 5663.2103 -2795.92208 5663.55779 -2796.08411 5663.87186 -2796.30403 5664.14297 -2796.57514 5664.36289 -2796.88921 5664.52492 -2797.2367 5664.62416 -2797.60705 5664.65757 -2797.989 5664.62416 -2798.37095 5664.52492 -2798.7413 5664.36289 -2799.08879 5664.14297 -2799.40286 5663.87186 -2799.67397 5663.55779 -2799.89389 5663.2103 -2800.05592 5662.83995 -2800.15516 5662.458 -2800.18857 5662.07605 -2800.15516 5661.7057 -2800.05592 5661.35821 -2799.89389 5661.04077 -2799.67161 5660.94632 -2799.58094 5660.8186 -2799.4984 5660.66931 -2799.4695 5657.23216 -2799.4695 5657.10005 -2799.49195 5656.98276 -2799.55677 5656.89347 -2799.65669 5656.82574 -2799.76448 5656.66463 -2799.92559 5656.31707 -2800.13628 5656.22251 -2800.26954 5656.18914 -2800.4295 5656.22251 -2800.58946 5656.31707 -2800.72272 5656.66463 -2800.93341 5656.82574 -2801.09452 5656.89385 -2801.20291 5656.98314 -2801.30283 5657.10043 -2801.36765 5657.23254 -2801.3901 5667.24939 -2801.3901 5667.40246 -2801.35965 5667.53223 -2801.27294 5667.58014 -2801.22503 5667.89421 -2801.00511 5668.2417 -2800.84308 5668.61205 -2800.74384 5668.994 -2800.71043 5669.37595 -2800.74384 5669.7668 -2800.85264 5669.92189 -2800.88987 5670.0792 -2800.86355 5670.21371 -2800.77785 5670.30405 -2800.64641 5670.33585 -2800.49012 5670.33585 -2790.72285 5670.31734 -2790.60256 5670.26351 -2790.49342 5670.07611 -2790.22579 5669.95701 -2789.97036 5669.87733 -2789.85656 5662.71189 -2782.69113 5662.57085 -2782.5985 5662.48057 -2782.45981 5661.95629 -2781.93553 5661.82652 -2781.84882 5661.67345 -2781.81837 5661.52038 -2781.84882 5661.39061 -2781.93553 5661.3039 -2782.0653 5661.27345 -2782.21837 5661.27345 -2782.48534 5661.30683 -2782.6453 5661.40138 -2782.77856 5661.54134 -2782.86289 5661.75781 -2782.93864 5661.98491 -2783.08134 5662.06199 -2783.10971 5662.09036 -2783.18679 5662.23306 -2783.41389 5662.30831 -2783.62894 5662.33635 -2783.87781 5662.33635 -2787.37619 5662.30831 -2787.62506 5662.23306 -2787.84011 5662.11184 -2788.03303 5661.95073 -2788.19414 5661.75781 -2788.31536 5661.54276 -2788.39061 5661.29389 -2788.41865 5657.00811 -2788.41865 5656.75924 -2788.39061 5656.54419 -2788.31536 5656.35127 -2788.19414 5656.19016 -2788.03303 5655.97972 -2787.68618 5655.84646 -2787.59163 5655.6865 -2787.55825 5655.52654 -2787.59163 5655.39328 -2787.68618 5655.18284 -2788.03303 5655.02173 -2788.19414 5654.82881 -2788.31536 5654.61376 -2788.39061 5654.36489 -2788.41865 5653.55467 -2788.41865 5653.55467 -2786.76283 5655.56565 -2786.76283 5655.71872 -2786.73238 5655.84849 -2786.64567 5655.9352 -2786.5159 5655.96565 -2786.36283 5655.96565 -2784.89117 5655.9352 -2784.7381 5655.84849 -2784.60833 5655.71872 -2784.52162 5655.56565 -2784.49117 5653.55467 -2784.49117 5653.55467 -2782.83535 5654.36489 -2782.83535 5654.61376 -2782.86339 5654.82881 -2782.93864 5655.02173 -2783.05986 5655.18284 -2783.22097 5655.39328 -2783.56782 5655.52654 -2783.66237 5655.6865 -2783.69575 5655.84646 -2783.66237 5655.97972 -2783.56782 5656.19016 -2783.22097 5656.35127 -2783.05986 5656.54419 -2782.93864 5656.93044 -2782.81763 5657.04511 -2782.72879 5657.12055 -2782.6049 5657.14685 -2782.46226 5657.14685 -2779.26915 5657.1164 -2779.11608 5657.02969 -2778.98631 5656.89992 -2778.8996 Z M 5650.88933 -2782.83535 L 5650.88933 -2784.49117 5649.03665 -2784.49117 5649.03665 -2783.87781 5649.06469 -2783.62894 5649.13994 -2783.41389 5649.26116 -2783.22097 5649.42227 -2783.05986 5649.61519 -2782.93864 5649.83024 -2782.86339 5650.07911 -2782.83535 5650.88933 -2782.83535 Z M 5649.03665 -2787.37619 L 5649.03665 -2786.76283 5650.88933 -2786.76283 5650.88933 -2788.41865 5650.07911 -2788.41865 5649.83024 -2788.39061 5649.61519 -2788.31536 5649.42227 -2788.19414 5649.26116 -2788.03303 5649.13994 -2787.84011 5649.06469 -2787.62506 5649.03665 -2787.37619 Z \",\"M 5628.44139 -2774.63928 L 5628.28029 -2774.6054 5616.59319 -2774.6054 5616.44012 -2774.63585 5616.31035 -2774.72256 5610.01226 -2781.02065 5609.92555 -2781.15042 5609.8951 -2781.30349 5609.8951 -2782.15079 5609.86706 -2782.39966 5609.79181 -2782.61471 5609.69035 -2782.77619 5609.63601 -2782.91464 5609.63601 -2783.06336 5609.69035 -2783.20181 5609.79181 -2783.36329 5609.86706 -2783.57834 5609.8951 -2783.82721 5609.8951 -2784.925 5609.9281 -2785.0841 5610.02166 -2785.21694 5610.16034 -2785.30161 5610.32126 -2785.32414 5610.47786 -2785.2808 5610.62839 -2785.1494 5612.0892 -2783.68859 5612.33451 -2783.48728 5612.59696 -2783.34699 5612.88174 -2783.2606 5613.19755 -2783.2295 5616.57571 -2783.2295 5616.696 -2783.21099 5616.80514 -2783.15716 5617.00804 -2783.01509 5617.25793 -2782.89857 5617.37696 -2782.81355 5617.45747 -2782.69142 5617.48869 -2782.54851 5617.45094 -2782.35966 5617.4229 -2782.11079 5617.4229 -2781.89113 5618.78345 -2781.89113 5618.78345 -2782.34525 5618.8139 -2782.49832 5618.90061 -2782.62809 5619.03038 -2782.7148 5619.18345 -2782.74525 5620.06455 -2782.74525 5620.21762 -2782.7148 5620.34739 -2782.62809 5620.4341 -2782.49832 5620.46455 -2782.34525 5620.46455 -2781.89113 5621.77634 -2781.89113 5621.92941 -2781.86068 5622.05918 -2781.77397 5628.37917 -2775.4539 5628.5238 -2775.32274 5628.63099 -2775.19779 5628.67877 -2775.04026 5628.65906 -2774.87682 5628.5752 -2774.73516 5628.44139 -2774.63928 Z M 5620.78264 -2779.14475 L 5621.03151 -2779.17279 5621.24656 -2779.24804 5621.43948 -2779.36926 5621.60059 -2779.53037 5621.72181 -2779.72329 5621.79706 -2779.93834 5621.8251 -2780.18721 5621.8251 -2780.40687 5620.46455 -2780.40687 5620.46455 -2779.14475 5620.78264 -2779.14475 Z M 5618.78345 -2779.14475 L 5618.78345 -2780.40687 5617.4229 -2780.40687 5617.4229 -2780.18721 5617.45094 -2779.93834 5617.52619 -2779.72329 5617.64741 -2779.53037 5617.80852 -2779.36926 5618.00144 -2779.24804 5618.21649 -2779.17279 5618.46536 -2779.14475 5618.78345 -2779.14475 Z \",\"M 5700.04455 -2765.85485 L 5699.89148 -2765.8853 5699.76171 -2765.97201 5693.51661 -2772.21711 5693.4299 -2772.34688 5693.39946 -2772.49995 5693.39946 -2786.607 5693.4299 -2786.76007 5693.51661 -2786.88984 5693.64638 -2786.97655 5693.79946 -2787.007 5721.14654 -2787.007 5721.39541 -2787.03504 5721.61046 -2787.11029 5721.80338 -2787.23151 5721.86618 -2787.29431 5721.98442 -2787.37603 5722.12391 -2787.41068 5722.26664 -2787.39379 5722.39419 -2787.32753 5722.77071 -2786.88909 5725.89784 -2783.76196 5725.98455 -2783.63219 5726.015 -2783.47911 5726.015 -2774.66246 5726.04304 -2774.41359 5726.11829 -2774.19854 5726.23951 -2774.00562 5726.40062 -2773.84451 5726.59354 -2773.72329 5726.80859 -2773.64804 5727.05746 -2773.62 5731.75266 -2773.62 5731.92565 -2773.58066 5732.06462 -2773.47037 5732.14221 -2773.31083 5732.16026 -2773.22967 5732.34991 -2772.07572 5732.46368 -2770.91184 5732.50083 -2769.77682 5732.53674 -2769.27481 5732.63928 -2768.80341 5732.80787 -2768.35141 5733.03907 -2767.928 5733.32818 -2767.5418 5733.6693 -2767.20068 5734.0555 -2766.91157 5734.47891 -2766.68037 5734.61494 -2766.62963 5734.74921 -2766.54622 5734.84068 -2766.4173 5734.87507 -2766.26301 5734.847 -2766.10745 5734.76087 -2765.97491 5734.63011 -2765.88609 5734.47515 -2765.85485 5700.04455 -2765.85485 Z M 5719.79497 -2776.9859 L 5719.79497 -2775.0348 5723.45949 -2775.0348 5723.70836 -2775.06284 5723.92341 -2775.13809 5724.11633 -2775.25931 5724.27744 -2775.42042 5724.39866 -2775.61334 5724.47391 -2775.82839 5724.50195 -2776.07726 5724.50195 -2776.9859 5719.79497 -2776.9859 Z M 5707.50764 -2775.06284 L 5707.75651 -2775.0348 5711.42103 -2775.0348 5711.42103 -2776.9859 5706.71405 -2776.9859 5706.71405 -2776.07726 5706.74209 -2775.82839 5706.81734 -2775.61334 5706.93856 -2775.42042 5707.09967 -2775.25931 5707.29259 -2775.13809 5707.50764 -2775.06284 Z M 5706.71405 -2780.75674 L 5706.71405 -2779.8481 5711.42103 -2779.8481 5711.42103 -2781.7992 5707.75651 -2781.7992 5707.50764 -2781.77116 5707.29259 -2781.69591 5707.09967 -2781.57469 5706.93856 -2781.41358 5706.81734 -2781.22066 5706.74209 -2781.00561 5706.71405 -2780.75674 Z M 5724.50195 -2779.8481 L 5724.50195 -2780.75674 5724.47391 -2781.00561 5724.39866 -2781.22066 5724.27744 -2781.41358 5724.11633 -2781.57469 5723.92341 -2781.69591 5723.70836 -2781.77116 5723.45949 -2781.7992 5719.79497 -2781.7992 5719.79497 -2779.8481 5724.50195 -2779.8481 Z \",\"M 5499.58745 -2748.82125 L 5499.43438 -2748.8517 5499.30461 -2748.93841 5499.2179 -2749.06818 5499.18745 -2749.22125 5499.18745 -2749.67488 5498.16977 -2749.67488 5498.04396 -2749.69518 5497.93091 -2749.75403 5497.84211 -2749.84544 5497.65697 -2750.10986 5497.60946 -2750.15737 5497.52275 -2750.28714 5497.4923 -2750.44021 5497.4923 -2750.75913 5497.52275 -2750.9122 5497.60946 -2751.04197 5497.73923 -2751.12868 5497.8923 -2751.15913 5499.18745 -2751.15913 5499.18745 -2752.42125 5498.86936 -2752.42125 5498.62049 -2752.39321 5498.40544 -2752.31796 5498.21252 -2752.19674 5498.04537 -2752.07265 5497.8923 -2752.04221 5497.73923 -2752.07265 5497.60946 -2752.15936 5497.52275 -2752.28913 5497.4923 -2752.44221 5497.4923 -2756.32051 5497.52275 -2756.47358 5497.60946 -2756.60335 5499.01015 -2758.00404 5499.13992 -2758.09075 5499.29299 -2758.1212 5502.55681 -2758.1212 5502.70988 -2758.09075 5502.83965 -2758.00404 5503.39034 -2757.45335 5503.47705 -2757.32358 5503.5075 -2757.17051 5503.5075 -2752.36716 5503.48505 -2752.23505 5503.42023 -2752.11776 5503.32031 -2752.02847 5503.21252 -2751.96074 5503.05141 -2751.79963 5502.90848 -2751.57216 5502.80732 -2751.46314 5502.67332 -2751.3986 5502.52501 -2751.38749 5502.38289 -2751.43133 5502.2666 -2751.52406 5502.19224 -2751.65286 5502.12581 -2751.84271 5502.00459 -2752.03563 5501.84348 -2752.19674 5501.65056 -2752.31796 5501.43551 -2752.39321 5501.18664 -2752.42125 5500.86855 -2752.42125 5500.86855 -2751.15913 5502.4269 -2751.15913 5502.57997 -2751.12868 5502.70974 -2751.04197 5502.79645 -2750.9122 5502.8269 -2750.75913 5502.8269 -2750.07488 5502.79645 -2749.9218 5502.70974 -2749.79203 5502.57997 -2749.70532 5502.4269 -2749.67488 5500.86855 -2749.67488 5500.86855 -2749.22125 5500.8381 -2749.06818 5500.75139 -2748.93841 5500.62162 -2748.8517 5500.46855 -2748.82125 5499.58745 -2748.82125 Z \",\"M 5496.21586 -2739.04707 L 5496.05708 -2739.10227 5495.935 -2739.21785 5495.78305 -2739.43945 5495.73088 -2739.54725 5495.71295 -2739.66566 5495.71295 -2739.88303 5495.4632 -2739.88303 5495.31013 -2739.91347 5495.18036 -2740.00018 5495.09365 -2740.12995 5495.0632 -2740.28303 5495.0632 -2740.87944 5495.03015 -2741.19387 5494.99723 -2741.38609 5495.03451 -2741.53129 5495.12262 -2741.65256 5495.24919 -2741.73289 5495.39644 -2741.76098 5495.71295 -2741.76098 5495.71295 -2742.76176 5495.7434 -2742.91484 5495.83011 -2743.04461 5495.95987 -2743.13131 5496.11295 -2743.16176 5496.26602 -2743.13132 5496.39579 -2743.04461 5496.58789 -2742.85252 5496.68234 -2742.70255 5496.70271 -2742.52649 5496.6649 -2742.17829 5496.6649 -2739.44405 5496.62957 -2739.2797 5496.52984 -2739.14437 5496.38331 -2739.06198 5496.21586 -2739.04707 Z \",\"M 5499.29361 -2732.12106 L 5499.1615 -2732.09862 5499.02939 -2732.12106 5498.89551 -2732.16791 5498.64664 -2732.19595 5497.7362 -2732.19595 5497.58313 -2732.2264 5497.45336 -2732.31311 5497.36665 -2732.44288 5497.3362 -2732.59595 5497.3362 -2733.4852 5496.44795 -2733.4852 5496.29488 -2733.51565 5496.16511 -2733.60236 5496.0784 -2733.73213 5496.04795 -2733.8852 5496.04795 -2734.79564 5496.01991 -2735.04451 5495.97324 -2735.17789 5495.95079 -2735.31 5495.97324 -2735.44211 5496.01991 -2735.57549 5496.04795 -2735.82436 5496.04795 -2736.7348 5496.0784 -2736.88787 5496.16511 -2737.01764 5496.29488 -2737.10435 5496.44795 -2737.1348 5497.3362 -2737.1348 5497.3362 -2738.02405 5497.36665 -2738.17712 5497.45336 -2738.30689 5497.58313 -2738.3936 5497.7362 -2738.42405 5498.64664 -2738.42405 5498.89551 -2738.45209 5499.02939 -2738.49894 5499.1615 -2738.52138 5499.29361 -2738.49894 5499.42749 -2738.45209 5499.67636 -2738.42405 5500.5858 -2738.42405 5500.73887 -2738.3936 5500.86864 -2738.30689 5500.95535 -2738.17712 5500.9858 -2738.02405 5500.9858 -2737.1348 5501.87505 -2737.1348 5502.02812 -2737.10435 5502.15789 -2737.01764 5502.2446 -2736.88787 5502.27505 -2736.7348 5502.27505 -2735.82436 5502.30309 -2735.57549 5502.34976 -2735.44211 5502.37221 -2735.31 5502.34976 -2735.17789 5502.30309 -2735.04451 5502.27505 -2734.79564 5502.27505 -2733.8852 5502.2446 -2733.73213 5502.15789 -2733.60236 5502.02812 -2733.51565 5501.87505 -2733.4852 5500.9858 -2733.4852 5500.9858 -2732.59595 5500.95535 -2732.44288 5500.86864 -2732.31311 5500.73887 -2732.2264 5500.5858 -2732.19595 5499.67636 -2732.19595 5499.42749 -2732.16791 5499.29361 -2732.12106 Z \",\"M 5477.67889 -2721.173 L 5477.52582 -2721.20345 5477.39605 -2721.29016 5476.1219 -2722.56431 5475.87659 -2722.76562 5475.61414 -2722.90591 5475.4217 -2722.96428 5475.30941 -2723.01869 5475.21934 -2723.10504 5475.16026 -2723.21495 5475.12266 -2723.32241 5475.00144 -2723.51533 5474.84033 -2723.67644 5474.64741 -2723.79766 5474.43236 -2723.87291 5474.18349 -2723.90095 5471.47251 -2723.90095 5471.22364 -2723.87291 5471.02331 -2723.80281 5470.87325 -2723.78077 5470.72578 -2723.81617 5470.60208 -2723.90394 5470.51995 -2724.03145 5470.4912 -2724.18036 5470.4912 -2724.87564 5470.51995 -2725.02455 5470.60208 -2725.15206 5470.72578 -2725.23983 5470.87325 -2725.27523 5471.02331 -2725.25319 5471.22364 -2725.18309 5471.47251 -2725.15505 5474.18349 -2725.15505 5474.43236 -2725.18309 5474.64741 -2725.25834 5474.84033 -2725.37956 5475.00144 -2725.54067 5475.12266 -2725.73359 5475.19791 -2725.94864 5475.22595 -2726.19751 5475.22595 -2728.90849 5475.19791 -2729.15736 5475.12266 -2729.37241 5475.00144 -2729.56533 5474.84033 -2729.72644 5474.63745 -2729.85392 5474.53141 -2729.95109 5474.46659 -2730.07948 5474.45138 -2730.2225 5474.48774 -2730.36165 5474.54092 -2730.4757 5474.64016 -2730.84605 5474.67357 -2731.228 5474.64016 -2731.60995 5474.54092 -2731.9803 5474.51113 -2732.04418 5474.47379 -2732.20279 5474.50281 -2732.36314 5474.59337 -2732.49861 5474.90801 -2732.80763 5475.12689 -2733.12021 5475.28892 -2733.4677 5475.38816 -2733.83805 5475.42157 -2734.22 5475.38816 -2734.60195 5475.28892 -2734.9723 5475.12689 -2735.31979 5474.89013 -2735.65791 5474.83142 -2735.78381 5474.81931 -2735.9222 5474.85527 -2736.05638 5474.93495 -2736.17018 5475.00144 -2736.23667 5475.12266 -2736.42959 5475.19791 -2736.64464 5475.22595 -2736.89351 5475.22595 -2739.60449 5475.19791 -2739.85336 5475.12266 -2740.06841 5475.00144 -2740.26133 5474.84033 -2740.42244 5474.64741 -2740.54366 5474.43236 -2740.61891 5474.18349 -2740.64695 5471.47251 -2740.64695 5471.22364 -2740.61891 5471.02331 -2740.54881 5470.87325 -2740.52677 5470.72578 -2740.56217 5470.60208 -2740.64994 5470.51995 -2740.77745 5470.4912 -2740.92636 5470.4912 -2741.62164 5470.51995 -2741.77055 5470.60208 -2741.89806 5470.72578 -2741.98583 5470.87325 -2742.02123 5471.02331 -2741.99919 5471.22364 -2741.92909 5471.47251 -2741.90105 5474.18349 -2741.90105 5474.43236 -2741.92909 5474.64741 -2742.00434 5474.84033 -2742.12556 5475.00144 -2742.28667 5475.12266 -2742.47959 5475.19749 -2742.69344 5475.22819 -2742.98217 5475.26963 -2743.12164 5475.35821 -2743.23705 5475.49832 -2743.36329 5475.67573 -2743.60101 5475.74267 -2743.67109 5475.82451 -2743.72301 5476.26031 -2743.93027 5476.44514 -2744.01563 5476.59523 -2744.01641 5476.73504 -2743.96182 5476.80129 -2743.92019 5477.01634 -2743.84494 5477.26521 -2743.8169 5479.1999 -2743.8169 5479.36563 -2743.78096 5479.50156 -2743.67958 5479.58329 -2743.531 5479.59611 -2743.36191 5479.53772 -2743.2027 5479.43315 -2743.03779 5479.33708 -2742.85921 5479.22899 -2742.76275 5479.02644 -2742.53576 5478.76935 -2742.13031 5478.66693 -2741.93803 5478.55433 -2741.83819 5478.37899 -2741.64168 5478.24405 -2741.54295 5478.08054 -2741.508 5477.57526 -2741.508 5477.32639 -2741.47996 5477.11134 -2741.40471 5476.91842 -2741.28349 5476.75731 -2741.12238 5476.63609 -2740.92946 5476.56084 -2740.71441 5476.5328 -2740.46554 5476.5328 -2734.51046 5476.56084 -2734.26159 5476.63609 -2734.04654 5476.75731 -2733.85362 5476.91842 -2733.69251 5477.11134 -2733.57129 5477.32639 -2733.49604 5477.57526 -2733.468 5479.10187 -2733.468 5479.21018 -2733.45306 5479.52559 -2733.33404 5479.77446 -2733.306 5480.9461 -2733.306 5481.09917 -2733.27555 5481.22894 -2733.18884 5481.31565 -2733.05907 5481.3461 -2732.906 5481.3461 -2730.238 5483.2972 -2730.238 5483.2972 -2731.46554 5483.26916 -2731.71441 5483.19391 -2731.92946 5483.04871 -2732.16054 5482.99519 -2732.29478 5482.99287 -2732.43928 5483.04205 -2732.57517 5483.1619 -2732.70537 5483.27986 -2732.77119 5483.413 -2732.794 5485.1089 -2732.794 5485.26197 -2732.76355 5485.39174 -2732.67684 5485.47845 -2732.54707 5485.5089 -2732.394 5485.5089 -2732.22321 5485.53694 -2731.97434 5485.61219 -2731.75929 5485.71365 -2731.59781 5485.76799 -2731.45936 5485.76799 -2731.31064 5485.71365 -2731.17219 5485.61219 -2731.01071 5485.53694 -2730.79566 5485.5089 -2730.54679 5485.5089 -2728.62321 5485.53694 -2728.37434 5485.61219 -2728.15929 5485.73341 -2727.96637 5485.89452 -2727.80526 5486.04889 -2727.67814 5486.11374 -2727.55087 5486.12973 -2727.40892 5486.09483 -2727.2704 5486.01348 -2727.15298 5483.96917 -2725.10868 5483.83247 -2725.01917 5483.67137 -2724.9918 5483.51278 -2725.03113 5483.38314 -2725.1306 5483.3041 -2725.27362 5483.28884 -2725.43631 5483.2972 -2725.51046 5483.2972 -2726.738 5481.3461 -2726.738 5481.3461 -2724.468 5482.25474 -2724.468 5482.32889 -2724.47636 5482.49158 -2724.4611 5482.6346 -2724.38206 5482.73407 -2724.25242 5482.7734 -2724.09383 5482.74603 -2723.93273 5482.65652 -2723.79603 5480.15065 -2721.29016 5480.02088 -2721.20345 5479.86781 -2721.173 5477.67889 -2721.173 Z M 5478.4839 -2724.468 L 5478.4839 -2726.738 5476.5328 -2726.738 5476.5328 -2725.51046 5476.56084 -2725.26159 5476.63609 -2725.04654 5476.75731 -2724.85362 5476.91842 -2724.69251 5477.11134 -2724.57129 5477.32639 -2724.49604 5477.57526 -2724.468 5478.4839 -2724.468 Z M 5476.5328 -2731.46554 L 5476.5328 -2730.238 5478.4839 -2730.238 5478.4839 -2732.508 5477.57526 -2732.508 5477.32639 -2732.47996 5477.11134 -2732.40471 5476.91842 -2732.28349 5476.75731 -2732.12238 5476.63609 -2731.92946 5476.56084 -2731.71441 5476.5328 -2731.46554 Z \",\"M 5591.00247 -2713.71715 L 5590.85061 -2713.6872 5588.44456 -2713.6872 5588.29149 -2713.71765 5588.16172 -2713.80436 5582.64256 -2719.32351 5582.39686 -2719.52248 5582.13394 -2719.65645 5581.8438 -2719.73419 5581.61238 -2719.7524 5519.61266 -2719.7524 5519.29823 -2719.71935 5519.01759 -2719.62817 5518.75747 -2719.47798 5518.58094 -2719.32721 5517.90239 -2718.64865 5517.76927 -2718.56057 5517.61231 -2718.53155 5517.4565 -2718.56623 5517.32666 -2718.65906 5517.24345 -2718.79528 5517.22014 -2718.95319 5517.26043 -2719.10765 5517.59456 -2719.78883 5517.85205 -2720.48406 5518.03787 -2721.20176 5518.15014 -2721.93458 5518.18769 -2722.675 5518.15014 -2723.41542 5518.10358 -2723.71933 5518.11028 -2723.87435 5518.17546 -2724.01515 5518.28931 -2724.12056 5518.43472 -2724.17471 5518.58979 -2724.16946 5518.73119 -2724.10559 5518.83766 -2723.99272 5518.92826 -2723.84852 5519.08937 -2723.68741 5519.28229 -2723.56619 5519.49734 -2723.49094 5519.74621 -2723.4629 5521.66979 -2723.4629 5521.91866 -2723.49094 5522.13371 -2723.56619 5522.29519 -2723.66765 5522.43364 -2723.72199 5522.58236 -2723.72199 5522.72081 -2723.66765 5522.88229 -2723.56619 5523.09734 -2723.49094 5523.34621 -2723.4629 5523.56588 -2723.4629 5523.56588 -2724.82345 5523.11225 -2724.82345 5522.95918 -2724.8539 5522.82941 -2724.94061 5522.7427 -2725.07038 5522.71225 -2725.22345 5522.71225 -2726.10455 5522.7427 -2726.25762 5522.82941 -2726.38739 5522.95918 -2726.4741 5523.11225 -2726.50455 5523.56588 -2726.50455 5523.56588 -2727.8651 5523.34621 -2727.8651 5523.09734 -2727.83706 5522.88229 -2727.76181 5522.72081 -2727.66035 5522.58236 -2727.60601 5522.43364 -2727.60601 5522.29519 -2727.66035 5522.13371 -2727.76181 5521.91866 -2727.83706 5521.66979 -2727.8651 5519.74621 -2727.8651 5519.49734 -2727.83706 5519.2403 -2727.74712 5519.09323 -2727.72495 5518.94823 -2727.75804 5518.82535 -2727.84183 5517.66652 -2729.00066 5517.57981 -2729.13043 5517.54936 -2729.2835 5517.57981 -2729.43657 5517.66652 -2729.56634 5517.79629 -2729.65305 5517.94936 -2729.6835 5518.76961 -2729.6835 5518.90172 -2729.66105 5519.019 -2729.59623 5519.1083 -2729.49631 5519.24326 -2729.28152 5519.40437 -2729.12041 5519.59729 -2728.99919 5519.81234 -2728.92394 5520.06121 -2728.8959 5521.98479 -2728.8959 5522.23366 -2728.92394 5522.44871 -2728.99919 5522.61019 -2729.10065 5522.74864 -2729.15499 5522.89736 -2729.15499 5523.03581 -2729.10065 5523.19729 -2728.99919 5523.41234 -2728.92394 5523.66121 -2728.8959 5523.88087 -2728.8959 5523.88087 -2730.25645 5523.42725 -2730.25645 5523.27418 -2730.2869 5523.14441 -2730.37361 5523.0577 -2730.50338 5523.02725 -2730.65645 5523.02725 -2731.53755 5523.0577 -2731.69062 5523.14441 -2731.82039 5523.27418 -2731.9071 5523.42725 -2731.93755 5523.88087 -2731.93755 5523.88087 -2733.2981 5523.66121 -2733.2981 5523.41234 -2733.27006 5523.19729 -2733.19481 5523.03581 -2733.09335 5522.89736 -2733.03901 5522.74864 -2733.03901 5522.61019 -2733.09335 5522.44871 -2733.19481 5522.23366 -2733.27006 5521.98479 -2733.2981 5520.06121 -2733.2981 5519.81796 -2733.27069 5519.67544 -2733.2803 5519.54538 -2733.33938 5519.44437 -2733.44038 5519.3853 -2733.57044 5519.37569 -2733.71296 5519.394 -2733.87546 5519.394 -2734.09168 5519.41871 -2734.23009 5519.48979 -2734.3514 5519.59845 -2734.44062 5520.12475 -2734.73237 5520.65255 -2734.94826 5521.20119 -2735.10369 5521.76379 -2735.19672 5522.3108 -2735.2268 5524.65072 -2735.227 5525.0219 -2735.27405 5544.29371 -2735.27405 5544.82524 -2735.30889 5545.3348 -2735.41025 5545.82678 -2735.57725 5546.29275 -2735.80704 5546.72473 -2736.09569 5547.12522 -2736.4469 5560.16772 -2749.48949 5560.29749 -2749.5762 5560.45056 -2749.60665 5563.19551 -2749.60665 5563.35907 -2749.57168 5563.49404 -2749.47288 5563.5768 -2749.32754 5563.5929 -2749.16105 5563.53951 -2749.00254 5563.42598 -2748.87972 5563.37642 -2748.84478 5562.90375 -2748.42325 5562.48222 -2747.95058 5562.11731 -2747.43294 5561.81378 -2746.87708 5561.5756 -2746.29024 5561.40587 -2745.68008 5561.30679 -2745.05454 5561.27967 -2744.42179 5561.32485 -2743.79008 5561.44175 -2743.16763 5561.62884 -2742.56256 5561.88368 -2741.98276 5562.20295 -2741.43579 5562.58249 -2740.92879 5563.01736 -2740.46835 5563.50187 -2740.06048 5564.02972 -2739.7105 5564.59402 -2739.42298 5565.18742 -2739.20165 5565.80218 -2739.04941 5566.43029 -2738.96824 5567.06356 -2738.95919 5567.69373 -2739.02239 5568.31258 -2739.15702 5568.91206 -2739.36131 5569.48434 -2739.63261 5570.02197 -2739.96737 5570.51793 -2740.36123 5570.71093 -2740.55113 5570.77068 -2740.59951 5571.38658 -2741.15513 5572.06291 -2741.65433 5572.78491 -2742.08484 5573.54563 -2742.4425 5574.33775 -2742.72388 5575.15363 -2742.92626 5575.98542 -2743.0477 5576.80548 -2743.0875 5581.30704 -2743.0875 5581.46011 -2743.05705 5581.58988 -2742.97034 5592.56078 -2731.99945 5592.65225 -2731.85765 5592.6771 -2731.69075 5592.63092 -2731.52845 5592.52193 -2731.39964 5592.36952 -2731.32723 5591.95216 -2731.22907 5591.17327 -2730.96801 5590.42179 -2730.6362 5589.70414 -2730.23647 5589.02643 -2729.77222 5588.39444 -2729.24743 5587.81357 -2728.66656 5587.28878 -2728.03457 5586.82453 -2727.35686 5586.4248 -2726.63921 5586.09299 -2725.88773 5585.83193 -2725.10884 5585.64386 -2724.30919 5585.53037 -2723.4956 5585.49243 -2722.675 5585.53037 -2721.8544 5585.64386 -2721.04081 5585.83193 -2720.24116 5586.09299 -2719.46227 5586.4248 -2718.71079 5586.82453 -2717.99314 5587.28878 -2717.31543 5587.81357 -2716.68344 5588.39444 -2716.10257 5589.02643 -2715.57778 5589.70414 -2715.11353 5590.42179 -2714.7138 5591.01218 -2714.45312 5591.139 -2714.36439 5591.22264 -2714.23416 5591.25058 -2714.08192 5591.21863 -2713.93048 5591.13158 -2713.8025 5591.00247 -2713.71715 Z M 5526.62725 -2731.93755 L 5526.62725 -2732.25564 5526.59921 -2732.50451 5526.52396 -2732.71956 5526.40274 -2732.91248 5526.24163 -2733.07359 5526.04871 -2733.19481 5525.83366 -2733.27006 5525.58479 -2733.2981 5525.36512 -2733.2981 5525.36512 -2731.93755 5526.62725 -2731.93755 Z M 5526.31225 -2726.50455 L 5526.31225 -2726.82264 5526.28421 -2727.07151 5526.20896 -2727.28656 5526.08774 -2727.47948 5525.92663 -2727.64059 5525.73371 -2727.76181 5525.51866 -2727.83706 5525.26979 -2727.8651 5525.05012 -2727.8651 5525.05012 -2726.50455 5526.31225 -2726.50455 Z M 5525.36512 -2730.25645 L 5525.36512 -2728.8959 5525.58479 -2728.8959 5525.83366 -2728.92394 5526.04871 -2728.99919 5526.24163 -2729.12041 5526.40274 -2729.28152 5526.52396 -2729.47444 5526.59921 -2729.68949 5526.62725 -2729.93836 5526.62725 -2730.25645 5525.36512 -2730.25645 Z M 5525.05012 -2724.82345 L 5525.05012 -2723.4629 5525.26979 -2723.4629 5525.51866 -2723.49094 5525.73371 -2723.56619 5525.92663 -2723.68741 5526.08774 -2723.84852 5526.20896 -2724.04144 5526.28421 -2724.25649 5526.31225 -2724.50536 5526.31225 -2724.82345 5525.05012 -2724.82345 Z \",\"M 5816.48669 -2711.5613 L 5816.33362 -2711.59175 5816.20385 -2711.67846 5815.98375 -2711.89856 5815.89704 -2712.02833 5815.86659 -2712.1814 5815.89704 -2712.33447 5815.98375 -2712.46424 5816.11352 -2712.55095 5816.26659 -2712.5814 5817.98744 -2712.5814 5818.10649 -2712.56327 5819.16426 -2712.56327 5819.26146 -2712.55129 5819.36631 -2712.50883 5819.70578 -2712.40586 5819.8534 -2712.32382 5819.95401 -2712.18816 5819.98966 -2712.01292 5819.95401 -2711.84784 5819.8534 -2711.71218 5819.70578 -2711.63014 5819.53561 -2711.57852 5819.4195 -2711.5613 5816.48669 -2711.5613 Z \",\"M 5808.0182 -2703.57775 L 5807.86513 -2703.5473 5807.18088 -2703.5473 5807.0278 -2703.57775 5806.89803 -2703.66446 5806.81132 -2703.79423 5806.78088 -2703.9473 5806.78088 -2704.19145 5805.47789 -2704.19145 5805.32482 -2704.2219 5805.19505 -2704.30861 5800.30873 -2709.19486 5800.22202 -2709.32462 5800.19157 -2709.4777 5800.22202 -2709.63077 5800.30873 -2709.76054 5800.4385 -2709.84725 5800.59157 -2709.8777 5806.76092 -2709.8777 5806.914 -2709.84725 5807.04377 -2709.76054 5808.90078 -2707.90347 5808.99028 -2707.76676 5809.01765 -2707.60567 5808.97832 -2707.44707 5808.87884 -2707.31744 5808.73583 -2707.2384 5808.57314 -2707.22314 5808.48479 -2707.2331 5808.26512 -2707.2331 5808.26512 -2705.87255 5808.71875 -2705.87255 5808.87182 -2705.8421 5809.00159 -2705.75539 5809.0883 -2705.62562 5809.11875 -2705.47255 5809.11875 -2704.59145 5809.0883 -2704.43838 5809.00159 -2704.30861 5808.87182 -2704.2219 5808.71875 -2704.19145 5808.26512 -2704.19145 5808.26512 -2703.9473 5808.23468 -2703.79423 5808.14797 -2703.66446 5808.0182 -2703.57775 Z M 5805.51875 -2706.19064 L 5805.51875 -2705.87255 5806.78088 -2705.87255 5806.78088 -2707.2331 5806.56121 -2707.2331 5806.31234 -2707.20506 5806.09729 -2707.12981 5805.90437 -2707.00859 5805.74326 -2706.84748 5805.62204 -2706.65456 5805.54679 -2706.43951 5805.51875 -2706.19064 Z \",\"M 5816.70226 -2689.7088 L 5816.54919 -2689.73925 5816.41942 -2689.82596 5816.09292 -2690.15246 5816.00621 -2690.28223 5815.97576 -2690.4353 5816.00621 -2690.58837 5816.09292 -2690.71814 5816.22269 -2690.80485 5816.37576 -2690.8353 5817.98743 -2690.8353 5818.10616 -2690.81727 5819.16426 -2690.81727 5819.26146 -2690.80529 5819.36631 -2690.76283 5819.70578 -2690.65986 5819.8534 -2690.57782 5819.95401 -2690.44216 5819.98966 -2690.26692 5819.95401 -2690.10184 5819.8534 -2689.96618 5819.70578 -2689.88414 5819.35282 -2689.77396 5819.26146 -2689.73871 5819.16426 -2689.72672 5818.10582 -2689.72672 5817.98742 -2689.7088 5816.70226 -2689.7088 Z \",\"M 5542.55225 -2689.1995 L 5542.38717 -2689.23515 5542.25152 -2689.33576 5542.16948 -2689.48339 5542.15568 -2689.65171 5542.21257 -2689.81073 5542.33003 -2689.93209 5542.63777 -2690.13771 5543.04775 -2690.49725 5543.40729 -2690.90723 5543.71024 -2691.36063 5543.95142 -2691.84969 5544.1267 -2692.36605 5544.23308 -2692.90087 5544.26874 -2693.445 5544.23308 -2693.98913 5544.1267 -2694.52395 5543.95142 -2695.04031 5543.71024 -2695.52937 5543.40729 -2695.98277 5543.04775 -2696.39275 5542.63777 -2696.75229 5542.18437 -2697.05524 5541.83171 -2697.22915 5541.69396 -2697.34095 5541.6181 -2697.50132 5541.61907 -2697.67873 5541.69667 -2697.83827 5541.83563 -2697.94856 5542.00862 -2697.9879 5595.63964 -2697.9879 5595.79271 -2697.95745 5595.92248 -2697.87074 5596.00919 -2697.74097 5596.03964 -2697.5879 5596.00919 -2697.43483 5595.92248 -2697.30506 5587.93408 -2689.31666 5587.80431 -2689.22995 5587.65124 -2689.1995 5542.55225 -2689.1995 Z \",\"M 5769.33817 -2685.79385 L 5769.1851 -2685.7634 5743.7456 -2685.7634 5743.59253 -2685.79385 5743.46276 -2685.88056 5743.37605 -2686.01033 5743.3456 -2686.1634 5743.3456 -2686.72099 5743.31756 -2686.96986 5743.28466 -2687.06389 5743.26221 -2687.196 5743.28466 -2687.32811 5743.31756 -2687.42214 5743.3456 -2687.67101 5743.3456 -2688.68899 5743.31756 -2688.93786 5743.28448 -2689.03239 5743.26203 -2689.1645 5743.28448 -2689.29661 5743.31756 -2689.39114 5743.3456 -2689.64001 5743.3456 -2690.65799 5743.31756 -2690.90686 5743.28466 -2691.00089 5743.26221 -2691.133 5743.28466 -2691.26511 5743.31756 -2691.35914 5743.3456 -2691.60801 5743.3456 -2692.62599 5743.31756 -2692.87486 5743.28448 -2692.96939 5743.26203 -2693.1015 5743.28448 -2693.23361 5743.31756 -2693.32814 5743.3456 -2693.57701 5743.3456 -2694.59499 5743.31756 -2694.84386 5743.24231 -2695.05891 5743.12109 -2695.25183 5742.95998 -2695.41294 5742.76706 -2695.53416 5742.55201 -2695.60941 5742.30314 -2695.63745 5736.04886 -2695.63745 5735.79999 -2695.60941 5735.55032 -2695.52205 5735.41821 -2695.4996 5720.95756 -2695.4996 5720.64313 -2695.46655 5720.36249 -2695.37537 5720.10236 -2695.22518 5719.92585 -2695.07442 5717.90988 -2693.05846 5717.78011 -2692.97175 5717.62704 -2692.9413 5715.23326 -2692.9413 5715.08019 -2692.97175 5714.95042 -2693.05846 5714.86371 -2693.18823 5714.83326 -2693.3413 5714.86371 -2693.49437 5714.95042 -2693.62414 5722.26768 -2700.9414 5722.37814 -2701.01951 5722.48312 -2701.06964 5722.62063 -2701.10717 5723.01695 -2701.14184 5723.13138 -2701.17251 5723.28366 -2701.18315 5723.42883 -2701.13598 5723.54577 -2701.03786 5723.61743 -2700.90308 5723.63339 -2700.75127 5723.61543 -2700.546 5723.64884 -2700.16405 5723.74808 -2699.7937 5723.91011 -2699.44621 5724.13003 -2699.13214 5724.40114 -2698.86103 5724.71521 -2698.64111 5725.0627 -2698.47908 5725.43305 -2698.37984 5725.815 -2698.34643 5726.19695 -2698.37984 5726.5673 -2698.47908 5726.91479 -2698.64111 5727.22886 -2698.86103 5727.36463 -2698.983 5727.50234 -2699.07013 5727.60487 -2699.1163 5727.7162 -2699.1321 5732.76604 -2699.1321 5733.08047 -2699.16515 5733.36111 -2699.25633 5733.62124 -2699.40652 5733.79775 -2699.55728 5735.02382 -2700.78334 5735.15359 -2700.87005 5735.30666 -2700.9005 5745.53155 -2700.9005 5745.68462 -2700.87005 5745.81439 -2700.78334 5745.9011 -2700.65357 5745.93155 -2700.5005 5745.93155 -2699.18686 5745.95959 -2698.93799 5746.03484 -2698.72294 5746.15606 -2698.53002 5746.31717 -2698.36891 5746.51009 -2698.24769 5746.72514 -2698.17244 5746.97401 -2698.1444 5747.99199 -2698.1444 5748.24086 -2698.17244 5748.33539 -2698.20552 5748.4675 -2698.22797 5748.59961 -2698.20552 5748.69414 -2698.17244 5748.94301 -2698.1444 5749.96099 -2698.1444 5750.20986 -2698.17244 5750.30389 -2698.20534 5750.436 -2698.22779 5750.56811 -2698.20534 5750.66214 -2698.17244 5750.91101 -2698.1444 5751.92899 -2698.1444 5752.17786 -2698.17244 5752.27239 -2698.20552 5752.4045 -2698.22797 5752.53661 -2698.20552 5752.63114 -2698.17244 5752.88001 -2698.1444 5753.89799 -2698.1444 5754.14686 -2698.17244 5754.24089 -2698.20534 5754.373 -2698.22779 5754.50511 -2698.20534 5754.59914 -2698.17244 5754.84801 -2698.1444 5755.86599 -2698.1444 5756.11486 -2698.17244 5756.20939 -2698.20552 5756.3415 -2698.22797 5756.47361 -2698.20552 5756.56814 -2698.17244 5756.81701 -2698.1444 5757.83499 -2698.1444 5758.08386 -2698.17244 5758.17789 -2698.20534 5758.31 -2698.22779 5758.44211 -2698.20534 5758.53614 -2698.17244 5758.78501 -2698.1444 5759.80299 -2698.1444 5760.05186 -2698.17244 5760.14639 -2698.20552 5760.2785 -2698.22797 5760.41061 -2698.20552 5760.50514 -2698.17244 5760.75401 -2698.1444 5761.77199 -2698.1444 5762.02086 -2698.17244 5762.11489 -2698.20534 5762.247 -2698.22779 5762.37911 -2698.20534 5762.47314 -2698.17244 5762.72201 -2698.1444 5763.73999 -2698.1444 5763.98886 -2698.17244 5764.08339 -2698.20552 5764.2155 -2698.22797 5764.34761 -2698.20552 5764.44214 -2698.17244 5764.69101 -2698.1444 5765.70899 -2698.1444 5765.95786 -2698.17244 5766.05189 -2698.20534 5766.184 -2698.22779 5766.31611 -2698.20534 5766.41014 -2698.17244 5766.65901 -2698.1444 5767.67699 -2698.1444 5767.92586 -2698.17244 5768.02039 -2698.20552 5768.1525 -2698.22797 5768.28461 -2698.20552 5768.37914 -2698.17244 5768.62801 -2698.1444 5769.1851 -2698.1444 5769.33817 -2698.11395 5769.46794 -2698.02724 5769.55465 -2697.89747 5769.5851 -2697.7444 5769.5851 -2686.1634 5769.55465 -2686.01033 5769.46794 -2685.88056 5769.33817 -2685.79385 Z \",\"M 5798.57847 -2683.82535 L 5798.4254 -2683.7949 5780.8991 -2683.7949 5780.74603 -2683.82535 5780.61626 -2683.91206 5780.52955 -2684.04183 5780.4991 -2684.1949 5780.4991 -2697.7444 5780.52955 -2697.89747 5780.61626 -2698.02724 5780.74603 -2698.11395 5780.8991 -2698.1444 5781.45699 -2698.1444 5781.70586 -2698.17244 5781.79989 -2698.20534 5781.932 -2698.22779 5782.06411 -2698.20534 5782.15814 -2698.17244 5782.40701 -2698.1444 5783.42499 -2698.1444 5783.67386 -2698.17244 5783.76839 -2698.20552 5783.9005 -2698.22797 5784.03261 -2698.20552 5784.12714 -2698.17244 5784.37601 -2698.1444 5785.39399 -2698.1444 5785.64286 -2698.17244 5785.73689 -2698.20534 5785.869 -2698.22779 5786.00111 -2698.20534 5786.09514 -2698.17244 5786.34401 -2698.1444 5787.36199 -2698.1444 5787.61086 -2698.17244 5787.70539 -2698.20552 5787.8375 -2698.22797 5787.96961 -2698.20552 5788.06414 -2698.17244 5788.31301 -2698.1444 5789.33099 -2698.1444 5789.57986 -2698.17244 5789.67389 -2698.20534 5789.806 -2698.22779 5789.93811 -2698.20534 5790.03214 -2698.17244 5790.28101 -2698.1444 5791.29899 -2698.1444 5791.54786 -2698.17244 5791.64239 -2698.20552 5791.7745 -2698.22797 5791.90661 -2698.20552 5792.00114 -2698.17244 5792.25001 -2698.1444 5793.26799 -2698.1444 5793.51686 -2698.17244 5793.61089 -2698.20534 5793.743 -2698.22779 5793.87511 -2698.20534 5793.96914 -2698.17244 5794.21801 -2698.1444 5795.23599 -2698.1444 5795.48486 -2698.17244 5795.69991 -2698.24769 5795.89283 -2698.36891 5796.05394 -2698.53002 5796.17516 -2698.72294 5796.25041 -2698.93799 5796.27845 -2699.18686 5796.27845 -2699.63889 5796.3089 -2699.79196 5796.39561 -2699.92173 5796.52538 -2700.00844 5796.67845 -2700.03889 5796.83152 -2700.00844 5796.96129 -2699.92173 5799.68814 -2697.19489 5799.93384 -2696.99592 5800.19676 -2696.86195 5800.4869 -2696.78421 5800.71832 -2696.766 5817.9874 -2696.766 5818.10516 -2696.74827 5819.16426 -2696.74827 5819.26146 -2696.73629 5819.36631 -2696.69383 5819.70578 -2696.59086 5819.8534 -2696.50882 5819.95401 -2696.37316 5819.98966 -2696.19792 5819.95401 -2696.03284 5819.8534 -2695.89718 5819.70578 -2695.81514 5819.35282 -2695.70496 5819.26146 -2695.66971 5819.16426 -2695.65773 5818.4744 -2695.65773 5818.49573 -2695.58741 5818.59427 -2695.40306 5818.63616 -2695.27966 5818.63616 -2695.14934 5818.59427 -2695.02594 5818.49573 -2694.84159 5818.40419 -2694.53983 5818.37329 -2694.226 5818.38551 -2694.10191 5818.36724 -2693.93723 5818.28381 -2693.79408 5818.14953 -2693.69702 5817.98743 -2693.6627 5815.89796 -2693.6627 5815.74489 -2693.69315 5815.61512 -2693.77986 5814.32426 -2695.07071 5814.07856 -2695.26968 5813.81564 -2695.40365 5813.5255 -2695.48139 5813.29408 -2695.4996 5806.75279 -2695.4996 5806.62068 -2695.52205 5806.37101 -2695.60941 5806.12214 -2695.63745 5799.86786 -2695.63745 5799.61899 -2695.60941 5799.40394 -2695.53416 5799.21102 -2695.41294 5799.04991 -2695.25183 5798.92869 -2695.05891 5798.85344 -2694.84386 5798.8254 -2694.59499 5798.8254 -2693.57701 5798.85344 -2693.32814 5798.88652 -2693.23361 5798.90897 -2693.1015 5798.88652 -2692.96939 5798.85344 -2692.87486 5798.8254 -2692.62599 5798.8254 -2691.60801 5798.85344 -2691.35914 5798.88634 -2691.26511 5798.90879 -2691.133 5798.88634 -2691.00089 5798.85344 -2690.90686 5798.8254 -2690.65799 5798.8254 -2689.64001 5798.85344 -2689.39114 5798.88652 -2689.29661 5798.90897 -2689.1645 5798.88652 -2689.03239 5798.85344 -2688.93786 5798.8254 -2688.68899 5798.8254 -2687.67101 5798.85344 -2687.42214 5798.88634 -2687.32811 5798.90879 -2687.196 5798.88634 -2687.06389 5798.85344 -2686.96986 5798.8254 -2686.72099 5798.8254 -2685.70301 5798.85344 -2685.45414 5798.88652 -2685.35961 5798.90897 -2685.2275 5798.88652 -2685.09539 5798.85344 -2685.00086 5798.8254 -2684.75199 5798.8254 -2684.1949 5798.79495 -2684.04183 5798.70824 -2683.91206 5798.57847 -2683.82535 Z \",\"M 5773.84056 -2683.7949 L 5773.68749 -2683.82535 5773.55773 -2683.91205 5772.74226 -2684.72747 5772.65555 -2684.85724 5772.6251 -2685.01032 5772.6251 -2697.7444 5772.65555 -2697.89747 5772.74226 -2698.02724 5772.87203 -2698.11395 5773.0251 -2698.1444 5773.58299 -2698.1444 5773.83186 -2698.17244 5773.92589 -2698.20534 5774.058 -2698.22779 5774.19011 -2698.20534 5774.28414 -2698.17244 5774.52628 -2698.14516 5774.52628 -2698.66674 5774.54872 -2698.79885 5774.59741 -2698.93799 5774.62545 -2699.18686 5774.62545 -2705.44114 5774.59741 -2705.69001 5774.54872 -2705.82915 5774.52628 -2705.96126 5774.52628 -2706.71138 5774.4873 -2706.8836 5774.4873 -2712.50021 5774.51775 -2712.65328 5774.60446 -2712.78305 5774.73423 -2712.86976 5774.8873 -2712.90021 5775.04037 -2712.86976 5775.17014 -2712.78305 5777.34194 -2710.61125 5777.42865 -2710.48148 5777.4591 -2710.32841 5777.4591 -2705.74361 5777.42755 -2705.44114 5777.42755 -2699.18686 5777.4591 -2698.88439 5777.4591 -2684.1949 5777.42865 -2684.04183 5777.34194 -2683.91206 5777.21217 -2683.82535 5777.0591 -2683.7949 5773.84056 -2683.7949 Z M 5775.55772 -2698.14516 L 5775.79986 -2698.17244 5775.89439 -2698.20552 5776.0265 -2698.22797 5776.15861 -2698.20552 5776.25314 -2698.17244 5776.49528 -2698.14516 5776.49528 -2700.4892 5775.55772 -2700.4892 5775.55772 -2698.14516 Z M 5775.55772 -2705.9584 L 5775.55772 -2704.1388 5776.49528 -2704.1388 5776.49528 -2706.48284 5776.25314 -2706.45556 5776.15861 -2706.42248 5776.0265 -2706.40003 5775.89439 -2706.42248 5775.79986 -2706.45556 5775.55772 -2706.48284 5775.55772 -2705.9584 Z \",\"M 5764.21379 -2656.2358 L 5764.06072 -2656.26625 5763.93095 -2656.35296 5762.5387 -2657.74521 5762.29339 -2657.94652 5762.03094 -2658.08681 5761.74616 -2658.1732 5761.43035 -2658.2043 5743.7456 -2658.2043 5743.59253 -2658.23475 5743.46276 -2658.32146 5743.37605 -2658.45123 5743.3456 -2658.6043 5743.3456 -2659.16199 5743.31756 -2659.41086 5743.28466 -2659.50489 5743.26221 -2659.637 5743.28466 -2659.76911 5743.31756 -2659.86314 5743.3456 -2660.11201 5743.3456 -2661.12999 5743.31756 -2661.37886 5743.28448 -2661.47339 5743.26203 -2661.6055 5743.28448 -2661.73761 5743.31756 -2661.83214 5743.3456 -2662.08101 5743.3456 -2663.09899 5743.31756 -2663.34786 5743.28466 -2663.44189 5743.26221 -2663.574 5743.28466 -2663.70611 5743.31756 -2663.80014 5743.3456 -2664.04901 5743.3456 -2665.06699 5743.31756 -2665.31586 5743.28448 -2665.41039 5743.26203 -2665.5425 5743.28448 -2665.67461 5743.31756 -2665.76914 5743.3456 -2666.01801 5743.3456 -2667.03599 5743.31756 -2667.28486 5743.28466 -2667.37889 5743.26221 -2667.511 5743.28466 -2667.64311 5743.31756 -2667.73714 5743.3456 -2667.98601 5743.3456 -2669.00399 5743.31756 -2669.25286 5743.28448 -2669.34739 5743.26203 -2669.4795 5743.28448 -2669.61161 5743.31756 -2669.70614 5743.3456 -2669.95501 5743.3456 -2670.97299 5743.31756 -2671.22186 5743.28466 -2671.31589 5743.26221 -2671.448 5743.28466 -2671.58011 5743.31756 -2671.67414 5743.3456 -2671.92301 5743.3456 -2672.94099 5743.31756 -2673.18986 5743.28448 -2673.28439 5743.26203 -2673.4165 5743.28448 -2673.54861 5743.31756 -2673.64314 5743.3456 -2673.89201 5743.3456 -2674.90999 5743.31756 -2675.15886 5743.28466 -2675.25289 5743.26221 -2675.385 5743.28466 -2675.51711 5743.31756 -2675.61114 5743.3456 -2675.86001 5743.3456 -2676.87799 5743.31756 -2677.12686 5743.28448 -2677.22139 5743.26203 -2677.3535 5743.28448 -2677.48561 5743.31756 -2677.58014 5743.3456 -2677.82901 5743.3456 -2678.84699 5743.31756 -2679.09586 5743.28466 -2679.18989 5743.26221 -2679.322 5743.28466 -2679.45411 5743.31756 -2679.54814 5743.3456 -2679.79701 5743.3456 -2680.81499 5743.31756 -2681.06386 5743.28448 -2681.15839 5743.26203 -2681.2905 5743.28448 -2681.42261 5743.31756 -2681.51714 5743.34484 -2681.75927 5742.8204 -2681.75927 5742.68829 -2681.78172 5742.55201 -2681.82941 5742.30314 -2681.85745 5736.04886 -2681.85745 5735.79999 -2681.82941 5735.66371 -2681.78172 5735.5316 -2681.75927 5734.77904 -2681.75927 5734.6064 -2681.7201 5724.37036 -2681.7201 5724.21729 -2681.75055 5724.08752 -2681.83726 5724.00081 -2681.96703 5723.97036 -2682.1201 5724.00081 -2682.27317 5724.08752 -2682.40294 5726.36562 -2684.68104 5726.49539 -2684.76775 5726.64846 -2684.7982 5734.6064 -2684.7982 5734.75947 -2684.76775 5734.88924 -2684.68104 5734.97595 -2684.55127 5735.0064 -2684.3982 5735.0064 -2683.73401 5735.03444 -2683.48514 5735.06734 -2683.39111 5735.08979 -2683.259 5735.06734 -2683.12689 5735.03444 -2683.03286 5735.00716 -2682.79072 5735.52874 -2682.79072 5735.66085 -2682.76828 5735.79999 -2682.71959 5736.04886 -2682.69155 5742.30314 -2682.69155 5742.60828 -2682.7234 5770.28144 -2682.7234 5770.43451 -2682.69295 5770.56427 -2682.60625 5771.9566 -2681.214 5772.20191 -2681.01268 5772.46436 -2680.87239 5772.74914 -2680.786 5773.06495 -2680.7549 5799.56716 -2680.7549 5799.86786 -2680.72355 5806.12214 -2680.72355 5806.37101 -2680.75159 5806.50729 -2680.79928 5806.6394 -2680.82173 5807.16384 -2680.82173 5807.13656 -2681.06386 5807.10348 -2681.15839 5807.08103 -2681.2905 5807.10348 -2681.42261 5807.13656 -2681.51714 5807.1646 -2681.76601 5807.1646 -2682.4297 5807.19505 -2682.58277 5807.28176 -2682.71254 5807.41153 -2682.79925 5807.5646 -2682.8297 5808.66094 -2682.8297 5808.81401 -2682.79925 5808.94378 -2682.71254 5811.22188 -2680.43444 5811.30859 -2680.30467 5811.33904 -2680.1516 5811.30859 -2679.99853 5811.22188 -2679.86876 5811.09211 -2679.78205 5810.93904 -2679.7516 5807.5646 -2679.7516 5807.39301 -2679.79028 5806.64226 -2679.79028 5806.51015 -2679.81272 5806.37101 -2679.86141 5806.12214 -2679.88945 5799.86786 -2679.88945 5799.61899 -2679.86141 5799.47985 -2679.81272 5799.34774 -2679.79028 5798.82616 -2679.79028 5798.85344 -2679.54814 5798.88634 -2679.45411 5798.90879 -2679.322 5798.88634 -2679.18989 5798.85344 -2679.09586 5798.8254 -2678.84699 5798.8254 -2677.82901 5798.85344 -2677.58014 5798.88652 -2677.48561 5798.90897 -2677.3535 5798.88652 -2677.22139 5798.85344 -2677.12686 5798.8254 -2676.87799 5798.8254 -2675.86001 5798.85344 -2675.61114 5798.88634 -2675.51711 5798.90879 -2675.385 5798.88634 -2675.25289 5798.85344 -2675.15886 5798.8254 -2674.90999 5798.8254 -2673.89201 5798.85344 -2673.64314 5798.88652 -2673.54861 5798.90897 -2673.4165 5798.88652 -2673.28439 5798.85344 -2673.18986 5798.8254 -2672.94099 5798.8254 -2671.92301 5798.85344 -2671.67414 5798.88634 -2671.58011 5798.90879 -2671.448 5798.88634 -2671.31589 5798.85344 -2671.22186 5798.8254 -2670.97299 5798.8254 -2669.95501 5798.85344 -2669.70614 5798.88652 -2669.61161 5798.90897 -2669.4795 5798.88652 -2669.34739 5798.85344 -2669.25286 5798.8254 -2669.00399 5798.8254 -2667.98601 5798.85344 -2667.73714 5798.88634 -2667.64311 5798.90879 -2667.511 5798.88634 -2667.37889 5798.85344 -2667.28486 5798.8254 -2667.03599 5798.8254 -2666.01801 5798.85344 -2665.76914 5798.88652 -2665.67461 5798.90897 -2665.5425 5798.88652 -2665.41039 5798.85344 -2665.31586 5798.8254 -2665.06699 5798.8254 -2664.04901 5798.85344 -2663.80014 5798.88634 -2663.70611 5798.90879 -2663.574 5798.88634 -2663.44189 5798.85344 -2663.34786 5798.8254 -2663.09899 5798.8254 -2662.08101 5798.85344 -2661.83214 5798.88652 -2661.73761 5798.90897 -2661.6055 5798.88652 -2661.47339 5798.85344 -2661.37886 5798.8254 -2661.12999 5798.8254 -2660.11201 5798.85344 -2659.86314 5798.88634 -2659.76911 5798.90879 -2659.637 5798.88634 -2659.50489 5798.85344 -2659.41086 5798.8254 -2659.16199 5798.8254 -2658.14401 5798.85344 -2657.89514 5798.88652 -2657.80061 5798.90897 -2657.6685 5798.88652 -2657.53639 5798.85344 -2657.44186 5798.8254 -2657.19299 5798.8254 -2656.6358 5798.79495 -2656.48273 5798.70824 -2656.35296 5798.57847 -2656.26625 5798.4254 -2656.2358 5764.21379 -2656.2358 Z \",\"M 5520.2212 -2645.461 L 5520.06813 -2645.49145 5519.93836 -2645.57816 5519.85165 -2645.70793 5519.8212 -2645.861 5519.8212 -2649.5565 5519.85165 -2649.70957 5519.93836 -2649.83934 5520.06813 -2649.92605 5520.2212 -2649.9565 5563.00304 -2649.9565 5563.31747 -2649.98955 5563.59811 -2650.08073 5563.85824 -2650.23092 5564.03475 -2650.38168 5571.8075 -2658.15443 5571.93689 -2658.24098 5572.00433 -2658.2545 5572.01766 -2658.32153 5572.10437 -2658.4513 5575.0937 -2661.44063 5575.22347 -2661.52734 5575.2905 -2661.54067 5575.30402 -2661.60811 5575.39057 -2661.7375 5577.42722 -2663.77414 5577.55699 -2663.86085 5577.71006 -2663.8913 5590.94004 -2663.8913 5591.25447 -2663.92435 5591.53511 -2664.01553 5591.79524 -2664.16572 5591.97175 -2664.31648 5607.69142 -2680.03614 5607.82119 -2680.12285 5607.97426 -2680.1533 5673.2828 -2680.1533 5673.43587 -2680.12285 5673.56564 -2680.03614 5673.65235 -2679.90637 5673.6828 -2679.7533 5673.6828 -2675.94496 5673.71383 -2675.66959 5673.69745 -2675.50333 5673.6146 -2675.35826 5673.47972 -2675.25969 5673.31634 -2675.2248 5604.85596 -2675.2248 5604.54153 -2675.19175 5604.26089 -2675.10057 5604.00076 -2674.95038 5603.82425 -2674.79962 5583.85876 -2654.83413 5583.72281 -2654.74493 5583.56259 -2654.7172 5583.40457 -2654.75553 5583.27487 -2654.8536 5583.19491 -2654.99518 5583.17791 -2655.15689 5583.22481 -2655.62444 5583.21576 -2656.25771 5583.13459 -2656.88582 5582.98235 -2657.50058 5582.95362 -2657.57761 5581.23801 -2655.862 5582.77948 -2654.32054 5582.86619 -2654.19077 5582.89664 -2654.03769 5582.86619 -2653.88462 5582.77948 -2653.75485 5579.79015 -2650.76552 5579.66038 -2650.67881 5579.50731 -2650.64836 5579.35423 -2650.67881 5579.22446 -2650.76552 5577.683 -2652.30699 5575.96739 -2650.59138 5576.04442 -2650.56265 5576.65918 -2650.41041 5577.28729 -2650.32924 5577.92056 -2650.32019 5578.38811 -2650.36709 5578.54982 -2650.35009 5578.6914 -2650.27013 5578.78947 -2650.14043 5578.8278 -2649.98241 5578.80007 -2649.82219 5578.71087 -2649.68624 5574.60278 -2645.57816 5574.47301 -2645.49145 5574.31994 -2645.461 5520.2212 -2645.461 Z M 5572.41586 -2654.14987 L 5574.12799 -2655.862 5572.41218 -2657.57781 5572.26287 -2657.04108 5572.16379 -2656.41554 5572.13667 -2655.78279 5572.18185 -2655.15108 5572.29875 -2654.52863 5572.41586 -2654.14987 Z M 5575.96719 -2661.13282 L 5577.683 -2659.41701 5579.39513 -2661.12914 5579.01637 -2661.24625 5578.39392 -2661.36315 5577.76221 -2661.40833 5577.12946 -2661.38121 5576.50392 -2661.28213 5575.96719 -2661.13282 Z \",\"M 5612.86976 -2622.9413 L 5612.71669 -2622.97175 5612.58692 -2623.05846 5605.53446 -2630.11091 5605.28876 -2630.30988 5605.02584 -2630.44385 5604.7357 -2630.52159 5604.50428 -2630.5398 5546.92484 -2630.5398 5546.77177 -2630.57025 5546.642 -2630.65695 5545.50566 -2631.79325 5545.41895 -2631.92302 5545.3885 -2632.0761 5545.41895 -2632.22917 5545.50566 -2632.35894 5545.63543 -2632.44565 5545.7885 -2632.4761 5573.27864 -2632.4761 5573.59307 -2632.50915 5573.87371 -2632.60033 5574.13384 -2632.75052 5574.31035 -2632.90128 5603.68922 -2662.28024 5603.81899 -2662.36695 5603.97206 -2662.3974 5621.06243 -2662.3974 5621.21551 -2662.36695 5621.34528 -2662.28024 5621.43199 -2662.15047 5621.46243 -2661.9974 5621.43198 -2661.84433 5621.34527 -2661.71456 5618.17665 -2658.54596 5617.53825 -2657.96931 5616.86192 -2657.47011 5616.13991 -2657.0396 5615.37918 -2656.68194 5614.58706 -2656.40056 5613.77118 -2656.19818 5612.93938 -2656.07675 5612.15006 -2656.03798 5612.062 -2656.02949 5611.56546 -2656.00821 5610.93992 -2655.90913 5610.32976 -2655.7394 5609.74292 -2655.50122 5609.18706 -2655.19769 5608.66942 -2654.83278 5608.19675 -2654.41125 5607.77522 -2653.93858 5607.41031 -2653.42094 5607.10678 -2652.86508 5606.8686 -2652.27824 5606.69887 -2651.66808 5606.59979 -2651.04254 5606.57267 -2650.40979 5606.61785 -2649.77808 5606.73475 -2649.15563 5606.92184 -2648.55056 5607.17668 -2647.97076 5607.49595 -2647.42379 5607.87549 -2646.91679 5608.31036 -2646.45635 5608.79487 -2646.04848 5609.32272 -2645.6985 5609.88702 -2645.41098 5610.48042 -2645.18965 5611.09518 -2645.03741 5611.72329 -2644.95624 5612.35656 -2644.94719 5612.98673 -2645.01039 5613.60558 -2645.14502 5614.20506 -2645.34931 5614.77734 -2645.62061 5615.31497 -2645.95537 5615.81093 -2646.34923 5616.25877 -2646.79707 5616.65263 -2647.29303 5616.98739 -2647.83066 5617.25869 -2648.40294 5617.46298 -2649.00242 5617.59761 -2649.62127 5617.66154 -2650.25879 5617.66733 -2650.50901 5617.71051 -2651.34851 5617.83576 -2652.17974 5618.04188 -2652.99469 5618.32689 -2653.78551 5618.68805 -2654.54459 5619.12186 -2655.26461 5619.62416 -2655.93864 5620.17585 -2656.54662 5623.62601 -2659.99674 5623.75578 -2660.08345 5623.90885 -2660.1139 5669.94739 -2660.1139 5670.10046 -2660.08345 5670.23023 -2659.99674 5670.31694 -2659.86697 5670.34739 -2659.7139 5670.31694 -2659.56083 5670.23023 -2659.43106 5670.11403 -2659.31486 5669.89411 -2659.00079 5669.73208 -2658.6533 5669.63284 -2658.28295 5669.59943 -2657.901 5669.63284 -2657.51905 5669.73208 -2657.1487 5669.89411 -2656.80121 5670.11403 -2656.48714 5670.38514 -2656.21603 5670.69921 -2655.99611 5671.0467 -2655.83408 5671.41705 -2655.73484 5671.799 -2655.70143 5672.18095 -2655.73484 5672.55216 -2655.83431 5673.13699 -2656.10386 5673.28292 -2656.14001 5673.43188 -2656.11974 5673.56284 -2656.04591 5673.6573 -2655.92895 5673.70191 -2655.78538 5673.71084 -2655.70609 5673.78609 -2655.49104 5673.90731 -2655.29812 5674.06842 -2655.13701 5674.26134 -2655.01579 5674.47639 -2654.94054 5674.72526 -2654.9125 5687.27874 -2654.9125 5687.52761 -2654.94054 5687.74266 -2655.01579 5687.93558 -2655.13701 5688.09669 -2655.29812 5688.21791 -2655.49104 5688.29316 -2655.70609 5688.3212 -2655.95496 5688.3212 -2659.7139 5688.35165 -2659.86697 5688.43836 -2659.99674 5688.56813 -2660.08345 5688.7212 -2660.1139 5695.0328 -2660.1139 5695.18587 -2660.08345 5695.31564 -2659.99674 5695.40235 -2659.86697 5695.4328 -2659.7139 5695.4328 -2659.13525 5699.3524 -2659.13525 5699.3524 -2659.7139 5699.38285 -2659.86697 5699.46956 -2659.99674 5699.59933 -2660.08345 5699.7524 -2660.1139 5705.7516 -2660.1139 5705.90467 -2660.08345 5706.03444 -2659.99674 5706.12115 -2659.86697 5706.1516 -2659.7139 5706.1516 -2659.13525 5710.0712 -2659.13525 5710.0712 -2659.7139 5710.10165 -2659.86697 5710.18836 -2659.99674 5710.31813 -2660.08345 5710.4712 -2660.1139 5711.19194 -2660.1139 5711.50637 -2660.14695 5711.78701 -2660.23813 5712.04714 -2660.38832 5712.22365 -2660.53908 5714.31326 -2662.62868 5714.44303 -2662.71539 5714.5961 -2662.74584 5714.74917 -2662.71539 5714.87894 -2662.62868 5714.96565 -2662.49891 5714.9961 -2662.34584 5714.9961 -2630.36477 5714.9643 -2630.20847 5714.87396 -2630.07703 5714.73945 -2629.99133 5714.58214 -2629.96501 5714.03595 -2630.11116 5713.654 -2630.14457 5713.27205 -2630.11116 5712.9017 -2630.01192 5712.55421 -2629.84989 5712.24014 -2629.62997 5712.128 -2629.52372 5711.99329 -2629.4232 5711.83212 -2629.35148 5711.68276 -2629.3296 5710.84569 -2629.33143 5710.45781 -2629.36963 5710.35509 -2629.39276 5710.20746 -2629.4748 5710.10685 -2629.61045 5710.0712 -2629.77554 5710.0712 -2629.86204 5710.04316 -2630.11091 5709.96791 -2630.32596 5709.84669 -2630.51888 5709.68558 -2630.67999 5709.49266 -2630.80121 5709.27761 -2630.87646 5709.02874 -2630.9045 5696.47526 -2630.9045 5696.22639 -2630.87646 5696.01134 -2630.80121 5695.81842 -2630.67999 5695.65731 -2630.51888 5695.53609 -2630.32596 5695.46084 -2630.11091 5695.4328 -2629.86204 5695.4328 -2625.96996 5695.46084 -2625.72109 5695.53609 -2625.50604 5695.65731 -2625.31312 5695.81842 -2625.15201 5696.01134 -2625.03079 5696.22639 -2624.95554 5696.47526 -2624.9275 5709.02874 -2624.9275 5709.27761 -2624.95554 5709.49266 -2625.03079 5709.68558 -2625.15201 5709.84669 -2625.31312 5709.96791 -2625.50604 5710.04316 -2625.72109 5710.0712 -2625.96996 5710.0712 -2626.05606 5710.10685 -2626.22115 5710.20746 -2626.3568 5710.38091 -2626.44667 5710.45781 -2626.46197 5710.8849 -2626.5021 5711.81898 -2626.5021 5711.9641 -2626.47485 5712.08945 -2626.3968 5712.23308 -2626.26497 5712.55421 -2626.04011 5712.86258 -2625.89632 5712.98608 -2625.8066 5713.06697 -2625.67714 5713.09348 -2625.52682 5713.06174 -2625.3775 5712.97638 -2625.25095 5710.78388 -2623.05846 5710.65411 -2622.97175 5710.50104 -2622.9413 5612.86976 -2622.9413 Z M 5696.22639 -2644.94554 L 5696.47526 -2644.9175 5709.02874 -2644.9175 5709.27761 -2644.94554 5709.49266 -2645.02079 5709.68558 -2645.14201 5709.84669 -2645.30312 5709.96791 -2645.49604 5710.04316 -2645.71109 5710.0712 -2645.95996 5710.0712 -2649.41853 5710.09946 -2649.56621 5710.18025 -2649.69302 5710.30215 -2649.78105 5710.38379 -2649.81911 5710.69786 -2650.03903 5710.96897 -2650.31014 5711.18889 -2650.62421 5711.35092 -2650.9717 5711.45016 -2651.34205 5711.48357 -2651.724 5711.45016 -2652.10595 5711.35092 -2652.4763 5711.18889 -2652.82379 5710.96897 -2653.13786 5710.69786 -2653.40897 5710.38379 -2653.62889 5710.0363 -2653.79092 5709.66595 -2653.89016 5709.284 -2653.92357 5708.90205 -2653.89016 5708.5317 -2653.79092 5708.18421 -2653.62889 5707.87014 -2653.40897 5707.59903 -2653.13786 5707.37911 -2652.82379 5707.21708 -2652.4763 5707.11784 -2652.10595 5707.0833 -2651.71106 5707.04566 -2651.57332 5706.99478 -2651.46696 5706.91679 -2651.35672 5706.57173 -2651.01166 5706.44196 -2650.92495 5706.28889 -2650.8945 5696.47526 -2650.8945 5696.22639 -2650.86646 5696.01134 -2650.79121 5695.81842 -2650.66999 5695.65731 -2650.50888 5695.53609 -2650.31596 5695.46084 -2650.10091 5695.4328 -2649.85204 5695.4328 -2645.95996 5695.46084 -2645.71109 5695.53609 -2645.49604 5695.65731 -2645.30312 5695.81842 -2645.14201 5696.01134 -2645.02079 5696.22639 -2644.94554 Z M 5696.22639 -2634.95054 L 5696.47526 -2634.9225 5709.02874 -2634.9225 5709.27761 -2634.95054 5709.49266 -2635.02579 5709.68558 -2635.14701 5709.84669 -2635.30812 5709.96791 -2635.50104 5710.04316 -2635.71609 5710.0712 -2635.96496 5710.0712 -2639.37953 5710.09946 -2639.52721 5710.18025 -2639.65402 5710.30215 -2639.74205 5710.38379 -2639.78011 5710.69786 -2640.00003 5710.96897 -2640.27114 5711.18889 -2640.58521 5711.35092 -2640.9327 5711.45016 -2641.30305 5711.48357 -2641.685 5711.45016 -2642.06695 5711.35092 -2642.4373 5711.18889 -2642.78479 5710.96897 -2643.09886 5710.69786 -2643.36997 5710.38379 -2643.58989 5710.0363 -2643.75192 5709.66595 -2643.85116 5709.284 -2643.88457 5708.90205 -2643.85116 5708.5317 -2643.75192 5708.18421 -2643.58989 5707.87014 -2643.36997 5707.59903 -2643.09886 5707.37911 -2642.78479 5707.21708 -2642.4373 5707.11784 -2642.06695 5707.08325 -2641.67159 5707.04562 -2641.53384 5706.9948 -2641.42761 5706.9168 -2641.31738 5706.61608 -2641.01666 5706.48631 -2640.92995 5706.33324 -2640.8995 5696.47526 -2640.8995 5696.22639 -2640.87146 5696.01134 -2640.79621 5695.81842 -2640.67499 5695.65731 -2640.51388 5695.53609 -2640.32096 5695.46084 -2640.10591 5695.4328 -2639.85704 5695.4328 -2635.96496 5695.46084 -2635.71609 5695.53609 -2635.50104 5695.65731 -2635.30812 5695.81842 -2635.14701 5696.01134 -2635.02579 5696.22639 -2634.95054 Z M 5674.47639 -2624.95554 L 5674.72526 -2624.9275 5687.27874 -2624.9275 5687.52761 -2624.95554 5687.74266 -2625.03079 5687.93558 -2625.15201 5688.09669 -2625.31312 5688.21791 -2625.50604 5688.29316 -2625.72109 5688.3212 -2625.96996 5688.3212 -2629.86204 5688.29316 -2630.11091 5688.21791 -2630.32596 5688.09669 -2630.51888 5687.93558 -2630.67999 5687.74266 -2630.80121 5687.52761 -2630.87646 5687.27874 -2630.9045 5674.72526 -2630.9045 5674.47639 -2630.87646 5674.26134 -2630.80121 5674.06842 -2630.67999 5673.90731 -2630.51888 5673.78609 -2630.32596 5673.71084 -2630.11091 5673.68749 -2629.90365 5673.63591 -2629.74757 5673.52592 -2629.62542 5673.37609 -2629.55781 5673.21172 -2629.55617 5673.06057 -2629.62077 5672.77479 -2629.82089 5672.4273 -2629.98292 5672.05695 -2630.08216 5671.675 -2630.11557 5671.29305 -2630.08216 5670.9227 -2629.98292 5670.57521 -2629.82089 5670.26114 -2629.60097 5669.99003 -2629.32986 5669.77011 -2629.01579 5669.60808 -2628.6683 5669.50884 -2628.29795 5669.47543 -2627.916 5669.50884 -2627.53405 5669.60808 -2627.1637 5669.77011 -2626.81621 5669.99003 -2626.50214 5670.26114 -2626.23103 5670.57521 -2626.01111 5670.9227 -2625.84908 5671.29305 -2625.74984 5671.675 -2625.71643 5672.05695 -2625.74984 5672.4273 -2625.84908 5672.77479 -2626.01111 5673.06057 -2626.21123 5673.21172 -2626.27583 5673.37609 -2626.27419 5673.52592 -2626.20658 5673.63591 -2626.08443 5673.68749 -2625.92835 5673.71084 -2625.72109 5673.78609 -2625.50604 5673.90731 -2625.31312 5674.06842 -2625.15201 5674.26134 -2625.03079 5674.47639 -2624.95554 Z M 5674.47644 -2644.94554 L 5674.72531 -2644.9175 5687.27869 -2644.9175 5687.52756 -2644.94554 5687.74261 -2645.02079 5687.93553 -2645.14201 5688.09664 -2645.30312 5688.21786 -2645.49604 5688.29311 -2645.71109 5688.32115 -2645.95996 5688.32115 -2649.85204 5688.29311 -2650.10091 5688.21786 -2650.31596 5688.09664 -2650.50888 5687.93553 -2650.66999 5687.74261 -2650.79121 5687.52756 -2650.86646 5687.27869 -2650.8945 5674.72531 -2650.8945 5674.47644 -2650.86646 5674.26139 -2650.79121 5674.06847 -2650.66999 5673.90736 -2650.50888 5673.78614 -2650.31596 5673.71089 -2650.10091 5673.68827 -2649.90011 5673.63669 -2649.74403 5673.5267 -2649.62187 5673.37687 -2649.55427 5673.2125 -2649.55263 5673.06135 -2649.61723 5672.78479 -2649.81089 5672.4373 -2649.97292 5672.06695 -2650.07216 5671.685 -2650.10557 5671.30305 -2650.07216 5670.9327 -2649.97292 5670.58521 -2649.81089 5670.27114 -2649.59097 5670.00003 -2649.31986 5669.78011 -2649.00579 5669.61808 -2648.6583 5669.51884 -2648.28795 5669.48543 -2647.906 5669.51884 -2647.52405 5669.61808 -2647.1537 5669.78011 -2646.80621 5670.00003 -2646.49214 5670.27114 -2646.22103 5670.58521 -2646.00111 5670.9327 -2645.83908 5671.30305 -2645.73984 5671.685 -2645.70643 5672.06695 -2645.73984 5672.4373 -2645.83908 5672.78479 -2646.00111 5673.06135 -2646.19477 5673.2125 -2646.25937 5673.37687 -2646.25773 5673.5267 -2646.19013 5673.63669 -2646.06797 5673.68827 -2645.91189 5673.71089 -2645.71109 5673.78614 -2645.49604 5673.90736 -2645.30312 5674.06847 -2645.14201 5674.26139 -2645.02079 5674.47644 -2644.94554 Z M 5687.27874 -2634.9225 L 5687.52761 -2634.95054 5687.74266 -2635.02579 5687.93558 -2635.14701 5688.09669 -2635.30812 5688.21791 -2635.50104 5688.29316 -2635.71609 5688.3212 -2635.96496 5688.3212 -2639.85704 5688.29316 -2640.10591 5688.21791 -2640.32096 5688.09669 -2640.51388 5687.93558 -2640.67499 5687.74266 -2640.79621 5687.52761 -2640.87146 5687.27874 -2640.8995 5674.72526 -2640.8995 5674.47639 -2640.87146 5674.26134 -2640.79621 5674.06842 -2640.67499 5673.90731 -2640.51388 5673.78609 -2640.32096 5673.71084 -2640.10591 5673.69766 -2639.98893 5673.64896 -2639.83788 5673.54535 -2639.71766 5673.40315 -2639.64719 5673.21377 -2639.6419 5673.11114 -2639.6706 5672.85537 -2639.78096 5672.44158 -2639.97838 5672.07295 -2640.07716 5671.691 -2640.11057 5671.30905 -2640.07716 5670.9387 -2639.97792 5670.59121 -2639.81589 5670.27714 -2639.59597 5670.00603 -2639.32486 5669.78611 -2639.01079 5669.62408 -2638.6633 5669.52484 -2638.29295 5669.49143 -2637.911 5669.52484 -2637.52905 5669.62408 -2637.1587 5669.78611 -2636.81121 5670.00603 -2636.49714 5670.27714 -2636.22603 5670.59121 -2636.00611 5670.9387 -2635.84408 5671.30905 -2635.74484 5671.691 -2635.71143 5672.07295 -2635.74484 5672.4443 -2635.84435 5673.10203 -2636.14694 5673.24479 -2636.18403 5673.4032 -2636.17441 5673.5454 -2636.10394 5673.649 -2635.98373 5673.6977 -2635.83268 5673.71084 -2635.71609 5673.78609 -2635.50104 5673.90731 -2635.30812 5674.06842 -2635.14701 5674.26134 -2635.02579 5674.47639 -2634.95054 5674.72526 -2634.9225 5687.27874 -2634.9225 Z M 5706.1516 -2656.66675 L 5706.1516 -2654.9125 5709.02874 -2654.9125 5709.27761 -2654.94054 5709.49266 -2655.01579 5709.68558 -2655.13701 5709.84669 -2655.29812 5709.96791 -2655.49104 5710.04316 -2655.70609 5710.0712 -2655.95496 5710.0712 -2656.66675 5706.1516 -2656.66675 Z M 5699.3524 -2654.9125 L 5699.3524 -2656.66675 5695.4328 -2656.66675 5695.4328 -2655.95496 5695.46084 -2655.70609 5695.53609 -2655.49104 5695.65731 -2655.29812 5695.81842 -2655.13701 5696.01134 -2655.01579 5696.22639 -2654.94054 5696.47526 -2654.9125 5699.3524 -2654.9125 Z \",\"M 5483.12352 -2533.97097 L 5482.13075 -2533.98478 5481.18597 -2534.07108 5480.25064 -2534.22993 5479.33033 -2534.46037 5478.43052 -2534.76103 5477.55654 -2535.13013 5476.71361 -2535.56548 5475.90672 -2536.06448 5475.14068 -2536.62417 5474.42004 -2537.24121 5473.74909 -2537.91195 5473.13181 -2538.63239 5472.57188 -2539.39825 5472.07262 -2540.20498 5471.63701 -2541.04778 5471.26762 -2541.92164 5470.96667 -2542.82135 5470.73594 -2543.74159 5470.5768 -2544.67686 5470.4912 -2545.61643 5470.4912 -2718.82564 5470.51995 -2718.97455 5470.60208 -2719.10206 5470.72578 -2719.18983 5470.87325 -2719.22523 5471.02331 -2719.20319 5471.22364 -2719.13309 5471.47251 -2719.10505 5474.18349 -2719.10505 5474.43236 -2719.13309 5474.64741 -2719.20834 5474.82737 -2719.29491 5474.96116 -2719.30242 5475.08993 -2719.26532 5475.19922 -2719.18778 5475.39892 -2718.98807 5475.47647 -2718.87878 5475.51356 -2718.75002 5475.50605 -2718.61622 5475.45477 -2718.49242 5475.34804 -2718.32256 5475.27279 -2718.10751 5475.24475 -2717.85864 5475.24475 -2717.54055 5476.50688 -2717.54055 5476.50688 -2717.733 5476.53732 -2717.88607 5476.62403 -2718.01584 5476.7538 -2718.10255 5476.90687 -2718.133 5477.59112 -2718.133 5477.7442 -2718.10255 5477.87397 -2718.01584 5477.96068 -2717.88607 5477.99112 -2717.733 5477.99112 -2717.54055 5478.44475 -2717.54055 5478.59782 -2717.5101 5478.72759 -2717.42339 5478.8143 -2717.29362 5478.84475 -2717.14055 5478.84475 -2716.25945 5478.8143 -2716.10638 5478.72759 -2715.97661 5478.59782 -2715.8899 5478.44475 -2715.85945 5477.99112 -2715.85945 5477.99112 -2714.4989 5478.21079 -2714.4989 5478.45966 -2714.52694 5478.67471 -2714.60219 5478.83619 -2714.70365 5478.97464 -2714.75799 5479.12336 -2714.75799 5479.26181 -2714.70365 5479.42329 -2714.60219 5479.63834 -2714.52694 5479.88721 -2714.4989 5481.81079 -2714.4989 5482.05966 -2714.52694 5482.27471 -2714.60219 5482.46763 -2714.72341 5482.62874 -2714.88452 5482.74996 -2715.07744 5482.82521 -2715.29249 5482.85325 -2715.54136 5482.85325 -2716.25337 5482.8837 -2716.40644 5482.97041 -2716.53621 5486.00176 -2719.56756 5486.13153 -2719.65427 5486.2846 -2719.68472 5486.43767 -2719.65427 5486.56744 -2719.56756 5486.65415 -2719.43779 5486.6846 -2719.28472 5486.6846 -2711.1645 5486.65415 -2711.01143 5486.56745 -2710.88166 5486.43768 -2710.79495 5486.28461 -2710.7645 5478.93857 -2710.7643 5478.47835 -2710.72981 5478.04305 -2710.63046 5477.62743 -2710.46733 5477.24075 -2710.24409 5476.89167 -2709.9657 5476.81519 -2709.88328 5476.68193 -2709.78873 5476.52197 -2709.75535 5476.34981 -2709.75535 5476.10094 -2709.72731 5475.88589 -2709.65206 5475.69297 -2709.53084 5475.53186 -2709.36973 5475.41064 -2709.17681 5475.33539 -2708.96176 5475.31528 -2708.78328 5475.27818 -2708.65451 5475.20063 -2708.54522 5472.74356 -2706.08823 5472.54443 -2705.84237 5472.41046 -2705.57946 5472.33272 -2705.28933 5472.3145 -2705.05788 5472.3145 -2693.79536 5472.34755 -2693.48093 5472.43873 -2693.20029 5472.58892 -2692.94016 5472.73968 -2692.76365 5475.12454 -2690.37879 5475.37024 -2690.17982 5475.63316 -2690.04585 5475.9233 -2689.96811 5476.15472 -2689.9499 5477.0831 -2689.9499 5477.24853 -2689.91409 5477.38433 -2689.81308 5477.4662 -2689.66494 5477.47948 -2689.49621 5477.42179 -2689.33709 5477.32919 -2689.18971 5477.25394 -2688.97466 5477.2259 -2688.72579 5477.2259 -2686.80221 5477.25394 -2686.55334 5477.32919 -2686.33829 5477.45041 -2686.14537 5477.61152 -2685.98426 5477.80444 -2685.86304 5478.01949 -2685.78779 5478.26836 -2685.75975 5480.58564 -2685.75975 5480.83451 -2685.78779 5481.04956 -2685.86304 5481.24248 -2685.98426 5481.40686 -2686.14864 5481.53663 -2686.23535 5481.68971 -2686.2658 5482.87633 -2686.2658 5483.07201 -2686.24846 5483.2035 -2686.21213 5483.31514 -2686.13373 5483.39394 -2686.02237 5483.43073 -2685.891 5483.46154 -2685.58908 5483.53609 -2685.37604 5483.65731 -2685.18312 5483.81842 -2685.02201 5484.01134 -2684.90079 5484.22639 -2684.82554 5484.47526 -2684.7975 5497.02874 -2684.7975 5497.27761 -2684.82554 5497.49266 -2684.90079 5497.68558 -2685.02201 5497.84669 -2685.18312 5497.96791 -2685.37604 5498.04316 -2685.59109 5498.0712 -2685.83996 5498.0712 -2689.73204 5498.04316 -2689.98091 5497.96791 -2690.19596 5497.84669 -2690.38888 5497.68558 -2690.54999 5497.49266 -2690.67121 5497.27761 -2690.74646 5497.02874 -2690.7745 5484.47526 -2690.7745 5484.22639 -2690.74646 5484.01134 -2690.67121 5483.81842 -2690.54999 5483.65731 -2690.38888 5483.53609 -2690.19596 5483.46155 -2689.98293 5483.43074 -2689.68073 5483.39395 -2689.54935 5483.31516 -2689.43798 5483.20351 -2689.35956 5483.07201 -2689.32323 5482.87643 -2689.3059 5481.85118 -2689.30582 5481.68575 -2689.34161 5481.54993 -2689.44263 5481.46805 -2689.59076 5481.45477 -2689.7595 5481.60006 -2690.15334 5481.6281 -2690.40221 5481.6281 -2692.32579 5481.60006 -2692.57466 5481.52481 -2692.78971 5481.40359 -2692.98263 5481.24248 -2693.14374 5481.04956 -2693.26496 5480.83451 -2693.34021 5480.58564 -2693.36825 5478.26836 -2693.36825 5478.01949 -2693.34021 5477.80444 -2693.26496 5477.61152 -2693.14374 5477.34972 -2692.86457 5477.23243 -2692.79975 5477.10032 -2692.7773 5476.89026 -2692.7773 5476.73719 -2692.80775 5476.60742 -2692.89446 5475.25906 -2694.24282 5475.17235 -2694.37259 5475.1419 -2694.52566 5475.1419 -2696.30167 5475.17771 -2696.4671 5475.27872 -2696.6029 5475.42686 -2696.68477 5475.59559 -2696.69805 5475.75471 -2696.64036 5475.88589 -2696.55794 5476.10094 -2696.48269 5476.34981 -2696.45465 5476.96318 -2696.45465 5476.96318 -2698.30732 5475.5419 -2698.30732 5475.38883 -2698.33777 5475.25906 -2698.42448 5475.17235 -2698.55425 5475.1419 -2698.70732 5475.1419 -2700.57267 5475.17235 -2700.72575 5475.25906 -2700.85552 5475.38883 -2700.94223 5475.5419 -2700.97267 5476.96318 -2700.97267 5476.96318 -2702.98465 5476.99362 -2703.13772 5477.08033 -2703.26749 5477.2101 -2703.3542 5477.36318 -2703.38465 5478.83482 -2703.38465 5478.9879 -2703.3542 5479.11767 -2703.26749 5479.20438 -2703.13772 5479.23482 -2702.98465 5479.23482 -2700.97267 5480.89065 -2700.97267 5480.89065 -2701.78289 5480.86261 -2702.03176 5480.78736 -2702.24681 5480.66614 -2702.43973 5480.50503 -2702.60084 5480.15676 -2702.81178 5480.0622 -2702.94504 5480.02882 -2703.105 5480.0622 -2703.26496 5480.15676 -2703.39822 5480.50503 -2703.60916 5480.66614 -2703.77027 5480.78736 -2703.96319 5480.86261 -2704.17824 5480.89121 -2704.43209 5480.93332 -2704.57089 5481.02215 -2704.68556 5481.14604 -2704.761 5481.28869 -2704.7873 5497.02873 -2704.7875 5497.27761 -2704.81554 5497.49266 -2704.89079 5497.68558 -2705.01201 5497.84669 -2705.17312 5497.96791 -2705.36604 5498.04316 -2705.58109 5498.0712 -2705.82996 5498.0712 -2709.72204 5498.04316 -2709.97091 5497.96791 -2710.18596 5497.84669 -2710.37888 5497.68558 -2710.53999 5497.49266 -2710.66121 5497.27761 -2710.73646 5497.02874 -2710.7645 5493.0616 -2710.7645 5492.90853 -2710.79495 5492.77876 -2710.88166 5492.69205 -2711.01143 5492.6616 -2711.1645 5492.6616 -2719.90113 5492.62711 -2720.36135 5492.52776 -2720.79665 5492.44424 -2721.00943 5492.41662 -2721.16056 5492.448 -2721.31094 5492.53375 -2721.43841 5493.28506 -2722.18972 5493.41483 -2722.27643 5493.5679 -2722.30688 5493.72097 -2722.27643 5493.85074 -2722.18972 5493.93745 -2722.05995 5493.9679 -2721.90688 5493.9679 -2721.06921 5493.99594 -2720.82034 5494.07119 -2720.60529 5494.17265 -2720.44381 5494.22699 -2720.30536 5494.22699 -2720.15664 5494.17265 -2720.01819 5494.07119 -2719.85671 5493.99594 -2719.64166 5493.9679 -2719.39279 5493.9679 -2719.17312 5495.32845 -2719.17312 5495.32845 -2719.62675 5495.3589 -2719.77982 5495.44561 -2719.90959 5495.57538 -2719.9963 5495.72845 -2720.02675 5496.60955 -2720.02675 5496.76262 -2719.9963 5496.89239 -2719.90959 5496.9791 -2719.77982 5497.00955 -2719.62675 5497.00955 -2719.17312 5498.39562 -2719.17312 5498.5679 -2719.21213 5500.32845 -2719.21213 5500.32845 -2719.66575 5500.3589 -2719.81882 5500.44561 -2719.94859 5500.57538 -2720.0353 5500.72845 -2720.06575 5501.60955 -2720.06575 5501.76262 -2720.0353 5501.89239 -2719.94859 5501.9791 -2719.81882 5502.00955 -2719.66575 5502.00955 -2719.21213 5503.3701 -2719.21213 5503.3701 -2719.43179 5503.3417 -2719.68383 5503.35421 -2719.81529 5503.24972 -2719.9229 5503.16535 -2720.05719 5503.11101 -2720.19564 5503.11101 -2720.34436 5503.18714 -2720.5175 5503.3118 -2720.64261 5503.47817 -2720.70184 5503.65384 -2720.68365 5503.80455 -2720.5916 5503.90093 -2720.44361 5503.96351 -2720.27464 5503.98758 -2720.10988 5503.96945 -2720.04546 5504.02667 -2720.00674 5504.11429 -2719.86754 5504.14344 -2719.78883 5504.46993 -2719.12323 5504.86209 -2718.49407 5505.31589 -2717.90781 5505.82667 -2717.37047 5506.38919 -2716.88756 5506.76641 -2716.62501 5506.88089 -2716.50252 5506.93511 -2716.34388 5506.91956 -2716.17695 5506.83696 -2716.03106 5506.70183 -2715.93183 5506.5379 -2715.8967 5503.39756 -2715.8967 5503.09822 -2715.86524 5502.92195 -2715.88632 5502.89557 -2715.90311 5502.86605 -2715.84385 5502.74936 -2715.74179 5502.54236 -2715.62228 5502.36587 -2715.47155 5501.49761 -2714.60332 5501.3874 -2714.52534 5501.28084 -2714.47436 5501.14307 -2714.43672 5500.74805 -2714.40216 5500.3777 -2714.30292 5500.03021 -2714.14089 5499.71614 -2713.92097 5499.44503 -2713.64986 5499.22511 -2713.33579 5499.06308 -2712.9883 5498.96384 -2712.61795 5498.93043 -2712.236 5498.96384 -2711.85405 5499.06308 -2711.4837 5499.22511 -2711.13621 5499.44503 -2710.82214 5499.71614 -2710.55103 5500.03021 -2710.33111 5500.3777 -2710.16908 5500.74805 -2710.06984 5501.13 -2710.03643 5501.51195 -2710.06984 5501.8823 -2710.16908 5502.22979 -2710.33111 5502.54386 -2710.55103 5502.81497 -2710.82214 5503.03489 -2711.13621 5503.19692 -2711.4837 5503.29616 -2711.85405 5503.33085 -2712.25062 5503.36844 -2712.38827 5503.41885 -2712.49372 5503.4969 -2712.60407 5503.845 -2712.95215 5503.97477 -2713.03885 5504.12784 -2713.0693 5515.35079 -2713.0693 5515.50386 -2713.03885 5515.63363 -2712.95214 5515.72034 -2712.82238 5515.75079 -2712.6693 5515.72034 -2712.51623 5515.63363 -2712.38646 5514.12886 -2710.88166 5513.99909 -2710.79495 5513.84602 -2710.7645 5506.22526 -2710.7645 5505.97639 -2710.73646 5505.76134 -2710.66121 5505.56842 -2710.53999 5505.40731 -2710.37888 5505.28609 -2710.18596 5505.21084 -2709.97091 5505.1828 -2709.72204 5505.1828 -2705.82996 5505.21084 -2705.58109 5505.28609 -2705.36604 5505.40731 -2705.17312 5505.56842 -2705.01201 5505.76134 -2704.89079 5505.97639 -2704.81554 5506.22526 -2704.7875 5518.77874 -2704.7875 5519.02761 -2704.81554 5519.24266 -2704.89079 5519.43558 -2705.01201 5519.59669 -2705.17312 5519.71791 -2705.36604 5519.79316 -2705.58109 5519.8212 -2705.82996 5519.8212 -2707.77183 5519.86205 -2708.01912 5519.922 -2708.16441 5520.06595 -2708.36603 5522.57311 -2710.87323 5523.03954 -2711.2834 5523.38847 -2711.52066 5523.51987 -2711.57762 5523.7593 -2711.63345 5524.29115 -2711.82571 5524.79163 -2712.0766 5524.87755 -2712.13676 5525.02894 -2712.20142 5525.44928 -2712.28154 5526.06829 -2712.32125 5539.51589 -2712.32135 5539.6349 -2712.30324 5539.74312 -2712.25054 5539.99025 -2712.07996 5540.36733 -2711.90104 5540.76823 -2711.78491 5541.18257 -2711.7346 5541.59961 -2711.75141 5542.00856 -2711.8349 5542.39881 -2711.9829 5542.76028 -2712.19159 5543.08358 -2712.45556 5543.36035 -2712.76798 5543.58343 -2713.12074 5543.74703 -2713.50472 5543.84691 -2713.90997 5543.8805 -2714.326 5543.84691 -2714.74203 5543.74703 -2715.14728 5543.58343 -2715.53126 5543.36035 -2715.88402 5543.06065 -2716.21516 5542.95821 -2716.34149 5542.91453 -2716.49817 5542.93684 -2716.65928 5543.02145 -2716.79819 5543.15438 -2716.89193 5543.31363 -2716.925 5580.87684 -2716.925 5581.02991 -2716.89455 5581.15968 -2716.80784 5582.18398 -2715.78354 5582.27266 -2715.64892 5582.301 -2715.49023 5582.2644 -2715.33324 5582.16879 -2715.20344 5582.02972 -2715.12193 5581.80919 -2715.1067 5574.97406 -2715.1067 5574.65963 -2715.07365 5574.37899 -2714.98247 5574.11886 -2714.83228 5573.94235 -2714.68152 5566.76388 -2707.50306 5566.63411 -2707.41635 5566.48104 -2707.3859 5537.5527 -2707.3859 5536.69357 -2707.42955 5535.86234 -2707.5548 5535.04739 -2707.76092 5534.25657 -2708.04592 5533.49749 -2708.40707 5532.77746 -2708.84088 5532.10343 -2709.34318 5531.51787 -2709.8739 5531.42997 -2709.94657 5531.14521 -2710.21551 5530.63821 -2710.59505 5530.09124 -2710.91432 5529.51144 -2711.16916 5528.90637 -2711.35625 5528.28392 -2711.47315 5527.65221 -2711.51833 5527.01946 -2711.49121 5526.39392 -2711.39213 5525.78376 -2711.2224 5525.19692 -2710.98422 5524.64106 -2710.68069 5524.12342 -2710.31578 5523.65075 -2709.89425 5523.22922 -2709.42158 5522.86431 -2708.90394 5522.56078 -2708.34808 5522.3226 -2707.76124 5522.15287 -2707.15108 5522.05379 -2706.52554 5522.02667 -2705.89279 5522.07185 -2705.26108 5522.18875 -2704.63863 5522.37584 -2704.03356 5522.63068 -2703.45376 5522.94995 -2702.90679 5523.32949 -2702.39979 5523.76436 -2701.93935 5524.24887 -2701.53148 5524.77672 -2701.1815 5525.34102 -2700.89398 5525.93442 -2700.67265 5526.54918 -2700.52041 5527.17729 -2700.43924 5527.81056 -2700.43019 5528.44073 -2700.49339 5529.05958 -2700.62802 5529.65906 -2700.83231 5530.23134 -2701.10361 5530.76897 -2701.43837 5531.26493 -2701.83223 5531.45707 -2702.02127 5531.51787 -2702.0705 5532.13377 -2702.62612 5532.8101 -2703.12532 5533.53211 -2703.55583 5534.29283 -2703.9135 5535.08495 -2704.19488 5535.90084 -2704.39726 5536.73263 -2704.5187 5537.5527 -2704.5585 5567.21134 -2704.5585 5567.52577 -2704.59155 5567.80641 -2704.68273 5568.06654 -2704.83292 5568.24305 -2704.98368 5572.72362 -2709.46425 5572.85302 -2709.5508 5573.00565 -2709.58141 5573.15841 -2709.55143 5573.28815 -2709.4654 5573.37523 -2709.33636 5573.40646 -2709.18385 5573.3771 -2709.03098 5573.1556 -2708.48524 5572.98587 -2707.87508 5572.88679 -2707.24954 5572.85967 -2706.61679 5572.90485 -2705.98508 5573.02175 -2705.36263 5573.20884 -2704.75756 5573.46368 -2704.17776 5573.78295 -2703.63079 5574.16249 -2703.12379 5574.59736 -2702.66335 5575.08187 -2702.25548 5575.60972 -2701.9055 5576.17402 -2701.61798 5576.24881 -2701.59008 5576.38308 -2701.50666 5576.47456 -2701.37775 5576.50894 -2701.22346 5576.48088 -2701.0679 5576.39474 -2700.93536 5576.26398 -2700.84653 5576.10903 -2700.8153 5533.55676 -2700.8153 5533.24233 -2700.78225 5532.96169 -2700.69107 5532.70156 -2700.54088 5532.52505 -2700.39012 5531.44658 -2699.31166 5531.31681 -2699.22495 5531.16374 -2699.1945 5520.6349 -2699.1945 5520.20781 -2699.23463 5520.10509 -2699.25776 5519.95746 -2699.3398 5519.85685 -2699.47545 5519.8212 -2699.64054 5519.8212 -2699.72704 5519.79316 -2699.97591 5519.71791 -2700.19096 5519.59669 -2700.38388 5519.43558 -2700.54499 5519.24266 -2700.66621 5519.02761 -2700.74146 5518.77874 -2700.7695 5506.22526 -2700.7695 5505.97639 -2700.74146 5505.76134 -2700.66621 5505.56842 -2700.54499 5505.40731 -2700.38388 5505.28609 -2700.19096 5505.21084 -2699.97591 5505.1828 -2699.72704 5505.1828 -2695.83496 5505.21084 -2695.58609 5505.28609 -2695.37104 5505.40731 -2695.17812 5505.56842 -2695.01701 5505.76134 -2694.89579 5505.97639 -2694.82054 5506.22526 -2694.7925 5518.77874 -2694.7925 5519.02761 -2694.82054 5519.24266 -2694.89579 5519.43558 -2695.01701 5519.59669 -2695.17812 5519.71791 -2695.37104 5519.79316 -2695.58609 5519.8212 -2695.83496 5519.8212 -2695.92106 5519.85685 -2696.08615 5519.95746 -2696.2218 5520.13091 -2696.31167 5520.20781 -2696.32697 5520.6349 -2696.3671 5531.89404 -2696.3671 5532.20847 -2696.40015 5532.48911 -2696.49133 5532.74924 -2696.64152 5532.92575 -2696.79228 5534.00422 -2697.87074 5534.13399 -2697.95745 5534.28706 -2697.9879 5538.19138 -2697.9879 5538.36437 -2697.94856 5538.50333 -2697.83827 5538.58093 -2697.67873 5538.5819 -2697.50132 5538.50604 -2697.34095 5538.36829 -2697.22915 5538.01563 -2697.05524 5537.56223 -2696.75229 5537.15225 -2696.39275 5536.79271 -2695.98277 5536.48976 -2695.52937 5536.24858 -2695.04031 5536.0733 -2694.52395 5535.96692 -2693.98913 5535.93126 -2693.445 5535.96692 -2692.90087 5536.0733 -2692.36605 5536.24858 -2691.84969 5536.48976 -2691.36063 5536.79271 -2690.90723 5537.15225 -2690.49725 5537.56223 -2690.13771 5537.86997 -2689.93209 5537.98743 -2689.81073 5538.04432 -2689.65171 5538.03052 -2689.48339 5537.94848 -2689.33576 5537.81283 -2689.23515 5537.64775 -2689.1995 5520.63485 -2689.1995 5520.20776 -2689.23963 5520.10504 -2689.26276 5519.95741 -2689.3448 5519.8568 -2689.48045 5519.82115 -2689.64554 5519.82115 -2689.73204 5519.79311 -2689.98091 5519.71786 -2690.19596 5519.59664 -2690.38888 5519.43553 -2690.54999 5519.24261 -2690.67121 5519.02756 -2690.74646 5518.77869 -2690.7745 5506.22531 -2690.7745 5505.97644 -2690.74646 5505.76139 -2690.67121 5505.56847 -2690.54999 5505.40736 -2690.38888 5505.28614 -2690.19596 5505.21089 -2689.98091 5505.18285 -2689.73204 5505.18285 -2685.83996 5505.21089 -2685.59109 5505.28614 -2685.37604 5505.40736 -2685.18312 5505.56847 -2685.02201 5505.76139 -2684.90079 5505.97644 -2684.82554 5506.22531 -2684.7975 5518.77869 -2684.7975 5519.02756 -2684.82554 5519.24261 -2684.90079 5519.43553 -2685.02201 5519.59664 -2685.18312 5519.71786 -2685.37604 5519.79311 -2685.59109 5519.82115 -2685.83996 5519.82115 -2685.92606 5519.8568 -2686.09115 5519.95741 -2686.2268 5520.13086 -2686.31667 5520.20776 -2686.33197 5520.63485 -2686.3721 5536.63584 -2686.3721 5536.78891 -2686.34165 5536.91868 -2686.25494 5537.00539 -2686.12517 5537.03584 -2685.9721 5537.00539 -2685.81903 5536.91868 -2685.68926 5530.55108 -2679.32166 5530.42131 -2679.23495 5530.26824 -2679.2045 5520.6349 -2679.2045 5520.20781 -2679.24463 5520.10509 -2679.26776 5519.95746 -2679.3498 5519.85685 -2679.48545 5519.8212 -2679.65054 5519.8212 -2679.73704 5519.79316 -2679.98591 5519.71791 -2680.20096 5519.59669 -2680.39388 5519.43558 -2680.55499 5519.24266 -2680.67621 5519.02761 -2680.75146 5518.77874 -2680.7795 5506.22526 -2680.7795 5505.97639 -2680.75146 5505.76134 -2680.67621 5505.56842 -2680.55499 5505.40731 -2680.39388 5505.28609 -2680.20096 5505.21084 -2679.98591 5505.1828 -2679.73704 5505.1828 -2675.84496 5505.21084 -2675.59609 5505.28609 -2675.38104 5505.40731 -2675.18812 5505.56842 -2675.02701 5505.76134 -2674.90579 5505.97639 -2674.83054 5506.22526 -2674.8025 5518.77874 -2674.8025 5519.02761 -2674.83054 5519.24266 -2674.90579 5519.43558 -2675.02701 5519.59669 -2675.18812 5519.71791 -2675.38104 5519.79316 -2675.59609 5519.8212 -2675.84496 5519.8212 -2675.93106 5519.85685 -2676.09615 5519.95746 -2676.2318 5520.13091 -2676.32167 5520.20781 -2676.33697 5520.6349 -2676.3771 5530.9715 -2676.3771 5531.12457 -2676.34665 5531.25434 -2676.25994 5531.34105 -2676.13017 5531.3715 -2675.9771 5531.34105 -2675.82403 5531.25434 -2675.69426 5524.88678 -2669.32666 5524.75701 -2669.23995 5524.60394 -2669.2095 5520.6349 -2669.2095 5520.20781 -2669.24963 5520.10509 -2669.27276 5519.95746 -2669.3548 5519.85685 -2669.49045 5519.8212 -2669.65554 5519.8212 -2669.74204 5519.79316 -2669.99091 5519.71791 -2670.20596 5519.59669 -2670.39888 5519.43558 -2670.55999 5519.24266 -2670.68121 5519.02761 -2670.75646 5518.77874 -2670.7845 5506.22526 -2670.7845 5505.97639 -2670.75646 5505.76134 -2670.68121 5505.56842 -2670.55999 5505.40731 -2670.39888 5505.28609 -2670.20596 5505.21084 -2669.99091 5505.1828 -2669.74204 5505.1828 -2665.84996 5505.21084 -2665.60109 5505.28609 -2665.38604 5505.40731 -2665.19312 5505.56842 -2665.03201 5505.76134 -2664.91079 5505.97639 -2664.83554 5506.22526 -2664.8075 5518.77874 -2664.8075 5519.02761 -2664.83554 5519.24266 -2664.91079 5519.43558 -2665.03201 5519.59669 -2665.19312 5519.71791 -2665.38604 5519.79316 -2665.60109 5519.8212 -2665.84996 5519.8212 -2665.93606 5519.85685 -2666.10115 5519.95746 -2666.2368 5520.13091 -2666.32667 5520.20781 -2666.34197 5520.6349 -2666.3821 5525.33424 -2666.3821 5525.64867 -2666.41515 5525.92931 -2666.50633 5526.18944 -2666.65652 5526.36595 -2666.80728 5540.89392 -2681.33534 5541.02369 -2681.42205 5541.17676 -2681.4525 5544.3889 -2681.4525 5544.54548 -2681.42058 5544.67708 -2681.32991 5544.76267 -2681.19496 5544.78861 -2681.03727 5544.75075 -2680.88202 5544.65513 -2680.75397 5544.33475 -2680.46825 5543.91322 -2679.99558 5543.54831 -2679.47794 5543.24478 -2678.92208 5543.0066 -2678.33524 5542.83687 -2677.72508 5542.73779 -2677.09954 5542.71067 -2676.46679 5542.75585 -2675.83508 5542.87275 -2675.21263 5543.05984 -2674.60756 5543.31468 -2674.02776 5543.63395 -2673.48079 5544.01349 -2672.97379 5544.44836 -2672.51335 5544.93287 -2672.10548 5545.46072 -2671.7555 5546.02502 -2671.46798 5546.61842 -2671.24665 5547.23318 -2671.09441 5547.86129 -2671.01324 5548.49456 -2671.00419 5549.12473 -2671.06739 5549.74358 -2671.20202 5550.34306 -2671.40631 5550.91534 -2671.67761 5551.45297 -2672.01237 5551.94893 -2672.40623 5552.14137 -2672.59557 5552.20217 -2672.6448 5552.81809 -2673.20044 5553.49445 -2673.69967 5554.21649 -2674.13019 5554.97724 -2674.48787 5555.7694 -2674.76926 5556.58531 -2674.97165 5557.41714 -2675.09309 5558.23724 -2675.1329 5588.24454 -2675.1329 5588.39014 -2675.1482 5588.55223 -2675.13188 5588.69437 -2675.05228 5588.79298 -2674.9226 5588.8317 -2674.76435 5588.80411 -2674.60379 5588.71479 -2674.46755 5586.63429 -2672.38706 5586.50452 -2672.30035 5586.35144 -2672.2699 5574.77506 -2672.2699 5574.46063 -2672.23685 5574.17999 -2672.14567 5573.91986 -2671.99548 5573.74335 -2671.84472 5570.00734 -2668.10869 5569.8816 -2668.02367 5569.73323 -2667.99163 5569.5836 -2668.01717 5569.45426 -2668.09662 5569.36384 -2668.21854 5569.32536 -2668.36537 5569.28808 -2668.93413 5569.1817 -2669.46895 5569.00642 -2669.98531 5568.76524 -2670.47437 5568.46229 -2670.92777 5568.10275 -2671.33775 5567.69277 -2671.69729 5567.23937 -2672.00024 5566.75031 -2672.24142 5566.23395 -2672.4167 5565.69913 -2672.52308 5565.155 -2672.55874 5564.61087 -2672.52308 5564.07605 -2672.4167 5563.55969 -2672.24142 5563.07063 -2672.00024 5562.61723 -2671.69729 5562.20725 -2671.33775 5561.84771 -2670.92777 5561.54476 -2670.47437 5561.30358 -2669.98531 5561.1283 -2669.46895 5561.02192 -2668.93413 5560.98626 -2668.39 5561.02192 -2667.84587 5561.1283 -2667.31105 5561.30358 -2666.79469 5561.54476 -2666.30563 5561.84771 -2665.85223 5562.20725 -2665.44225 5562.61723 -2665.08271 5563.07063 -2664.77976 5563.55969 -2664.53858 5564.07605 -2664.3633 5564.61087 -2664.25692 5565.17966 -2664.21964 5565.32649 -2664.18116 5565.44841 -2664.09073 5565.52786 -2663.9614 5565.55341 -2663.81177 5565.52136 -2663.6634 5565.43635 -2663.53766 5561.23038 -2659.33166 5561.10061 -2659.24495 5560.94754 -2659.2145 5520.6349 -2659.2145 5520.20781 -2659.25463 5520.10509 -2659.27776 5519.95746 -2659.3598 5519.85685 -2659.49545 5519.8212 -2659.66054 5519.8212 -2659.74704 5519.79316 -2659.99591 5519.71791 -2660.21096 5519.59669 -2660.40388 5519.43558 -2660.56499 5519.24266 -2660.68621 5519.02761 -2660.76146 5518.77874 -2660.7895 5506.22526 -2660.7895 5505.97639 -2660.76146 5505.76134 -2660.68621 5505.56842 -2660.56499 5505.40731 -2660.40388 5505.28609 -2660.21096 5505.21084 -2659.99591 5505.1828 -2659.74704 5505.1828 -2655.85496 5505.21084 -2655.60609 5505.2545 -2655.48131 5505.27655 -2655.33125 5505.24114 -2655.18378 5505.15338 -2655.06008 5505.02587 -2654.97795 5504.87695 -2654.9492 5498.37705 -2654.9492 5498.22813 -2654.97795 5498.10062 -2655.06008 5498.01286 -2655.18378 5497.97745 -2655.33125 5497.9995 -2655.48131 5498.04316 -2655.60609 5498.0712 -2655.85496 5498.0712 -2659.74704 5498.04316 -2659.99591 5497.96791 -2660.21096 5497.84669 -2660.40388 5497.68558 -2660.56499 5497.49266 -2660.68621 5497.27761 -2660.76146 5497.02874 -2660.7895 5484.47526 -2660.7895 5484.22639 -2660.76146 5484.01134 -2660.68621 5483.81842 -2660.56499 5483.65731 -2660.40388 5483.53609 -2660.21096 5483.46084 -2659.99591 5483.4328 -2659.74704 5483.4328 -2655.85496 5483.46084 -2655.60609 5483.53609 -2655.39104 5483.65731 -2655.19812 5483.81842 -2655.03701 5484.01134 -2654.91579 5484.22639 -2654.84054 5484.47526 -2654.8125 5491.57569 -2654.8125 5491.72876 -2654.78205 5491.85853 -2654.69535 5493.25633 -2653.29758 5493.33891 -2653.17743 5493.37294 -2653.03567 5493.35391 -2652.89113 5493.28435 -2652.76301 5493.17349 -2652.66832 5492.89837 -2652.50948 5492.72184 -2652.35871 5491.27482 -2650.91166 5491.14505 -2650.82495 5490.99198 -2650.7945 5484.47526 -2650.7945 5484.22639 -2650.76646 5484.01134 -2650.69121 5483.81842 -2650.56999 5483.65731 -2650.40888 5483.53609 -2650.21596 5483.46084 -2650.00091 5483.4328 -2649.75204 5483.4328 -2645.85996 5483.46084 -2645.61109 5483.53609 -2645.39604 5483.65731 -2645.20312 5483.81842 -2645.04201 5484.01134 -2644.92079 5484.22639 -2644.84554 5484.47526 -2644.8175 5497.02874 -2644.8175 5497.27761 -2644.84554 5497.49266 -2644.92079 5497.68558 -2645.04201 5497.84669 -2645.20312 5497.96791 -2645.39604 5498.04316 -2645.61109 5498.0712 -2645.85996 5498.0712 -2649.5565 5498.10165 -2649.70957 5498.18836 -2649.83934 5498.31813 -2649.92605 5498.4712 -2649.9565 5504.7828 -2649.9565 5504.93587 -2649.92605 5505.06564 -2649.83934 5505.15235 -2649.70957 5505.1828 -2649.5565 5505.1828 -2645.85996 5505.21084 -2645.61109 5505.28609 -2645.39604 5505.40731 -2645.20312 5505.56842 -2645.04201 5505.76134 -2644.92079 5505.97639 -2644.84554 5506.22526 -2644.8175 5513.3257 -2644.8175 5513.47877 -2644.78705 5513.60854 -2644.70035 5515.24645 -2643.06247 5515.49216 -2642.86351 5515.75508 -2642.72955 5516.04522 -2642.65181 5516.27661 -2642.6336 5574.70834 -2642.6336 5574.86141 -2642.60315 5574.99118 -2642.51644 5575.07789 -2642.38667 5575.10834 -2642.2336 5575.07789 -2642.08053 5574.99118 -2641.95076 5572.38208 -2639.34166 5572.25231 -2639.25495 5572.09924 -2639.2245 5520.6349 -2639.2245 5520.20781 -2639.26463 5520.10509 -2639.28776 5519.95746 -2639.3698 5519.85685 -2639.50545 5519.8212 -2639.67054 5519.8212 -2639.75704 5519.79316 -2640.00591 5519.71791 -2640.22096 5519.59669 -2640.41388 5519.43558 -2640.57499 5519.24266 -2640.69621 5519.02761 -2640.77146 5518.77874 -2640.7995 5506.22526 -2640.7995 5505.97639 -2640.77146 5505.76134 -2640.69621 5505.56842 -2640.57499 5505.40731 -2640.41388 5505.28609 -2640.22096 5505.21084 -2640.00591 5505.1828 -2639.75704 5505.1828 -2635.86496 5505.19595 -2635.74829 5505.17957 -2635.58203 5505.09672 -2635.43696 5504.96184 -2635.33839 5504.79846 -2635.3035 5498.45554 -2635.3035 5498.29216 -2635.33839 5498.15728 -2635.43696 5498.07443 -2635.58203 5498.05805 -2635.74829 5498.0712 -2635.86496 5498.0712 -2639.75704 5498.04316 -2640.00591 5497.96791 -2640.22096 5497.84669 -2640.41388 5497.68558 -2640.57499 5497.49266 -2640.69621 5497.27761 -2640.77146 5497.02874 -2640.7995 5484.47526 -2640.7995 5484.22639 -2640.77146 5484.01134 -2640.69621 5483.81842 -2640.57499 5483.65731 -2640.41388 5483.53609 -2640.22096 5483.46084 -2640.00591 5483.4328 -2639.75704 5483.4328 -2635.86496 5483.46084 -2635.61609 5483.53609 -2635.40104 5483.65731 -2635.20812 5483.81842 -2635.04701 5484.01134 -2634.92579 5484.22639 -2634.85054 5484.47526 -2634.8225 5491.57564 -2634.8225 5491.72871 -2634.79205 5491.85848 -2634.70534 5493.46768 -2633.09614 5493.55439 -2632.96637 5493.58484 -2632.8133 5493.55439 -2632.66023 5493.46768 -2632.53046 5491.85888 -2630.92166 5491.72911 -2630.83495 5491.57604 -2630.8045 5484.47526 -2630.8045 5484.22639 -2630.77646 5484.01134 -2630.70121 5483.81842 -2630.57999 5483.65731 -2630.41888 5483.53609 -2630.22596 5483.46084 -2630.01091 5483.4328 -2629.76204 5483.4328 -2625.86996 5483.46084 -2625.62109 5483.53609 -2625.40604 5483.65731 -2625.21312 5483.81842 -2625.05201 5484.01134 -2624.93079 5484.22639 -2624.85554 5484.47526 -2624.8275 5497.02874 -2624.8275 5497.27761 -2624.85554 5497.49266 -2624.93079 5497.68558 -2625.05201 5497.84669 -2625.21312 5497.96791 -2625.40604 5498.04316 -2625.62109 5498.0712 -2625.86996 5498.0712 -2629.761 5498.03586 -2630.06076 5498.05153 -2630.2276 5498.13416 -2630.37337 5498.26926 -2630.4725 5498.43311 -2630.5076 5504.82089 -2630.5076 5504.98474 -2630.4725 5505.11984 -2630.37337 5505.20247 -2630.2276 5505.21814 -2630.06076 5505.1828 -2629.761 5505.1828 -2625.86996 5505.21084 -2625.62109 5505.28609 -2625.40604 5505.40731 -2625.21312 5505.56842 -2625.05201 5505.76134 -2624.93079 5505.97639 -2624.85554 5506.22526 -2624.8275 5518.77874 -2624.8275 5519.02761 -2624.85554 5519.24266 -2624.93079 5519.43558 -2625.05201 5519.59669 -2625.21312 5519.71791 -2625.40604 5519.79316 -2625.62109 5519.8212 -2625.86996 5519.8212 -2625.95606 5519.85685 -2626.12115 5519.95746 -2626.2568 5520.13091 -2626.34667 5520.20781 -2626.36197 5520.6349 -2626.4021 5542.75617 -2626.4021 5542.90924 -2626.37165 5543.03901 -2626.28495 5544.02957 -2625.29444 5544.11864 -2625.15885 5544.14654 -2624.99904 5544.10867 -2624.84129 5544.01126 -2624.71155 5543.60097 -2624.47798 5543.41583 -2624.31986 5542.97444 -2623.92922 5542.48852 -2623.58872 5541.96723 -2623.30532 5541.41725 -2623.08265 5540.84563 -2622.92355 5540.2597 -2622.83007 5539.66631 -2622.80346 5538.51037 -2622.87938 5537.87646 -2622.85221 5537.25092 -2622.75313 5536.64076 -2622.5834 5536.05392 -2622.34522 5535.49806 -2622.04169 5534.98042 -2621.67678 5534.50775 -2621.25525 5534.08622 -2620.78258 5533.72131 -2620.26494 5533.41778 -2619.70908 5533.1796 -2619.12224 5533.00987 -2618.51208 5532.91079 -2617.88654 5532.88367 -2617.25379 5532.92885 -2616.62208 5533.04575 -2615.99963 5533.23284 -2615.39456 5533.48768 -2614.81476 5533.80695 -2614.26779 5534.18649 -2613.76079 5534.62136 -2613.30035 5535.10587 -2612.89248 5535.63372 -2612.5425 5536.19802 -2612.25498 5536.79142 -2612.03365 5537.40618 -2611.88141 5538.03429 -2611.80024 5538.66756 -2611.79119 5539.29773 -2611.85439 5539.91658 -2611.98902 5540.51606 -2612.19331 5541.08834 -2612.46461 5541.62597 -2612.79937 5542.12193 -2613.19323 5542.56977 -2613.64107 5542.96363 -2614.13703 5543.29839 -2614.67466 5543.56969 -2615.24694 5543.77398 -2615.84642 5543.90861 -2616.46527 5543.97181 -2617.09544 5543.96267 -2617.73518 5543.93505 -2618.02342 5543.89966 -2618.61571 5543.93143 -2619.2082 5544.02995 -2619.79331 5544.19397 -2620.36354 5544.42138 -2620.91157 5544.70926 -2621.4304 5544.93947 -2621.75595 5545.02819 -2621.84659 5545.14083 -2621.90489 5545.26606 -2621.925 5594.45897 -2621.925 5594.61527 -2621.8932 5594.74671 -2621.80286 5594.83241 -2621.66835 5594.85873 -2621.51104 5594.79508 -2621.2993 5594.69584 -2620.92895 5594.66243 -2620.547 5594.69584 -2620.16505 5594.79508 -2619.7947 5594.95711 -2619.44721 5595.17703 -2619.13314 5595.22514 -2619.08503 5595.31185 -2618.95526 5595.3423 -2618.80219 5595.3423 -2591.70181 5595.32495 -2591.50599 5595.28862 -2591.37448 5595.2102 -2591.26284 5595.09881 -2591.18404 5594.96743 -2591.14726 5594.66506 -2591.11645 5594.45204 -2591.04191 5594.25912 -2590.92069 5594.09801 -2590.75958 5594.04649 -2590.67759 5593.92691 -2590.55575 5593.76742 -2590.49487 5593.59707 -2590.50603 5593.44689 -2590.58721 5593.34423 -2590.72361 5593.3078 -2590.8904 5593.3078 -2607.06629 5593.33825 -2607.21936 5593.42496 -2607.34913 5593.47297 -2607.39714 5593.69289 -2607.71121 5593.85492 -2608.0587 5593.95416 -2608.42905 5593.98757 -2608.811 5593.95416 -2609.19295 5593.85492 -2609.5633 5593.69289 -2609.91079 5593.47297 -2610.22486 5593.20186 -2610.49597 5592.88779 -2610.71589 5592.5403 -2610.87792 5592.16995 -2610.97716 5591.788 -2611.01057 5591.40605 -2610.97716 5591.0357 -2610.87792 5590.68821 -2610.71589 5590.37414 -2610.49597 5590.10303 -2610.22486 5589.88311 -2609.91079 5589.72108 -2609.5633 5589.62184 -2609.19295 5589.58843 -2608.811 5589.62184 -2608.42905 5589.72108 -2608.0587 5589.88311 -2607.71121 5590.10303 -2607.39714 5590.15064 -2607.34953 5590.23735 -2607.21976 5590.2678 -2607.06669 5590.2678 -2591.08846 5590.23735 -2590.93538 5590.15064 -2590.80561 5590.02087 -2590.7189 5589.8678 -2590.68846 5589.71473 -2590.7189 5589.58496 -2590.80561 5589.46988 -2590.92069 5589.27696 -2591.04191 5589.06191 -2591.11716 5588.81304 -2591.1452 5588.72181 -2591.1452 5588.55673 -2591.18085 5588.42108 -2591.28146 5588.32465 -2591.4765 5588.30936 -2591.55341 5588.2684 -2591.9889 5588.2684 -2615.96389 5588.29885 -2616.11696 5588.38556 -2616.24673 5588.43297 -2616.29414 5588.65289 -2616.60821 5588.81492 -2616.9557 5588.91416 -2617.32605 5588.94757 -2617.708 5588.91416 -2618.08995 5588.81492 -2618.4603 5588.65289 -2618.80779 5588.43297 -2619.12186 5588.16186 -2619.39297 5587.84779 -2619.61289 5587.5003 -2619.77492 5587.12995 -2619.87416 5586.748 -2619.90757 5586.36605 -2619.87416 5585.9957 -2619.77492 5585.64821 -2619.61289 5585.33414 -2619.39297 5585.06303 -2619.12186 5584.84311 -2618.80779 5584.68108 -2618.4603 5584.58184 -2618.08995 5584.54843 -2617.708 5584.58184 -2617.32605 5584.68108 -2616.9557 5584.84311 -2616.60821 5585.06303 -2616.29414 5585.11124 -2616.24593 5585.19795 -2616.11616 5585.2284 -2615.96309 5585.2284 -2591.5373 5585.2021 -2591.39465 5585.12666 -2591.27076 5585.01199 -2591.18192 5584.87319 -2591.13982 5584.67209 -2591.11716 5584.45704 -2591.04191 5584.26412 -2590.92069 5584.10301 -2590.75958 5583.98179 -2590.56666 5583.90654 -2590.35161 5583.8785 -2590.10274 5583.8785 -2577.54926 5583.90654 -2577.30039 5583.98179 -2577.08534 5584.10301 -2576.89242 5584.26412 -2576.73131 5584.45704 -2576.61009 5584.67209 -2576.53484 5584.92096 -2576.5068 5588.81304 -2576.5068 5589.06191 -2576.53484 5589.27696 -2576.61009 5589.46988 -2576.73131 5589.58496 -2576.84639 5589.71473 -2576.9331 5589.8678 -2576.96354 5590.02087 -2576.9331 5590.15064 -2576.84639 5590.23735 -2576.71662 5590.2678 -2576.56354 5590.2678 -2574.7223 5590.23735 -2574.56923 5590.15064 -2574.43946 5585.8064 -2570.09531 5585.60508 -2569.85 5585.475 -2569.60664 5585.38597 -2569.49446 5585.26313 -2569.42084 5585.12223 -2569.3952 5584.92096 -2569.3952 5584.67209 -2569.36716 5584.45704 -2569.29191 5584.26412 -2569.17069 5584.10301 -2569.00958 5583.98179 -2568.81666 5583.90654 -2568.60161 5583.8785 -2568.35274 5583.8785 -2555.79926 5583.90654 -2555.55039 5583.98179 -2555.33534 5584.10301 -2555.14242 5584.26412 -2554.98131 5584.45704 -2554.86009 5584.67209 -2554.78484 5584.92096 -2554.7568 5588.81304 -2554.7568 5589.06191 -2554.78484 5589.27696 -2554.86009 5589.46988 -2554.98131 5589.63099 -2555.14242 5589.75221 -2555.33534 5589.82746 -2555.55039 5589.8555 -2555.79926 5589.8555 -2568.35274 5589.82746 -2568.60161 5589.75221 -2568.81666 5589.52159 -2569.16204 5589.49114 -2569.31512 5589.52159 -2569.46819 5589.6083 -2569.59796 5592.8487 -2572.83829 5593.05002 -2573.0836 5593.1903 -2573.34605 5593.27669 -2573.63083 5593.3078 -2573.94663 5593.3078 -2576.7616 5593.34423 -2576.92839 5593.44689 -2577.06479 5593.59707 -2577.14597 5593.76742 -2577.15713 5593.92691 -2577.09625 5594.04649 -2576.97441 5594.09801 -2576.89242 5594.25912 -2576.73131 5594.45204 -2576.61009 5594.66709 -2576.53484 5594.91596 -2576.5068 5598.80804 -2576.5068 5599.05691 -2576.53484 5599.27196 -2576.61009 5599.46488 -2576.73131 5599.62599 -2576.89242 5599.74721 -2577.08534 5599.82246 -2577.30039 5599.8505 -2577.54926 5599.8505 -2590.10274 5599.82246 -2590.35161 5599.74721 -2590.56666 5599.62599 -2590.75958 5599.46488 -2590.92069 5599.27196 -2591.04191 5599.0589 -2591.11646 5598.75719 -2591.14727 5598.62583 -2591.18407 5598.51448 -2591.26286 5598.43608 -2591.3745 5598.39975 -2591.50599 5598.3823 -2591.70282 5598.3823 -2618.80279 5598.41275 -2618.95586 5598.49946 -2619.08563 5598.54697 -2619.13314 5598.76689 -2619.44721 5598.92892 -2619.7947 5599.02816 -2620.16505 5599.06157 -2620.547 5599.02816 -2620.92895 5598.92892 -2621.2993 5598.86527 -2621.51104 5598.89159 -2621.66835 5598.97729 -2621.80286 5599.10873 -2621.8932 5599.26503 -2621.925 5601.60344 -2621.925 5601.75651 -2621.89455 5601.88628 -2621.80784 5612.83624 -2610.85779 5613.08194 -2610.65882 5613.34486 -2610.52486 5613.63499 -2610.44711 5613.86642 -2610.4289 5673.29794 -2610.4289 5673.46132 -2610.39401 5673.5962 -2610.29544 5673.67905 -2610.15037 5673.69543 -2609.98411 5673.6828 -2609.87204 5673.6828 -2607.45667 5673.65623 -2607.31333 5673.58006 -2607.18902 5673.4644 -2607.10027 5673.32461 -2607.05886 5673.17927 -2607.0703 5672.99695 -2607.11916 5672.615 -2607.15257 5672.23305 -2607.11916 5671.8627 -2607.01992 5671.51521 -2606.85789 5671.20114 -2606.63797 5670.93003 -2606.36686 5670.71011 -2606.05279 5670.54808 -2605.7053 5670.44884 -2605.33495 5670.41543 -2604.953 5670.44884 -2604.57105 5670.54808 -2604.2007 5670.71011 -2603.85321 5670.93003 -2603.53914 5671.20114 -2603.26803 5671.51521 -2603.04811 5671.8627 -2602.88608 5672.23305 -2602.78684 5672.615 -2602.75343 5672.99695 -2602.78684 5673.3673 -2602.88608 5673.4209 -2602.91107 5673.58995 -2602.94855 5678.59805 -2602.94855 5678.75112 -2602.9181 5678.88089 -2602.83139 5678.9676 -2602.70162 5678.99805 -2602.54855 5678.99805 -2598.3449 5678.97175 -2598.20225 5678.89631 -2598.07836 5678.78164 -2597.98952 5678.64284 -2597.94742 5678.45239 -2597.92596 5678.23734 -2597.85071 5678.04442 -2597.72949 5677.88331 -2597.56838 5677.76209 -2597.37546 5677.68684 -2597.16041 5677.6588 -2596.91154 5677.6588 -2590.95646 5677.68684 -2590.70759 5677.76209 -2590.49254 5677.88331 -2590.29962 5678.04442 -2590.13851 5678.23734 -2590.01729 5678.45239 -2589.94204 5678.70126 -2589.914 5683.38074 -2589.914 5683.62961 -2589.94204 5683.84466 -2590.01729 5684.03758 -2590.13851 5684.19869 -2590.29962 5684.31991 -2590.49254 5684.39516 -2590.70759 5684.4232 -2590.95646 5684.4232 -2596.91154 5684.39516 -2597.16041 5684.31991 -2597.37546 5684.19869 -2597.56838 5684.03758 -2597.72949 5683.84466 -2597.85071 5683.62961 -2597.92596 5683.36176 -2597.95614 5683.22296 -2597.99824 5683.10829 -2598.08708 5683.03285 -2598.21097 5683.00655 -2598.35362 5683.00655 -2604.5375 5683.037 -2604.69057 5683.12371 -2604.82034 5683.25348 -2604.90705 5683.40655 -2604.9375 5687.27874 -2604.9375 5687.52761 -2604.96554 5687.74266 -2605.04079 5687.93558 -2605.16201 5688.09669 -2605.32312 5688.21791 -2605.51604 5688.29316 -2605.73109 5688.3212 -2605.97996 5688.3212 -2609.87204 5688.30857 -2609.98411 5688.32495 -2610.15037 5688.4078 -2610.29544 5688.54268 -2610.39401 5688.70606 -2610.4289 5695.04794 -2610.4289 5695.21132 -2610.39401 5695.3462 -2610.29544 5695.42905 -2610.15037 5695.44543 -2609.98411 5695.4328 -2609.87204 5695.4328 -2609.16025 5699.3524 -2609.16025 5699.3524 -2610.0289 5699.38285 -2610.18197 5699.46956 -2610.31174 5699.59933 -2610.39845 5699.7524 -2610.4289 5705.7516 -2610.4289 5705.90467 -2610.39845 5706.03444 -2610.31174 5706.12115 -2610.18197 5706.1516 -2610.0289 5706.1516 -2609.16025 5710.0712 -2609.16025 5710.0712 -2609.87204 5710.05857 -2609.98411 5710.07495 -2610.15037 5710.1578 -2610.29544 5710.29268 -2610.39401 5710.45606 -2610.4289 5714.78513 -2610.4289 5714.94331 -2610.43719 5715.08941 -2610.46033 5715.23229 -2610.49861 5715.37038 -2610.55162 5715.50218 -2610.61878 5715.62623 -2610.69934 5715.74118 -2610.79242 5715.84578 -2610.89702 5715.93407 -2611.00605 5716.04746 -2611.19607 5716.10811 -2611.27393 5720.33686 -2615.50268 5720.46663 -2615.58939 5720.6197 -2615.61984 5720.77277 -2615.58939 5720.90254 -2615.50268 5720.98925 -2615.37291 5721.0197 -2615.21984 5721.0197 -2596.37336 5720.98925 -2596.22029 5720.90254 -2596.09052 5717.33839 -2592.52636 5717.13942 -2592.28066 5717.00545 -2592.01774 5716.92771 -2591.7276 5716.9095 -2591.49618 5716.9095 -2589.09665 5716.87966 -2588.94506 5716.7785 -2588.7635 5716.64295 -2588.61588 5716.41811 -2588.29479 5716.25608 -2587.9473 5716.15684 -2587.57695 5716.12343 -2587.195 5716.15684 -2586.81305 5716.25608 -2586.4427 5716.41811 -2586.09521 5716.63803 -2585.78114 5716.90914 -2585.51003 5717.22321 -2585.29011 5717.5707 -2585.12808 5717.94105 -2585.02884 5718.323 -2584.99543 5718.70495 -2585.02884 5719.0753 -2585.12808 5719.42279 -2585.29011 5719.73686 -2585.51003 5720.00797 -2585.78114 5720.22789 -2586.09521 5720.38992 -2586.4427 5720.48916 -2586.81305 5720.52257 -2587.195 5720.50519 -2587.39369 5720.52546 -2587.55878 5720.61113 -2587.70135 5720.74737 -2587.79675 5720.91065 -2587.82849 5721.07271 -2587.79108 5721.2507 -2587.70808 5721.62105 -2587.60884 5722.003 -2587.57543 5722.38495 -2587.60884 5722.7553 -2587.70808 5723.10279 -2587.87011 5723.30367 -2588.01077 5723.46364 -2588.07704 5723.63663 -2588.06948 5723.79022 -2587.98953 5723.89562 -2587.85216 5723.9331 -2587.68311 5723.9331 -2572.55446 5723.90265 -2572.40139 5723.81594 -2572.27162 5723.35729 -2571.81296 5723.15832 -2571.56726 5723.02435 -2571.30434 5722.94661 -2571.0142 5722.9284 -2570.78278 5722.9284 -2568.05475 5722.89856 -2567.90316 5722.79756 -2567.72179 5722.66202 -2567.57398 5722.43711 -2567.25279 5722.27508 -2566.9053 5722.17584 -2566.53495 5722.14243 -2566.153 5722.17584 -2565.77105 5722.27508 -2565.4007 5722.43711 -2565.05321 5722.65703 -2564.73914 5722.92814 -2564.46803 5723.24221 -2564.24811 5723.5897 -2564.08608 5723.96005 -2563.98684 5724.342 -2563.95343 5724.72395 -2563.98684 5725.07765 -2564.08162 5725.25063 -2564.08917 5725.4106 -2564.02291 5725.52758 -2563.89525 5725.68108 -2563.3347 5725.84311 -2562.98721 5726.06303 -2562.67314 5726.33414 -2562.40203 5726.64821 -2562.18211 5726.89031 -2562.06922 5727.01448 -2561.97877 5727.09541 -2561.84818 5727.12114 -2561.69673 5727.08789 -2561.54674 5727.00056 -2561.42035 5726.87203 -2561.3362 5726.72126 -2561.3067 5640.3905 -2561.3067 5640.23743 -2561.33715 5640.10766 -2561.42386 5640.02095 -2561.55363 5639.9905 -2561.7067 5639.9905 -2568.35274 5639.96246 -2568.60161 5639.88721 -2568.81666 5639.76599 -2569.00958 5639.60488 -2569.17069 5639.41196 -2569.29191 5639.19691 -2569.36716 5638.94804 -2569.3952 5635.05596 -2569.3952 5634.80709 -2569.36716 5634.59204 -2569.29191 5634.39912 -2569.17069 5634.23801 -2569.00958 5634.11679 -2568.81666 5634.04154 -2568.60161 5634.0135 -2568.35274 5634.0135 -2556.11096 5633.98305 -2555.95789 5633.89634 -2555.82812 5633.76657 -2555.74141 5633.6135 -2555.71096 5633.46043 -2555.74141 5633.33066 -2555.82812 5630.11266 -2559.04612 5630.02595 -2559.17589 5629.9955 -2559.32896 5629.9955 -2568.35274 5629.96746 -2568.60161 5629.89221 -2568.81666 5629.77099 -2569.00958 5629.60988 -2569.17069 5629.41696 -2569.29191 5629.20191 -2569.36716 5628.95304 -2569.3952 5625.06096 -2569.3952 5624.81209 -2569.36716 5624.59704 -2569.29191 5624.40412 -2569.17069 5624.24301 -2569.00958 5624.12179 -2568.81666 5624.04654 -2568.60161 5624.0185 -2568.35274 5624.0185 -2555.79926 5624.04654 -2555.55039 5624.12179 -2555.33534 5624.24301 -2555.14242 5624.40412 -2554.98131 5624.59704 -2554.86009 5624.81209 -2554.78484 5625.06096 -2554.7568 5627.86459 -2554.7568 5628.62737 -2554.67395 5629.34098 -2554.5177 5630.03449 -2554.28811 5630.70036 -2553.98767 5631.3314 -2553.61964 5631.92075 -2553.18799 5632.42479 -2552.7339 5632.67886 -2552.52811 5632.94176 -2552.39415 5633.2319 -2552.31641 5633.46332 -2552.2982 5646.93054 -2552.2982 5647.24497 -2552.33125 5647.52561 -2552.42243 5647.78574 -2552.57262 5647.96225 -2552.72338 5650.88452 -2555.64564 5651.01429 -2555.73235 5651.16736 -2555.7628 5658.4209 -2555.7628 5658.58632 -2555.72699 5658.72213 -2555.62598 5658.804 -2555.47784 5658.81728 -2555.30911 5658.75959 -2555.14999 5658.71694 -2555.08211 5658.64169 -2554.86706 5658.61365 -2554.61819 5658.61365 -2551.11981 5658.64169 -2550.87094 5658.71694 -2550.65589 5658.83816 -2550.46297 5658.99927 -2550.30186 5659.19219 -2550.18064 5659.40724 -2550.10539 5659.65611 -2550.07735 5659.78875 -2550.07735 5659.94182 -2550.0469 5660.07159 -2549.96019 5660.1583 -2549.83042 5660.18875 -2549.67735 5660.18875 -2549.46335 5660.22159 -2549.12987 5660.31313 -2548.82811 5660.46179 -2548.55 5660.67436 -2548.29097 5661.71447 -2547.25086 5661.9735 -2547.03829 5662.25161 -2546.88963 5662.55337 -2546.79809 5662.88685 -2546.76525 5673.32621 -2546.76525 5673.94822 -2546.72191 5674.53342 -2546.60202 5675.09797 -2546.40676 5675.63221 -2546.13949 5676.127 -2545.80477 5676.96624 -2545.06871 5677.41963 -2544.76576 5677.90869 -2544.52458 5678.42505 -2544.3493 5678.95987 -2544.24292 5679.504 -2544.20726 5680.04813 -2544.24292 5680.58295 -2544.3493 5681.09931 -2544.52458 5681.58837 -2544.76576 5682.04177 -2545.06871 5682.45175 -2545.42825 5682.81129 -2545.83823 5683.11424 -2546.29163 5683.35542 -2546.78069 5683.5307 -2547.29705 5683.63708 -2547.83187 5683.67274 -2548.376 5683.63708 -2548.92013 5683.5307 -2549.45495 5683.35542 -2549.97131 5683.11424 -2550.46037 5682.81129 -2550.91377 5682.45175 -2551.32375 5682.0412 -2551.68366 5681.92375 -2551.80502 5681.86686 -2551.96404 5681.88066 -2552.13236 5681.9627 -2552.27999 5682.09835 -2552.3806 5682.26343 -2552.41625 5683.0205 -2552.41625 5683.17358 -2552.3858 5683.30335 -2552.29909 5683.6787 -2551.92253 5684.07917 -2551.46588 5684.11102 -2551.42437 5684.44842 -2550.91941 5684.47458 -2550.8741 5684.74319 -2550.32943 5684.76321 -2550.28109 5684.95842 -2549.70601 5684.97196 -2549.65547 5685.09044 -2549.05984 5685.0973 -2549.0076 5685.1742 -2547.81782 5685.28115 -2547.26864 5685.45743 -2546.73772 5685.70015 -2546.23371 5686.00533 -2545.76487 5686.36796 -2545.33891 5686.78208 -2544.96282 5687.24089 -2544.64277 5687.73687 -2544.38402 5688.26186 -2544.19081 5688.80725 -2544.06633 5689.36407 -2544.01262 5689.9232 -2544.03055 5690.47544 -2544.11983 5691.01173 -2544.279 5691.52327 -2544.50544 5692.00165 -2544.79543 5692.43901 -2545.14422 5692.82819 -2545.54608 5693.16278 -2545.9944 5693.43729 -2546.48183 5693.64722 -2547.00036 5693.78912 -2547.54147 5693.86066 -2548.09629 5693.86066 -2548.65571 5693.78912 -2549.21053 5693.64722 -2549.75164 5693.43729 -2550.27017 5693.16278 -2550.7576 5692.82819 -2551.20592 5692.43901 -2551.60778 5692.20541 -2551.79407 5692.10116 -2551.91989 5692.05593 -2552.07691 5692.07726 -2552.23891 5692.16159 -2552.37887 5692.29485 -2552.47342 5692.45481 -2552.5068 5696.88008 -2552.5068 5697.04517 -2552.47115 5697.18082 -2552.37054 5697.26286 -2552.22291 5697.27666 -2552.05459 5697.21977 -2551.89557 5697.10231 -2551.77421 5696.96623 -2551.68329 5696.55625 -2551.32375 5696.19671 -2550.91377 5695.89376 -2550.46037 5695.65258 -2549.97131 5695.4773 -2549.45495 5695.37092 -2548.92013 5695.33526 -2548.376 5695.37092 -2547.83187 5695.4773 -2547.29705 5695.65258 -2546.78069 5695.89376 -2546.29163 5696.19671 -2545.83823 5696.55625 -2545.42825 5696.96623 -2545.06871 5697.41963 -2544.76576 5697.90869 -2544.52458 5698.42505 -2544.3493 5698.95987 -2544.24292 5699.504 -2544.20726 5700.04813 -2544.24292 5700.58295 -2544.3493 5701.09931 -2544.52458 5701.58837 -2544.76576 5702.04182 -2545.06875 5702.91211 -2545.83152 5703.44042 -2546.18862 5703.48573 -2546.21479 5704.01093 -2546.47378 5704.05927 -2546.4938 5704.61377 -2546.68203 5704.66431 -2546.69557 5705.23864 -2546.80982 5705.58673 -2546.8331 5705.87878 -2546.81418 5706.55489 -2546.69676 5707.2136 -2546.50437 5707.84663 -2546.23944 5708.44601 -2545.90529 5708.60349 -2545.76898 5708.66161 -2545.65649 5708.68165 -2545.53146 5708.68165 -2545.28781 5708.70969 -2545.03894 5708.78494 -2544.82389 5708.90616 -2544.63097 5709.06727 -2544.46986 5709.26019 -2544.34864 5709.47524 -2544.27339 5709.72411 -2544.24535 5714.00989 -2544.24535 5714.25876 -2544.27339 5714.47381 -2544.34864 5714.66673 -2544.46986 5714.82784 -2544.63097 5715.03828 -2544.97782 5715.17154 -2545.07237 5715.3315 -2545.10575 5715.49146 -2545.07237 5715.62472 -2544.97782 5715.83516 -2544.63097 5715.99627 -2544.46986 5716.18919 -2544.34864 5716.40424 -2544.27339 5716.65311 -2544.24535 5720.93889 -2544.24535 5721.18776 -2544.27339 5721.40281 -2544.34864 5721.59573 -2544.46986 5721.75684 -2544.63097 5721.87806 -2544.82389 5721.95331 -2545.03894 5721.98135 -2545.28781 5721.98135 -2548.78619 5721.95331 -2549.03506 5721.87806 -2549.25011 5721.75684 -2549.44303 5721.59573 -2549.60414 5721.40281 -2549.72536 5721.18776 -2549.80061 5720.93889 -2549.82865 5719.54125 -2549.82865 5719.38937 -2549.85861 5719.26023 -2549.94399 5719.17319 -2550.07202 5719.08323 -2550.28342 5719.05488 -2550.38657 5719.01832 -2550.65939 5718.98529 -2550.99487 5718.89891 -2551.27964 5718.75862 -2551.54209 5718.55731 -2551.7874 5715.26465 -2555.07995 5715.17794 -2555.20972 5715.14749 -2555.3628 5715.17794 -2555.51587 5715.26465 -2555.64564 5715.39442 -2555.73235 5715.54749 -2555.7628 5808.42664 -2555.7628 5808.74107 -2555.79585 5809.02171 -2555.88703 5809.28184 -2556.03722 5809.45835 -2556.18797 5824.74111 -2571.47064 5824.94008 -2571.71634 5825.07404 -2571.97926 5825.15179 -2572.2694 5825.17 -2572.50082 5825.17 -2595.66335 5825.20045 -2595.81642 5825.28716 -2595.94619 5825.41693 -2596.0329 5825.57 -2596.06335 5839.49984 -2596.06335 5839.65291 -2596.0329 5839.78268 -2595.94619 5839.86939 -2595.81642 5839.89984 -2595.66335 5839.86939 -2595.51028 5839.78268 -2595.38051 5839.55303 -2595.15086 5839.33311 -2594.83679 5839.17108 -2594.4893 5839.07184 -2594.11895 5839.03843 -2593.737 5839.07184 -2593.35505 5839.17108 -2592.9847 5839.19597 -2592.93132 5839.23345 -2592.76227 5839.23345 -2589.94196 5839.203 -2589.78888 5839.11629 -2589.65911 5839.06456 -2589.60738 5838.94334 -2589.41446 5838.86809 -2589.19941 5838.84005 -2588.95054 5838.84005 -2581.12146 5838.86809 -2580.87259 5838.94334 -2580.65754 5839.06456 -2580.46462 5839.22567 -2580.30351 5839.41859 -2580.18229 5839.63364 -2580.10704 5839.88251 -2580.079 5842.59349 -2580.079 5842.84236 -2580.10704 5843.05741 -2580.18229 5843.25033 -2580.30351 5843.41144 -2580.46462 5843.53266 -2580.65754 5843.60791 -2580.87259 5843.63595 -2581.12146 5843.63595 -2588.95054 5843.60791 -2589.19941 5843.53266 -2589.41446 5843.41144 -2589.60738 5843.35911 -2589.65971 5843.2724 -2589.78948 5843.24195 -2589.94256 5843.24195 -2592.76098 5843.27943 -2592.93003 5843.30492 -2592.9847 5843.40416 -2593.35505 5843.43757 -2593.737 5843.40416 -2594.11895 5843.30492 -2594.4893 5843.14289 -2594.83679 5842.92297 -2595.15086 5842.69332 -2595.38051 5842.60661 -2595.51028 5842.57616 -2595.66335 5842.60661 -2595.81642 5842.69332 -2595.94619 5842.82309 -2596.0329 5842.97616 -2596.06335 5847.17658 -2596.06335 5847.32966 -2596.0329 5847.45943 -2595.94619 5848.73464 -2594.67094 5848.81431 -2594.55715 5848.85027 -2594.42297 5848.87484 -2594.14205 5848.97408 -2593.7717 5849.13611 -2593.42421 5849.35603 -2593.11014 5849.47484 -2592.97822 5849.56398 -2592.83904 5849.61103 -2592.7357 5849.62715 -2592.6233 5849.62715 -2590.24183 5849.6047 -2590.10972 5849.53988 -2589.99243 5849.43996 -2589.90314 5849.22567 -2589.76849 5849.06456 -2589.60738 5848.94334 -2589.41446 5848.86809 -2589.19941 5848.84005 -2588.95054 5848.84005 -2581.12146 5848.86809 -2580.87259 5848.94334 -2580.65754 5849.06456 -2580.46462 5849.22567 -2580.30351 5849.41859 -2580.18229 5849.63364 -2580.10704 5849.88251 -2580.079 5852.59349 -2580.079 5852.84236 -2580.10704 5853.05741 -2580.18229 5853.25033 -2580.30351 5853.41144 -2580.46462 5853.53266 -2580.65754 5853.60791 -2580.87259 5853.63595 -2581.12146 5853.63595 -2588.95054 5853.60791 -2589.19941 5853.53266 -2589.41446 5853.41144 -2589.60738 5853.25033 -2589.76849 5853.03544 -2589.90352 5852.93552 -2589.99281 5852.8707 -2590.11009 5852.84825 -2590.24221 5852.84825 -2593.15866 5852.86676 -2593.27894 5852.94589 -2593.42421 5853.10792 -2593.7717 5853.20716 -2594.14205 5853.24057 -2594.524 5853.20716 -2594.90595 5853.10792 -2595.2763 5852.94589 -2595.62379 5852.72597 -2595.93786 5852.45486 -2596.20897 5852.14079 -2596.42889 5851.7933 -2596.59092 5851.267 -2596.72802 5851.1532 -2596.8077 5849.16214 -2598.79882 5848.99396 -2598.93685 5848.89191 -2599.06329 5848.84857 -2599.21989 5848.8711 -2599.38081 5848.95577 -2599.51949 5849.08862 -2599.61305 5849.24772 -2599.64605 5854.3813 -2599.64605 5854.53438 -2599.6156 5854.66415 -2599.52889 5859.50999 -2594.68305 5859.5967 -2594.55328 5859.62715 -2594.4002 5859.62715 -2590.24183 5859.6047 -2590.10972 5859.53988 -2589.99243 5859.43996 -2589.90314 5859.22567 -2589.76849 5859.06456 -2589.60738 5858.94334 -2589.41446 5858.86809 -2589.19941 5858.84005 -2588.95054 5858.84005 -2582.4801 5858.79797 -2582.13351 5858.77093 -2582.03252 5858.65843 -2581.76092 5858.60622 -2581.67049 5858.39276 -2581.39792 5850.11276 -2573.11793 5849.90019 -2572.8589 5849.75153 -2572.58079 5849.71188 -2572.45006 5849.65748 -2572.33777 5849.57112 -2572.2477 5849.41859 -2572.17371 5849.22567 -2572.05249 5849.06456 -2571.89138 5848.94334 -2571.69846 5848.86809 -2571.48341 5848.84005 -2571.23454 5848.84005 -2563.40546 5848.86809 -2563.15659 5848.94334 -2562.94154 5849.06456 -2562.74862 5849.22567 -2562.58751 5849.41859 -2562.46629 5849.63364 -2562.39104 5849.88251 -2562.363 5852.59349 -2562.363 5852.84236 -2562.39104 5853.05741 -2562.46629 5853.25033 -2562.58751 5853.41144 -2562.74862 5853.53266 -2562.94154 5853.60791 -2563.15659 5853.63595 -2563.40546 5853.63595 -2571.23454 5853.60791 -2571.48341 5853.54204 -2571.67164 5853.51988 -2571.81871 5853.55297 -2571.96371 5853.63675 -2572.08659 5861.512 -2579.96184 5861.64177 -2580.04855 5861.79485 -2580.079 5862.59349 -2580.079 5862.84236 -2580.10704 5863.05741 -2580.18229 5863.25033 -2580.30351 5863.53564 -2580.59381 5863.69513 -2580.65469 5863.86548 -2580.64353 5864.01566 -2580.56235 5864.11832 -2580.42594 5864.15475 -2580.25916 5864.15475 -2577.48573 5864.16276 -2577.30235 5864.18557 -2577.12903 5864.22341 -2576.95836 5864.27598 -2576.79164 5864.34288 -2576.63013 5864.4236 -2576.47507 5864.51753 -2576.32763 5864.62395 -2576.18894 5864.74795 -2576.05361 5868.80703 -2571.99453 5868.89081 -2571.87165 5868.92391 -2571.72664 5868.90174 -2571.57958 5868.86809 -2571.48341 5868.84005 -2571.23454 5868.84005 -2563.40546 5868.86809 -2563.15659 5868.94334 -2562.94154 5869.06456 -2562.74862 5869.22567 -2562.58751 5869.41859 -2562.46629 5869.63364 -2562.39104 5869.88251 -2562.363 5872.59349 -2562.363 5872.84236 -2562.39104 5873.05741 -2562.46629 5873.25033 -2562.58751 5873.41144 -2562.74862 5873.53416 -2562.94393 5873.65374 -2563.06577 5873.81323 -2563.12665 5873.98358 -2563.11548 5874.13376 -2563.0343 5874.23642 -2562.8979 5874.27285 -2562.73112 5874.27285 -2560.70366 5874.25226 -2560.57699 5874.19263 -2560.46336 5874.085 -2560.32014 5873.89103 -2559.95056 5873.75886 -2559.55466 5873.69191 -2559.14269 5873.69191 -2558.72531 5873.75886 -2558.31334 5873.89103 -2557.91744 5874.085 -2557.54786 5874.33574 -2557.21419 5874.63675 -2556.92506 5874.98025 -2556.68796 5875.35733 -2556.50904 5875.75823 -2556.39291 5876.17257 -2556.3426 5876.58961 -2556.35941 5876.99856 -2556.4429 5877.38881 -2556.5909 5877.75028 -2556.79959 5878.07358 -2557.06356 5878.35035 -2557.37598 5878.49537 -2557.60531 5878.61514 -2557.7267 5878.77459 -2557.78717 5878.94474 -2557.77573 5879.09466 -2557.69446 5879.1971 -2557.55813 5879.23345 -2557.39152 5879.23345 -2556.13613 5879.21286 -2556.00946 5879.15323 -2555.89583 5879.046 -2555.75314 5878.85203 -2555.38356 5878.71986 -2554.98766 5878.65291 -2554.57569 5878.65291 -2554.15831 5878.71986 -2553.74634 5878.85203 -2553.35044 5879.046 -2552.98086 5879.29674 -2552.64719 5879.59775 -2552.35806 5879.94125 -2552.12096 5880.31833 -2551.94204 5880.71923 -2551.82591 5881.13357 -2551.7756 5881.55061 -2551.79241 5881.95956 -2551.8759 5882.34981 -2552.0239 5882.71128 -2552.23259 5883.03458 -2552.49656 5883.31135 -2552.80898 5883.53443 -2553.16174 5883.69803 -2553.54572 5883.79791 -2553.95097 5883.8315 -2554.367 5883.79791 -2554.78303 5883.69803 -2555.18828 5883.53443 -2555.57226 5883.30387 -2555.93685 5883.25774 -2556.03935 5883.24195 -2556.15064 5883.24195 -2562.41344 5883.2724 -2562.56652 5883.35911 -2562.69629 5883.41144 -2562.74862 5883.53266 -2562.94154 5883.60791 -2563.15659 5883.63595 -2563.40546 5883.63595 -2571.23454 5883.60791 -2571.48341 5883.53266 -2571.69846 5883.41144 -2571.89138 5883.25033 -2572.05249 5883.05741 -2572.17371 5882.84236 -2572.24896 5882.59349 -2572.277 5879.88251 -2572.277 5879.63364 -2572.24896 5879.41859 -2572.17371 5879.22567 -2572.05249 5879.06456 -2571.89138 5879.02004 -2571.82053 5878.90046 -2571.69869 5878.74097 -2571.63781 5878.57062 -2571.64897 5878.42044 -2571.73015 5878.31778 -2571.86656 5878.28135 -2572.03334 5878.28135 -2579.98908 5878.27445 -2580.17018 5878.25434 -2580.31736 5878.26332 -2580.47135 5878.32989 -2580.61049 5878.33094 -2580.64696 5878.19246 -2580.72166 5878.0935 -2580.84398 5878.0126 -2580.99853 5877.91968 -2581.14489 5877.81225 -2581.28466 5877.68934 -2581.41882 5873.7531 -2585.35513 5873.6664 -2585.4849 5873.63595 -2585.63797 5873.63595 -2588.95054 5873.60791 -2589.19941 5873.53266 -2589.41446 5873.41144 -2589.60738 5873.25033 -2589.76849 5873.05741 -2589.88971 5872.84236 -2589.96496 5872.59349 -2589.993 5869.88251 -2589.993 5869.63364 -2589.96496 5869.41859 -2589.88971 5869.22567 -2589.76849 5869.06456 -2589.60738 5868.85936 -2589.2704 5868.731 -2589.1762 5868.57607 -2589.13952 5868.41911 -2589.16619 5868.28498 -2589.25198 5868.19494 -2589.38329 5868.16325 -2589.53932 5868.16325 -2597.90137 5868.15525 -2598.08473 5868.13243 -2598.25807 5868.09459 -2598.42872 5868.04202 -2598.59547 5867.97513 -2598.75695 5867.8944 -2598.91204 5867.80048 -2599.05946 5867.69405 -2599.19816 5867.57006 -2599.33348 5860.5352 -2606.36844 5860.39986 -2606.49245 5860.26118 -2606.59886 5860.11373 -2606.6928 5859.95869 -2606.77352 5859.79716 -2606.84042 5859.63045 -2606.89298 5859.45977 -2606.93083 5859.28646 -2606.95364 5859.10307 -2606.96165 5842.21252 -2606.96165 5842.04347 -2606.99913 5841.9903 -2607.02392 5841.61995 -2607.12316 5841.238 -2607.15657 5840.85605 -2607.12316 5840.4857 -2607.02392 5840.43253 -2606.99913 5840.26348 -2606.96165 5812.96052 -2606.96165 5812.79147 -2606.99913 5812.7383 -2607.02392 5812.36795 -2607.12316 5811.986 -2607.15657 5811.60405 -2607.12316 5811.2337 -2607.02392 5811.18053 -2606.99913 5811.01148 -2606.96165 5809.33321 -2606.96165 5809.22248 -2606.97728 5809.06971 -2607.05481 5808.85466 -2607.13006 5808.60579 -2607.1581 5806.68221 -2607.1581 5806.43334 -2607.13006 5806.21829 -2607.05481 5806.05681 -2606.95335 5805.91836 -2606.89901 5805.76964 -2606.89901 5805.63119 -2606.95335 5805.46971 -2607.05481 5805.25466 -2607.13006 5805.00579 -2607.1581 5804.78612 -2607.1581 5804.78612 -2605.79755 5805.23975 -2605.79755 5805.39282 -2605.7671 5805.52259 -2605.68039 5805.6093 -2605.55062 5805.63975 -2605.39755 5805.63975 -2604.51645 5805.6093 -2604.36338 5805.52259 -2604.23361 5805.39282 -2604.1469 5805.23975 -2604.11645 5804.78612 -2604.11645 5804.78612 -2602.7559 5805.00579 -2602.7559 5805.25466 -2602.78394 5805.46971 -2602.85919 5805.63119 -2602.96065 5805.76964 -2603.01499 5805.91836 -2603.01499 5806.05681 -2602.96065 5806.21829 -2602.85919 5806.43334 -2602.78394 5806.68221 -2602.7559 5808.60579 -2602.7559 5808.85466 -2602.78394 5809.06971 -2602.85919 5809.22375 -2602.93752 5809.33448 -2602.95315 5811.00977 -2602.95315 5811.17881 -2602.91567 5811.2337 -2602.89008 5811.60405 -2602.79084 5811.986 -2602.75743 5812.36795 -2602.79084 5812.7383 -2602.89008 5812.79319 -2602.91567 5812.96223 -2602.95315 5818.86533 -2602.95315 5819.02162 -2602.92135 5819.15307 -2602.83101 5819.23876 -2602.6965 5819.26509 -2602.53919 5819.22785 -2602.3841 5819.05308 -2602.0093 5818.95384 -2601.63895 5818.92043 -2601.257 5818.95384 -2600.87505 5819.05308 -2600.5047 5819.21511 -2600.15721 5819.43503 -2599.84314 5819.55474 -2599.70992 5819.64233 -2599.5722 5819.68886 -2599.46932 5819.7048 -2599.35755 5819.7048 -2594.22935 5819.66899 -2594.06393 5819.56798 -2593.92813 5819.41984 -2593.84625 5819.25111 -2593.83297 5818.86461 -2593.97366 5818.61574 -2594.0017 5806.06226 -2594.0017 5805.81339 -2593.97366 5805.59834 -2593.89841 5805.40542 -2593.77719 5805.24431 -2593.61608 5805.12309 -2593.42316 5805.04784 -2593.20811 5805.0198 -2592.95924 5805.0198 -2576.46876 5805.04784 -2576.21989 5805.12309 -2576.00484 5805.24431 -2575.81192 5805.40542 -2575.65081 5805.59834 -2575.52959 5805.98444 -2575.4086 5806.09911 -2575.31976 5806.17455 -2575.19587 5806.20085 -2575.05322 5806.20085 -2569.71236 5806.17613 -2569.57391 5806.10501 -2569.45258 5805.94751 -2569.26816 5805.71872 -2568.89482 5805.55116 -2568.49029 5805.44894 -2568.06452 5805.41459 -2567.628 5805.44894 -2567.19148 5805.55116 -2566.76571 5805.71872 -2566.36118 5805.94751 -2565.98784 5806.23188 -2565.65488 5806.56484 -2565.37051 5806.93818 -2565.14172 5807.34271 -2564.97416 5807.76848 -2564.87194 5808.205 -2564.83759 5808.64152 -2564.87194 5809.06729 -2564.97416 5809.47182 -2565.14172 5809.84516 -2565.37051 5810.15728 -2565.63708 5810.46249 -2565.98784 5810.69128 -2566.36118 5810.85884 -2566.76571 5810.96106 -2567.19148 5810.99541 -2567.628 5810.96106 -2568.06452 5810.85884 -2568.49029 5810.77866 -2568.68386 5810.74849 -2568.82197 5810.76826 -2568.96196 5810.85872 -2569.23687 5810.92043 -2569.58685 5810.92043 -2569.93594 5810.85981 -2570.27974 5810.81253 -2570.48558 5810.84038 -2570.62701 5811.10931 -2571.30522 5811.4952 -2572.08276 5811.94457 -2572.82541 5812.45429 -2573.52802 5813.02082 -2574.18569 5813.64051 -2574.79408 5814.2901 -2575.33393 5814.40985 -2575.4025 5814.54576 -2575.4263 5818.61574 -2575.4263 5818.86461 -2575.45434 5819.25111 -2575.59503 5819.41984 -2575.58175 5819.56798 -2575.49987 5819.66899 -2575.36407 5819.7048 -2575.19865 5819.7048 -2574.22066 5819.67435 -2574.06759 5819.58764 -2573.93782 5810.78292 -2565.1331 5807.07368 -2561.42386 5806.94391 -2561.33715 5806.79084 -2561.3067 5755.72079 -2561.3067 5755.56449 -2561.3385 5755.43305 -2561.42884 5755.34735 -2561.56335 5755.32103 -2561.72066 5755.35826 -2561.87575 5755.51492 -2562.2117 5755.61416 -2562.58205 5755.64757 -2562.964 5755.61416 -2563.34595 5755.51492 -2563.7163 5755.35289 -2564.06379 5755.13297 -2564.37786 5755.0057 -2564.51949 5754.92241 -2564.65247 5754.87695 -2564.75434 5754.8614 -2564.8648 5754.8613 -2582.44883 5754.89175 -2582.60191 5754.97846 -2582.73168 5762.24741 -2590.00053 5762.44638 -2590.24624 5762.58034 -2590.50916 5762.65809 -2590.79929 5762.6763 -2591.03072 5762.6763 -2618.37121 5762.70683 -2618.52448 5762.79375 -2618.65435 5762.9238 -2618.741 5763.07713 -2618.77121 5763.23033 -2618.74037 5763.36002 -2618.65317 5763.55505 -2618.45693 5763.74744 -2618.33604 5763.96249 -2618.26079 5764.21136 -2618.23275 5764.52945 -2618.23275 5764.52945 -2619.49487 5763.0763 -2619.49487 5762.92323 -2619.52532 5762.79346 -2619.61203 5762.70675 -2619.7418 5762.6763 -2619.89487 5762.6763 -2620.57913 5762.70675 -2620.7322 5762.79346 -2620.86197 5762.92323 -2620.94868 5763.0763 -2620.97913 5764.52945 -2620.97913 5764.52945 -2621.43275 5764.5599 -2621.58582 5764.64661 -2621.71559 5764.77638 -2621.8023 5764.92945 -2621.83275 5765.81055 -2621.83275 5765.96362 -2621.8023 5766.09339 -2621.71559 5766.1801 -2621.58582 5766.21055 -2621.43275 5766.21055 -2620.97913 5767.5711 -2620.97913 5767.5711 -2621.19879 5767.54308 -2621.44747 5767.45233 -2621.70604 5767.43015 -2621.85615 5767.46548 -2622.00372 5767.55323 -2622.12751 5767.68078 -2622.20972 5767.82976 -2622.2385 5768.70788 -2622.2385 5768.8733 -2622.20269 5769.00911 -2622.10168 5769.09098 -2621.95354 5769.10426 -2621.78481 5769.02019 -2621.58371 5768.94494 -2621.36866 5768.9169 -2621.11979 5768.9169 -2620.90013 5770.27745 -2620.90013 5770.27745 -2621.35375 5770.3079 -2621.50682 5770.39461 -2621.63659 5770.52438 -2621.7233 5770.67745 -2621.75375 5771.55855 -2621.75375 5771.71162 -2621.7233 5771.84139 -2621.63659 5771.9281 -2621.50682 5771.95855 -2621.35375 5771.95855 -2620.90013 5773.3191 -2620.90013 5773.3191 -2621.11979 5773.29106 -2621.36866 5773.21581 -2621.58371 5773.11485 -2621.74439 5773.06051 -2621.88284 5773.06051 -2622.03157 5773.11485 -2622.17002 5773.21681 -2622.33229 5773.29206 -2622.54734 5773.3201 -2622.79621 5773.3201 -2624.71979 5773.29206 -2624.96866 5773.21681 -2625.18371 5773.09559 -2625.37663 5772.93448 -2625.53774 5772.81229 -2625.61452 5772.71237 -2625.70381 5772.64755 -2625.8211 5772.6251 -2625.95321 5772.6251 -2627.45859 5772.65555 -2627.61166 5772.74226 -2627.74143 5772.78997 -2627.78914 5773.00989 -2628.10321 5773.17192 -2628.4507 5773.27116 -2628.82105 5773.30457 -2629.203 5773.27116 -2629.58495 5773.17192 -2629.9553 5773.00989 -2630.30279 5772.78997 -2630.61686 5772.74226 -2630.66457 5772.65555 -2630.79434 5772.6251 -2630.94741 5772.6251 -2634.0044 5772.65555 -2634.15747 5772.74226 -2634.28724 5772.87203 -2634.37395 5773.0251 -2634.4044 5773.58299 -2634.4044 5773.83186 -2634.43244 5773.92589 -2634.46534 5774.058 -2634.48779 5774.19011 -2634.46534 5774.28414 -2634.43244 5774.52628 -2634.40516 5774.52628 -2634.92674 5774.54872 -2635.05885 5774.59741 -2635.19799 5774.62545 -2635.44686 5774.62545 -2641.70114 5774.59741 -2641.95001 5774.54872 -2642.08915 5774.52628 -2642.22126 5774.52628 -2642.74284 5774.28414 -2642.71556 5774.19011 -2642.68266 5774.058 -2642.66021 5773.92589 -2642.68266 5773.83186 -2642.71556 5773.58299 -2642.7436 5772.56501 -2642.7436 5772.31614 -2642.71556 5772.22161 -2642.68248 5772.0895 -2642.66003 5771.95739 -2642.68248 5771.86286 -2642.71556 5771.61399 -2642.7436 5770.59601 -2642.7436 5770.34714 -2642.71556 5770.25311 -2642.68266 5770.121 -2642.66021 5769.98889 -2642.68266 5769.89486 -2642.71556 5769.64599 -2642.7436 5768.62801 -2642.7436 5768.37914 -2642.71556 5768.28461 -2642.68248 5768.1525 -2642.66003 5768.02039 -2642.68248 5767.92586 -2642.71556 5767.67699 -2642.7436 5766.65901 -2642.7436 5766.41014 -2642.71556 5766.31611 -2642.68266 5766.184 -2642.66021 5766.05189 -2642.68266 5765.95786 -2642.71556 5765.71572 -2642.74284 5765.71572 -2642.22126 5765.69328 -2642.08915 5765.64459 -2641.95001 5765.61655 -2641.70114 5765.61655 -2635.44686 5765.64459 -2635.19799 5765.69328 -2635.05885 5765.71572 -2634.92674 5765.71572 -2634.40516 5765.95786 -2634.43244 5766.05189 -2634.46534 5766.184 -2634.48779 5766.31611 -2634.46534 5766.41014 -2634.43244 5766.65901 -2634.4044 5767.67699 -2634.4044 5767.92586 -2634.43244 5768.02039 -2634.46552 5768.1525 -2634.48797 5768.28461 -2634.46552 5768.37914 -2634.43244 5768.62801 -2634.4044 5769.1851 -2634.4044 5769.33817 -2634.37395 5769.46794 -2634.28724 5769.55465 -2634.15747 5769.5851 -2634.0044 5769.5851 -2630.94761 5769.55465 -2630.79454 5769.46794 -2630.66477 5769.42003 -2630.61686 5769.20011 -2630.30279 5769.03808 -2629.9553 5768.93884 -2629.58495 5768.90543 -2629.203 5768.93884 -2628.82105 5769.03808 -2628.4507 5769.20011 -2628.10321 5769.42003 -2627.78914 5769.46794 -2627.74123 5769.55465 -2627.61146 5769.5851 -2627.45839 5769.5851 -2625.93574 5769.56265 -2625.80363 5769.49783 -2625.68634 5769.39791 -2625.59705 5769.30352 -2625.53774 5769.16144 -2625.39566 5769.03167 -2625.30895 5768.87859 -2625.2785 5767.67896 -2625.2785 5767.55087 -2625.29956 5767.43628 -2625.36053 5767.18548 -2625.61674 5766.99256 -2625.73796 5766.77751 -2625.81321 5766.52864 -2625.84125 5765.68174 -2625.84125 5765.52867 -2625.8717 5765.3989 -2625.95841 5764.86826 -2626.48905 5764.78155 -2626.61882 5764.7511 -2626.77189 5764.7511 -2635.14616 5764.78245 -2635.44686 5764.78245 -2641.70114 5764.75441 -2641.95001 5764.70672 -2642.08629 5764.68428 -2642.2184 5764.68428 -2642.74284 5764.44214 -2642.71556 5764.34761 -2642.68248 5764.2155 -2642.66003 5764.08339 -2642.68248 5763.98886 -2642.71556 5763.73999 -2642.7436 5762.72201 -2642.7436 5762.47314 -2642.71556 5762.37911 -2642.68266 5762.247 -2642.66021 5762.11489 -2642.68266 5762.02086 -2642.71556 5761.77199 -2642.7436 5760.75401 -2642.7436 5760.50514 -2642.71556 5760.41061 -2642.68248 5760.2785 -2642.66003 5760.14639 -2642.68248 5760.05186 -2642.71556 5759.80299 -2642.7436 5758.78501 -2642.7436 5758.53614 -2642.71556 5758.44211 -2642.68266 5758.31 -2642.66021 5758.17789 -2642.68266 5758.08386 -2642.71556 5757.83499 -2642.7436 5756.81701 -2642.7436 5756.56814 -2642.71556 5756.47361 -2642.68248 5756.3415 -2642.66003 5756.20939 -2642.68248 5756.11486 -2642.71556 5755.86599 -2642.7436 5754.84801 -2642.7436 5754.59914 -2642.71556 5754.50511 -2642.68266 5754.373 -2642.66021 5754.24089 -2642.68266 5754.14686 -2642.71556 5753.89799 -2642.7436 5752.88001 -2642.7436 5752.63114 -2642.71556 5752.53661 -2642.68248 5752.4045 -2642.66003 5752.27239 -2642.68248 5752.17786 -2642.71556 5751.92899 -2642.7436 5750.91101 -2642.7436 5750.66214 -2642.71556 5750.56811 -2642.68266 5750.436 -2642.66021 5750.30389 -2642.68266 5750.20986 -2642.71556 5749.96099 -2642.7436 5748.94301 -2642.7436 5748.69414 -2642.71556 5748.59961 -2642.68248 5748.4675 -2642.66003 5748.33539 -2642.68248 5748.24086 -2642.71556 5747.99199 -2642.7436 5746.97401 -2642.7436 5746.72514 -2642.71556 5746.51009 -2642.64031 5746.31717 -2642.51909 5746.15606 -2642.35798 5746.03484 -2642.16506 5745.95959 -2641.95001 5745.93155 -2641.70114 5745.93155 -2635.44686 5745.95959 -2635.19799 5746.03484 -2634.98294 5746.15606 -2634.79002 5746.31717 -2634.62891 5746.51009 -2634.50769 5746.72514 -2634.43244 5746.97401 -2634.4044 5747.99199 -2634.4044 5748.24086 -2634.43244 5748.33539 -2634.46552 5748.4675 -2634.48797 5748.59961 -2634.46552 5748.69414 -2634.43244 5748.94301 -2634.4044 5749.96099 -2634.4044 5750.20986 -2634.43244 5750.30389 -2634.46534 5750.436 -2634.48779 5750.56811 -2634.46534 5750.66214 -2634.43244 5750.91101 -2634.4044 5751.92899 -2634.4044 5752.17786 -2634.43244 5752.27239 -2634.46552 5752.4045 -2634.48797 5752.53661 -2634.46552 5752.63114 -2634.43244 5752.88001 -2634.4044 5753.89799 -2634.4044 5754.14686 -2634.43244 5754.24089 -2634.46534 5754.373 -2634.48779 5754.50511 -2634.46534 5754.59914 -2634.43244 5754.84801 -2634.4044 5755.5118 -2634.4044 5755.66487 -2634.37395 5755.79464 -2634.28724 5755.88135 -2634.15747 5755.9118 -2634.0044 5755.9118 -2627.2959 5755.87167 -2626.86881 5755.85637 -2626.79191 5755.74323 -2626.41893 5755.71323 -2626.34649 5755.5295 -2626.00276 5755.48631 -2625.93801 5755.14641 -2625.52464 5755.02131 -2625.39466 5754.75819 -2625.02058 5754.55525 -2624.61071 5754.41726 -2624.17467 5754.34744 -2623.72268 5754.34744 -2623.26532 5754.41726 -2622.81333 5754.55525 -2622.37729 5754.75819 -2621.96742 5755.02131 -2621.59334 5755.33846 -2621.2638 5755.70219 -2620.98654 5756.10398 -2620.76806 5756.53441 -2620.61346 5756.9834 -2620.52639 5757.44042 -2620.50887 5757.89476 -2620.56132 5758.33577 -2620.68251 5758.7531 -2620.8696 5759.13699 -2621.1182 5759.31369 -2621.23684 5759.46422 -2621.26009 5759.61253 -2621.22538 5759.73711 -2621.13775 5759.8199 -2621.00991 5759.8489 -2620.86038 5759.8489 -2591.76627 5759.81845 -2591.61319 5759.73174 -2591.48342 5752.46279 -2584.21457 5752.26382 -2583.96886 5752.12986 -2583.70594 5752.05211 -2583.41581 5752.0339 -2583.18438 5752.0339 -2564.86486 5752.00345 -2564.71178 5751.90353 -2564.53323 5751.76818 -2564.38522 5751.54311 -2564.06379 5751.38108 -2563.7163 5751.28184 -2563.34595 5751.24843 -2562.964 5751.28184 -2562.58205 5751.38108 -2562.2117 5751.53774 -2561.87575 5751.57497 -2561.72066 5751.54865 -2561.56335 5751.46295 -2561.42884 5751.33151 -2561.3385 5751.17521 -2561.3067 5728.77474 -2561.3067 5728.62397 -2561.3362 5728.49544 -2561.42035 5728.40811 -2561.54674 5728.37486 -2561.69673 5728.40059 -2561.84818 5728.48152 -2561.97877 5728.60569 -2562.06922 5728.84779 -2562.18211 5729.16186 -2562.40203 5729.43297 -2562.67314 5729.65289 -2562.98721 5729.81492 -2563.3347 5729.91416 -2563.70505 5729.94757 -2564.087 5729.91416 -2564.46895 5729.81492 -2564.8393 5729.65289 -2565.18679 5729.43297 -2565.50086 5729.3093 -2565.63855 5729.22369 -2565.77441 5729.1778 -2565.87668 5729.1621 -2565.98766 5729.1621 -2570.26454 5729.19255 -2570.41761 5729.27926 -2570.54738 5729.67811 -2570.94624 5729.87708 -2571.19194 5730.01105 -2571.45486 5730.08879 -2571.745 5730.107 -2571.97642 5730.107 -2595.56956 5730.13357 -2595.71291 5730.20974 -2595.83721 5730.3254 -2595.92597 5730.46519 -2595.96737 5730.61053 -2595.95593 5730.83105 -2595.89684 5730.95587 -2595.88592 5731.10571 -2595.84225 5731.22743 -2595.74456 5731.3025 -2595.60773 5731.31949 -2595.45258 5731.29643 -2595.189 5731.32984 -2594.80705 5731.42908 -2594.4367 5731.59111 -2594.08921 5731.81103 -2593.77514 5732.08214 -2593.50403 5732.39621 -2593.28411 5732.7437 -2593.12208 5733.11405 -2593.02284 5733.496 -2592.98943 5733.87795 -2593.02284 5734.2483 -2593.12208 5734.59579 -2593.28411 5734.90986 -2593.50403 5735.18097 -2593.77514 5735.40089 -2594.08921 5735.56292 -2594.4367 5735.66216 -2594.80705 5735.69557 -2595.189 5735.66216 -2595.57095 5735.56292 -2595.9413 5735.40089 -2596.28879 5735.18097 -2596.60286 5735.02726 -2596.75657 5734.94055 -2596.88634 5734.9101 -2597.03941 5734.9101 -2645.09412 5734.94591 -2645.25955 5735.04692 -2645.39535 5735.19506 -2645.47722 5735.36379 -2645.4905 5735.52291 -2645.43281 5735.58494 -2645.39384 5735.79999 -2645.31859 5736.04886 -2645.29055 5742.30314 -2645.29055 5742.55201 -2645.31859 5742.76706 -2645.39384 5742.95998 -2645.51506 5743.12109 -2645.67617 5743.24231 -2645.86909 5743.31756 -2646.08414 5743.3456 -2646.33301 5743.3456 -2647.35099 5743.31756 -2647.59986 5743.28466 -2647.69389 5743.26221 -2647.826 5743.28466 -2647.95811 5743.31756 -2648.05214 5743.3456 -2648.30101 5743.3456 -2649.31899 5743.31756 -2649.56786 5743.28448 -2649.66239 5743.26203 -2649.7945 5743.28448 -2649.92661 5743.31756 -2650.02114 5743.3456 -2650.27001 5743.3456 -2651.28799 5743.31756 -2651.53686 5743.28466 -2651.63089 5743.26221 -2651.763 5743.28466 -2651.89511 5743.31756 -2651.98914 5743.3456 -2652.23801 5743.3456 -2653.25599 5743.31756 -2653.50486 5743.28448 -2653.59939 5743.26203 -2653.7315 5743.28448 -2653.86361 5743.31756 -2653.95814 5743.34484 -2654.20028 5742.8204 -2654.20028 5742.68829 -2654.22272 5742.55201 -2654.27041 5742.30314 -2654.29845 5736.04886 -2654.29845 5735.79999 -2654.27041 5735.66371 -2654.22272 5735.5316 -2654.20028 5735.3101 -2654.20028 5735.15703 -2654.23072 5735.02726 -2654.31743 5734.94055 -2654.4472 5734.9101 -2654.60028 5734.9101 -2654.83172 5734.94055 -2654.9848 5735.02726 -2655.11457 5735.15703 -2655.20128 5735.3101 -2655.23172 5735.52874 -2655.23172 5735.66085 -2655.20928 5735.79999 -2655.16059 5736.04886 -2655.13255 5742.30314 -2655.13255 5742.60739 -2655.1643 5760.65471 -2655.1643 5760.80778 -2655.13385 5760.93755 -2655.04714 5762.3298 -2653.65489 5762.57511 -2653.45358 5762.83756 -2653.31329 5763.12234 -2653.2269 5763.43815 -2653.1958 5799.56805 -2653.1958 5799.86786 -2653.16455 5806.00086 -2653.16455 5806.15393 -2653.1341 5806.3178 -2653.01329 5806.40451 -2652.88352 5806.43496 -2652.73045 5806.40451 -2652.57738 5806.3178 -2652.44761 5806.18803 -2652.3609 5806.03496 -2652.33045 5799.86786 -2652.33045 5799.61899 -2652.30241 5799.47985 -2652.25372 5799.34774 -2652.23127 5798.82616 -2652.23127 5798.85344 -2651.98914 5798.88634 -2651.89511 5798.90879 -2651.763 5798.88634 -2651.63089 5798.85344 -2651.53686 5798.8254 -2651.28799 5798.8254 -2650.27001 5798.85344 -2650.02114 5798.88652 -2649.92661 5798.90897 -2649.7945 5798.88652 -2649.66239 5798.85344 -2649.56786 5798.8254 -2649.31899 5798.8254 -2648.30101 5798.85344 -2648.05214 5798.88634 -2647.95811 5798.90879 -2647.826 5798.88634 -2647.69389 5798.85344 -2647.59986 5798.8254 -2647.35099 5798.8254 -2646.33301 5798.85344 -2646.08414 5798.92869 -2645.86909 5799.04991 -2645.67617 5799.21102 -2645.51506 5799.40394 -2645.39384 5799.61899 -2645.31859 5799.86786 -2645.29055 5801.0748 -2645.29055 5801.22787 -2645.2601 5801.35764 -2645.17339 5801.44435 -2645.04362 5801.4748 -2644.89055 5801.4748 -2630.85564 5801.44232 -2630.69775 5801.35015 -2630.5655 5801.21325 -2630.48037 5801.05388 -2630.45619 5800.8979 -2630.49689 5800.77065 -2630.59585 5800.62263 -2630.76914 5796.38088 -2635.01089 5796.31008 -2635.10682 5796.2707 -2635.21937 5796.27845 -2635.44686 5796.27845 -2641.70114 5796.25041 -2641.95001 5796.17516 -2642.16506 5796.05394 -2642.35798 5795.89283 -2642.51909 5795.69991 -2642.64031 5795.48486 -2642.71556 5795.23599 -2642.7436 5794.21801 -2642.7436 5793.96914 -2642.71556 5793.87511 -2642.68266 5793.743 -2642.66021 5793.61089 -2642.68266 5793.51686 -2642.71556 5793.26799 -2642.7436 5792.25001 -2642.7436 5792.00114 -2642.71556 5791.90661 -2642.68248 5791.7745 -2642.66003 5791.64239 -2642.68248 5791.54786 -2642.71556 5791.29899 -2642.7436 5790.28101 -2642.7436 5790.03214 -2642.71556 5789.93811 -2642.68266 5789.806 -2642.66021 5789.67389 -2642.68266 5789.57986 -2642.71556 5789.33099 -2642.7436 5788.31301 -2642.7436 5788.06414 -2642.71556 5787.96961 -2642.68248 5787.8375 -2642.66003 5787.70539 -2642.68248 5787.61086 -2642.71556 5787.36199 -2642.7436 5786.34401 -2642.7436 5786.09514 -2642.71556 5786.00111 -2642.68266 5785.869 -2642.66021 5785.73689 -2642.68266 5785.64286 -2642.71556 5785.39399 -2642.7436 5784.37601 -2642.7436 5784.12714 -2642.71556 5784.03261 -2642.68248 5783.9005 -2642.66003 5783.76839 -2642.68248 5783.67386 -2642.71556 5783.42499 -2642.7436 5782.40701 -2642.7436 5782.15814 -2642.71556 5782.06411 -2642.68266 5781.932 -2642.66021 5781.79989 -2642.68266 5781.70586 -2642.71556 5781.45699 -2642.7436 5780.43901 -2642.7436 5780.19014 -2642.71556 5780.09561 -2642.68248 5779.9635 -2642.66003 5779.83139 -2642.68248 5779.73686 -2642.71556 5779.48799 -2642.7436 5778.47001 -2642.7436 5778.22114 -2642.71556 5778.12711 -2642.68266 5777.995 -2642.66021 5777.86289 -2642.68266 5777.76886 -2642.71556 5777.51999 -2642.7436 5776.50201 -2642.7436 5776.25314 -2642.71556 5776.15861 -2642.68248 5776.0265 -2642.66003 5775.89439 -2642.68248 5775.79986 -2642.71556 5775.55772 -2642.74284 5775.55772 -2642.2184 5775.53528 -2642.08629 5775.48759 -2641.95001 5775.45955 -2641.70114 5775.45955 -2635.44686 5775.48759 -2635.19799 5775.53528 -2635.06171 5775.55772 -2634.9296 5775.55772 -2634.40516 5775.79986 -2634.43244 5775.89439 -2634.46552 5776.0265 -2634.48797 5776.15861 -2634.46552 5776.25314 -2634.43244 5776.50201 -2634.4044 5777.51999 -2634.4044 5777.76886 -2634.43244 5777.86289 -2634.46534 5777.995 -2634.48779 5778.12711 -2634.46534 5778.22114 -2634.43244 5778.47001 -2634.4044 5779.48799 -2634.4044 5779.73686 -2634.43244 5779.83139 -2634.46552 5779.9635 -2634.48797 5780.09561 -2634.46552 5780.19014 -2634.43244 5780.43901 -2634.4044 5780.9961 -2634.4044 5781.14917 -2634.37395 5781.27894 -2634.28724 5781.36565 -2634.15747 5781.3961 -2634.0044 5781.3961 -2622.44537 5781.36294 -2622.08909 5781.34765 -2622.01219 5781.25516 -2621.7073 5781.22515 -2621.63485 5781.07496 -2621.35387 5781.03139 -2621.28867 5780.81612 -2621.02716 5780.61463 -2620.80538 5780.34819 -2620.42658 5780.14525 -2620.01671 5780.00726 -2619.58067 5779.93744 -2619.12868 5779.93744 -2618.67132 5780.00726 -2618.21933 5780.14525 -2617.78329 5780.34819 -2617.37342 5780.61131 -2616.99934 5780.92846 -2616.6698 5781.29219 -2616.39254 5781.69398 -2616.17406 5782.12441 -2616.01946 5782.5734 -2615.93239 5783.03042 -2615.91487 5783.48476 -2615.96732 5783.92577 -2616.08851 5784.3431 -2616.2756 5784.72699 -2616.5242 5784.90419 -2616.64328 5785.05472 -2616.66653 5785.20303 -2616.63183 5785.32761 -2616.5442 5785.4104 -2616.41635 5785.4394 -2616.26683 5785.4394 -2611.13636 5785.40895 -2610.98329 5785.32224 -2610.85352 5783.99819 -2609.52946 5783.79922 -2609.28376 5783.66525 -2609.02084 5783.58751 -2608.7307 5783.5693 -2608.49928 5783.5693 -2594.58926 5783.53885 -2594.43618 5783.4389 -2594.2576 5783.30317 -2594.1092 5783.07811 -2593.78779 5782.91608 -2593.4403 5782.81684 -2593.06995 5782.78343 -2592.688 5782.81684 -2592.30605 5782.91608 -2591.9357 5783.07811 -2591.58821 5783.29803 -2591.27414 5783.56914 -2591.00303 5783.88321 -2590.78311 5784.2307 -2590.62108 5784.60105 -2590.52184 5784.983 -2590.48843 5785.36495 -2590.52184 5785.7353 -2590.62108 5786.08279 -2590.78311 5786.39686 -2591.00303 5786.68024 -2591.29166 5786.80288 -2591.4057 5786.96146 -2591.45953 5787.12818 -2591.44372 5787.27382 -2591.36104 5787.37284 -2591.22599 5787.4079 -2591.06223 5787.4079 -2569.60896 5787.37745 -2569.45588 5787.27761 -2569.27742 5787.14222 -2569.12927 5786.91711 -2568.80779 5786.75508 -2568.4603 5786.65584 -2568.08995 5786.62243 -2567.708 5786.65584 -2567.32605 5786.75508 -2566.9557 5786.91711 -2566.60821 5787.13703 -2566.29414 5787.40814 -2566.02303 5787.72221 -2565.80311 5788.0697 -2565.64108 5788.44005 -2565.54184 5788.822 -2565.50843 5789.20395 -2565.54184 5789.5743 -2565.64108 5789.92179 -2565.80311 5790.23586 -2566.02303 5790.50697 -2566.29414 5790.72689 -2566.60821 5790.88892 -2566.9557 5790.98816 -2567.32605 5791.02157 -2567.708 5790.98816 -2568.08995 5790.88892 -2568.4603 5790.72689 -2568.80779 5790.50697 -2569.12186 5790.37967 -2569.26379 5790.29586 -2569.39824 5790.25074 -2569.4998 5790.2353 -2569.60985 5790.2353 -2619.38448 5790.27392 -2619.55596 5790.38232 -2619.69432 5790.53957 -2619.77286 5790.71531 -2619.7764 5790.8756 -2619.70426 5790.98948 -2619.57037 5791.143 -2619.27786 5791.39374 -2618.94419 5791.69475 -2618.65506 5792.03825 -2618.41796 5792.41533 -2618.23904 5792.81623 -2618.12291 5793.23057 -2618.0726 5793.64761 -2618.08941 5794.05656 -2618.1729 5794.44681 -2618.3209 5794.80828 -2618.52959 5795.13158 -2618.79356 5795.40835 -2619.10598 5795.63143 -2619.45874 5795.79503 -2619.84272 5795.89491 -2620.24797 5795.9285 -2620.664 5795.915 -2620.83119 5795.93429 -2620.99005 5796.0143 -2621.12863 5796.14223 -2621.22476 5796.2976 -2621.26306 5796.67861 -2621.27841 5797.08756 -2621.3619 5797.47781 -2621.5099 5797.83928 -2621.71859 5798.16258 -2621.98256 5798.43935 -2622.29498 5798.66243 -2622.64774 5798.82603 -2623.03172 5798.92591 -2623.43697 5798.9595 -2623.853 5798.92591 -2624.26903 5798.90247 -2624.48755 5798.95348 -2624.63254 5799.0554 -2624.74758 5799.19319 -2624.8157 5799.34648 -2624.82684 5799.52957 -2624.8046 5799.94661 -2624.82141 5800.35556 -2624.9049 5800.74581 -2625.0529 5800.8748 -2625.12737 5801.03299 -2625.17877 5801.19841 -2625.16139 5801.34245 -2625.07822 5801.44022 -2624.94366 5801.4748 -2624.78096 5801.4748 -2623.48665 5801.5059 -2623.17084 5801.59229 -2622.88606 5801.73258 -2622.62361 5801.93389 -2622.3783 5805.11659 -2619.19568 5805.2033 -2619.06591 5805.23375 -2618.91284 5805.23375 -2618.06536 5805.26179 -2617.81649 5805.33704 -2617.60144 5805.45826 -2617.40852 5805.61937 -2617.24741 5805.81229 -2617.12619 5806.02734 -2617.05094 5806.27621 -2617.0229 5808.19979 -2617.0229 5808.44866 -2617.05094 5808.66371 -2617.12619 5808.82519 -2617.22765 5808.96364 -2617.28199 5809.11236 -2617.28199 5809.25081 -2617.22765 5809.41229 -2617.12619 5809.62734 -2617.05094 5809.87621 -2617.0229 5811.79979 -2617.0229 5812.04866 -2617.05094 5812.26371 -2617.12619 5812.45663 -2617.24741 5812.61774 -2617.40852 5812.6856 -2617.51651 5812.77489 -2617.61643 5812.89217 -2617.68125 5813.02429 -2617.7037 5815.74539 -2617.7037 5815.89847 -2617.67325 5816.02824 -2617.58654 5816.13137 -2617.48341 5816.32429 -2617.36219 5816.53934 -2617.28694 5816.78821 -2617.2589 5818.71179 -2617.2589 5818.96066 -2617.28694 5819.17571 -2617.36219 5819.33719 -2617.46365 5819.47564 -2617.51799 5819.62436 -2617.51799 5819.76281 -2617.46365 5819.92429 -2617.36219 5820.13934 -2617.28694 5820.38821 -2617.2589 5820.60788 -2617.2589 5820.60788 -2618.61945 5820.15425 -2618.61945 5820.00118 -2618.6499 5819.87141 -2618.73661 5819.7847 -2618.86638 5819.75425 -2619.01945 5819.75425 -2619.90055 5819.7847 -2620.05362 5819.87141 -2620.18339 5820.00118 -2620.2701 5820.15425 -2620.30055 5820.60788 -2620.30055 5820.60788 -2621.6611 5820.38821 -2621.6611 5820.13934 -2621.63306 5819.92429 -2621.55781 5819.76281 -2621.45635 5819.62436 -2621.40201 5819.47564 -2621.40201 5819.33719 -2621.45635 5819.17571 -2621.55781 5818.96066 -2621.63306 5818.71179 -2621.6611 5816.78821 -2621.6611 5816.53934 -2621.63306 5816.32429 -2621.55781 5816.13137 -2621.43659 5815.97026 -2621.27548 5815.84904 -2621.08256 5815.82421 -2621.01159 5815.73987 -2620.87163 5815.60661 -2620.77708 5815.44665 -2620.7437 5813.0448 -2620.7437 5812.89173 -2620.77415 5812.76196 -2620.86086 5812.67525 -2620.99063 5812.6448 -2621.1437 5812.6448 -2622.4435 5812.6711 -2622.58615 5812.74654 -2622.71004 5812.86121 -2622.79888 5813.00001 -2622.84098 5813.15141 -2622.85804 5813.36646 -2622.93329 5813.55938 -2623.05451 5813.72049 -2623.21562 5813.84171 -2623.40854 5813.91696 -2623.62359 5813.945 -2623.87246 5813.945 -2628.82754 5813.91696 -2629.07641 5813.84171 -2629.29146 5813.72049 -2629.48438 5813.55938 -2629.64549 5813.36646 -2629.76671 5813.15141 -2629.84196 5812.90254 -2629.87 5809.34746 -2629.87 5809.09859 -2629.84196 5808.88354 -2629.76671 5808.69062 -2629.64549 5808.52951 -2629.48438 5808.40829 -2629.29146 5808.33304 -2629.07641 5808.305 -2628.82754 5808.305 -2623.87246 5808.33304 -2623.62359 5808.40829 -2623.40854 5808.52951 -2623.21562 5808.69062 -2623.05451 5808.88354 -2622.93329 5809.09859 -2622.85804 5809.24959 -2622.84103 5809.38839 -2622.79892 5809.50306 -2622.71008 5809.5785 -2622.58619 5809.6048 -2622.44354 5809.6048 -2621.66384 5809.58235 -2621.53173 5809.51753 -2621.41445 5809.41761 -2621.32515 5809.25081 -2621.22035 5809.11236 -2621.16601 5808.96364 -2621.16601 5808.82519 -2621.22035 5808.66371 -2621.32181 5808.44866 -2621.39706 5808.19979 -2621.4251 5807.35206 -2621.4251 5807.19899 -2621.45555 5807.06922 -2621.54225 5804.63196 -2623.97946 5804.54525 -2624.10923 5804.5148 -2624.2623 5804.5148 -2644.89055 5804.54525 -2645.04362 5804.63196 -2645.17339 5804.76173 -2645.2601 5804.9148 -2645.29055 5806.12214 -2645.29055 5806.37101 -2645.31859 5806.58606 -2645.39384 5806.77898 -2645.51506 5806.94009 -2645.67617 5807.06131 -2645.86909 5807.13656 -2646.08414 5807.1646 -2646.33301 5807.1646 -2647.35099 5807.13656 -2647.59986 5807.10366 -2647.69389 5807.08121 -2647.826 5807.10366 -2647.95811 5807.13656 -2648.05214 5807.1646 -2648.30101 5807.1646 -2649.31899 5807.13656 -2649.56786 5807.10348 -2649.66239 5807.08103 -2649.7945 5807.10348 -2649.92661 5807.13656 -2650.02114 5807.1646 -2650.27001 5807.1646 -2651.20081 5807.19505 -2651.35388 5807.28176 -2651.48365 5807.41153 -2651.57036 5807.5646 -2651.60081 5807.71767 -2651.57036 5807.84744 -2651.48365 5808.4801 -2650.85099 5808.72541 -2650.64968 5808.98786 -2650.50939 5809.27264 -2650.423 5809.58845 -2650.3919 5809.86819 -2650.3919 5810.02127 -2650.36145 5810.15104 -2650.27474 5810.29352 -2650.13226 5810.50811 -2649.99742 5810.60803 -2649.90813 5810.67285 -2649.79084 5810.6953 -2649.65873 5810.6953 -2649.34356 5810.66485 -2649.19048 5810.56434 -2649.01128 5810.42893 -2648.86386 5810.20411 -2648.54279 5810.04208 -2648.1953 5809.94284 -2647.82495 5809.90943 -2647.443 5809.94284 -2647.06105 5810.04208 -2646.6907 5810.20411 -2646.34321 5810.42403 -2646.02914 5810.69514 -2645.75803 5811.00921 -2645.53811 5811.3567 -2645.37608 5811.72705 -2645.27684 5812.109 -2645.24343 5812.49095 -2645.27684 5812.8613 -2645.37608 5813.20879 -2645.53811 5813.52342 -2645.75842 5813.65374 -2645.84136 5813.80578 -2645.86873 5813.95685 -2645.83645 5814.08443 -2645.74933 5814.16947 -2645.62036 5814.1993 -2645.46879 5814.1993 -2640.89367 5814.15798 -2640.30252 5814.04413 -2639.74766 5813.85882 -2639.2124 5813.69494 -2638.88008 5813.60643 -2638.76209 5813.48117 -2638.6842 5813.33619 -2638.657 5813.14746 -2638.657 5812.89859 -2638.62896 5812.68354 -2638.55371 5812.49062 -2638.43249 5812.32951 -2638.27138 5812.20829 -2638.07846 5812.13304 -2637.86341 5812.105 -2637.61454 5812.105 -2632.65946 5812.13304 -2632.41059 5812.20829 -2632.19554 5812.32951 -2632.00262 5812.49062 -2631.84151 5812.68354 -2631.72029 5812.89859 -2631.64504 5813.14746 -2631.617 5816.70254 -2631.617 5816.95141 -2631.64504 5817.16646 -2631.72029 5817.35938 -2631.84151 5817.52049 -2632.00262 5817.64171 -2632.19554 5817.71696 -2632.41059 5817.745 -2632.65946 5817.745 -2637.61454 5817.71696 -2637.86341 5817.64171 -2638.07846 5817.52049 -2638.27138 5817.35938 -2638.43249 5817.21389 -2638.52391 5817.11397 -2638.6132 5817.04915 -2638.73049 5817.0267 -2638.8626 5817.0267 -2648.9199 5817.05715 -2649.07297 5817.14386 -2649.20274 5817.27363 -2649.28945 5817.4267 -2649.3199 5817.98739 -2649.3199 5818.10482 -2649.30228 5819.16426 -2649.30228 5819.26146 -2649.29029 5819.36631 -2649.24783 5819.66807 -2649.15629 5820.00155 -2649.12345 5823.70245 -2649.12345 5824.03593 -2649.15629 5824.35118 -2649.25504 5824.44254 -2649.29029 5824.53974 -2649.30228 5825.2296 -2649.30228 5825.20827 -2649.37259 5825.10973 -2649.55694 5825.06784 -2649.68034 5825.06784 -2649.81066 5825.10973 -2649.93406 5825.20827 -2650.11841 5825.29981 -2650.42017 5825.33071 -2650.734 5825.29981 -2651.04783 5825.20827 -2651.34959 5825.11 -2651.53344 5825.06811 -2651.65684 5825.06811 -2651.78716 5825.11 -2651.91056 5825.20827 -2652.09441 5825.29981 -2652.39617 5825.33071 -2652.71 5825.29981 -2653.02383 5825.20827 -2653.32559 5825.10973 -2653.50994 5825.06784 -2653.63334 5825.06784 -2653.76366 5825.10973 -2653.88706 5825.20827 -2654.07141 5825.29981 -2654.37317 5825.33071 -2654.687 5825.29981 -2655.00083 5825.20827 -2655.30259 5825.10973 -2655.48694 5825.06784 -2655.61034 5825.06784 -2655.74066 5825.10973 -2655.86406 5825.20827 -2656.04841 5825.29981 -2656.35017 5825.33071 -2656.664 5825.29981 -2656.97783 5825.20827 -2657.27959 5825.10973 -2657.46394 5825.06784 -2657.58734 5825.06784 -2657.71766 5825.10973 -2657.84106 5825.20827 -2658.02541 5825.29981 -2658.32717 5825.33071 -2658.641 5825.29981 -2658.95483 5825.20827 -2659.25659 5825.10973 -2659.44094 5825.06784 -2659.56434 5825.06784 -2659.69466 5825.10973 -2659.81806 5825.20827 -2660.00241 5825.29981 -2660.30417 5825.33071 -2660.618 5825.29981 -2660.93183 5825.20827 -2661.23359 5825.10973 -2661.41794 5825.06784 -2661.54134 5825.06784 -2661.67166 5825.10973 -2661.79506 5825.20827 -2661.97941 5825.29981 -2662.28117 5825.33071 -2662.595 5825.29981 -2662.90883 5825.20827 -2663.21059 5825.10973 -2663.39494 5825.06784 -2663.51834 5825.06784 -2663.64866 5825.10973 -2663.77206 5825.20827 -2663.95641 5825.29981 -2664.25817 5825.33071 -2664.572 5825.29981 -2664.88583 5825.20827 -2665.18759 5825.10973 -2665.37194 5825.06784 -2665.49534 5825.06784 -2665.62566 5825.10973 -2665.74906 5825.20827 -2665.93341 5825.29981 -2666.23517 5825.33071 -2666.549 5825.29981 -2666.86283 5825.20827 -2667.16459 5825.10973 -2667.34894 5825.06784 -2667.47234 5825.06784 -2667.60266 5825.10973 -2667.72606 5825.20827 -2667.91041 5825.29981 -2668.21217 5825.33071 -2668.526 5825.29981 -2668.83983 5825.20827 -2669.14159 5825.10973 -2669.32594 5825.06784 -2669.44934 5825.06784 -2669.57966 5825.10973 -2669.70306 5825.20827 -2669.88741 5825.29981 -2670.18917 5825.33071 -2670.503 5825.29981 -2670.81683 5825.20827 -2671.11859 5825.10973 -2671.30294 5825.06784 -2671.42634 5825.06784 -2671.55666 5825.10973 -2671.68006 5825.20827 -2671.86441 5825.29981 -2672.16617 5825.33071 -2672.48 5825.29981 -2672.79383 5825.20827 -2673.09559 5825.10973 -2673.27994 5825.06784 -2673.40334 5825.06784 -2673.53366 5825.10973 -2673.65706 5825.20827 -2673.84141 5825.29981 -2674.14317 5825.33071 -2674.457 5825.29981 -2674.77083 5825.20827 -2675.07259 5825.10973 -2675.25694 5825.06784 -2675.38034 5825.06784 -2675.51066 5825.10973 -2675.63406 5825.20827 -2675.81841 5825.29981 -2676.12017 5825.33071 -2676.434 5825.29981 -2676.74783 5825.20827 -2677.04959 5825.11 -2677.23344 5825.06811 -2677.35684 5825.06811 -2677.48716 5825.11 -2677.61056 5825.20827 -2677.79441 5825.29981 -2678.09617 5825.33071 -2678.41 5825.29981 -2678.72383 5825.20827 -2679.02559 5825.10973 -2679.20994 5825.06784 -2679.33334 5825.06784 -2679.46366 5825.10973 -2679.58706 5825.20827 -2679.77141 5825.29981 -2680.07317 5825.33071 -2680.387 5825.29981 -2680.70083 5825.20827 -2681.00259 5825.10973 -2681.18694 5825.06784 -2681.31034 5825.06784 -2681.44066 5825.10973 -2681.56406 5825.20827 -2681.74841 5825.29981 -2682.05017 5825.33071 -2682.364 5825.29981 -2682.67783 5825.20827 -2682.97959 5825.10973 -2683.16394 5825.06784 -2683.28734 5825.06784 -2683.41766 5825.10973 -2683.54106 5825.20827 -2683.72541 5825.29981 -2684.02717 5825.33071 -2684.341 5825.29981 -2684.65483 5825.20827 -2684.95659 5825.10973 -2685.14094 5825.06784 -2685.26434 5825.06784 -2685.39466 5825.10973 -2685.51806 5825.20827 -2685.70241 5825.29981 -2686.00417 5825.33071 -2686.318 5825.29981 -2686.63183 5825.20827 -2686.93359 5825.10973 -2687.11794 5825.06784 -2687.24134 5825.06784 -2687.37166 5825.10973 -2687.49506 5825.20827 -2687.67941 5825.29981 -2687.98117 5825.33071 -2688.295 5825.29981 -2688.60883 5825.20827 -2688.91059 5825.10973 -2689.09494 5825.06784 -2689.21834 5825.06784 -2689.34866 5825.10973 -2689.47206 5825.20827 -2689.65641 5825.2296 -2689.72672 5824.53974 -2689.72672 5824.44254 -2689.73871 5824.33769 -2689.78117 5823.99822 -2689.88414 5823.8506 -2689.96618 5823.74999 -2690.10184 5823.71434 -2690.27708 5823.74999 -2690.44216 5823.8506 -2690.57782 5823.99822 -2690.65986 5824.35118 -2690.77004 5824.44254 -2690.80529 5824.53974 -2690.81727 5825.2296 -2690.81727 5825.20827 -2690.88759 5825.10973 -2691.07194 5825.06784 -2691.19534 5825.06784 -2691.32566 5825.10973 -2691.44906 5825.20827 -2691.63341 5825.29981 -2691.93517 5825.33071 -2692.249 5825.29981 -2692.56283 5825.20827 -2692.86459 5825.10973 -2693.04894 5825.06784 -2693.17234 5825.06784 -2693.30266 5825.10973 -2693.42606 5825.20827 -2693.61041 5825.29981 -2693.91217 5825.33071 -2694.226 5825.29981 -2694.53983 5825.20827 -2694.84159 5825.10973 -2695.02594 5825.06784 -2695.14934 5825.06784 -2695.27966 5825.10973 -2695.40306 5825.20827 -2695.58741 5825.2296 -2695.65773 5824.53974 -2695.65773 5824.44254 -2695.66971 5824.33769 -2695.71217 5823.99822 -2695.81514 5823.8506 -2695.89718 5823.74999 -2696.03284 5823.71434 -2696.20808 5823.74999 -2696.37316 5823.8506 -2696.50882 5823.99822 -2696.59086 5824.35118 -2696.70104 5824.44254 -2696.73629 5824.53974 -2696.74827 5825.2296 -2696.74827 5825.20827 -2696.81859 5825.10973 -2697.00294 5825.06784 -2697.12634 5825.06784 -2697.25666 5825.10973 -2697.38006 5825.20827 -2697.56441 5825.29981 -2697.86617 5825.33071 -2698.18 5825.29981 -2698.49383 5825.20827 -2698.79559 5825.10973 -2698.97994 5825.06784 -2699.10334 5825.06784 -2699.23366 5825.10973 -2699.35706 5825.20827 -2699.54141 5825.29981 -2699.84317 5825.33071 -2700.157 5825.29981 -2700.47083 5825.20827 -2700.77259 5825.10973 -2700.95694 5825.06784 -2701.08034 5825.06784 -2701.21066 5825.10973 -2701.33406 5825.20827 -2701.51841 5825.29981 -2701.82017 5825.33071 -2702.134 5825.29981 -2702.44783 5825.20827 -2702.74959 5825.11 -2702.93344 5825.06811 -2703.05684 5825.06811 -2703.18716 5825.11 -2703.31056 5825.20827 -2703.49441 5825.29981 -2703.79617 5825.33071 -2704.11 5825.29981 -2704.42383 5825.20827 -2704.72559 5825.10973 -2704.90994 5825.06784 -2705.03334 5825.06784 -2705.16366 5825.10973 -2705.28706 5825.20827 -2705.47141 5825.29981 -2705.77317 5825.33071 -2706.087 5825.29981 -2706.40083 5825.20827 -2706.70259 5825.10973 -2706.88694 5825.06784 -2707.01034 5825.06784 -2707.14066 5825.10973 -2707.26406 5825.20827 -2707.44841 5825.29981 -2707.75017 5825.33071 -2708.064 5825.29981 -2708.37783 5825.20827 -2708.67959 5825.10973 -2708.86394 5825.06784 -2708.98734 5825.06784 -2709.11766 5825.10973 -2709.24106 5825.20827 -2709.42541 5825.29981 -2709.72717 5825.33071 -2710.041 5825.29981 -2710.35483 5825.20827 -2710.65659 5825.10973 -2710.84094 5825.06784 -2710.96434 5825.06784 -2711.09466 5825.10973 -2711.21806 5825.20827 -2711.40241 5825.2296 -2711.47273 5824.53974 -2711.47273 5824.44254 -2711.48471 5824.33769 -2711.52717 5823.99822 -2711.63014 5823.8506 -2711.71218 5823.74999 -2711.84784 5823.71434 -2712.02308 5823.74999 -2712.18816 5823.8506 -2712.32382 5823.99822 -2712.40586 5824.35118 -2712.51604 5824.44254 -2712.55129 5824.53974 -2712.56327 5825.2296 -2712.56327 5825.20827 -2712.63359 5825.10973 -2712.81794 5825.06784 -2712.94134 5825.06784 -2713.07166 5825.10973 -2713.19506 5825.20827 -2713.37941 5825.29981 -2713.68117 5825.33071 -2713.995 5825.29981 -2714.30883 5825.20827 -2714.61059 5825.10973 -2714.79494 5825.06784 -2714.91834 5825.06784 -2715.04866 5825.10973 -2715.17206 5825.20827 -2715.35641 5825.29981 -2715.65817 5825.33071 -2715.972 5825.3053 -2716.23008 5825.31489 -2716.36457 5825.36862 -2716.48824 5825.46039 -2716.58702 5825.61001 -2716.65953 5825.87014 -2716.80972 5826.04665 -2716.96048 5826.83391 -2717.74774 5827.03288 -2717.99344 5827.16685 -2718.25636 5827.24459 -2718.5465 5827.2628 -2718.77792 5827.2628 -2720.75427 5827.30056 -2720.92392 5827.40671 -2721.06154 5827.56122 -2721.14115 5827.7349 -2721.14771 5828.23609 -2721.05587 5828.84559 -2721.019 5832.75841 -2721.019 5833.36791 -2721.05587 5833.95661 -2721.16375 5834.52802 -2721.34181 5835.07379 -2721.58744 5835.58598 -2721.89707 5836.05711 -2722.26618 5836.48032 -2722.68939 5836.84943 -2723.16052 5837.15906 -2723.67271 5837.40469 -2724.21848 5837.58275 -2724.78989 5837.69063 -2725.37859 5837.72677 -2725.976 5837.69063 -2726.57341 5837.58275 -2727.16211 5837.40469 -2727.73352 5837.15906 -2728.27929 5836.84943 -2728.79148 5836.48032 -2729.26261 5836.05711 -2729.68582 5835.58598 -2730.05493 5835.07379 -2730.36456 5834.52802 -2730.61019 5833.95661 -2730.78825 5833.36791 -2730.89613 5832.75841 -2730.933 5828.84559 -2730.933 5828.23609 -2730.89613 5827.64739 -2730.78825 5827.07598 -2730.61019 5826.53021 -2730.36456 5826.01802 -2730.05493 5825.54689 -2729.68582 5825.12368 -2729.26261 5824.75457 -2728.79148 5824.44494 -2728.27929 5824.19931 -2727.73352 5824.02125 -2727.16211 5823.91337 -2726.57341 5823.87723 -2725.976 5823.91337 -2725.37859 5824.02125 -2724.78989 5824.20125 -2724.21417 5824.23637 -2724.05967 5824.20876 -2723.90365 5824.12273 -2723.7706 5823.99179 -2723.68138 5823.83649 -2723.65 5797.86976 -2723.65 5797.71669 -2723.68045 5797.58692 -2723.76716 5796.91246 -2724.44161 5796.66676 -2724.64058 5796.40384 -2724.77455 5796.1137 -2724.85229 5795.88228 -2724.8705 5780.9092 -2724.8705 5780.75613 -2724.90095 5780.57735 -2725.00109 5780.42907 -2725.13692 5780.10779 -2725.36189 5779.74184 -2725.53253 5779.61767 -2725.62298 5779.53675 -2725.75357 5779.51102 -2725.90502 5779.54427 -2726.05501 5779.6316 -2726.1814 5779.76012 -2726.26555 5779.91089 -2726.29505 5795.31841 -2726.29505 5795.90605 -2726.13584 5796.288 -2726.10243 5796.66995 -2726.13584 5797.0403 -2726.23508 5797.38779 -2726.39711 5797.70186 -2726.61703 5797.97297 -2726.88814 5798.19289 -2727.20221 5798.35492 -2727.5497 5798.45416 -2727.92005 5798.48757 -2728.302 5798.45416 -2728.68395 5798.35492 -2729.0543 5798.19289 -2729.40179 5797.97297 -2729.71586 5797.70186 -2729.98697 5797.38779 -2730.20689 5797.0403 -2730.36892 5796.66995 -2730.46816 5796.288 -2730.50157 5795.90605 -2730.46816 5795.5357 -2730.36892 5795.47588 -2730.34103 5795.30683 -2730.30355 5777.75718 -2730.30355 5777.62507 -2730.326 5777.50778 -2730.39082 5777.41849 -2730.49074 5777.28384 -2730.70503 5777.12273 -2730.86614 5776.92981 -2730.98736 5776.71476 -2731.06261 5776.46589 -2731.09065 5772.18011 -2731.09065 5771.93124 -2731.06261 5771.71619 -2730.98736 5771.52327 -2730.86614 5771.36216 -2730.70503 5771.15172 -2730.35818 5771.01846 -2730.26363 5770.8585 -2730.23025 5770.69854 -2730.26363 5770.56528 -2730.35818 5770.35484 -2730.70503 5770.19373 -2730.86614 5770.00081 -2730.98736 5769.78576 -2731.06261 5769.53689 -2731.09065 5768.72667 -2731.09065 5768.72667 -2729.43483 5770.73765 -2729.43483 5770.89072 -2729.40438 5771.02049 -2729.31767 5771.1072 -2729.1879 5771.13765 -2729.03483 5771.13765 -2727.56317 5771.1072 -2727.4101 5771.02049 -2727.28033 5770.89072 -2727.19362 5770.73765 -2727.16317 5768.72667 -2727.16317 5768.72667 -2725.50735 5769.53689 -2725.50735 5769.78576 -2725.53539 5770.00081 -2725.61064 5770.19373 -2725.73186 5770.35484 -2725.89297 5770.56528 -2726.23982 5770.69854 -2726.33437 5770.8585 -2726.36775 5771.01846 -2726.33437 5771.15172 -2726.23982 5771.36216 -2725.89297 5771.52327 -2725.73186 5771.71619 -2725.61064 5771.93124 -2725.53539 5772.18011 -2725.50735 5773.05522 -2725.50735 5773.20829 -2725.4769 5773.33806 -2725.39019 5773.42477 -2725.26042 5773.49029 -2725.08937 5773.58658 -2724.68827 5773.5964 -2724.62628 5773.63 -2724.18367 5773.63 -2723.15484 5773.60755 -2723.02272 5773.54273 -2722.90544 5773.44281 -2722.81615 5773.31581 -2722.73635 5773.17736 -2722.68201 5773.02864 -2722.68201 5772.89019 -2722.73635 5772.72871 -2722.83781 5772.51366 -2722.91306 5772.26479 -2722.9411 5772.04512 -2722.9411 5772.04512 -2721.58055 5772.49875 -2721.58055 5772.65182 -2721.5501 5772.78159 -2721.46339 5772.8683 -2721.33362 5772.89875 -2721.18055 5772.89875 -2720.29945 5772.8683 -2720.14638 5772.78159 -2720.01661 5772.65182 -2719.9299 5772.49875 -2719.89945 5772.04512 -2719.89945 5772.04512 -2718.5389 5772.26479 -2718.5389 5772.51366 -2718.56694 5772.72871 -2718.64219 5772.89019 -2718.74365 5773.02864 -2718.79799 5773.17736 -2718.79799 5773.31581 -2718.74365 5773.44281 -2718.66385 5773.54273 -2718.57456 5773.60755 -2718.45728 5773.63 -2718.32516 5773.63 -2715.93386 5773.59955 -2715.78079 5773.51284 -2715.65102 5773.38307 -2715.56431 5773.23 -2715.53386 5773.07693 -2715.56431 5772.94716 -2715.65102 5770.67803 -2717.92014 5770.59132 -2718.04991 5770.56088 -2718.20298 5770.56088 -2719.89945 5769.0609 -2719.89945 5768.90534 -2719.86516 5768.74872 -2719.89431 5768.61591 -2719.98227 5755.53102 -2733.06716 5755.44431 -2733.19693 5755.41386 -2733.35 5755.44431 -2733.50307 5755.53102 -2733.63284 5755.66079 -2733.71955 5755.81386 -2733.75 5821.48154 -2733.75 5821.79597 -2733.78305 5822.07661 -2733.87423 5822.33674 -2734.02442 5822.51324 -2734.17517 5831.23321 -2742.89504 5831.36298 -2742.98175 5831.51605 -2743.0122 5872.5258 -2743.0122 5872.68575 -2742.97882 5872.81902 -2742.88427 5872.90335 -2742.74431 5872.95154 -2742.60659 5873.07276 -2742.41367 5873.23387 -2742.25256 5873.42679 -2742.13134 5873.64184 -2742.05609 5873.89071 -2742.02805 5874.84825 -2742.02805 5875.00132 -2741.9976 5875.13109 -2741.91089 5875.2178 -2741.78112 5875.24825 -2741.62805 5875.24825 -2741.1071 5877.49462 -2741.1071 5877.49462 -2741.62805 5877.52507 -2741.78112 5877.61178 -2741.91089 5877.74155 -2741.9976 5877.89462 -2742.02805 5879.75129 -2742.02805 5880.00016 -2742.05609 5880.21521 -2742.13134 5880.33456 -2742.20633 5880.49368 -2742.26402 5880.66241 -2742.25074 5880.81055 -2742.16887 5880.91157 -2742.03307 5880.94737 -2741.86764 5880.94737 -2741.1071 5883.19375 -2741.1071 5883.19375 -2742.01574 5883.16571 -2742.26461 5883.09046 -2742.47966 5882.96924 -2742.67258 5882.80813 -2742.83369 5882.61521 -2742.95491 5882.40016 -2743.03016 5882.15129 -2743.0582 5881.19375 -2743.0582 5881.04068 -2743.08865 5880.91091 -2743.17536 5880.8242 -2743.30513 5880.79375 -2743.4582 5880.79375 -2745.78149 5880.76571 -2746.03036 5880.69046 -2746.24541 5880.6086 -2746.37569 5880.55426 -2746.51414 5880.55426 -2746.66286 5880.6086 -2746.80131 5880.69046 -2746.93159 5880.76571 -2747.14664 5880.79375 -2747.39551 5880.79375 -2750.10649 5880.76571 -2750.35536 5880.69046 -2750.57041 5880.6086 -2750.70069 5880.55426 -2750.83914 5880.55426 -2750.98786 5880.6086 -2751.12631 5880.69046 -2751.25659 5880.76571 -2751.47164 5880.79375 -2751.72051 5880.79375 -2754.43149 5880.76571 -2754.68036 5880.69046 -2754.89541 5880.6086 -2755.02569 5880.55426 -2755.16414 5880.55426 -2755.31286 5880.6086 -2755.45131 5880.69046 -2755.58159 5880.76571 -2755.79664 5880.79375 -2756.04551 5880.79375 -2756.46202 5878.54738 -2756.46202 5878.54738 -2755.87395 5878.51693 -2755.72088 5878.43022 -2755.59111 5878.30045 -2755.5044 5878.14738 -2755.47395 5875.49463 -2755.47395 5875.34155 -2755.5044 5875.21178 -2755.59111 5875.12507 -2755.72088 5875.09463 -2755.87395 5875.09463 -2756.46202 5872.84825 -2756.46202 5872.84825 -2756.04551 5872.87629 -2755.79664 5872.95154 -2755.58159 5873.0334 -2755.45131 5873.08774 -2755.31286 5873.08774 -2755.16414 5873.0334 -2755.02569 5872.95154 -2754.89541 5872.90328 -2754.75749 5872.81895 -2754.61753 5872.68568 -2754.52298 5872.52573 -2754.4896 5831.94306 -2754.4896 5831.78999 -2754.52005 5831.66022 -2754.60676 5831.57351 -2754.73653 5831.54306 -2754.8896 5831.57351 -2755.04267 5831.66022 -2755.17244 5836.09542 -2759.60764 5836.22519 -2759.69435 5836.37826 -2759.7248 5851.72542 -2759.7248 5851.85753 -2759.70235 5851.97481 -2759.63753 5852.06411 -2759.53761 5852.19926 -2759.32252 5852.36037 -2759.16141 5852.55329 -2759.04019 5852.76834 -2758.96494 5853.01721 -2758.9369 5854.94079 -2758.9369 5855.18966 -2758.96494 5855.40471 -2759.04019 5855.56619 -2759.14165 5855.70464 -2759.19599 5855.85336 -2759.19599 5855.99181 -2759.14165 5856.15329 -2759.04019 5856.36834 -2758.96494 5856.61721 -2758.9369 5858.54079 -2758.9369 5858.78966 -2758.96494 5859.00471 -2759.04019 5859.19763 -2759.16141 5859.35874 -2759.32252 5859.47996 -2759.51544 5859.55521 -2759.73049 5859.58073 -2759.95699 5859.62284 -2760.09579 5859.71167 -2760.21046 5859.83556 -2760.2859 5859.97821 -2760.3122 5872.5258 -2760.3122 5872.68575 -2760.27882 5872.81902 -2760.18427 5872.90335 -2760.04431 5872.95154 -2759.90659 5873.0334 -2759.77631 5873.08774 -2759.63786 5873.08774 -2759.48914 5873.0334 -2759.35069 5872.95154 -2759.22041 5872.87629 -2759.00536 5872.84825 -2758.75649 5872.84825 -2758.33998 5875.09463 -2758.33998 5875.09463 -2758.92805 5875.12507 -2759.08112 5875.21178 -2759.21089 5875.34155 -2759.2976 5875.49463 -2759.32805 5878.14738 -2759.32805 5878.30045 -2759.2976 5878.43022 -2759.21089 5878.51693 -2759.08112 5878.54738 -2758.92805 5878.54738 -2758.33998 5880.79375 -2758.33998 5880.79375 -2758.75649 5880.76571 -2759.00536 5880.69046 -2759.22041 5880.6086 -2759.35069 5880.55426 -2759.48914 5880.55426 -2759.63786 5880.6086 -2759.77631 5880.69046 -2759.90659 5880.76571 -2760.12164 5880.79375 -2760.37051 5880.79375 -2763.08149 5880.76571 -2763.33036 5880.69046 -2763.54541 5880.6086 -2763.67569 5880.55426 -2763.81414 5880.55426 -2763.96286 5880.6086 -2764.10131 5880.69046 -2764.23159 5880.76571 -2764.44664 5880.79375 -2764.69551 5880.79375 -2767.40649 5880.76571 -2767.65536 5880.69046 -2767.87041 5880.6086 -2768.00069 5880.55426 -2768.13914 5880.55426 -2768.28786 5880.6086 -2768.42631 5880.69046 -2768.55659 5880.76571 -2768.77164 5880.79375 -2769.02051 5880.79375 -2771.73149 5880.76571 -2771.98036 5880.69046 -2772.19541 5880.6086 -2772.32569 5880.55426 -2772.46414 5880.55426 -2772.61286 5880.6086 -2772.75131 5880.69046 -2772.88159 5880.76571 -2773.09664 5880.79375 -2773.34551 5880.79375 -2776.05649 5880.76571 -2776.30536 5880.69046 -2776.52041 5880.6086 -2776.65069 5880.55426 -2776.78914 5880.55426 -2776.93786 5880.6086 -2777.07631 5880.69046 -2777.20659 5880.76571 -2777.42164 5880.79375 -2777.67051 5880.79375 -2780.38149 5880.76571 -2780.63036 5880.69046 -2780.84541 5880.56924 -2781.03833 5880.40813 -2781.19944 5880.21521 -2781.32066 5880.00016 -2781.39591 5879.75129 -2781.42395 5873.89071 -2781.42395 5873.64184 -2781.39591 5873.42679 -2781.32066 5873.23387 -2781.19944 5873.07276 -2781.03833 5872.95154 -2780.84541 5872.88323 -2780.65019 5872.7989 -2780.51023 5872.66563 -2780.41568 5872.50568 -2780.3823 5871.73596 -2780.3823 5871.58288 -2780.41275 5871.40365 -2780.51329 5871.25584 -2780.64908 5870.93479 -2780.87389 5870.5873 -2781.03592 5870.21695 -2781.13516 5869.835 -2781.16857 5869.45305 -2781.13516 5869.0827 -2781.03592 5868.73521 -2780.87389 5868.42114 -2780.65397 5868.15003 -2780.38286 5867.93011 -2780.06879 5867.76808 -2779.7213 5867.66884 -2779.35095 5867.63543 -2778.969 5867.66884 -2778.58705 5867.76808 -2778.2167 5867.93011 -2777.86921 5868.15003 -2777.55514 5868.42114 -2777.28403 5868.58648 -2777.16826 5868.69251 -2777.05846 5868.7497 -2776.91693 5868.7497 -2776.76428 5868.69251 -2776.62275 5868.58648 -2776.51294 5868.40514 -2776.38597 5868.13403 -2776.11486 5867.91411 -2775.80079 5867.75208 -2775.4533 5867.65284 -2775.08295 5867.61943 -2774.701 5867.65284 -2774.31905 5867.75208 -2773.9487 5867.91411 -2773.60121 5868.13403 -2773.28714 5868.40514 -2773.01603 5868.64168 -2772.85041 5868.74772 -2772.7406 5868.8049 -2772.59907 5868.8049 -2772.44642 5868.74772 -2772.30489 5868.64168 -2772.19508 5868.45014 -2772.06097 5868.17903 -2771.78986 5867.95911 -2771.47579 5867.79708 -2771.1283 5867.69784 -2770.75795 5867.66443 -2770.376 5867.69784 -2769.99405 5867.79708 -2769.6237 5867.95911 -2769.27621 5868.17903 -2768.96214 5868.45014 -2768.69103 5868.76421 -2768.47111 5869.1117 -2768.30908 5869.32856 -2768.25097 5869.47443 -2768.17733 5869.57868 -2768.05151 5869.62392 -2767.89449 5869.60259 -2767.73249 5869.51826 -2767.59253 5869.38499 -2767.49798 5869.22504 -2767.4646 5859.84233 -2767.4646 5859.68237 -2767.49798 5859.54911 -2767.59253 5859.46478 -2767.73249 5859.44096 -2767.80056 5859.31974 -2767.99348 5859.15863 -2768.15459 5859.06069 -2768.21613 5858.96077 -2768.30543 5858.89595 -2768.42271 5858.8735 -2768.55482 5858.8735 -2769.27745 5858.89595 -2769.40956 5858.96077 -2769.52684 5859.07863 -2769.62741 5859.23974 -2769.78852 5859.36096 -2769.98144 5859.43621 -2770.19649 5859.46425 -2770.44536 5859.46425 -2772.76264 5859.43621 -2773.01151 5859.36096 -2773.22656 5859.23974 -2773.41948 5858.96077 -2773.68116 5858.89595 -2773.79844 5858.8735 -2773.93055 5858.8735 -2777.27035 5858.90395 -2777.42342 5858.99066 -2777.55319 5859.12043 -2777.6399 5859.2735 -2777.67035 5859.49589 -2777.67035 5859.74476 -2777.69839 5859.95981 -2777.77364 5860.15273 -2777.89486 5860.31384 -2778.05597 5860.43506 -2778.24889 5860.51031 -2778.46394 5860.53835 -2778.71281 5860.53835 -2782.21119 5860.51031 -2782.46006 5860.43506 -2782.67511 5860.31384 -2782.86803 5860.15273 -2783.02914 5859.95981 -2783.15036 5859.74476 -2783.22561 5859.49589 -2783.25365 5855.21011 -2783.25365 5854.96124 -2783.22561 5854.74619 -2783.15036 5854.55327 -2783.02914 5854.39216 -2782.86803 5854.18172 -2782.52118 5854.04846 -2782.42663 5853.8885 -2782.39325 5853.72854 -2782.42663 5853.59528 -2782.52118 5853.38484 -2782.86803 5853.22373 -2783.02914 5853.03081 -2783.15036 5852.81576 -2783.22561 5852.56689 -2783.25365 5851.75667 -2783.25365 5851.75667 -2781.59783 5853.76765 -2781.59783 5853.92072 -2781.56738 5854.05049 -2781.48067 5854.1372 -2781.3509 5854.16765 -2781.19783 5854.16765 -2779.72617 5854.1372 -2779.5731 5854.05049 -2779.44333 5853.92072 -2779.35662 5853.76765 -2779.32617 5851.75667 -2779.32617 5851.75667 -2777.67035 5852.56689 -2777.67035 5852.81576 -2777.69839 5853.03081 -2777.77364 5853.22373 -2777.89486 5853.38484 -2778.05597 5853.59528 -2778.40282 5853.72854 -2778.49737 5853.8885 -2778.53075 5854.04846 -2778.49737 5854.18172 -2778.40282 5854.39216 -2778.05597 5854.55327 -2777.89486 5854.74619 -2777.77364 5854.96124 -2777.69839 5855.21011 -2777.67035 5855.60194 -2777.67035 5855.74462 -2777.64404 5855.86853 -2777.56856 5855.95736 -2777.45386 5855.99944 -2777.31501 5856.0461 -2776.87727 5856.0461 -2773.94777 5856.01029 -2773.78235 5855.90928 -2773.64654 5855.76114 -2773.56467 5855.59241 -2773.55139 5855.43329 -2773.60908 5855.28571 -2773.70181 5855.07066 -2773.77706 5854.82179 -2773.8051 5854.60212 -2773.8051 5854.60212 -2772.44455 5855.05575 -2772.44455 5855.20882 -2772.4141 5855.33859 -2772.32739 5855.4253 -2772.19762 5855.45575 -2772.04455 5855.45575 -2771.16345 5855.4253 -2771.01038 5855.33859 -2770.88061 5855.20882 -2770.7939 5855.05575 -2770.76345 5854.60212 -2770.76345 5854.60212 -2769.4029 5854.82179 -2769.4029 5855.07066 -2769.43094 5855.28571 -2769.50619 5855.43329 -2769.59892 5855.59241 -2769.65661 5855.76114 -2769.64333 5855.90928 -2769.56146 5856.01029 -2769.42565 5856.0461 -2769.26023 5856.0461 -2768.57204 5856.01029 -2768.40661 5855.90928 -2768.27081 5855.76114 -2768.18894 5855.59241 -2768.17566 5855.43329 -2768.23335 5855.36571 -2768.27581 5855.15066 -2768.35106 5854.90179 -2768.3791 5852.97821 -2768.3791 5852.72934 -2768.35106 5852.51429 -2768.27581 5852.32137 -2768.15459 5852.05975 -2767.87572 5851.94247 -2767.8109 5851.81036 -2767.78845 5846.75048 -2767.78845 5846.58672 -2767.82351 5846.45167 -2767.92253 5846.36899 -2768.06817 5846.35318 -2768.23489 5846.40701 -2768.39347 5846.52105 -2768.51611 5846.77086 -2768.69103 5847.04197 -2768.96214 5847.26189 -2769.27621 5847.42392 -2769.6237 5847.52316 -2769.99405 5847.55657 -2770.376 5847.52316 -2770.75795 5847.42392 -2771.1283 5847.26189 -2771.47579 5847.04197 -2771.78986 5846.77086 -2772.06097 5846.49831 -2772.25181 5846.39227 -2772.36162 5846.33509 -2772.50315 5846.33509 -2772.6558 5846.39227 -2772.79733 5846.49831 -2772.90713 5846.56386 -2772.95303 5846.83497 -2773.22414 5847.05489 -2773.53821 5847.21692 -2773.8857 5847.31616 -2774.25605 5847.34957 -2774.638 5847.31616 -2775.01995 5847.21692 -2775.3903 5847.05489 -2775.73779 5846.83497 -2776.05186 5846.56386 -2776.32297 5846.34554 -2776.47584 5846.2395 -2776.58564 5846.18232 -2776.72718 5846.18232 -2776.87982 5846.2395 -2777.02136 5846.34554 -2777.13116 5846.56386 -2777.28403 5846.83497 -2777.55514 5847.02652 -2777.8287 5847.13653 -2777.93487 5847.27835 -2777.99201 5847.43124 -2777.99177 5847.57287 -2777.93419 5847.82053 -2777.77247 5848.03224 -2777.69839 5848.28111 -2777.67035 5849.09133 -2777.67035 5849.09133 -2779.32617 5847.62973 -2779.32617 5847.46068 -2779.36365 5847.32331 -2779.46906 5847.24335 -2779.62265 5847.21692 -2779.7213 5847.05489 -2780.06879 5846.83497 -2780.38286 5846.56386 -2780.65397 5846.24979 -2780.87389 5845.9023 -2781.03592 5845.53195 -2781.13516 5845.15 -2781.16857 5844.76805 -2781.13516 5844.3977 -2781.03592 5844.05021 -2780.87389 5843.73614 -2780.65397 5843.59501 -2780.52714 5843.46151 -2780.44342 5843.35956 -2780.39788 5843.249 -2780.3823 5841.94256 -2780.3823 5841.62813 -2780.34925 5841.34749 -2780.25807 5841.08736 -2780.10788 5840.91085 -2779.95712 5826.16642 -2765.21264 5826.02124 -2765.11992 5825.85054 -2765.09684 5825.68596 -2765.1477 5825.55803 -2765.26305 5825.49047 -2765.4215 5825.49581 -2765.59367 5825.54389 -2765.78354 5825.57658 -2766.178 5825.54389 -2766.57246 5825.44673 -2766.95617 5825.28773 -2767.31865 5825.07124 -2767.65001 5824.80316 -2767.94122 5824.4908 -2768.18434 5824.14269 -2768.37272 5823.76833 -2768.50124 5823.37791 -2768.56639 5822.98209 -2768.56639 5822.59167 -2768.50124 5822.21731 -2768.37272 5821.95424 -2768.23036 5821.86206 -2768.19439 5821.76386 -2768.18215 5790.41365 -2768.18215 5790.26058 -2768.2126 5790.13081 -2768.29931 5790.0441 -2768.42908 5790.01365 -2768.58215 5790.01365 -2793.15653 5790.04817 -2793.61085 5790.05799 -2793.67285 5790.15703 -2794.08537 5790.17642 -2794.14507 5790.33877 -2794.53702 5790.36727 -2794.59295 5790.58894 -2794.95468 5790.62583 -2795.00546 5790.90477 -2795.332 5791.27693 -2795.75642 5791.57628 -2796.20443 5791.81459 -2796.68767 5791.98779 -2797.19789 5792.0929 -2797.72634 5792.12814 -2798.264 5792.0929 -2798.80166 5791.98779 -2799.33011 5791.81459 -2799.84033 5791.57628 -2800.32357 5791.27693 -2800.77157 5790.92167 -2801.17667 5790.51657 -2801.53193 5790.06857 -2801.83128 5789.58533 -2802.06959 5789.07511 -2802.24279 5788.54666 -2802.3479 5788.009 -2802.38314 5787.47134 -2802.3479 5786.94289 -2802.24279 5786.43267 -2802.06959 5785.94943 -2801.83128 5785.50143 -2801.53193 5785.09633 -2801.17667 5784.74107 -2800.77157 5784.44172 -2800.32357 5784.20341 -2799.84033 5784.03021 -2799.33011 5783.9251 -2798.80166 5783.88986 -2798.264 5783.9251 -2797.72634 5784.03021 -2797.19789 5784.20341 -2796.68767 5784.44172 -2796.20443 5784.74107 -2795.75643 5785.11669 -2795.32806 5785.39262 -2795.00586 5785.42986 -2794.95468 5785.65153 -2794.59295 5785.68003 -2794.53702 5785.84238 -2794.14507 5785.86177 -2794.08537 5785.96081 -2793.67285 5785.97063 -2793.61085 5786.00515 -2793.15653 5786.00515 -2768.58215 5785.9747 -2768.42908 5785.88799 -2768.29931 5785.75822 -2768.2126 5785.60515 -2768.18215 5759.78814 -2768.18215 5759.68994 -2768.19439 5759.59776 -2768.23036 5759.33469 -2768.37272 5758.96033 -2768.50124 5758.56991 -2768.56639 5758.17409 -2768.56639 5757.78367 -2768.50124 5757.40931 -2768.37272 5757.0612 -2768.18434 5756.74884 -2767.94122 5756.48076 -2767.65001 5756.26427 -2767.31865 5756.10527 -2766.95617 5756.00811 -2766.57246 5755.97542 -2766.178 5756.00811 -2765.78354 5756.10527 -2765.39983 5756.26427 -2765.03735 5756.3547 -2764.83762 5756.34815 -2764.67394 5756.27654 -2764.52661 5756.15188 -2764.42033 5755.99507 -2764.37294 5755.90605 -2764.36516 5755.5357 -2764.26592 5755.18821 -2764.10389 5754.87414 -2763.88397 5754.60303 -2763.61286 5754.38311 -2763.29879 5754.22108 -2762.9513 5754.12184 -2762.58095 5754.08843 -2762.199 5754.12184 -2761.81705 5754.22108 -2761.4467 5754.38311 -2761.09921 5754.60303 -2760.78514 5754.87414 -2760.51403 5755.18821 -2760.29411 5755.5357 -2760.13208 5755.90605 -2760.03284 5756.288 -2759.99943 5756.66995 -2760.03284 5757.0403 -2760.13208 5757.38779 -2760.29411 5757.70186 -2760.51403 5757.84561 -2760.64294 5757.97848 -2760.72548 5758.07981 -2760.77035 5758.18955 -2760.7857 5780.96055 -2760.7857 5781.11214 -2760.75586 5781.29319 -2760.65516 5781.44183 -2760.51915 5781.76321 -2760.29411 5782.1107 -2760.13208 5782.48105 -2760.03284 5782.863 -2759.99943 5783.24495 -2760.03284 5783.6153 -2760.13208 5783.96279 -2760.29411 5784.27686 -2760.51403 5784.54797 -2760.78514 5784.76789 -2761.09921 5784.92992 -2761.4467 5785.02916 -2761.81705 5785.06257 -2762.199 5785.02916 -2762.58095 5784.92992 -2762.9513 5784.76789 -2763.29879 5784.59603 -2763.54422 5784.52977 -2763.70419 5784.53732 -2763.87718 5784.61727 -2764.03077 5784.75464 -2764.13617 5784.92369 -2764.17365 5821.76423 -2764.17365 5821.86243 -2764.16141 5821.95461 -2764.12544 5822.21731 -2763.98328 5822.59167 -2763.85476 5822.98209 -2763.78961 5823.37791 -2763.78961 5823.78531 -2763.85759 5823.95201 -2763.85012 5824.10116 -2763.77529 5824.2068 -2763.64611 5824.25054 -2763.48508 5824.22478 -2763.32021 5824.13399 -2763.1802 5814.01228 -2753.05846 5813.88251 -2752.97175 5813.72944 -2752.9413 5795.75788 -2752.9413 5795.61453 -2752.96787 5795.49023 -2753.04404 5795.40148 -2753.1597 5795.36007 -2753.29949 5795.37151 -2753.44483 5795.41016 -2753.58905 5795.44357 -2753.971 5795.41016 -2754.35295 5795.31092 -2754.7233 5795.13447 -2755.09137 5795.06821 -2755.25134 5795.07576 -2755.42433 5795.15572 -2755.57792 5795.29309 -2755.68332 5795.46213 -2755.7208 5804.09969 -2755.7208 5804.25276 -2755.69035 5804.38253 -2755.60364 5804.43014 -2755.55603 5804.74421 -2755.33611 5805.0917 -2755.17408 5805.46205 -2755.07484 5805.844 -2755.04143 5806.22595 -2755.07484 5806.5963 -2755.17408 5806.94379 -2755.33611 5807.25786 -2755.55603 5807.52897 -2755.82714 5807.74889 -2756.14121 5807.91092 -2756.4887 5808.01016 -2756.85905 5808.04357 -2757.241 5808.01016 -2757.62295 5807.91092 -2757.9933 5807.74889 -2758.34079 5807.52897 -2758.65486 5807.25786 -2758.92597 5806.94379 -2759.14589 5806.5963 -2759.30792 5806.22595 -2759.40716 5805.844 -2759.44057 5805.46205 -2759.40716 5805.0917 -2759.30792 5804.74421 -2759.14589 5804.43014 -2758.92597 5804.38213 -2758.87796 5804.25236 -2758.79125 5804.09929 -2758.7608 5764.08918 -2758.7608 5763.9689 -2758.77931 5763.85975 -2758.83314 5763.52879 -2759.06489 5763.1813 -2759.22692 5762.81095 -2759.32616 5762.429 -2759.35957 5762.04705 -2759.32616 5761.6767 -2759.22692 5761.32921 -2759.06489 5761.01514 -2758.84497 5760.74403 -2758.57386 5760.52411 -2758.25979 5760.36208 -2757.9123 5760.26284 -2757.54195 5760.22943 -2757.16 5760.26284 -2756.77805 5760.36208 -2756.4077 5760.52411 -2756.06021 5760.74403 -2755.74614 5761.01514 -2755.47503 5761.3469 -2755.24273 5761.41275 -2755.20291 5761.5365 -2755.08561 5761.60015 -2754.92742 5761.59214 -2754.7571 5761.48384 -2754.35295 5761.45043 -2753.971 5761.48384 -2753.58905 5761.52249 -2753.44483 5761.53393 -2753.29949 5761.49252 -2753.1597 5761.40377 -2753.04404 5761.27947 -2752.96787 5761.13612 -2752.9413 5756.50951 -2752.9413 5756.35321 -2752.9731 5756.22177 -2753.06344 5756.13607 -2753.19795 5756.10975 -2753.35526 5756.14698 -2753.51035 5756.26792 -2753.7697 5756.36716 -2754.14005 5756.40057 -2754.522 5756.36716 -2754.90395 5756.26792 -2755.2743 5756.10589 -2755.62179 5755.88597 -2755.93586 5755.83826 -2755.98357 5755.75155 -2756.11334 5755.7211 -2756.26641 5755.7211 -2757.80965 5755.69 -2758.12546 5755.60361 -2758.41024 5755.46332 -2758.67269 5755.26201 -2758.91799 5752.95366 -2761.22626 5752.86695 -2761.35603 5752.8365 -2761.50911 5752.8365 -2800.77621 5752.86695 -2800.92928 5752.95366 -2801.05905 5754.64501 -2802.7504 5755.09273 -2803.1442 5755.60822 -2803.49275 5756.16478 -2803.77104 5756.75291 -2803.97429 5757.36254 -2804.09904 5757.41455 -2804.10588 5758.54677 -2804.17971 5759.07522 -2804.28483 5759.58548 -2804.45804 5760.06877 -2804.69637 5760.51682 -2804.99575 5760.92196 -2805.35104 5761.27725 -2805.75618 5761.57663 -2806.20423 5761.81496 -2806.68752 5761.98817 -2807.19778 5762.0933 -2807.72629 5762.12854 -2808.264 5762.0933 -2808.80171 5761.98817 -2809.33022 5761.81496 -2809.84048 5761.57663 -2810.32377 5761.27725 -2810.77182 5760.92196 -2811.17696 5760.51682 -2811.53225 5760.06877 -2811.83163 5759.58548 -2812.06996 5759.07522 -2812.24317 5758.54671 -2812.3483 5758.009 -2812.38354 5757.47129 -2812.3483 5756.94278 -2812.24317 5756.43252 -2812.06996 5755.94923 -2811.83163 5755.50118 -2811.53225 5755.09604 -2811.17696 5754.74075 -2810.77182 5754.44137 -2810.32377 5754.20304 -2809.84048 5754.02983 -2809.33022 5753.92471 -2808.80177 5753.85088 -2807.66955 5753.73283 -2807.05845 5753.53606 -2806.46812 5753.26391 -2805.90853 5752.92106 -2805.38925 5752.49554 -2804.90015 5750.25559 -2802.6602 5750.05428 -2802.41489 5749.91399 -2802.15244 5749.8276 -2801.86766 5749.7965 -2801.55185 5749.7965 -2760.73345 5749.8276 -2760.41764 5749.91399 -2760.13286 5750.05428 -2759.87041 5750.25559 -2759.62511 5752.56394 -2757.31684 5752.65065 -2757.18707 5752.6811 -2757.03399 5752.6811 -2756.26661 5752.65065 -2756.11354 5752.56394 -2755.98377 5752.51603 -2755.93586 5752.29611 -2755.62179 5752.13408 -2755.2743 5752.03484 -2754.90395 5752.00143 -2754.522 5752.03484 -2754.14005 5752.13408 -2753.7697 5752.25502 -2753.51035 5752.29225 -2753.35526 5752.26593 -2753.19795 5752.18023 -2753.06344 5752.04879 -2752.9731 5751.89249 -2752.9413 5735.269 -2752.9413 5735.11841 -2752.97073 5734.98998 -2753.05468 5734.90808 -2753.13442 5734.59179 -2753.35589 5734.2443 -2753.51792 5733.87395 -2753.61716 5733.492 -2753.65057 5733.11005 -2753.61716 5732.7397 -2753.51792 5732.39221 -2753.35589 5732.07814 -2753.13597 5731.80703 -2752.86486 5731.58711 -2752.55079 5731.42508 -2752.2033 5731.32584 -2751.83295 5731.29243 -2751.451 5731.32584 -2751.06905 5731.42508 -2750.6987 5731.58711 -2750.35121 5731.80703 -2750.03714 5732.07814 -2749.76603 5732.39221 -2749.54611 5732.7397 -2749.38408 5733.11005 -2749.28484 5733.492 -2749.25143 5733.87395 -2749.28484 5734.2443 -2749.38408 5734.59179 -2749.54611 5734.90586 -2749.76603 5735.02201 -2749.87511 5735.20981 -2750.01122 5735.36676 -2750.0797 5735.57855 -2750.1139 5764.84905 -2750.1139 5765.00534 -2750.0821 5765.13678 -2749.99176 5765.22248 -2749.85725 5765.2488 -2749.69994 5765.21157 -2749.54485 5765.16608 -2749.4473 5765.06684 -2749.07695 5765.03343 -2748.695 5765.06684 -2748.31305 5765.16608 -2747.9427 5765.23181 -2747.80175 5765.26904 -2747.64666 5765.24272 -2747.48935 5765.15702 -2747.35484 5765.02558 -2747.2645 5764.86928 -2747.2327 5721.59668 -2747.2327 5721.43063 -2747.25789 5721.28644 -2747.31762 5721.16347 -2747.40548 5721.01585 -2747.54108 5720.69479 -2747.76589 5720.3473 -2747.92792 5719.97695 -2748.02716 5719.595 -2748.06057 5719.21305 -2748.02716 5718.8427 -2747.92792 5718.49521 -2747.76589 5718.18114 -2747.54597 5717.91003 -2747.27486 5717.69011 -2746.96079 5717.52808 -2746.6133 5717.42884 -2746.24295 5717.39543 -2745.861 5717.42884 -2745.47905 5717.52808 -2745.1087 5717.6492 -2744.84895 5717.68644 -2744.69386 5717.66011 -2744.53655 5717.57442 -2744.40204 5717.44297 -2744.3117 5717.28668 -2744.2799 5714.51096 -2744.2799 5714.34437 -2744.30511 5714.1998 -2744.36491 5714.07745 -2744.4522 5713.92918 -2744.58784 5713.60779 -2744.81289 5713.2603 -2744.97492 5712.88995 -2745.07416 5712.508 -2745.10757 5712.12605 -2745.07416 5711.7557 -2744.97492 5711.40821 -2744.81289 5711.09414 -2744.59297 5710.82303 -2744.32186 5710.60311 -2744.00779 5710.44108 -2743.6603 5710.34184 -2743.28995 5710.30843 -2742.908 5710.34184 -2742.52605 5710.44108 -2742.1557 5710.60311 -2741.80821 5710.82303 -2741.49414 5711.09414 -2741.22303 5711.40821 -2741.00311 5711.7557 -2740.84108 5712.12605 -2740.74184 5712.508 -2740.70843 5712.88995 -2740.74184 5713.2603 -2740.84108 5713.60779 -2741.00311 5713.92785 -2741.22723 5714.05499 -2741.34544 5714.18103 -2741.42477 5714.32736 -2741.4525 5715.36889 -2741.4525 5715.51224 -2741.42593 5715.63654 -2741.34976 5715.7253 -2741.2341 5715.7667 -2741.09431 5715.75526 -2740.94897 5715.69684 -2740.73095 5715.66343 -2740.349 5715.69684 -2739.96705 5715.79608 -2739.5967 5715.95811 -2739.24921 5716.17803 -2738.93514 5716.44914 -2738.66403 5716.76321 -2738.44411 5717.1107 -2738.28208 5717.48105 -2738.18284 5717.863 -2738.14943 5718.24495 -2738.18284 5718.6153 -2738.28208 5718.96279 -2738.44411 5719.27723 -2738.66429 5719.35084 -2738.73757 5719.48039 -2738.82382 5719.63305 -2738.8541 5749.54205 -2738.8541 5749.6854 -2738.82753 5749.80971 -2738.75136 5749.89846 -2738.6357 5749.93986 -2738.49591 5749.92842 -2738.35057 5749.86984 -2738.13195 5749.83643 -2737.75 5749.86984 -2737.36805 5749.94678 -2737.08093 5749.95822 -2736.93559 5749.91681 -2736.7958 5749.82806 -2736.68014 5749.70375 -2736.60397 5749.56041 -2736.5774 5724.3418 -2736.5774 5724.155 -2736.62182 5724.03778 -2736.69651 5723.89002 -2736.83196 5723.56879 -2737.05689 5723.2213 -2737.21892 5722.85095 -2737.31816 5722.469 -2737.35157 5722.08705 -2737.31816 5721.7167 -2737.21892 5721.36921 -2737.05689 5721.05514 -2736.83697 5720.78403 -2736.56586 5720.56411 -2736.25179 5720.40208 -2735.9043 5720.30284 -2735.53395 5720.26943 -2735.152 5720.30284 -2734.77005 5720.41288 -2734.37655 5720.45011 -2734.22146 5720.42378 -2734.06415 5720.33809 -2733.92964 5720.20664 -2733.8393 5720.05035 -2733.8075 5594.91696 -2733.8075 5594.76389 -2733.83795 5594.63412 -2733.92466 5583.07276 -2745.48601 5582.82706 -2745.68498 5582.56414 -2745.81895 5582.274 -2745.89669 5582.04258 -2745.9149 5576.80553 -2745.9149 5575.9464 -2745.95855 5575.11516 -2746.0838 5574.30021 -2746.28992 5573.50939 -2746.57493 5572.75031 -2746.93608 5572.03028 -2747.36989 5571.35624 -2747.87219 5570.77068 -2748.40291 5570.68403 -2748.47456 5570.39821 -2748.74451 5570.20862 -2748.88643 5570.09957 -2749.01079 5570.05014 -2749.16863 5570.0688 -2749.33297 5570.15235 -2749.47571 5570.28651 -2749.57245 5570.44833 -2749.60665 5662.79291 -2749.60665 5663.32444 -2749.64149 5663.834 -2749.74285 5664.32598 -2749.90985 5664.79195 -2750.13964 5665.22393 -2750.42829 5665.62442 -2750.7795 5682.2266 -2767.38168 5682.57781 -2767.78217 5682.86646 -2768.21415 5683.09625 -2768.68012 5683.26325 -2769.1721 5683.36461 -2769.68166 5683.39945 -2770.21319 5683.39945 -2810.62121 5683.42068 -2810.74978 5683.4537 -2810.84705 5683.56008 -2811.38187 5683.59574 -2811.926 5683.56008 -2812.47013 5683.4537 -2813.00495 5683.27842 -2813.52131 5683.03724 -2814.01037 5682.73429 -2814.46377 5682.37475 -2814.87375 5681.96477 -2815.23329 5681.51137 -2815.53624 5681.02231 -2815.77742 5680.50595 -2815.9527 5679.97113 -2816.05908 5679.427 -2816.09474 5678.88287 -2816.05908 5678.34805 -2815.9527 5677.83169 -2815.77742 5677.34263 -2815.53624 5676.88923 -2815.23329 5676.47925 -2814.87375 5676.11971 -2814.46377 5675.81676 -2814.01037 5675.57558 -2813.52131 5675.4003 -2813.00495 5675.29392 -2812.47013 5675.25826 -2811.926 5675.29392 -2811.38187 5675.4003 -2810.84705 5675.43272 -2810.75155 5675.45395 -2810.62298 5675.45395 -2772.01135 5675.4235 -2771.85828 5675.33679 -2771.72851 5661.27759 -2757.66931 5661.14782 -2757.5826 5660.99475 -2757.55215 5558.65239 -2757.55215 5558.12086 -2757.51731 5557.6113 -2757.41595 5557.11932 -2757.24895 5556.65335 -2757.01916 5556.22137 -2756.73051 5555.82088 -2756.3793 5542.77839 -2743.33671 5542.64862 -2743.25 5542.49555 -2743.21955 5525.02304 -2743.21955 5524.65074 -2743.267 5519.97126 -2743.267 5519.72239 -2743.23896 5519.50734 -2743.16371 5519.43071 -2743.11556 5519.29226 -2743.06122 5519.14353 -2743.06122 5519.00509 -2743.11556 5518.81546 -2743.23471 5518.60041 -2743.30996 5518.35154 -2743.338 5516.36759 -2743.338 5516.05857 -2743.3665 5515.91134 -2743.41068 5515.82813 -2743.47531 5515.72828 -2743.34829 5515.58633 -2743.27112 5515.50945 -2743.2478 5515.247 -2743.10752 5515.00169 -2742.9062 5513.18625 -2741.09072 5513.05648 -2741.00401 5512.9034 -2740.97356 5512.75033 -2741.004 5512.62056 -2741.09071 5512.53385 -2741.22048 5512.5034 -2741.37356 5512.5034 -2743.84431 5512.53921 -2744.00973 5512.64022 -2744.14554 5512.78836 -2744.22741 5512.95709 -2744.24069 5513.15729 -2744.15719 5513.37234 -2744.08194 5513.62121 -2744.0539 5513.84087 -2744.0539 5513.84087 -2745.41445 5513.38725 -2745.41445 5513.23418 -2745.4449 5513.10441 -2745.53161 5513.0177 -2745.66138 5512.98725 -2745.81445 5512.98725 -2746.69555 5513.0177 -2746.84862 5513.10441 -2746.97839 5513.23418 -2747.0651 5513.38725 -2747.09555 5513.84087 -2747.09555 5513.84087 -2748.7348 5513.87132 -2748.88787 5513.95803 -2749.01764 5514.0878 -2749.10435 5514.24087 -2749.1348 5514.92512 -2749.1348 5515.0782 -2749.10435 5515.20797 -2749.01764 5515.29468 -2748.88787 5515.32512 -2748.7348 5515.32512 -2747.09555 5516.58725 -2747.09555 5516.58725 -2747.41364 5516.55921 -2747.66251 5516.48396 -2747.87756 5516.36274 -2748.07048 5516.20163 -2748.23159 5516.00871 -2748.35281 5515.79366 -2748.42806 5515.67015 -2748.44198 5515.52426 -2748.48783 5515.40624 -2748.58508 5515.33334 -2748.71952 5515.31622 -2748.87148 5515.35738 -2749.01877 5515.4508 -2749.13984 5515.64306 -2749.23809 5515.83598 -2749.35931 5515.99709 -2749.52042 5516.11831 -2749.71334 5516.19356 -2749.92839 5516.2216 -2750.17726 5516.2216 -2754.69759 5516.24568 -2754.83428 5516.31502 -2754.95451 5516.42128 -2755.04381 5516.79185 -2755.25509 5517.32278 -2755.48457 5517.44575 -2755.5158 5517.57231 -2755.50695 5517.6953 -2755.47827 5517.99274 -2755.46854 5518.21465 -2755.50517 5518.33418 -2755.5068 5518.44885 -2755.47304 5518.7297 -2755.34208 5519.10005 -2755.24284 5519.482 -2755.20943 5519.86395 -2755.24284 5520.2343 -2755.34208 5520.58179 -2755.50411 5520.89586 -2755.72403 5521.16697 -2755.99514 5521.38689 -2756.30921 5521.54892 -2756.6567 5521.64816 -2757.02705 5521.68157 -2757.409 5521.64816 -2757.79095 5521.54892 -2758.1613 5521.38689 -2758.50879 5521.16697 -2758.82286 5520.89586 -2759.09397 5520.58179 -2759.31389 5520.2343 -2759.47592 5519.86395 -2759.57516 5519.482 -2759.60857 5519.10005 -2759.57516 5518.7297 -2759.47592 5518.38221 -2759.31389 5518.06814 -2759.09397 5518.02023 -2759.04606 5517.89046 -2758.95935 5517.73739 -2758.9289 5517.06204 -2758.93013 5516.59963 -2758.97147 5516.52822 -2758.98861 5516.36987 -2759.0667 5516.26057 -2759.20535 5516.2216 -2759.37756 5516.2216 -2759.97474 5516.19356 -2760.22361 5516.11831 -2760.43866 5515.99709 -2760.63158 5515.83598 -2760.79269 5515.64306 -2760.91391 5515.42801 -2760.98916 5515.17914 -2761.0172 5508.92486 -2761.0172 5508.67599 -2760.98916 5508.46094 -2760.91391 5508.26802 -2760.79269 5508.10691 -2760.63158 5507.98569 -2760.43866 5507.91044 -2760.22361 5507.8824 -2759.97474 5507.8824 -2751.79103 5507.84597 -2751.62425 5507.74331 -2751.48785 5507.59313 -2751.40667 5507.42278 -2751.3955 5507.26329 -2751.45638 5507.14371 -2751.57822 5507.00459 -2751.79963 5506.84348 -2751.96074 5506.73469 -2752.0291 5506.63477 -2752.11839 5506.56995 -2752.23568 5506.5475 -2752.36779 5506.5475 -2757.94615 5506.5164 -2758.26196 5506.43001 -2758.54674 5506.28972 -2758.80919 5506.08841 -2759.0545 5504.4408 -2760.70211 5504.19549 -2760.90342 5503.93304 -2761.04371 5503.64826 -2761.1301 5503.33245 -2761.1612 5498.51735 -2761.1612 5498.20154 -2761.1301 5497.91676 -2761.04371 5497.65431 -2760.90342 5497.409 -2760.70211 5494.91139 -2758.2045 5494.71008 -2757.95919 5494.62437 -2757.79885 5494.50988 -2757.66612 5494.34964 -2757.59509 5494.17441 -2757.59939 5494.01784 -2757.6782 5493.91 -2757.81638 5493.8716 -2757.9874 5493.8716 -2759.97479 5493.84356 -2760.22366 5493.76831 -2760.43871 5493.64709 -2760.63163 5493.48598 -2760.79274 5493.29306 -2760.91396 5493.07801 -2760.98921 5492.82914 -2761.01725 5492.1932 -2761.01725 5492.021 -2761.05622 5491.88234 -2761.16552 5491.80425 -2761.32387 5491.74254 -2761.60201 5491.70655 -2762.07507 5491.70655 -2766.04813 5491.737 -2766.2012 5491.82371 -2766.33097 5496.59643 -2771.10369 5496.7262 -2771.1904 5496.87927 -2771.22085 5502.84554 -2771.22085 5502.99457 -2771.19205 5503.12214 -2771.1098 5503.20988 -2770.98593 5503.24516 -2770.8383 5503.22289 -2770.68815 5503.14627 -2770.55711 5503.0909 -2770.49396 5502.80225 -2770.06197 5502.57245 -2769.596 5502.40545 -2769.10401 5502.30409 -2768.59444 5502.27011 -2768.076 5502.30409 -2767.55756 5502.40545 -2767.04799 5502.57245 -2766.556 5502.80225 -2766.09003 5503.0909 -2765.65804 5503.43346 -2765.26741 5503.82409 -2764.92485 5504.25608 -2764.6362 5504.72205 -2764.4064 5505.21404 -2764.2394 5505.72651 -2764.13746 5506.12558 -2764.1054 5506.23305 -2764.10343 5506.78083 -2764.13812 5507.28996 -2764.2394 5507.78195 -2764.4064 5508.24792 -2764.6362 5508.67991 -2764.92485 5509.07054 -2765.26741 5509.4131 -2765.65804 5509.70175 -2766.09003 5509.93155 -2766.556 5510.09855 -2767.04799 5510.19991 -2767.55756 5510.23389 -2768.076 5510.19991 -2768.59444 5510.09855 -2769.10401 5509.93155 -2769.596 5509.70175 -2770.06197 5509.4131 -2770.49396 5509.35773 -2770.55711 5509.28111 -2770.68815 5509.25884 -2770.8383 5509.29412 -2770.98593 5509.38186 -2771.1098 5509.50943 -2771.19205 5509.65846 -2771.22085 5513.19454 -2771.22085 5513.34362 -2771.19203 5513.47122 -2771.10973 5513.76105 -2770.83215 5513.89612 -2770.7285 5514.04368 -2770.63449 5514.19861 -2770.55383 5514.36025 -2770.48688 5514.52684 -2770.43434 5514.69764 -2770.39647 5514.87082 -2770.37367 5515.05433 -2770.36565 5518.58466 -2770.36565 5518.75371 -2770.32817 5518.89108 -2770.22277 5518.97103 -2770.06918 5518.97858 -2769.89619 5518.73808 -2769.3713 5518.63884 -2769.00095 5518.60543 -2768.619 5518.63884 -2768.23705 5518.73808 -2767.8667 5518.90011 -2767.51921 5519.12003 -2767.20514 5519.39114 -2766.93403 5519.70521 -2766.71411 5520.0527 -2766.55208 5520.42305 -2766.45284 5520.805 -2766.41943 5521.18695 -2766.45284 5521.5573 -2766.55208 5521.90479 -2766.71411 5522.21886 -2766.93403 5522.48997 -2767.20514 5522.70989 -2767.51921 5522.87192 -2767.8667 5522.97116 -2768.23705 5523.00457 -2768.619 5522.97116 -2769.00095 5522.87192 -2769.3713 5522.71132 -2769.7157 5522.67409 -2769.87079 5522.70041 -2770.0281 5522.78611 -2770.16261 5522.91755 -2770.25295 5523.07385 -2770.28475 5525.08364 -2770.28475 5525.33251 -2770.31279 5525.41942 -2770.3432 5525.55153 -2770.36565 5529.50004 -2770.36565 5529.86527 -2770.3976 5530.12844 -2770.46812 5530.23197 -2770.48175 5530.79264 -2770.48175 5531.04151 -2770.50979 5531.25656 -2770.58504 5531.44948 -2770.70626 5531.61059 -2770.86737 5531.73181 -2771.06029 5531.80706 -2771.27534 5531.8351 -2771.52421 5531.8351 -2773.44779 5531.80706 -2773.69666 5531.73181 -2773.91171 5531.63035 -2774.07319 5531.57601 -2774.21164 5531.57601 -2774.36036 5531.63035 -2774.49881 5531.73181 -2774.66029 5531.80706 -2774.87534 5531.8351 -2775.12421 5531.8351 -2775.34388 5530.47455 -2775.34388 5530.47455 -2774.89025 5530.4441 -2774.73718 5530.35739 -2774.60741 5530.22762 -2774.5207 5530.07455 -2774.49025 5529.19345 -2774.49025 5529.04038 -2774.5207 5528.91061 -2774.60741 5528.8239 -2774.73718 5528.79345 -2774.89025 5528.79345 -2775.34388 5527.4329 -2775.34388 5527.4329 -2775.12588 5527.46967 -2774.82223 5527.45443 -2774.65505 5527.37193 -2774.50885 5527.2367 -2774.40938 5527.07257 -2774.37415 5526.51138 -2774.37415 5526.34801 -2774.40904 5526.21313 -2774.50761 5526.13027 -2774.65268 5526.1139 -2774.81894 5526.1261 -2774.92721 5526.1261 -2775.14688 5524.76555 -2775.14688 5524.76555 -2774.77415 5524.7351 -2774.62108 5524.64839 -2774.49131 5524.51862 -2774.4046 5524.36555 -2774.37415 5523.48445 -2774.37415 5523.33138 -2774.4046 5523.20161 -2774.49131 5523.1149 -2774.62108 5523.08445 -2774.77415 5523.08445 -2775.14688 5521.7239 -2775.14688 5521.7239 -2774.92721 5521.7361 -2774.81894 5521.71973 -2774.65268 5521.63687 -2774.50761 5521.50199 -2774.40904 5521.33862 -2774.37415 5516.04156 -2774.37415 5515.89248 -2774.40297 5515.76488 -2774.48527 5515.47505 -2774.76285 5515.33998 -2774.8665 5515.19651 -2774.95791 5514.95646 -2775.07559 5514.81836 -2775.18719 5514.74217 -2775.34757 5514.7429 -2775.52513 5514.82041 -2775.68488 5514.95942 -2775.79534 5515.13255 -2775.83475 5517.27914 -2775.83475 5517.52801 -2775.86279 5517.74306 -2775.93804 5517.93598 -2776.05926 5518.09709 -2776.22037 5518.21831 -2776.41329 5518.29356 -2776.62834 5518.3216 -2776.87721 5518.3216 -2781.3506 5518.34498 -2781.48536 5518.4124 -2781.60436 5518.51596 -2781.69369 5518.84533 -2781.88887 5519.49615 -2782.19455 5520.1738 -2782.43497 5520.87175 -2782.60781 5521.26521 -2782.66618 5521.43531 -2782.65468 5521.58517 -2782.57339 5521.68757 -2782.43708 5521.7239 -2782.27051 5521.7239 -2782.04713 5523.08445 -2782.04713 5523.08445 -2782.34525 5523.1149 -2782.49832 5523.20161 -2782.62809 5523.33138 -2782.7148 5523.48445 -2782.74525 5524.36555 -2782.74525 5524.51862 -2782.7148 5524.64839 -2782.62809 5524.7351 -2782.49832 5524.76555 -2782.34525 5524.76555 -2782.04713 5526.1261 -2782.04713 5526.12252 -2782.29856 5526.13889 -2782.46481 5526.22173 -2782.60988 5526.3566 -2782.70845 5526.51997 -2782.74335 5527.01665 -2782.7434 5527.18004 -2782.70852 5527.31493 -2782.60995 5527.3978 -2782.46488 5527.41418 -2782.29861 5527.3929 -2782.10979 5527.3929 -2781.89013 5528.75345 -2781.89013 5528.75345 -2782.3436 5528.78389 -2782.49666 5528.87059 -2782.62643 5529.00035 -2782.71314 5529.15341 -2782.7436 5530.03451 -2782.74368 5530.1876 -2782.71324 5530.31738 -2782.62654 5530.4041 -2782.49676 5530.43455 -2782.34368 5530.43455 -2781.89013 5531.7951 -2781.89013 5531.7951 -2782.10979 5531.76706 -2782.35866 5531.69181 -2782.57371 5531.59035 -2782.73519 5531.53601 -2782.87364 5531.53601 -2783.02236 5531.59035 -2783.16081 5531.69181 -2783.32229 5531.76706 -2783.53734 5531.7951 -2783.78621 5531.7951 -2785.70979 5531.76706 -2785.95866 5531.69181 -2786.17371 5531.57059 -2786.36663 5531.40948 -2786.52774 5531.21656 -2786.64896 5531.00151 -2786.72421 5530.75266 -2786.75225 5526.53405 -2786.75185 5525.74493 -2786.75375 5525.607 -2786.77864 5525.32888 -2786.88162 5525.08364 -2786.90925 5522.9215 -2786.90925 5522.76843 -2786.9397 5522.63866 -2787.02641 5522.55195 -2787.15618 5522.5215 -2787.30925 5522.5215 -2787.50399 5522.55195 -2787.65706 5522.63866 -2787.78683 5522.68697 -2787.83514 5522.90689 -2788.14921 5523.06892 -2788.4967 5523.16816 -2788.86705 5523.20157 -2789.249 5523.16816 -2789.63095 5523.06892 -2790.0013 5522.90689 -2790.34879 5522.68697 -2790.66286 5522.41586 -2790.93397 5522.10179 -2791.15389 5521.7543 -2791.31592 5521.38395 -2791.41516 5521.002 -2791.44857 5520.62005 -2791.41516 5520.2497 -2791.31592 5519.90221 -2791.15389 5519.58814 -2790.93397 5519.31703 -2790.66286 5519.09711 -2790.34879 5518.93508 -2790.0013 5518.83584 -2789.63095 5518.80243 -2789.249 5518.83584 -2788.86705 5518.93508 -2788.4967 5519.09711 -2788.14921 5519.31703 -2787.83514 5519.36434 -2787.78783 5519.45105 -2787.65806 5519.4815 -2787.50499 5519.4815 -2787.15375 5519.45105 -2787.00068 5519.36434 -2786.87091 5519.23457 -2786.7842 5519.0815 -2786.75375 5518.63683 -2786.75375 5518.47687 -2786.78713 5518.34361 -2786.88168 5518.25927 -2787.02164 5518.21831 -2787.13871 5518.09709 -2787.33163 5517.93598 -2787.49274 5517.74306 -2787.61396 5517.52801 -2787.68921 5517.27914 -2787.71725 5511.02486 -2787.71725 5510.77599 -2787.68921 5510.56094 -2787.61396 5510.36802 -2787.49274 5510.20691 -2787.33163 5510.08569 -2787.13871 5510.00455 -2786.90683 5509.92022 -2786.76687 5509.78696 -2786.67232 5509.627 -2786.63894 5509.46704 -2786.67232 5509.33378 -2786.76687 5509.24945 -2786.90683 5509.16831 -2787.13871 5509.04709 -2787.33163 5508.88598 -2787.49274 5508.69306 -2787.61396 5508.47801 -2787.68921 5508.22914 -2787.71725 5501.97486 -2787.71725 5501.72599 -2787.68921 5501.51094 -2787.61396 5501.31802 -2787.49274 5501.15691 -2787.33163 5501.03569 -2787.13871 5500.96044 -2786.92366 5500.9324 -2786.67479 5500.9324 -2776.87721 5500.96044 -2776.62834 5501.03569 -2776.41329 5501.15691 -2776.22037 5501.31802 -2776.05926 5501.4632 -2775.96804 5501.58503 -2775.84846 5501.64592 -2775.68897 5501.63475 -2775.51862 5501.55357 -2775.36844 5501.41717 -2775.26578 5501.25038 -2775.22935 5495.89213 -2775.22935 5495.70875 -2775.22134 5495.53543 -2775.19853 5495.36476 -2775.16069 5495.19804 -2775.10812 5495.03653 -2775.04122 5494.88147 -2774.9605 5494.73403 -2774.86657 5494.59534 -2774.76015 5494.46001 -2774.63615 5488.29125 -2768.46739 5488.16725 -2768.33206 5488.06083 -2768.19337 5487.9669 -2768.04593 5487.88618 -2767.89087 5487.81928 -2767.72936 5487.76671 -2767.56264 5487.72887 -2767.39197 5487.70606 -2767.21865 5487.69805 -2767.03527 5487.69805 -2762.07507 5487.66206 -2761.60201 5487.60035 -2761.32387 5487.52226 -2761.16552 5487.3836 -2761.05622 5487.2114 -2761.01725 5486.57486 -2761.01725 5486.32599 -2760.98921 5486.11094 -2760.91396 5485.91802 -2760.79274 5485.75691 -2760.63163 5485.63569 -2760.43871 5485.56044 -2760.22366 5485.5324 -2759.97479 5485.5324 -2750.17721 5485.56044 -2749.92834 5485.63569 -2749.71329 5485.75691 -2749.52037 5485.91802 -2749.35926 5486.11094 -2749.23804 5486.27406 -2749.18096 5486.40716 -2749.10285 5486.50078 -2748.98017 5486.52699 -2748.88303 5486.60158 -2749.00682 5486.73484 -2749.10137 5486.8948 -2749.13475 5492.82914 -2749.13475 5493.07801 -2749.16279 5493.25192 -2749.22365 5493.40895 -2749.24532 5493.56206 -2749.20429 5493.68722 -2749.10701 5493.76476 -2748.96875 5493.78251 -2748.81123 5493.77243 -2748.696 5493.80584 -2748.31405 5493.85448 -2748.13253 5493.86592 -2747.98719 5493.82451 -2747.8474 5493.73576 -2747.73174 5493.61146 -2747.65557 5493.46811 -2747.629 5488.13751 -2747.629 5487.98444 -2747.65945 5487.85467 -2747.74616 5487.70086 -2747.89997 5487.38679 -2748.11989 5487.0393 -2748.28192 5486.79127 -2748.34838 5486.6454 -2748.42202 5486.54115 -2748.54784 5486.50979 -2748.65672 5486.44606 -2748.54358 5486.32507 -2748.44779 5486.17681 -2748.40493 5485.90505 -2748.38116 5485.5347 -2748.28192 5485.18721 -2748.11989 5484.87314 -2747.89997 5484.60203 -2747.62886 5484.46946 -2747.43953 5484.34094 -2747.32205 5484.17468 -2747.27032 5484.00219 -2747.29412 5483.85615 -2747.38895 5483.76425 -2747.53685 5483.72796 -2747.64056 5483.60674 -2747.83348 5483.44563 -2747.99459 5483.25271 -2748.11581 5483.03766 -2748.19106 5482.78879 -2748.2191 5481.3184 -2748.2191 5481.15162 -2748.25553 5481.01522 -2748.35819 5480.93404 -2748.50837 5480.92287 -2748.67872 5480.98375 -2748.83821 5481.10559 -2748.95779 5481.26708 -2749.05926 5481.42819 -2749.22037 5481.54941 -2749.41329 5481.62466 -2749.62834 5481.6527 -2749.87721 5481.6527 -2759.67479 5481.62466 -2759.92366 5481.54941 -2760.13871 5481.42819 -2760.33163 5481.26708 -2760.49274 5481.07416 -2760.61396 5480.85911 -2760.68921 5480.61024 -2760.71725 5478.87469 -2760.71725 5478.73134 -2760.74382 5478.60704 -2760.81999 5478.51829 -2760.93565 5478.47688 -2761.07544 5478.48832 -2761.22078 5478.52216 -2761.34705 5478.55557 -2761.729 5478.52216 -2762.11095 5478.42292 -2762.4813 5478.26089 -2762.82879 5478.04097 -2763.14286 5477.75556 -2763.42827 5477.66786 -2763.56044 5477.63843 -2763.71629 5477.67189 -2763.87134 5477.76297 -2764.00119 5477.89737 -2764.08543 5478.05393 -2764.11081 5478.23716 -2764.10369 5478.78083 -2764.13812 5479.28996 -2764.2394 5479.78195 -2764.4064 5480.24792 -2764.6362 5480.67991 -2764.92485 5481.07054 -2765.26741 5481.4131 -2765.65804 5481.70175 -2766.09003 5481.93155 -2766.556 5482.09855 -2767.04799 5482.19991 -2767.55756 5482.23389 -2768.076 5482.19991 -2768.59444 5482.09855 -2769.10401 5481.93155 -2769.596 5481.70175 -2770.06197 5481.4131 -2770.49396 5481.07054 -2770.88459 5480.67991 -2771.22715 5480.24792 -2771.5158 5479.78195 -2771.7456 5479.28378 -2771.9147 5478.7741 -2772.01539 5478.65798 -2772.02789 5478.25486 -2772.04864 5478.12511 -2772.04656 5477.7191 -2772.01394 5477.59801 -2771.99449 5477.21092 -2771.91225 5477.08177 -2771.87248 5476.72406 -2771.74659 5476.25608 -2771.5158 5475.82409 -2771.22715 5475.43346 -2770.88459 5475.0909 -2770.49396 5474.80225 -2770.06197 5474.57245 -2769.596 5474.40545 -2769.10401 5474.30409 -2768.59444 5474.27011 -2768.076 5474.30409 -2767.55756 5474.40545 -2767.04799 5474.57245 -2766.556 5474.80225 -2766.09003 5475.0909 -2765.65804 5475.43346 -2765.26741 5475.82409 -2764.92485 5476.25832 -2764.6347 5476.37267 -2764.51826 5476.43098 -2764.36583 5476.42357 -2764.2028 5476.35166 -2764.05631 5476.22721 -2763.95072 5476.07096 -2763.90363 5475.97405 -2763.89516 5475.6037 -2763.79592 5475.25621 -2763.63389 5474.94214 -2763.41397 5474.67103 -2763.14286 5474.45111 -2762.82879 5474.28908 -2762.4813 5474.18984 -2762.11095 5474.15643 -2761.729 5474.18984 -2761.34705 5474.22368 -2761.22078 5474.23512 -2761.07544 5474.19371 -2760.93565 5474.10496 -2760.81999 5473.98066 -2760.74382 5473.83731 -2760.71725 5471.99376 -2760.71725 5471.74489 -2760.68921 5471.52984 -2760.61396 5471.33692 -2760.49274 5471.17404 -2760.32986 5471.04427 -2760.24315 5470.8912 -2760.21271 5470.73813 -2760.24315 5470.60836 -2760.32986 5470.52165 -2760.45963 5470.4912 -2760.61271 5470.4912 -2815.89219 5470.4836 -2816.87529 5470.54977 -2817.78802 5470.6887 -2818.69257 5470.89947 -2819.58312 5471.18076 -2820.45398 5471.53075 -2821.29957 5471.94721 -2822.11448 5472.42747 -2822.89349 5472.96846 -2823.63163 5473.56671 -2824.32416 5474.21841 -2824.96666 5474.91938 -2825.55502 5475.66513 -2826.08546 5476.45089 -2826.5546 5477.27163 -2826.95944 5478.12211 -2827.29738 5478.99688 -2827.56626 5479.89034 -2827.76436 5480.79677 -2827.89041 5481.71028 -2827.94361 5482.67502 -2827.9242 5928.39803 -2827.9242 5929.34721 -2827.94308 5930.20947 -2827.88874 5931.06436 -2827.76315 5931.9059 -2827.56719 5932.72832 -2827.30221 5933.52597 -2826.97002 5934.29336 -2826.5729 5935.02523 -2826.1136 5935.71655 -2825.59525 5936.36255 -2825.02144 5936.95882 -2824.39608 5937.50124 -2823.72349 5937.98609 -2823.00829 5938.41004 -2822.25539 5938.77017 -2821.46996 5939.06402 -2820.65741 5939.28955 -2819.8233 5939.44524 -2818.97339 5939.52999 -2818.1135 5939.54323 -2817.24952 5939.48484 -2816.36487 5939.4823 -2816.28781 5939.48229 -2742.26769 5939.43424 -2741.66416 5939.33024 -2741.1197 5939.16872 -2740.58946 5938.95152 -2740.07949 5938.68112 -2739.59562 5938.36061 -2739.14337 5937.99366 -2738.72793 5937.58445 -2738.35403 5937.13768 -2738.02594 5936.65843 -2737.74743 5936.15219 -2737.52166 5935.62474 -2737.35122 5935.08211 -2737.23807 5934.53049 -2737.1833 5923.06855 -2737.1833 5922.91548 -2737.21375 5922.78571 -2737.30046 5922.699 -2737.43023 5922.66855 -2737.5833 5922.66855 -2738.19648 5919.63477 -2738.19648 5919.63477 -2737.5833 5919.60433 -2737.43023 5919.51762 -2737.30046 5919.38785 -2737.21375 5919.23477 -2737.1833 5915.00723 -2737.1833 5914.85415 -2737.21375 5914.72438 -2737.30046 5914.63767 -2737.43023 5914.60723 -2737.5833 5914.60723 -2738.19648 5911.57345 -2738.19648 5911.57345 -2737.5833 5911.543 -2737.43023 5911.45629 -2737.30046 5911.32652 -2737.21375 5911.17345 -2737.1833 5883.59375 -2737.1833 5883.44068 -2737.21375 5883.31091 -2737.30046 5883.2242 -2737.43023 5883.19375 -2737.5833 5883.19375 -2738.2449 5880.94737 -2738.2449 5880.94737 -2737.5833 5880.91693 -2737.43023 5880.83022 -2737.30046 5880.70045 -2737.21375 5880.54738 -2737.1833 5877.89462 -2737.1833 5877.74155 -2737.21375 5877.61178 -2737.30046 5877.52507 -2737.43023 5877.49462 -2737.5833 5877.49462 -2738.2449 5875.24825 -2738.2449 5875.24825 -2737.5833 5875.2178 -2737.43023 5875.13109 -2737.30046 5875.00132 -2737.21375 5874.84825 -2737.1833 5848.7083 -2737.1833 5847.97163 -2737.16121 5847.84307 -2737.15012 5847.15891 -2737.05276 5847.03204 -2737.02749 5846.36282 -2736.85519 5846.23952 -2736.81606 5845.59342 -2736.57094 5845.47519 -2736.51843 5844.8601 -2736.20346 5844.74839 -2736.13823 5844.17184 -2735.75727 5844.06802 -2735.6801 5843.53705 -2735.23782 5843.44239 -2735.14966 5842.9635 -2734.65145 5842.87915 -2734.55338 5842.4582 -2734.00535 5842.38519 -2733.89856 5842.02732 -2733.3074 5841.96654 -2733.1932 5841.67613 -2732.56615 5841.62834 -2732.44594 5841.40894 -2731.79065 5841.37471 -2731.6659 5841.22901 -2730.99042 5841.20874 -2730.86238 5841.13833 -2730.17167 5841.1323 -2730.05304 5841.1323 -2629.58875 5841.14193 -2629.43895 5841.22102 -2628.82639 5841.24644 -2628.692 5841.39592 -2628.09512 5841.43665 -2627.96512 5841.65453 -2627.38963 5841.71011 -2627.26524 5841.99341 -2626.71898 5842.06307 -2626.6019 5842.40797 -2626.09229 5842.49077 -2625.9841 5842.89258 -2625.51804 5842.9874 -2625.42021 5843.44066 -2625.00403 5843.54621 -2624.91788 5844.04479 -2624.55722 5844.15964 -2624.48394 5844.69677 -2624.18369 5844.81936 -2624.12425 5845.38776 -2623.88849 5845.51643 -2623.84371 5846.10838 -2623.67563 5846.24139 -2623.64611 5846.84886 -2623.54799 5846.98405 -2623.53418 5847.66146 -2623.5059 5935.30742 -2623.5059 5935.88391 -2623.46636 5936.39434 -2623.37137 5936.89079 -2623.21918 5937.36681 -2623.01176 5937.81629 -2622.75178 5938.23345 -2622.44258 5938.61291 -2622.08814 5938.9498 -2621.69302 5939.23979 -2621.26229 5939.47915 -2620.8015 5939.6648 -2620.31657 5939.79435 -2619.81374 5939.86613 -2619.29951 5939.8823 -2618.75532 5939.8823 -2545.9715 5939.78782 -2545.02357 5939.62612 -2544.10466 5939.39808 -2543.19993 5939.10491 -2542.31415 5938.74816 -2541.45202 5938.32971 -2540.61808 5937.85179 -2539.81675 5937.3169 -2539.05226 5936.72789 -2538.32865 5936.08786 -2537.64974 5935.4002 -2537.01913 5934.66854 -2536.44015 5933.89675 -2535.91586 5933.08891 -2535.44902 5932.24928 -2535.04211 5931.38231 -2534.69728 5930.49258 -2534.41635 5929.58479 -2534.2008 5928.66373 -2534.05178 5927.73895 -2533.971 5483.12352 -2533.97097 Z M 5520.6335 -2538.18251 L 5520.86492 -2538.1643 5742.52114 -2538.1643 5742.83557 -2538.19735 5743.11621 -2538.28853 5743.37634 -2538.43872 5743.55285 -2538.58948 5753.07988 -2548.1165 5753.19041 -2548.19464 5753.29502 -2548.24458 5753.43246 -2548.28207 5753.82995 -2548.31684 5754.2003 -2548.41608 5754.54779 -2548.57811 5754.86186 -2548.79803 5755.13297 -2549.06914 5755.35289 -2549.38321 5755.51492 -2549.7307 5755.61416 -2550.10105 5755.64757 -2550.483 5755.61416 -2550.86495 5755.51492 -2551.2353 5755.35289 -2551.58279 5755.13297 -2551.89686 5754.86186 -2552.16797 5754.54779 -2552.38789 5754.2003 -2552.54992 5753.82995 -2552.64916 5753.448 -2552.68257 5753.06605 -2552.64916 5752.6957 -2552.54992 5752.34821 -2552.38789 5752.03414 -2552.16797 5751.76303 -2551.89686 5751.54311 -2551.58279 5751.38108 -2551.2353 5751.28184 -2550.86495 5751.24763 -2550.47387 5751.21162 -2550.33957 5751.16023 -2550.22945 5751.0806 -2550.11578 5742.07368 -2541.10886 5741.94391 -2541.02215 5741.79084 -2540.9917 5521.60046 -2540.9917 5521.44739 -2541.02215 5521.31762 -2541.10886 5504.74181 -2557.68472 5504.6523 -2557.82143 5504.62493 -2557.98252 5504.66426 -2558.14112 5504.76373 -2558.27076 5504.90675 -2558.3498 5505.06944 -2558.36505 5505.19636 -2558.35075 5507.51364 -2558.35075 5507.76251 -2558.37879 5507.97756 -2558.45404 5508.17048 -2558.57526 5508.31346 -2558.71824 5508.44323 -2558.80495 5508.59631 -2558.8354 5513.5135 -2558.8354 5513.66657 -2558.80495 5513.79634 -2558.71824 5513.88305 -2558.58847 5513.9135 -2558.4354 5513.9135 -2555.79926 5513.94154 -2555.55039 5514.01679 -2555.33534 5514.13801 -2555.14242 5514.29912 -2554.98131 5514.49204 -2554.86009 5514.70709 -2554.78484 5514.95596 -2554.7568 5518.84804 -2554.7568 5519.09691 -2554.78484 5519.31196 -2554.86009 5519.50488 -2554.98131 5519.66599 -2555.14242 5519.78721 -2555.33534 5519.86246 -2555.55039 5519.8905 -2555.79926 5519.8905 -2568.35274 5519.86246 -2568.60161 5519.78721 -2568.81666 5519.66599 -2569.00958 5519.50488 -2569.17069 5519.31196 -2569.29191 5519.09691 -2569.36716 5518.84804 -2569.3952 5514.95596 -2569.3952 5514.70709 -2569.36716 5514.49204 -2569.29191 5514.29912 -2569.17069 5514.13801 -2569.00958 5514.01679 -2568.81666 5513.94154 -2568.60161 5513.9135 -2568.35274 5513.9135 -2563.64574 5513.89433 -2563.52338 5513.83864 -2563.41275 5513.75178 -2563.32446 5513.57552 -2563.19613 5512.90968 -2562.79929 5512.20814 -2562.46962 5511.47767 -2562.2103 5510.7253 -2562.02382 5509.95828 -2561.91199 5509.20361 -2561.8754 5508.76569 -2561.8754 5508.60027 -2561.91121 5508.46446 -2562.01222 5508.38259 -2562.16036 5508.36931 -2562.32909 5508.45281 -2562.52929 5508.52806 -2562.74434 5508.5561 -2562.99321 5508.5561 -2564.91679 5508.52806 -2565.16566 5508.45281 -2565.38071 5508.33159 -2565.57363 5508.05252 -2565.83537 5507.9877 -2565.95266 5507.96525 -2566.08477 5507.96525 -2574.38941 5508.01244 -2574.85239 5508.054 -2574.99195 5508.14277 -2575.10739 5508.26699 -2575.18339 5508.41017 -2575.2099 5508.56979 -2575.2099 5508.81866 -2575.23794 5509.03371 -2575.31319 5509.22663 -2575.43441 5509.38774 -2575.59552 5509.50896 -2575.78844 5509.58421 -2576.00349 5509.61225 -2576.25236 5509.61225 -2580.86964 5509.58421 -2581.11851 5509.50896 -2581.33356 5509.38774 -2581.52648 5509.22663 -2581.68759 5509.03371 -2581.80881 5508.81866 -2581.88406 5508.56979 -2581.9121 5504.34621 -2581.9121 5504.09734 -2581.88406 5503.88229 -2581.80881 5503.68937 -2581.68759 5503.52826 -2581.52648 5503.40704 -2581.33356 5503.33179 -2581.11851 5503.30375 -2580.86964 5503.30375 -2576.25236 5503.33179 -2576.00349 5503.40704 -2575.78844 5503.52826 -2575.59552 5503.68937 -2575.43441 5503.88229 -2575.31319 5504.09605 -2575.23839 5504.38625 -2575.20768 5504.52594 -2575.1662 5504.64151 -2575.07744 5504.71761 -2574.95318 5504.74415 -2574.8099 5504.74415 -2566.08439 5504.7217 -2565.95228 5504.65688 -2565.83499 5504.53952 -2565.73474 5504.37841 -2565.57363 5504.25719 -2565.38071 5504.18194 -2565.16566 5504.1539 -2564.91679 5504.1539 -2562.99321 5504.18194 -2562.74434 5504.25719 -2562.52929 5504.35865 -2562.36781 5504.41299 -2562.22936 5504.41299 -2562.08064 5504.35865 -2561.94219 5504.25719 -2561.78071 5504.18194 -2561.56566 5504.1539 -2561.31679 5504.1539 -2559.39321 5504.1682 -2559.26629 5504.15295 -2559.1036 5504.0739 -2558.96059 5503.94427 -2558.86112 5503.78567 -2558.82178 5503.62458 -2558.84916 5503.48787 -2558.93866 5492.37376 -2570.05282 5492.28705 -2570.18258 5492.2566 -2570.33566 5492.2566 -2582.15667 5492.27905 -2582.28878 5492.34387 -2582.40607 5492.44379 -2582.49536 5492.65848 -2582.63026 5492.81959 -2582.79137 5492.94081 -2582.98429 5493.01606 -2583.19934 5493.0441 -2583.44821 5493.0441 -2585.37179 5493.01606 -2585.62066 5492.94081 -2585.83571 5492.84764 -2585.98399 5492.78995 -2586.14311 5492.80323 -2586.31184 5492.8851 -2586.45998 5493.02091 -2586.56099 5493.18633 -2586.5968 5494.60553 -2586.59557 5495.03034 -2586.56213 5495.09234 -2586.55232 5495.50669 -2586.45284 5495.60682 -2586.41669 5495.73659 -2586.32998 5495.8233 -2586.20021 5495.85375 -2586.04714 5495.85375 -2585.80236 5495.88179 -2585.55349 5495.95704 -2585.33844 5496.07826 -2585.14552 5496.23937 -2584.98441 5496.43229 -2584.86319 5496.64734 -2584.78794 5496.89621 -2584.7599 5501.11979 -2584.7599 5501.36866 -2584.78794 5501.58371 -2584.86319 5501.77663 -2584.98441 5501.93774 -2585.14552 5502.05896 -2585.33844 5502.13421 -2585.55349 5502.16225 -2585.80236 5502.16225 -2590.41964 5502.13421 -2590.66851 5502.05896 -2590.88356 5501.93774 -2591.07648 5501.77663 -2591.23759 5501.58371 -2591.35881 5501.36866 -2591.43406 5501.11979 -2591.4621 5496.89621 -2591.4621 5496.64734 -2591.43406 5496.43229 -2591.35881 5496.23937 -2591.23759 5496.07826 -2591.07648 5495.95704 -2590.88356 5495.88179 -2590.66851 5495.85375 -2590.41964 5495.85375 -2589.86827 5495.8272 -2589.72498 5495.75109 -2589.60071 5495.63551 -2589.51195 5495.49581 -2589.47048 5495.03694 -2589.4242 5493.16911 -2589.4242 5493.037 -2589.44665 5492.91972 -2589.51147 5492.81959 -2589.62863 5492.65848 -2589.78974 5492.46556 -2589.91096 5492.25051 -2589.98621 5492.00164 -2590.01425 5489.68436 -2590.01425 5489.43549 -2589.98621 5489.22044 -2589.91096 5489.02752 -2589.78974 5488.86641 -2589.62863 5488.74519 -2589.43571 5488.66994 -2589.22066 5488.6419 -2588.97179 5488.6419 -2587.04821 5488.66994 -2586.79934 5488.74519 -2586.58429 5488.84665 -2586.42281 5488.90099 -2586.28436 5488.90099 -2586.13564 5488.84665 -2585.99719 5488.74519 -2585.83571 5488.66994 -2585.62066 5488.6419 -2585.37179 5488.6419 -2583.44821 5488.66994 -2583.19934 5488.74519 -2582.98429 5488.86641 -2582.79137 5489.02752 -2582.63026 5489.24201 -2582.49548 5489.34193 -2582.40619 5489.40675 -2582.28891 5489.4292 -2582.1568 5489.4292 -2569.60536 5489.46225 -2569.29093 5489.55343 -2569.01029 5489.70362 -2568.75016 5489.85438 -2568.57365 5491.93617 -2566.49176 5519.83474 -2538.59319 5520.08044 -2538.39422 5520.34336 -2538.26026 5520.6335 -2538.18251 Z M 5656.002 -2770.88543 L 5656.38395 -2770.91884 5656.7543 -2771.01808 5657.10179 -2771.18011 5657.41586 -2771.40003 5657.68697 -2771.67114 5657.90689 -2771.98521 5658.06892 -2772.3327 5658.16816 -2772.70305 5658.20157 -2773.085 5658.16816 -2773.46695 5658.06892 -2773.8373 5657.90689 -2774.18479 5657.87437 -2774.23122 5657.80811 -2774.39119 5657.81566 -2774.56418 5657.89562 -2774.71777 5658.03299 -2774.82317 5658.20203 -2774.86065 5659.71137 -2774.86065 5659.89475 -2774.86866 5660.06807 -2774.89147 5660.23874 -2774.92931 5660.40546 -2774.98188 5660.56697 -2775.04878 5660.72203 -2775.1295 5660.86947 -2775.22343 5661.00816 -2775.32985 5661.14349 -2775.45385 5672.71231 -2787.02268 5672.82611 -2787.10236 5673.08079 -2787.22111 5673.39486 -2787.44103 5673.66597 -2787.71214 5673.88589 -2788.02621 5674.04792 -2788.3737 5674.14716 -2788.74405 5674.18057 -2789.126 5674.14716 -2789.50795 5674.04792 -2789.8783 5673.88661 -2790.22422 5673.63126 -2790.58234 5673.57598 -2790.69265 5673.55695 -2790.81456 5673.55695 -2814.05931 5673.57546 -2814.17959 5673.62929 -2814.28874 5673.85089 -2814.60521 5674.01292 -2814.9527 5674.11216 -2815.32305 5674.14557 -2815.705 5674.11216 -2816.08695 5674.01292 -2816.4573 5673.85089 -2816.80479 5673.63097 -2817.11886 5673.35986 -2817.38997 5673.04579 -2817.60989 5672.6983 -2817.77192 5672.32795 -2817.87116 5671.946 -2817.90457 5671.56405 -2817.87116 5671.1937 -2817.77192 5670.84621 -2817.60989 5670.53214 -2817.38997 5670.26103 -2817.11886 5670.04111 -2816.80479 5669.87908 -2816.4573 5669.77984 -2816.08695 5669.74643 -2815.705 5669.77984 -2815.32305 5669.87908 -2814.9527 5670.04111 -2814.60521 5670.26351 -2814.2876 5670.31734 -2814.17845 5670.33585 -2814.05817 5670.33585 -2805.32988 5670.30405 -2805.17359 5670.21371 -2805.04215 5670.0792 -2804.95645 5669.92189 -2804.93013 5669.37595 -2805.07616 5668.994 -2805.10957 5668.61205 -2805.07616 5668.2417 -2804.97692 5667.89421 -2804.81489 5667.58014 -2804.59497 5667.53243 -2804.54726 5667.40266 -2804.46055 5667.24959 -2804.4301 5657.23241 -2804.4301 5657.1003 -2804.45255 5656.98302 -2804.51737 5656.89372 -2804.61729 5656.82574 -2804.72548 5656.66463 -2804.88659 5656.47171 -2805.00781 5656.34557 -2805.05195 5656.20561 -2805.13628 5656.11106 -2805.26954 5656.07768 -2805.4295 5656.11106 -2805.58946 5656.20561 -2805.72272 5656.34557 -2805.80705 5656.47171 -2805.85119 5656.66463 -2805.97241 5656.82574 -2806.13352 5656.8941 -2806.24231 5656.98339 -2806.34223 5657.10068 -2806.40705 5657.23279 -2806.4295 5657.32699 -2806.4295 5657.48006 -2806.39905 5657.60983 -2806.31234 5657.65814 -2806.26403 5657.97221 -2806.04411 5658.3197 -2805.88208 5658.69005 -2805.78284 5659.072 -2805.74943 5659.45395 -2805.78284 5659.8243 -2805.88208 5660.17179 -2806.04411 5660.48586 -2806.26403 5660.75697 -2806.53514 5660.97689 -2806.84921 5661.13892 -2807.1967 5661.23816 -2807.56705 5661.27157 -2807.949 5661.23816 -2808.33095 5661.13892 -2808.7013 5660.97689 -2809.04879 5660.75697 -2809.36286 5660.48586 -2809.63397 5660.17179 -2809.85389 5659.8243 -2810.01592 5659.45395 -2810.11516 5659.072 -2810.14857 5658.69005 -2810.11516 5658.3197 -2810.01592 5657.97221 -2809.85389 5657.65814 -2809.63397 5657.61083 -2809.58666 5657.48106 -2809.49995 5657.32799 -2809.4695 5657.23216 -2809.4695 5657.10005 -2809.49195 5656.98276 -2809.55677 5656.89347 -2809.65669 5656.82574 -2809.76448 5656.66463 -2809.92559 5656.47171 -2810.04681 5656.25666 -2810.12206 5656.00779 -2810.1501 5654.08421 -2810.1501 5653.83534 -2810.12206 5653.62029 -2810.04681 5653.45881 -2809.94535 5653.32036 -2809.89101 5653.17164 -2809.89101 5653.03319 -2809.94535 5652.87171 -2810.04681 5652.65666 -2810.12206 5652.40779 -2810.1501 5650.48421 -2810.1501 5650.23534 -2810.12206 5650.02029 -2810.04681 5649.82737 -2809.92559 5649.66626 -2809.76448 5649.59853 -2809.65669 5649.50924 -2809.55677 5649.39195 -2809.49195 5649.25984 -2809.4695 5646.17101 -2809.4695 5646.01794 -2809.49995 5645.88817 -2809.58666 5645.84086 -2809.63397 5645.52679 -2809.85389 5645.1793 -2810.01592 5644.80895 -2810.11516 5644.427 -2810.14857 5644.04505 -2810.11516 5643.6747 -2810.01592 5643.32721 -2809.85389 5643.01314 -2809.63397 5642.63205 -2809.25745 5642.49066 -2809.2008 5642.33834 -2809.20112 5642.19718 -2809.25835 5642.08766 -2809.36421 5641.97797 -2809.52086 5641.70686 -2809.79197 5641.39279 -2810.01189 5641.0453 -2810.17392 5640.67495 -2810.27316 5640.48508 -2810.28977 5640.33682 -2810.33262 5640.21583 -2810.42841 5640.1401 -2810.56288 5640.12091 -2810.71601 5640.16111 -2810.865 5640.25473 -2810.98769 5640.45111 -2811.08794 5640.64403 -2811.20916 5640.80514 -2811.37027 5640.92636 -2811.56319 5641.00161 -2811.77824 5641.02965 -2812.02711 5641.02965 -2812.1712 5641.0601 -2812.32427 5641.14681 -2812.45404 5641.27658 -2812.54075 5641.42965 -2812.5712 5643.60135 -2812.5712 5643.75442 -2812.54075 5643.88419 -2812.45404 5643.9709 -2812.32427 5644.00135 -2812.1712 5644.00135 -2811.94811 5644.02939 -2811.69924 5644.10464 -2811.48419 5644.22586 -2811.29127 5644.38697 -2811.13016 5644.57989 -2811.00894 5644.79494 -2810.93369 5645.04381 -2810.90565 5648.54219 -2810.90565 5648.79106 -2810.93369 5649.00611 -2811.00894 5649.19903 -2811.13016 5649.36014 -2811.29127 5649.48136 -2811.48419 5649.55661 -2811.69924 5649.58465 -2811.94811 5649.58465 -2816.23389 5649.55661 -2816.48276 5649.48136 -2816.69781 5649.36014 -2816.89073 5649.19903 -2817.05184 5648.85218 -2817.26228 5648.75763 -2817.39554 5648.72425 -2817.5555 5648.75763 -2817.71546 5648.85218 -2817.84872 5649.19903 -2818.05916 5649.36014 -2818.22027 5649.48136 -2818.41319 5649.55661 -2818.62824 5649.58465 -2818.87711 5649.58465 -2819.1003 5649.6151 -2819.25337 5649.70181 -2819.38314 5649.83158 -2819.46985 5649.98465 -2819.5003 5651.38956 -2819.5003 5651.56466 -2819.45994 5651.68648 -2819.3951 5652.02921 -2819.15511 5652.3767 -2818.99308 5652.74705 -2818.89384 5653.129 -2818.86043 5653.51095 -2818.89384 5653.8813 -2818.99308 5654.22879 -2819.15511 5654.54286 -2819.37503 5654.81397 -2819.64614 5655.03389 -2819.96021 5655.19592 -2820.3077 5655.29516 -2820.67805 5655.32857 -2821.06 5655.29516 -2821.44195 5655.19592 -2821.8123 5655.03389 -2822.15979 5654.81397 -2822.47386 5654.54286 -2822.74497 5654.22879 -2822.96489 5653.8813 -2823.12692 5653.51095 -2823.22616 5653.129 -2823.25957 5652.74705 -2823.22616 5652.3767 -2823.12692 5652.02921 -2822.96489 5651.71179 -2822.74262 5651.61715 -2822.65176 5651.48943 -2822.56921 5651.34012 -2822.5403 5649.98465 -2822.5403 5649.83158 -2822.57075 5649.70181 -2822.65746 5649.6151 -2822.78723 5649.58465 -2822.9403 5649.58465 -2823.16289 5649.55661 -2823.41176 5649.48136 -2823.62681 5649.36014 -2823.81973 5649.19903 -2823.98084 5649.00611 -2824.10206 5648.79106 -2824.17731 5648.54219 -2824.20535 5645.04381 -2824.20535 5644.79494 -2824.17731 5644.57989 -2824.10206 5644.38697 -2823.98084 5644.22586 -2823.81973 5644.10464 -2823.62681 5644.02939 -2823.41176 5644.00135 -2823.16289 5644.00135 -2818.87711 5644.02939 -2818.62824 5644.10464 -2818.41319 5644.22586 -2818.22027 5644.38697 -2818.05916 5644.73382 -2817.84872 5644.82837 -2817.71546 5644.86175 -2817.5555 5644.82837 -2817.39554 5644.73382 -2817.26228 5644.38697 -2817.05184 5644.22586 -2816.89073 5644.10464 -2816.69781 5644.02939 -2816.48276 5644.00135 -2816.23389 5644.00135 -2816.0112 5643.9709 -2815.85813 5643.88419 -2815.72836 5643.75442 -2815.64165 5643.60135 -2815.6112 5641.49797 -2815.6112 5641.39044 -2815.61985 5641.24981 -2815.66064 5641.13327 -2815.74931 5641.05645 -2815.87397 5641.02965 -2816.01793 5641.02965 -2816.31289 5641.00161 -2816.56176 5640.92636 -2816.77681 5640.80514 -2816.96973 5640.64403 -2817.13084 5640.29718 -2817.34128 5640.20263 -2817.47454 5640.16925 -2817.6345 5640.20263 -2817.79446 5640.29718 -2817.92772 5640.64403 -2818.13816 5640.80514 -2818.29927 5640.92636 -2818.49219 5641.00161 -2818.70724 5641.02965 -2818.95611 5641.02965 -2819.76633 5639.37382 -2819.76633 5639.37382 -2817.75535 5639.34338 -2817.60228 5639.25667 -2817.47251 5639.1269 -2817.3858 5638.97383 -2817.35535 5637.50217 -2817.35535 5637.3491 -2817.3858 5637.21933 -2817.47251 5637.13262 -2817.60228 5637.10217 -2817.75535 5637.10217 -2819.76633 5635.44635 -2819.76633 5635.44635 -2818.95611 5635.47439 -2818.70724 5635.54964 -2818.49219 5635.67086 -2818.29927 5635.83197 -2818.13816 5636.17882 -2817.92772 5636.27337 -2817.79446 5636.30675 -2817.6345 5636.27337 -2817.47454 5636.17882 -2817.34128 5635.83197 -2817.13084 5635.67086 -2816.96973 5635.54964 -2816.77681 5635.47439 -2816.56176 5635.44635 -2816.31289 5635.44635 -2812.02711 5635.47439 -2811.77824 5635.54964 -2811.56319 5635.631 -2811.43371 5635.68228 -2811.30991 5635.68979 -2811.17611 5635.6527 -2811.04734 5635.57515 -2810.93806 5631.90085 -2807.26376 5631.77108 -2807.17705 5631.61801 -2807.1466 5630.04859 -2807.1466 5629.89552 -2807.17705 5629.76575 -2807.26376 5629.67904 -2807.39353 5629.64859 -2807.5466 5629.67904 -2807.69967 5629.76575 -2807.82944 5630.79861 -2808.8623 5630.99992 -2809.10761 5631.14021 -2809.37006 5631.2266 -2809.65484 5631.2577 -2809.97065 5631.2577 -2810.60133 5631.284 -2810.74398 5631.35944 -2810.86787 5631.47411 -2810.95671 5631.61291 -2810.99882 5631.73606 -2811.01269 5631.95111 -2811.08794 5632.14403 -2811.20916 5632.30514 -2811.37027 5632.42636 -2811.56319 5632.50161 -2811.77824 5632.52965 -2812.02711 5632.52965 -2816.31289 5632.50161 -2816.56176 5632.42636 -2816.77681 5632.30514 -2816.96973 5632.14403 -2817.13084 5631.79718 -2817.34128 5631.70263 -2817.47454 5631.66925 -2817.6345 5631.70263 -2817.79446 5631.79718 -2817.92772 5632.14403 -2818.13816 5632.30514 -2818.29927 5632.42636 -2818.49219 5632.50161 -2818.70724 5632.52965 -2818.95611 5632.52965 -2823.24189 5632.50161 -2823.49076 5632.42636 -2823.70581 5632.30514 -2823.89873 5632.14403 -2824.05984 5631.95111 -2824.18106 5631.73606 -2824.25631 5631.48719 -2824.28435 5627.98881 -2824.28435 5627.73994 -2824.25631 5627.52489 -2824.18106 5627.33197 -2824.05984 5627.17086 -2823.89873 5627.04964 -2823.70581 5626.97439 -2823.49076 5626.94635 -2823.24189 5626.94635 -2822.81699 5626.92071 -2822.67609 5626.84709 -2822.55325 5626.73491 -2822.46422 5626.54241 -2822.36132 5626.2971 -2822.16001 5625.27904 -2821.14194 5625.00136 -2820.91157 5624.93616 -2820.868 5624.65254 -2820.71641 5624.5801 -2820.6864 5624.27236 -2820.59305 5624.193 -2820.57751 5623.45497 -2820.5094 5623.0837 -2820.40992 5622.73621 -2820.24789 5622.42214 -2820.02797 5622.15103 -2819.75686 5621.93111 -2819.44279 5621.76908 -2819.0953 5621.66984 -2818.72495 5621.63643 -2818.343 5621.66984 -2817.96105 5621.76908 -2817.5907 5621.93111 -2817.24321 5622.15103 -2816.92914 5622.42214 -2816.65803 5622.73621 -2816.43811 5623.0837 -2816.27608 5623.45405 -2816.17684 5623.836 -2816.14343 5624.21795 -2816.17684 5624.5883 -2816.27608 5624.93579 -2816.43811 5625.24986 -2816.65803 5625.52097 -2816.92914 5625.74089 -2817.24321 5625.84438 -2817.40807 5626.67037 -2818.23407 5626.80014 -2818.32078 5626.95322 -2818.35123 5627.10629 -2818.32078 5627.23606 -2818.23407 5627.33197 -2818.13816 5627.67882 -2817.92772 5627.77337 -2817.79446 5627.80675 -2817.6345 5627.77337 -2817.47454 5627.67882 -2817.34128 5627.33197 -2817.13084 5627.17086 -2816.96973 5627.04964 -2816.77681 5626.97439 -2816.56176 5626.94635 -2816.31289 5626.94635 -2812.02711 5626.97439 -2811.77824 5627.04964 -2811.56319 5627.17086 -2811.37027 5627.33197 -2811.20916 5627.52489 -2811.08794 5627.90574 -2810.95128 5628.02873 -2810.82476 5628.08531 -2810.65764 5628.0645 -2810.48243 5627.97032 -2810.33323 5626.86945 -2809.23236 5626.73968 -2809.14565 5626.58661 -2809.1152 5625.82834 -2809.1152 5625.44604 -2809.16615 5621.53415 -2809.16615 5621.38108 -2809.1966 5621.25131 -2809.28331 5621.1646 -2809.41308 5621.13415 -2809.56615 5621.13415 -2810.29775 5620.08857 -2810.29775 5620.08857 -2809.00141 5620.05584 -2808.84291 5619.96297 -2808.71037 5619.8252 -2808.62546 5619.66505 -2808.6021 5619.42584 -2808.61619 5619.28314 -2808.65167 5619.1629 -2808.73632 5619.08138 -2808.85869 5619.04958 -2809.00226 5619.07181 -2809.14761 5619.13811 -2809.33709 5619.16615 -2809.58596 5619.16615 -2813.47804 5619.13811 -2813.72691 5619.05987 -2813.9505 5619.03743 -2814.08261 5619.03743 -2814.52086 5618.86618 -2814.5676 5618.73203 -2814.68382 5618.66137 -2814.84665 5618.66812 -2815.02403 5618.75816 -2815.36005 5618.79157 -2815.742 5618.75816 -2816.12395 5618.65892 -2816.4943 5618.49689 -2816.84179 5618.27697 -2817.15586 5618.00586 -2817.42697 5617.69179 -2817.64689 5617.3443 -2817.80892 5616.97395 -2817.90816 5616.592 -2817.94157 5616.21005 -2817.90816 5615.8397 -2817.80892 5615.49221 -2817.64689 5615.17814 -2817.42697 5615.13073 -2817.37956 5615.00096 -2817.29285 5614.84789 -2817.2624 5614.73205 -2817.2624 5614.41624 -2817.2313 5614.13146 -2817.14491 5613.86901 -2817.00462 5613.6237 -2816.80331 5612.59689 -2815.7765 5612.39558 -2815.53119 5612.25529 -2815.26874 5612.1689 -2814.98396 5612.1378 -2814.66815 5612.1378 -2813.86034 5612.08698 -2813.47923 5612.03484 -2813.32217 5611.92358 -2813.19966 5611.77225 -2813.13267 5611.60675 -2813.13267 5611.45542 -2813.19966 5611.34416 -2813.32217 5611.29202 -2813.47923 5611.2408 -2813.86148 5611.2408 -2816.81971 5611.2671 -2816.96236 5611.34254 -2817.08625 5611.45721 -2817.17509 5611.59601 -2817.2172 5611.73976 -2817.23339 5611.95481 -2817.30864 5612.14773 -2817.42986 5612.30884 -2817.59097 5612.43006 -2817.78389 5612.50531 -2817.99894 5612.53335 -2818.24781 5612.53335 -2818.66552 5612.57107 -2818.83508 5612.67711 -2818.97267 5612.77399 -2819.04933 5613.27055 -2819.36302 5613.68435 -2819.55907 5613.83695 -2819.59716 5613.99244 -2819.57346 5614.26386 -2819.47466 5614.51021 -2819.4469 5616.43379 -2819.4469 5616.68266 -2819.47494 5616.89771 -2819.55019 5617.05919 -2819.65165 5617.19764 -2819.70599 5617.34636 -2819.70599 5617.48481 -2819.65165 5617.64629 -2819.55019 5617.86134 -2819.47494 5618.11021 -2819.4469 5618.32988 -2819.4469 5618.32988 -2820.80745 5617.87625 -2820.80745 5617.72318 -2820.8379 5617.59341 -2820.92461 5617.5067 -2821.05438 5617.47625 -2821.20745 5617.47625 -2822.08855 5617.5067 -2822.24162 5617.59341 -2822.37139 5617.72318 -2822.4581 5617.87625 -2822.48855 5618.32988 -2822.48855 5618.32988 -2823.8491 5618.11021 -2823.8491 5617.86134 -2823.82106 5617.64629 -2823.74581 5617.48481 -2823.64435 5617.34636 -2823.59001 5617.19764 -2823.59001 5617.05919 -2823.64435 5616.89771 -2823.74581 5616.68266 -2823.82106 5616.43379 -2823.8491 5614.51021 -2823.8491 5614.26134 -2823.82106 5614.04629 -2823.74581 5613.85337 -2823.62459 5613.69226 -2823.46348 5613.47647 -2823.10133 5613.3432 -2823.00678 5613.18325 -2822.9734 5611.57013 -2822.9734 5611.37529 -2822.96198 5611.27201 -2822.97216 5610.7452 -2822.93881 5610.21989 -2822.83799 5610.00526 -2822.78865 5607.20511 -2822.78865 5606.95624 -2822.76061 5606.74119 -2822.68536 5606.54827 -2822.56414 5606.38716 -2822.40303 5606.17672 -2822.05618 5606.04346 -2821.96163 5605.8835 -2821.92825 5605.72354 -2821.96163 5605.59028 -2822.05618 5605.37984 -2822.40303 5605.21873 -2822.56414 5605.02581 -2822.68536 5604.81076 -2822.76061 5604.56189 -2822.78865 5603.75167 -2822.78865 5603.75167 -2821.13283 5605.76265 -2821.13283 5605.91572 -2821.10238 5606.04549 -2821.01567 5606.1322 -2820.8859 5606.16265 -2820.73283 5606.16265 -2819.26117 5606.1322 -2819.1081 5606.04549 -2818.97833 5605.91572 -2818.89162 5605.76265 -2818.86117 5603.75167 -2818.86117 5603.75167 -2817.20535 5604.56189 -2817.20535 5604.81076 -2817.23339 5605.02581 -2817.30864 5605.21873 -2817.42986 5605.37984 -2817.59097 5605.59028 -2817.93782 5605.72354 -2818.03237 5605.8835 -2818.06575 5606.04346 -2818.03237 5606.17672 -2817.93782 5606.38716 -2817.59097 5606.54827 -2817.42986 5606.74119 -2817.30864 5606.95624 -2817.23339 5607.20511 -2817.20535 5607.8008 -2817.20535 5607.95387 -2817.1749 5608.08364 -2817.08819 5608.17035 -2816.95842 5608.2008 -2816.80535 5608.2008 -2814.9205 5608.17035 -2814.76743 5608.08364 -2814.63766 5607.95387 -2814.55095 5607.8008 -2814.5205 5607.22331 -2814.5205 5606.97444 -2814.49246 5606.75939 -2814.41721 5606.56647 -2814.29599 5606.40536 -2814.13488 5606.28414 -2813.94196 5606.20988 -2813.72974 5606.17895 -2813.41329 5606.13824 -2813.27256 5606.04958 -2813.15592 5605.92488 -2813.07903 5605.78085 -2813.0522 5603.10708 -2813.0522 5602.95401 -2813.08265 5602.82424 -2813.16935 5599.28933 -2816.7042 5599.19905 -2816.8429 5599.17264 -2817.00627 5599.21461 -2817.16635 5599.3178 -2817.29574 5599.46452 -2817.37229 5599.62968 -2817.38289 5599.81219 -2817.30864 5600.02724 -2817.23339 5600.27611 -2817.20535 5601.08633 -2817.20535 5601.08633 -2818.86117 5598.83365 -2818.86117 5598.68058 -2818.89162 5598.55081 -2818.97833 5598.4641 -2819.1081 5598.43365 -2819.26117 5598.43365 -2819.99188 5597.55055 -2819.99188 5597.55055 -2819.53825 5597.5201 -2819.38518 5597.43339 -2819.25541 5597.30362 -2819.1687 5597.15055 -2819.13825 5596.26945 -2819.13825 5596.11638 -2819.1687 5595.98661 -2819.25541 5595.8999 -2819.38518 5595.86945 -2819.53825 5595.86945 -2819.99188 5592.55055 -2819.99188 5592.55055 -2819.53825 5592.5201 -2819.38518 5592.43339 -2819.25541 5592.30362 -2819.1687 5592.15055 -2819.13825 5591.26945 -2819.13825 5591.11638 -2819.1687 5590.98661 -2819.25541 5590.8999 -2819.38518 5590.86945 -2819.53825 5590.86945 -2819.99188 5589.4291 -2819.99188 5589.27603 -2820.02232 5589.14626 -2820.10903 5589.05955 -2820.2388 5589.0291 -2820.39188 5589.0291 -2821.07613 5589.05955 -2821.2292 5589.14626 -2821.35897 5589.27603 -2821.44568 5589.4291 -2821.47613 5590.86945 -2821.47613 5590.86945 -2822.73825 5590.55136 -2822.73825 5590.30249 -2822.71021 5590.08744 -2822.63496 5589.89452 -2822.51374 5589.73341 -2822.35263 5589.53113 -2822.01178 5589.41485 -2821.91905 5589.27273 -2821.87521 5589.12442 -2821.88633 5588.99042 -2821.95086 5588.88926 -2822.05988 5588.80459 -2822.19463 5588.64348 -2822.35574 5588.45056 -2822.47696 5588.23551 -2822.55221 5587.98664 -2822.58025 5585.66936 -2822.58025 5585.42049 -2822.55221 5585.20544 -2822.47696 5585.01252 -2822.35574 5584.87024 -2822.21346 5584.74047 -2822.12675 5584.58739 -2822.0963 5583.99061 -2822.0963 5583.83753 -2822.12675 5583.70776 -2822.21346 5583.60448 -2822.31674 5583.41156 -2822.43796 5583.19651 -2822.51321 5582.94764 -2822.54125 5580.63036 -2822.54125 5580.38149 -2822.51321 5580.16644 -2822.43796 5579.97352 -2822.31674 5579.87024 -2822.21346 5579.74047 -2822.12675 5579.58739 -2822.0963 5578.95161 -2822.0963 5578.79853 -2822.12675 5578.66876 -2822.21346 5578.56548 -2822.31674 5578.37256 -2822.43796 5578.15751 -2822.51321 5577.90864 -2822.54125 5575.59136 -2822.54125 5575.34249 -2822.51321 5575.12744 -2822.43796 5574.93452 -2822.31674 5574.79184 -2822.17406 5574.66207 -2822.08735 5574.50899 -2822.0569 5574.19915 -2822.0569 5573.88334 -2822.0258 5573.59856 -2821.93941 5573.33611 -2821.79912 5573.0908 -2821.59781 5571.23979 -2819.7468 5571.13625 -2819.62064 5571.00981 -2819.51859 5570.85321 -2819.47525 5570.69229 -2819.49777 5570.55361 -2819.58245 5570.46005 -2819.71529 5570.42705 -2819.87439 5570.42705 -2820.11485 5570.39421 -2820.44833 5570.30267 -2820.75009 5570.15401 -2821.0282 5569.94144 -2821.28723 5567.54793 -2823.68074 5567.2889 -2823.89331 5567.01079 -2824.04197 5566.70903 -2824.13351 5566.37555 -2824.16635 5534.72495 -2824.16635 5534.57188 -2824.1968 5534.44211 -2824.28351 5534.3554 -2824.41328 5534.32495 -2824.56635 5534.32495 -2824.89514 5534.29691 -2825.14401 5534.22166 -2825.35906 5534.10044 -2825.55198 5533.93933 -2825.71309 5533.74641 -2825.83431 5533.53136 -2825.90956 5533.28249 -2825.9376 5530.57151 -2825.9376 5530.32264 -2825.90956 5530.10759 -2825.83431 5529.91717 -2825.71466 5529.71394 -2825.50541 5529.58276 -2825.41567 5529.427 -2825.3841 5529.27124 -2825.41567 5529.14006 -2825.50541 5528.93683 -2825.71466 5528.74641 -2825.83431 5528.53136 -2825.90956 5528.28249 -2825.9376 5525.57151 -2825.9376 5525.32264 -2825.90956 5525.10759 -2825.83431 5524.91467 -2825.71309 5524.75356 -2825.55198 5524.63234 -2825.35906 5524.55709 -2825.14401 5524.52905 -2824.89514 5524.52905 -2818.64086 5524.55709 -2818.39199 5524.63234 -2818.17694 5524.75356 -2817.98402 5524.91467 -2817.82291 5525.12896 -2817.68826 5525.22888 -2817.59897 5525.2937 -2817.48168 5525.31615 -2817.34957 5525.31615 -2816.68955 5525.34899 -2816.35607 5525.44053 -2816.05431 5525.58919 -2815.7762 5525.80176 -2815.51717 5527.21097 -2814.10796 5527.47 -2813.89539 5527.74811 -2813.74673 5528.04987 -2813.65519 5528.38335 -2813.62235 5534.44645 -2813.62235 5534.77993 -2813.65519 5535.08169 -2813.74673 5535.3598 -2813.89539 5535.61882 -2814.10796 5538.99247 -2817.48169 5539.142 -2817.57598 5539.31756 -2817.59661 5539.48488 -2817.53956 5539.61126 -2817.41597 5539.67204 -2817.24997 5539.62725 -2816.82479 5539.62725 -2814.63663 5541.87363 -2814.63663 5541.87363 -2817.51375 5541.90407 -2817.66682 5541.99078 -2817.79659 5542.12055 -2817.8833 5542.27363 -2817.91375 5544.92638 -2817.91375 5545.07945 -2817.8833 5545.20922 -2817.79659 5545.29593 -2817.66682 5545.32637 -2817.51375 5545.32637 -2814.63663 5547.57275 -2814.63663 5547.57275 -2816.82479 5547.54471 -2817.07366 5547.40409 -2817.46006 5547.41737 -2817.62879 5547.49924 -2817.77693 5547.63504 -2817.87794 5547.80047 -2817.91375 5550.0112 -2817.91375 5550.16428 -2817.8833 5550.29405 -2817.79659 5552.0108 -2816.07983 5552.09048 -2815.96604 5552.12644 -2815.83185 5552.11433 -2815.69346 5552.05562 -2815.56756 5551.89575 -2815.33924 5551.73232 -2814.98876 5551.63223 -2814.61523 5551.597 -2814.21254 5551.597 -2808.64746 5551.63223 -2808.24477 5551.73232 -2807.87124 5551.89575 -2807.52076 5552.11755 -2807.20399 5552.39099 -2806.93055 5552.70776 -2806.70875 5553.05824 -2806.54532 5553.43177 -2806.44523 5553.817 -2806.41153 5554.20223 -2806.44523 5554.57576 -2806.54532 5554.92624 -2806.70875 5555.24301 -2806.93055 5555.51645 -2807.20399 5555.73825 -2807.52076 5555.90168 -2807.87124 5555.93063 -2807.97927 5556.01058 -2808.13286 5556.14795 -2808.23827 5556.317 -2808.27575 5556.48605 -2808.23827 5556.62342 -2808.13286 5556.70337 -2807.97927 5556.73232 -2807.87124 5556.89575 -2807.52076 5557.11755 -2807.20399 5557.39099 -2806.93055 5557.70776 -2806.70875 5557.967 -2806.58786 5557.967 -2809.18 5556.437 -2809.18 5556.28393 -2809.21045 5556.15416 -2809.29716 5556.06745 -2809.42693 5556.037 -2809.58 5556.037 -2813.28 5556.06745 -2813.43307 5556.15416 -2813.56284 5556.28393 -2813.64955 5556.437 -2813.68 5557.967 -2813.68 5557.967 -2816.27214 5557.70776 -2816.15125 5557.39099 -2815.92945 5557.11755 -2815.65601 5556.89575 -2815.33924 5556.73232 -2814.98876 5556.70337 -2814.88073 5556.62342 -2814.72714 5556.48605 -2814.62173 5556.317 -2814.58425 5556.14795 -2814.62173 5556.01058 -2814.72714 5555.93063 -2814.88073 5555.90168 -2814.98876 5555.73825 -2815.33924 5555.49939 -2815.68037 5555.44556 -2815.78952 5555.42705 -2815.9098 5555.42705 -2816.53215 5555.39421 -2816.86563 5555.30267 -2817.16739 5555.15401 -2817.4455 5554.94144 -2817.70453 5552.38355 -2820.26241 5552.29685 -2820.39218 5552.2664 -2820.54525 5552.29685 -2820.69832 5552.38355 -2820.82809 5552.51332 -2820.9148 5552.6664 -2820.94525 5557.95159 -2820.94525 5558.10051 -2820.9165 5558.22801 -2820.83437 5558.31578 -2820.71067 5558.35119 -2820.5632 5558.32914 -2820.41314 5558.24879 -2820.18351 5558.22075 -2819.93464 5558.22075 -2819.61655 5559.48288 -2819.61655 5559.48288 -2820.54525 5559.51332 -2820.69832 5559.60003 -2820.82809 5559.7298 -2820.9148 5559.88288 -2820.94525 5560.56713 -2820.94525 5560.7202 -2820.9148 5560.84997 -2820.82809 5560.93668 -2820.69832 5560.96713 -2820.54525 5560.96713 -2819.61655 5561.42076 -2819.61655 5561.57383 -2819.5861 5561.7036 -2819.49939 5561.79031 -2819.36963 5561.82076 -2819.21655 5561.82077 -2818.33545 5561.79032 -2818.18238 5561.70361 -2818.05261 5561.57384 -2817.9659 5561.42077 -2817.93545 5560.96713 -2817.93545 5560.96713 -2816.5749 5561.18679 -2816.5749 5561.376 -2816.59622 5561.54226 -2816.57984 5561.68732 -2816.49699 5561.7859 -2816.36211 5561.82079 -2816.19874 5561.8208 -2815.26718 5561.78332 -2815.09813 5561.73232 -2814.98876 5561.70337 -2814.88073 5561.62342 -2814.72714 5561.48605 -2814.62173 5561.317 -2814.58425 5561.14795 -2814.62173 5561.01058 -2814.72714 5560.93063 -2814.88073 5560.90168 -2814.98876 5560.73825 -2815.33924 5560.51645 -2815.65601 5560.39755 -2815.7749 5559.88288 -2815.7749 5559.7298 -2815.80535 5559.667 -2815.84731 5559.667 -2813.68 5561.197 -2813.68 5561.35007 -2813.64955 5561.47984 -2813.56284 5561.56655 -2813.43307 5561.597 -2813.28 5561.597 -2809.58 5561.56655 -2809.42693 5561.47984 -2809.29716 5561.35007 -2809.21045 5561.197 -2809.18 5559.667 -2809.18 5559.667 -2806.5049 5559.63655 -2806.35182 5559.54984 -2806.22205 5541.24075 -2787.91288 5541.13301 -2787.83609 5541.00612 -2787.79864 5540.88623 -2787.78409 5540.48533 -2787.66796 5540.10825 -2787.48904 5539.76475 -2787.25194 5539.46374 -2786.96281 5539.213 -2786.62914 5539.01903 -2786.25956 5538.88686 -2785.86366 5538.81991 -2785.45169 5538.81991 -2785.03431 5538.88686 -2784.62234 5539.01903 -2784.22644 5539.213 -2783.85686 5539.46374 -2783.52319 5539.76475 -2783.23406 5540.10825 -2782.99696 5540.48533 -2782.81804 5540.88623 -2782.70191 5541.30057 -2782.6516 5541.71761 -2782.66841 5542.12656 -2782.7519 5542.51681 -2782.8999 5542.87828 -2783.10859 5543.20158 -2783.37256 5543.47835 -2783.68498 5543.70143 -2784.03774 5543.86503 -2784.42172 5544.00109 -2784.96959 5544.08134 -2785.0846 5550.91416 -2791.91742 5551.03695 -2792.00116 5551.18183 -2792.03429 5551.32881 -2792.01224 5551.45759 -2791.93804 5551.5504 -2791.82196 5551.59441 -2791.68 5552.967 -2791.68 5552.967 -2793.80458 5552.99745 -2793.95765 5553.08416 -2794.08742 5553.98416 -2794.98742 5565.22789 -2806.23115 5565.35935 -2806.37393 5565.55681 -2806.65565 5565.70704 -2806.97783 5565.7974 -2807.31503 5565.82706 -2807.65414 5565.86302 -2807.78833 5565.93063 -2807.97927 5566.01058 -2808.13286 5566.14795 -2808.23827 5566.317 -2808.27575 5566.48605 -2808.23827 5566.62342 -2808.13286 5566.70337 -2807.97927 5566.73232 -2807.87124 5566.89575 -2807.52076 5567.13361 -2807.18106 5567.18744 -2807.07191 5567.20595 -2806.95163 5567.20595 -2802.16205 5567.23879 -2801.82857 5567.33033 -2801.52681 5567.47899 -2801.2487 5567.69156 -2800.98967 5573.69258 -2794.98866 5573.77013 -2794.87937 5573.80722 -2794.7506 5573.79971 -2794.61681 5573.74843 -2794.493 5573.66719 -2794.36371 5573.59194 -2794.14866 5573.5639 -2793.89979 5573.5639 -2791.97621 5573.59194 -2791.72734 5573.67808 -2791.48116 5573.70013 -2791.3311 5573.66472 -2791.18363 5573.57696 -2791.05993 5573.44945 -2790.9778 5573.30053 -2790.94905 5571.437 -2790.94905 5571.28393 -2790.9795 5571.15416 -2791.06621 5571.06745 -2791.19598 5571.037 -2791.34905 5571.037 -2792.21254 5571.00177 -2792.61523 5570.90168 -2792.98876 5570.73825 -2793.33924 5570.51645 -2793.65601 5570.24301 -2793.92945 5569.92624 -2794.15125 5569.57576 -2794.31468 5569.20223 -2794.41477 5568.817 -2794.44847 5568.43177 -2794.41477 5568.05824 -2794.31468 5567.70776 -2794.15125 5567.39099 -2793.92945 5567.11755 -2793.65601 5566.89575 -2793.33924 5566.73232 -2792.98876 5566.70337 -2792.88073 5566.62342 -2792.72714 5566.48605 -2792.62173 5566.317 -2792.58425 5566.14795 -2792.62173 5566.01058 -2792.72714 5565.93063 -2792.88073 5565.90168 -2792.98876 5565.73825 -2793.33924 5565.51645 -2793.65601 5565.24301 -2793.92945 5564.92624 -2794.15125 5564.57576 -2794.31468 5564.20223 -2794.41477 5563.817 -2794.44847 5563.43177 -2794.41477 5563.05824 -2794.31468 5562.70776 -2794.15125 5562.39099 -2793.92945 5562.11755 -2793.65601 5561.89575 -2793.33924 5561.73232 -2792.98876 5561.70337 -2792.88073 5561.62342 -2792.72714 5561.48605 -2792.62173 5561.317 -2792.58425 5561.14795 -2792.62173 5561.01058 -2792.72714 5560.93063 -2792.88073 5560.90168 -2792.98876 5560.73825 -2793.33924 5560.51645 -2793.65601 5560.24301 -2793.92945 5559.92624 -2794.15125 5559.57576 -2794.31468 5559.20223 -2794.41477 5558.817 -2794.44847 5558.43177 -2794.41477 5558.05824 -2794.31468 5557.70776 -2794.15125 5557.39099 -2793.92945 5557.11755 -2793.65601 5556.89575 -2793.33924 5556.73232 -2792.98876 5556.70337 -2792.88073 5556.62342 -2792.72714 5556.48605 -2792.62173 5556.317 -2792.58425 5556.14795 -2792.62173 5556.01058 -2792.72714 5555.93063 -2792.88073 5555.90168 -2792.98876 5555.73825 -2793.33924 5555.51645 -2793.65601 5555.24301 -2793.92945 5554.92624 -2794.15125 5554.667 -2794.27214 5554.667 -2791.68 5556.197 -2791.68 5556.35007 -2791.64955 5556.47984 -2791.56284 5556.56655 -2791.43307 5556.597 -2791.28 5556.597 -2787.58 5556.56655 -2787.42693 5556.47984 -2787.29716 5556.35007 -2787.21045 5556.197 -2787.18 5554.667 -2787.18 5554.667 -2784.58786 5554.92624 -2784.70875 5555.24301 -2784.93055 5555.51645 -2785.20399 5555.73825 -2785.52076 5555.90168 -2785.87124 5555.93063 -2785.97927 5556.01058 -2786.13286 5556.14795 -2786.23827 5556.317 -2786.27575 5556.48605 -2786.23827 5556.62342 -2786.13286 5556.70337 -2785.97927 5556.77477 -2785.78019 5556.81225 -2785.61115 5556.81225 -2781.46216 5556.84275 -2781.09608 5556.84275 -2780.25536 5556.87079 -2780.00649 5556.94604 -2779.79144 5557.06726 -2779.59852 5557.22837 -2779.43741 5557.42129 -2779.31619 5557.63634 -2779.24094 5557.88521 -2779.2129 5559.80879 -2779.2129 5560.05766 -2779.24094 5560.27271 -2779.31619 5560.43419 -2779.41765 5560.57264 -2779.47199 5560.72136 -2779.47199 5560.85981 -2779.41765 5561.02129 -2779.31619 5561.23634 -2779.24094 5561.48521 -2779.2129 5561.70488 -2779.2129 5561.70488 -2780.57345 5561.25125 -2780.57345 5561.09818 -2780.6039 5560.96841 -2780.69061 5560.8817 -2780.82038 5560.85125 -2780.97345 5560.85125 -2781.85455 5560.8817 -2782.00762 5560.96841 -2782.13739 5561.09818 -2782.2241 5561.25125 -2782.25455 5561.70488 -2782.25455 5561.70488 -2783.6151 5561.48521 -2783.6151 5561.26554 -2783.59035 5561.09928 -2783.60672 5560.95421 -2783.68958 5560.85564 -2783.82446 5560.82075 -2783.98783 5560.82075 -2785.609 5560.85823 -2785.77805 5560.93063 -2785.97927 5561.01058 -2786.13286 5561.14795 -2786.23827 5561.317 -2786.27575 5561.48605 -2786.23827 5561.62342 -2786.13286 5561.70337 -2785.97927 5561.73232 -2785.87124 5561.89575 -2785.52076 5562.11755 -2785.20399 5562.39099 -2784.93055 5562.70776 -2784.70875 5563.05824 -2784.54532 5563.43177 -2784.44523 5563.817 -2784.41153 5564.20223 -2784.44523 5564.57576 -2784.54532 5564.92624 -2784.70875 5565.24301 -2784.93055 5565.51645 -2785.20399 5565.73825 -2785.52076 5565.90168 -2785.87124 5565.93063 -2785.97927 5566.01058 -2786.13286 5566.14795 -2786.23827 5566.317 -2786.27575 5566.48605 -2786.23827 5566.62342 -2786.13286 5566.70337 -2785.97927 5566.73232 -2785.87124 5566.89575 -2785.52076 5567.11755 -2785.20399 5567.39099 -2784.93055 5567.70776 -2784.70875 5568.05824 -2784.54532 5568.43177 -2784.44523 5568.817 -2784.41153 5569.20223 -2784.44523 5569.57576 -2784.54532 5569.92624 -2784.70875 5570.24301 -2784.93055 5570.51645 -2785.20399 5570.73825 -2785.52076 5570.90168 -2785.87124 5571.00177 -2786.24477 5571.037 -2786.64746 5571.037 -2787.32795 5571.06745 -2787.48102 5571.15416 -2787.61079 5571.28393 -2787.6975 5571.437 -2787.72795 5573.61414 -2787.72795 5573.76722 -2787.6975 5573.89699 -2787.61079 5573.94952 -2787.55826 5574.14244 -2787.43704 5574.35749 -2787.36179 5574.60636 -2787.33375 5576.92364 -2787.33375 5577.17251 -2787.36179 5577.38756 -2787.43704 5577.58048 -2787.55826 5577.63301 -2787.61079 5577.76278 -2787.6975 5577.91586 -2787.72795 5578.61514 -2787.72795 5578.72688 -2787.71203 5578.82972 -2787.66552 5579.06544 -2787.51569 5579.27949 -2787.44079 5579.52836 -2787.41275 5581.84564 -2787.41275 5582.09451 -2787.44079 5582.30956 -2787.51604 5582.50248 -2787.63726 5582.66359 -2787.79837 5582.78481 -2787.99129 5582.86006 -2788.20634 5582.8881 -2788.45521 5582.8881 -2790.37879 5582.86006 -2790.62766 5582.78481 -2790.84271 5582.68335 -2791.00419 5582.62901 -2791.14264 5582.62901 -2791.29136 5582.68335 -2791.42981 5582.78481 -2791.59129 5582.86006 -2791.80634 5582.8881 -2792.05521 5582.8881 -2793.97879 5582.86006 -2794.22766 5582.78481 -2794.44271 5582.66359 -2794.63563 5582.57171 -2794.72751 5582.485 -2794.85728 5582.45455 -2795.01036 5582.45455 -2795.83042 5582.477 -2795.96253 5582.54182 -2796.07982 5582.65948 -2796.18026 5582.82059 -2796.34137 5582.94181 -2796.53429 5583.01706 -2796.74934 5583.0451 -2796.99821 5583.0451 -2798.92179 5583.01706 -2799.17066 5582.94181 -2799.38571 5582.84035 -2799.54719 5582.78601 -2799.68564 5582.78601 -2799.83436 5582.84035 -2799.97281 5582.94181 -2800.13429 5583.01706 -2800.34934 5583.0451 -2800.59821 5583.0451 -2802.52179 5583.01706 -2802.77066 5582.94181 -2802.98571 5582.82059 -2803.17863 5582.65948 -2803.33974 5582.46656 -2803.46096 5582.25151 -2803.53621 5582.00264 -2803.56425 5579.68536 -2803.56425 5579.43649 -2803.53621 5579.22144 -2803.46096 5579.02852 -2803.33974 5578.88644 -2803.19766 5578.75667 -2803.11095 5578.60359 -2803.0805 5576.14201 -2803.0805 5575.98894 -2803.11095 5575.85917 -2803.19766 5575.80086 -2803.25597 5575.48679 -2803.47589 5575.1393 -2803.63792 5574.76895 -2803.73716 5574.387 -2803.77057 5574.00505 -2803.73716 5573.6347 -2803.63792 5573.28721 -2803.47589 5572.97314 -2803.25597 5572.70203 -2802.98486 5572.48211 -2802.67079 5572.32008 -2802.3233 5572.17918 -2801.801 5572.08765 -2801.68171 5571.95854 -2801.60464 5571.81009 -2801.58069 5571.6633 -2801.61323 5571.53889 -2801.69768 5570.54421 -2802.69235 5570.4575 -2802.82212 5570.42705 -2802.9752 5570.42705 -2806.9502 5570.44556 -2807.07048 5570.49939 -2807.17963 5570.73825 -2807.52076 5570.90168 -2807.87124 5571.00177 -2808.24477 5571.037 -2808.64746 5571.037 -2813.1359 5571.06357 -2813.27925 5571.13974 -2813.40355 5571.2554 -2813.4923 5571.39519 -2813.53371 5571.54053 -2813.52227 5571.91905 -2813.42084 5572.301 -2813.38743 5572.68295 -2813.42084 5573.0533 -2813.52008 5573.40079 -2813.68211 5573.71486 -2813.90203 5573.98597 -2814.17314 5574.20589 -2814.48721 5574.36792 -2814.8347 5574.4478 -2815.02598 5574.55683 -2815.12714 5574.69527 -2815.18148 5574.844 -2815.18148 5574.98245 -2815.12714 5575.12744 -2815.03604 5575.34249 -2814.96079 5575.59136 -2814.93275 5575.90945 -2814.93275 5575.90945 -2816.19487 5574.6901 -2816.19487 5574.54241 -2816.22314 5574.4156 -2816.30393 5574.32757 -2816.42583 5574.20589 -2816.68679 5573.98578 -2817.00113 5573.90171 -2817.1313 5573.87341 -2817.28366 5573.90515 -2817.43533 5573.99215 -2817.56357 5574.12136 -2817.64911 5574.27339 -2817.67913 5575.90945 -2817.67913 5575.90945 -2818.13275 5575.9399 -2818.28582 5576.02661 -2818.41559 5576.15638 -2818.5023 5576.30945 -2818.53275 5577.19055 -2818.53275 5577.34362 -2818.5023 5577.47339 -2818.41559 5577.5601 -2818.28582 5577.59055 -2818.13275 5577.59055 -2817.67913 5579.1879 -2817.67913 5579.34097 -2817.64868 5579.47074 -2817.56197 5579.55745 -2817.4322 5579.5879 -2817.27913 5579.5879 -2816.59487 5579.55745 -2816.4418 5579.47074 -2816.31203 5579.34097 -2816.22532 5579.1879 -2816.19487 5577.59055 -2816.19487 5577.59055 -2814.93275 5577.90864 -2814.93275 5578.15751 -2814.96079 5578.37256 -2815.03604 5578.56548 -2815.15726 5578.72659 -2815.31837 5578.84781 -2815.51129 5578.89195 -2815.63743 5578.97628 -2815.77739 5579.10954 -2815.87194 5579.2695 -2815.90532 5579.42946 -2815.87194 5579.56272 -2815.77739 5579.64705 -2815.63743 5579.69119 -2815.51129 5579.81241 -2815.31837 5579.97352 -2815.15726 5580.08171 -2815.08928 5580.18163 -2814.99998 5580.24645 -2814.8827 5580.2689 -2814.75059 5580.2689 -2810.37075 5580.3 -2810.05494 5580.38639 -2809.77016 5580.52668 -2809.50771 5580.72799 -2809.2624 5583.4561 -2806.53429 5583.70141 -2806.33298 5583.96386 -2806.19269 5584.24864 -2806.1063 5584.56445 -2806.0752 5584.86828 -2806.0752 5585.03507 -2806.03877 5585.17147 -2805.93611 5585.25265 -2805.78593 5585.26381 -2805.61558 5585.20293 -2805.45609 5585.08109 -2805.33651 5584.86637 -2805.20159 5584.70526 -2805.04048 5584.58404 -2804.84756 5584.50879 -2804.63251 5584.48075 -2804.38364 5584.48075 -2804.06555 5585.74287 -2804.06555 5585.74287 -2805.6752 5585.77332 -2805.82827 5585.86003 -2805.95804 5585.9898 -2806.04475 5586.14287 -2806.0752 5586.82712 -2806.0752 5586.9802 -2806.04475 5587.10997 -2805.95804 5587.19668 -2805.82827 5587.22712 -2805.6752 5587.22712 -2804.06555 5587.68075 -2804.06555 5587.83382 -2804.0351 5587.96359 -2803.94839 5588.0503 -2803.81862 5588.08075 -2803.66555 5588.08075 -2802.78445 5588.0503 -2802.63138 5587.96359 -2802.50161 5587.83382 -2802.4149 5587.68075 -2802.38445 5587.22712 -2802.38445 5587.22712 -2801.0239 5587.44679 -2801.0239 5587.69566 -2801.05194 5587.91071 -2801.12719 5588.07219 -2801.22865 5588.21064 -2801.28299 5588.35936 -2801.28299 5588.49781 -2801.22865 5588.65929 -2801.12719 5588.87434 -2801.05194 5589.12321 -2801.0239 5591.04679 -2801.0239 5591.29566 -2801.05194 5591.51071 -2801.12719 5591.70363 -2801.24841 5591.86474 -2801.40952 5591.93285 -2801.51791 5592.02214 -2801.61783 5592.13943 -2801.68265 5592.27154 -2801.7051 5597.41091 -2801.7051 5597.56398 -2801.67465 5597.69375 -2801.58794 5598.653 -2800.62869 5598.89831 -2800.42738 5599.16076 -2800.28709 5599.44554 -2800.2007 5599.76135 -2800.1696 5601.48723 -2800.1696 5601.86777 -2800.11898 5602.02483 -2800.06684 5602.14734 -2799.95558 5602.21433 -2799.80425 5602.21433 -2799.63875 5602.14734 -2799.48742 5602.02483 -2799.37616 5601.86777 -2799.32402 5601.62009 -2799.29611 5601.3965 -2799.21787 5601.26439 -2799.19542 5600.57634 -2799.19542 5600.4265 -2799.1663 5597.07576 -2799.1663 5596.92268 -2799.19675 5596.74328 -2799.29745 5596.59574 -2799.43315 5596.27479 -2799.65789 5595.9273 -2799.81992 5595.55695 -2799.91916 5595.175 -2799.95257 5594.79305 -2799.91916 5594.4227 -2799.81992 5594.07521 -2799.65789 5593.76114 -2799.43797 5593.49003 -2799.16686 5593.27011 -2798.85279 5593.10808 -2798.5053 5593.00884 -2798.13495 5592.97543 -2797.753 5593.00884 -2797.37105 5593.10808 -2797.0007 5593.27011 -2796.65321 5593.49003 -2796.33914 5593.76114 -2796.06803 5594.07521 -2795.84811 5594.4227 -2795.68608 5594.79305 -2795.58684 5595.175 -2795.55343 5595.40583 -2795.57362 5595.55764 -2795.55767 5595.69242 -2795.486 5595.79054 -2795.36907 5595.83771 -2795.22389 5595.82707 -2795.07162 5595.80384 -2794.98495 5595.77043 -2794.603 5595.80384 -2794.22105 5595.90308 -2793.8507 5596.06511 -2793.50321 5596.28503 -2793.18914 5596.55614 -2792.91803 5596.87021 -2792.69811 5597.2177 -2792.53608 5597.58805 -2792.43684 5597.97 -2792.40343 5598.35195 -2792.43684 5598.7223 -2792.53608 5599.06979 -2792.69811 5599.38386 -2792.91803 5599.60487 -2793.13905 5599.67872 -2793.19726 5599.76411 -2793.23663 5600.00081 -2793.31353 5600.26094 -2793.46372 5600.43745 -2793.61448 5601.03032 -2794.20735 5601.15321 -2794.29113 5601.29821 -2794.32423 5601.44528 -2794.30206 5601.62009 -2794.24089 5601.86896 -2794.21285 5605.78085 -2794.21285 5605.93392 -2794.1824 5606.06369 -2794.09569 5606.1504 -2793.96592 5606.18085 -2793.81285 5606.18085 -2789.90096 5606.2323 -2789.51723 5606.2323 -2787.01211 5606.20985 -2786.88 5606.14503 -2786.76271 5606.04511 -2786.67342 5605.87852 -2786.56874 5605.71741 -2786.40763 5605.59619 -2786.21471 5605.52094 -2785.99966 5605.4929 -2785.75079 5605.4929 -2783.82721 5605.52094 -2783.57834 5605.59619 -2783.36329 5605.69765 -2783.20181 5605.75199 -2783.06336 5605.75199 -2782.91464 5605.69765 -2782.77619 5605.59619 -2782.61471 5605.52094 -2782.39966 5605.4929 -2782.15079 5605.4929 -2780.22721 5605.52094 -2779.97834 5605.59619 -2779.76329 5605.71741 -2779.57037 5605.87852 -2779.40926 5606.07144 -2779.28804 5606.28649 -2779.21279 5606.53536 -2779.18475 5607.38326 -2779.18475 5607.53633 -2779.1543 5607.6661 -2779.06759 5614.7092 -2772.02449 5614.95451 -2771.82318 5615.21696 -2771.68289 5615.50174 -2771.5965 5615.81755 -2771.5654 5654.25709 -2771.5654 5654.41016 -2771.53495 5654.53993 -2771.44824 5654.58814 -2771.40003 5654.90221 -2771.18011 5655.2497 -2771.01808 5655.62005 -2770.91884 5656.002 -2770.88543 Z M 5568.82304 -2576.5068 L 5569.07191 -2576.53484 5569.28696 -2576.61009 5569.47988 -2576.73131 5569.64099 -2576.89242 5569.76221 -2577.08534 5569.83746 -2577.30039 5569.8655 -2577.54926 5569.8655 -2590.10274 5569.83746 -2590.35161 5569.76221 -2590.56666 5569.64099 -2590.75958 5569.47988 -2590.92069 5569.28696 -2591.04191 5569.14944 -2591.09003 5569.00948 -2591.17436 5568.91493 -2591.30763 5568.88155 -2591.46758 5568.88155 -2603.53534 5568.89818 -2603.64948 5568.98473 -2603.81235 5569.14373 -2604.17483 5569.24089 -2604.55854 5569.27358 -2604.953 5569.24089 -2605.34746 5569.14373 -2605.73117 5568.98473 -2606.09365 5568.76824 -2606.42501 5568.50016 -2606.71622 5568.1878 -2606.95934 5567.83969 -2607.14772 5567.46533 -2607.27624 5567.07491 -2607.34139 5566.67909 -2607.34139 5566.28867 -2607.27624 5565.91431 -2607.14772 5565.65106 -2607.00526 5565.55887 -2606.96929 5565.46068 -2606.95705 5538.74427 -2606.95705 5538.5912 -2606.9875 5538.46143 -2607.07421 5531.37649 -2614.15915 5531.24116 -2614.28315 5531.10247 -2614.38957 5530.95503 -2614.4835 5530.79997 -2614.56422 5530.63846 -2614.63112 5530.47174 -2614.68369 5530.30107 -2614.72153 5530.12775 -2614.74434 5529.94437 -2614.75235 5528.65665 -2614.75235 5528.50358 -2614.7828 5528.37381 -2614.86951 5528.2871 -2614.99928 5528.25665 -2615.15235 5528.25665 -2615.75689 5528.22861 -2616.00576 5528.15336 -2616.22081 5528.03214 -2616.41373 5527.87103 -2616.57484 5527.67811 -2616.69606 5527.46306 -2616.77131 5527.21419 -2616.79935 5523.71581 -2616.79935 5523.46694 -2616.77131 5523.25189 -2616.69606 5523.05897 -2616.57484 5522.89786 -2616.41373 5522.77664 -2616.22081 5522.70139 -2616.00576 5522.67335 -2615.75689 5522.67335 -2615.15235 5522.6429 -2614.99928 5522.55619 -2614.86951 5522.42642 -2614.7828 5522.27335 -2614.75235 5520.02777 -2614.75235 5519.86235 -2614.78816 5519.72654 -2614.88917 5519.64467 -2615.03731 5519.63139 -2615.20604 5519.71791 -2615.41104 5519.79316 -2615.62609 5519.8212 -2615.87496 5519.8212 -2619.76704 5519.79316 -2620.01591 5519.71791 -2620.23096 5519.59669 -2620.42388 5519.43558 -2620.58499 5519.24266 -2620.70621 5519.02761 -2620.78146 5518.77874 -2620.8095 5506.22526 -2620.8095 5505.97639 -2620.78146 5505.76134 -2620.70621 5505.56842 -2620.58499 5505.40731 -2620.42388 5505.28609 -2620.23096 5505.21084 -2620.01591 5505.1828 -2619.76704 5505.1828 -2615.87496 5505.21084 -2615.62609 5505.28609 -2615.41104 5505.37261 -2615.20604 5505.35933 -2615.03731 5505.27746 -2614.88917 5505.14165 -2614.78816 5504.97623 -2614.75235 5504.53166 -2614.75235 5504.37859 -2614.7828 5504.24882 -2614.8695 5499.88638 -2619.23186 5499.75106 -2619.35585 5499.61235 -2619.46229 5499.46494 -2619.5562 5499.30985 -2619.63693 5499.14837 -2619.70382 5498.98162 -2619.75639 5498.81097 -2619.79423 5498.63978 -2619.81676 5498.38064 -2619.82527 5498.22582 -2619.86201 5498.09758 -2619.9562 5498.0162 -2620.09294 5497.96791 -2620.23096 5497.84669 -2620.42388 5497.68558 -2620.58499 5497.49266 -2620.70621 5497.27761 -2620.78146 5497.02874 -2620.8095 5484.47526 -2620.8095 5484.22639 -2620.78146 5484.01134 -2620.70621 5483.81842 -2620.58499 5483.65731 -2620.42388 5483.53609 -2620.23096 5483.4878 -2620.09294 5483.40346 -2619.95298 5483.2702 -2619.85843 5483.11024 -2619.82505 5481.38192 -2619.82505 5481.23963 -2619.85121 5481.11596 -2619.92628 5481.02707 -2620.04044 5480.90936 -2620.39381 5480.78814 -2620.58673 5480.62703 -2620.74784 5480.43411 -2620.86906 5480.21906 -2620.94431 5479.97019 -2620.97235 5476.47181 -2620.97235 5476.22294 -2620.94431 5476.00789 -2620.86906 5475.81497 -2620.74784 5475.65386 -2620.58673 5475.53264 -2620.39381 5475.45739 -2620.17876 5475.42935 -2619.92989 5475.42935 -2615.64411 5475.45739 -2615.39524 5475.53264 -2615.18019 5475.65386 -2614.98727 5475.81497 -2614.82616 5476.16182 -2614.61572 5476.25637 -2614.48246 5476.28975 -2614.3225 5476.25637 -2614.16254 5476.16182 -2614.02928 5475.81497 -2613.81884 5475.65386 -2613.65773 5475.53264 -2613.46481 5475.45739 -2613.24976 5475.42935 -2613.00089 5475.42935 -2612.19068 5477.08518 -2612.19068 5477.08518 -2614.20165 5477.11562 -2614.35472 5477.20233 -2614.48449 5477.3321 -2614.5712 5477.48517 -2614.60165 5478.95682 -2614.60165 5479.1099 -2614.5712 5479.23967 -2614.48449 5479.32638 -2614.35472 5479.35682 -2614.20165 5479.35682 -2612.19068 5481.01265 -2612.19068 5481.01265 -2613.00089 5480.98461 -2613.24976 5480.90936 -2613.46481 5480.78814 -2613.65773 5480.62703 -2613.81884 5480.28018 -2614.02928 5480.18563 -2614.16254 5480.15225 -2614.3225 5480.18563 -2614.48246 5480.28018 -2614.61572 5480.62703 -2614.82616 5480.78814 -2614.98727 5480.90936 -2615.18019 5480.98461 -2615.39524 5481.03416 -2615.60014 5481.123 -2615.71481 5481.24689 -2615.79025 5481.38954 -2615.81655 5483.11038 -2615.81655 5483.27034 -2615.78317 5483.4036 -2615.68862 5483.48794 -2615.54866 5483.53609 -2615.41104 5483.65731 -2615.21812 5483.81842 -2615.05701 5484.01134 -2614.93579 5484.22639 -2614.86054 5484.47526 -2614.8325 5497.02874 -2614.8325 5497.27761 -2614.86054 5497.49266 -2614.93579 5497.68558 -2615.05701 5497.75614 -2615.12757 5497.8859 -2615.21427 5498.03898 -2615.24472 5498.19205 -2615.21428 5498.32182 -2615.12757 5502.11242 -2611.33704 5502.24774 -2611.21305 5502.38645 -2611.10661 5502.53386 -2611.0127 5502.68895 -2610.93197 5502.85043 -2610.86508 5503.01718 -2610.81251 5503.18783 -2610.77467 5503.36117 -2610.75185 5503.54453 -2610.74385 5504.90006 -2610.74385 5505.04898 -2610.7151 5505.17649 -2610.63297 5505.26425 -2610.50927 5505.29966 -2610.3618 5505.27762 -2610.21174 5505.21084 -2610.02091 5505.1828 -2609.77204 5505.1828 -2605.87996 5505.21084 -2605.63109 5505.28609 -2605.41604 5505.40731 -2605.22312 5505.56842 -2605.06201 5505.76134 -2604.94079 5505.97639 -2604.86554 5506.22526 -2604.8375 5518.77874 -2604.8375 5519.02761 -2604.86554 5519.24266 -2604.94079 5519.43558 -2605.06201 5519.59669 -2605.22312 5519.71791 -2605.41604 5519.79316 -2605.63109 5519.8212 -2605.87996 5519.8212 -2609.77204 5519.79316 -2610.02091 5519.72638 -2610.21174 5519.70434 -2610.3618 5519.73975 -2610.50927 5519.82751 -2610.63297 5519.95502 -2610.7151 5520.10394 -2610.74385 5522.80259 -2610.74385 5522.91433 -2610.72793 5523.01717 -2610.68142 5523.40582 -2610.44272 5523.50037 -2610.30946 5523.53375 -2610.1495 5523.50037 -2609.98954 5523.40582 -2609.85628 5523.05897 -2609.64584 5522.89786 -2609.48473 5522.77664 -2609.29181 5522.70139 -2609.07676 5522.67335 -2608.82789 5522.67335 -2606.29241 5522.64331 -2606.14032 5522.60002 -2606.03502 5522.51291 -2605.90427 5519.80766 -2603.19903 5519.59509 -2602.94 5519.44643 -2602.66189 5519.35489 -2602.36013 5519.32205 -2602.02665 5519.32205 -2599.58096 5519.29745 -2599.44285 5519.22668 -2599.32173 5519.10805 -2599.18232 5518.97121 -2599.07844 5518.80342 -2599.04155 5517.33143 -2599.04155 5517.17147 -2599.07493 5517.03821 -2599.16948 5516.95388 -2599.30944 5516.87806 -2599.52611 5516.75684 -2599.71903 5516.59573 -2599.88014 5516.40281 -2600.00136 5516.18776 -2600.07661 5515.93889 -2600.10465 5511.65311 -2600.10465 5511.40424 -2600.07661 5511.18919 -2600.00136 5510.99627 -2599.88014 5510.83516 -2599.71903 5510.62472 -2599.37218 5510.49146 -2599.27763 5510.3315 -2599.24425 5510.17154 -2599.27763 5510.03828 -2599.37218 5509.82784 -2599.71903 5509.66673 -2599.88014 5509.47381 -2600.00136 5509.25876 -2600.07661 5509.00989 -2600.10465 5508.19967 -2600.10465 5508.19967 -2598.44883 5510.21065 -2598.44883 5510.36372 -2598.41838 5510.49349 -2598.33167 5510.5802 -2598.2019 5510.61065 -2598.04883 5510.60979 -2597.29169 5510.57416 -2596.75074 5510.53066 -2596.59392 5510.42776 -2596.39407 5510.33894 -2596.27916 5510.21495 -2596.20354 5510.07213 -2596.17718 5508.19967 -2596.17718 5508.19967 -2594.52135 5508.86495 -2594.52135 5509.01802 -2594.4909 5509.14778 -2594.4042 5509.23449 -2594.27443 5509.26495 -2594.12136 5509.23451 -2593.96829 5509.14781 -2593.83852 5506.99457 -2591.68505 5506.81734 -2591.55737 5506.67314 -2591.49764 5506.45767 -2591.4626 5504.34626 -2591.46211 5504.09734 -2591.43406 5503.88229 -2591.35881 5503.68937 -2591.23759 5503.52826 -2591.07648 5503.40704 -2590.88356 5503.33179 -2590.66851 5503.30375 -2590.41964 5503.30375 -2585.80236 5503.33179 -2585.55349 5503.40704 -2585.33844 5503.52826 -2585.14552 5503.68937 -2584.98441 5503.88229 -2584.86319 5504.09734 -2584.78794 5504.34621 -2584.7599 5508.56979 -2584.7599 5508.81866 -2584.78794 5509.03371 -2584.86319 5509.22663 -2584.98441 5509.38774 -2585.14552 5509.50896 -2585.33844 5509.58421 -2585.55349 5509.61225 -2585.80236 5509.61225 -2588.31345 5509.65092 -2588.8205 5509.66074 -2588.8825 5509.77331 -2589.35141 5509.7927 -2589.4111 5509.97725 -2589.85663 5510.00574 -2589.91256 5510.25771 -2590.32373 5510.2946 -2590.37451 5510.62911 -2590.76427 5514.26898 -2594.40419 5514.39875 -2594.4909 5514.55182 -2594.52135 5515.93889 -2594.52135 5516.18776 -2594.54939 5516.40281 -2594.62464 5516.59573 -2594.74586 5516.75684 -2594.90697 5516.87806 -2595.09989 5516.95331 -2595.31494 5516.97024 -2595.46524 5517.01235 -2595.60404 5517.10119 -2595.71871 5517.22508 -2595.79415 5517.36773 -2595.82045 5518.80342 -2595.82045 5518.93553 -2595.798 5519.05282 -2595.73318 5519.15326 -2595.61552 5519.31437 -2595.45441 5519.50729 -2595.33319 5519.72234 -2595.25794 5519.97121 -2595.2299 5521.89479 -2595.2299 5522.14366 -2595.25794 5522.35871 -2595.33319 5522.52019 -2595.43465 5522.65864 -2595.48899 5522.80736 -2595.48899 5522.94581 -2595.43465 5523.10729 -2595.33319 5523.32234 -2595.25794 5523.57121 -2595.2299 5523.79088 -2595.2299 5523.79088 -2596.59045 5523.33725 -2596.59045 5523.18418 -2596.6209 5523.05441 -2596.70761 5522.9677 -2596.83738 5522.93725 -2596.99045 5522.93725 -2597.87155 5522.9677 -2598.02462 5523.05441 -2598.15439 5523.18418 -2598.2411 5523.33725 -2598.27155 5523.79088 -2598.27155 5523.79088 -2599.6321 5523.57121 -2599.6321 5523.32234 -2599.60406 5523.07526 -2599.5176 5522.9252 -2599.49556 5522.77773 -2599.53096 5522.65403 -2599.61873 5522.5719 -2599.74624 5522.54315 -2599.89516 5522.54315 -2601.2135 5522.5736 -2601.36658 5522.66031 -2601.49635 5524.09723 -2602.93327 5524.35876 -2603.15039 5524.42396 -2603.19395 5524.68921 -2603.33573 5524.76165 -2603.36574 5525.04947 -2603.45305 5525.12637 -2603.46834 5525.46388 -2603.49965 5527.21419 -2603.49965 5527.46306 -2603.52769 5527.67811 -2603.60294 5527.87103 -2603.72416 5528.03214 -2603.88527 5528.15336 -2604.07819 5528.22861 -2604.29324 5528.25665 -2604.54211 5528.25665 -2608.82789 5528.22861 -2609.07676 5528.15336 -2609.29181 5528.03214 -2609.48473 5527.87103 -2609.64584 5527.52418 -2609.85628 5527.42963 -2609.98954 5527.39625 -2610.1495 5527.42963 -2610.30946 5527.52418 -2610.44272 5527.91283 -2610.68142 5528.01567 -2610.72793 5528.12741 -2610.74385 5528.95723 -2610.74385 5529.1103 -2610.7134 5529.24007 -2610.62669 5536.32501 -2603.54175 5536.46034 -2603.41775 5536.59903 -2603.31133 5536.74647 -2603.2174 5536.90153 -2603.13668 5537.06304 -2603.06978 5537.22976 -2603.01721 5537.40043 -2602.97937 5537.57375 -2602.95656 5537.75713 -2602.94855 5564.47305 -2602.94855 5564.62612 -2602.9181 5564.75589 -2602.83139 5564.8426 -2602.70162 5564.87305 -2602.54855 5564.87305 -2591.46779 5564.83967 -2591.30784 5564.74512 -2591.17457 5564.60516 -2591.09024 5564.46704 -2591.04191 5564.27412 -2590.92069 5564.11301 -2590.75958 5563.99179 -2590.56666 5563.91654 -2590.35161 5563.8885 -2590.10274 5563.8885 -2577.54926 5563.91654 -2577.30039 5563.99179 -2577.08534 5564.11301 -2576.89242 5564.27412 -2576.73131 5564.46704 -2576.61009 5564.68209 -2576.53484 5564.93096 -2576.5068 5568.82304 -2576.5068 Z M 5697.71486 -2757.94418 L 5698.24639 -2757.90935 5740.39791 -2757.90935 5740.92944 -2757.94418 5741.439 -2758.04554 5741.93062 -2758.21243 5742.4267 -2758.45822 5742.60429 -2758.4998 5744.92421 -2758.4998 5745.41969 -2758.53524 5745.89109 -2758.63778 5746.34309 -2758.80637 5746.7665 -2759.03757 5747.1527 -2759.32668 5747.49382 -2759.6678 5747.78293 -2760.054 5748.01413 -2760.47741 5748.18272 -2760.92941 5748.28526 -2761.40081 5748.31968 -2761.882 5748.28526 -2762.36319 5748.18272 -2762.83459 5748.01413 -2763.28659 5747.78293 -2763.71 5747.49382 -2764.0962 5747.1527 -2764.43732 5746.7665 -2764.72643 5746.34309 -2764.95763 5745.89109 -2765.12622 5745.41969 -2765.22876 5744.92421 -2765.2642 5742.60459 -2765.2642 5742.42697 -2765.3058 5741.93061 -2765.55178 5741.8032 -2765.59503 5741.66524 -2765.67554 5741.56979 -2765.80362 5741.53206 -2765.95884 5741.55808 -2766.11645 5741.6437 -2766.2513 5741.77526 -2766.3419 5741.93178 -2766.3738 5744.92421 -2766.3738 5745.41969 -2766.40924 5745.89109 -2766.51178 5746.34309 -2766.68037 5746.7665 -2766.91157 5747.1527 -2767.20068 5747.49382 -2767.5418 5747.78293 -2767.928 5748.01413 -2768.35141 5748.18272 -2768.80341 5748.28526 -2769.27481 5748.31968 -2769.756 5748.28526 -2770.23719 5748.18272 -2770.70859 5748.01413 -2771.16059 5747.78293 -2771.584 5747.49382 -2771.9702 5747.1527 -2772.31132 5746.7665 -2772.60043 5746.34309 -2772.83163 5746.17097 -2772.9303 5746.0793 -2773.06233 5746.047 -2773.21979 5746.047 -2788.00354 5746.01896 -2788.25241 5745.94371 -2788.46746 5745.82249 -2788.66038 5745.66138 -2788.82149 5745.46846 -2788.94271 5745.25341 -2789.01796 5745.00454 -2789.046 5728.11869 -2789.046 5727.96561 -2789.07645 5727.83584 -2789.16316 5727.30636 -2789.69264 5727.21965 -2789.82241 5727.1892 -2789.97549 5727.1892 -2790.17609 5727.22501 -2790.34151 5727.32602 -2790.47732 5727.47416 -2790.55919 5727.64289 -2790.57247 5727.83414 -2790.49459 5728.04919 -2790.41934 5728.29806 -2790.3913 5730.94994 -2790.3913 5731.19881 -2790.41934 5731.41386 -2790.49459 5731.60678 -2790.61581 5731.76789 -2790.77692 5731.88911 -2790.96984 5731.96436 -2791.18489 5731.9924 -2791.43376 5731.9924 -2792.17624 5731.96436 -2792.42511 5731.92957 -2792.5925 5731.96436 -2792.75989 5731.9924 -2793.00876 5731.9924 -2793.14175 5732.02284 -2793.29482 5732.10954 -2793.42458 5732.2393 -2793.51129 5732.39236 -2793.54175 5732.81941 -2793.5418 5732.97251 -2793.51136 5733.1023 -2793.42464 5733.37817 -2793.14875 5733.62387 -2792.94977 5733.88678 -2792.81579 5734.17691 -2792.73803 5734.40842 -2792.7198 5735.00869 -2792.7198 5735.16176 -2792.68935 5735.29153 -2792.60264 5735.44614 -2792.44803 5735.76021 -2792.22811 5736.1077 -2792.06608 5736.47805 -2791.96684 5736.86 -2791.93343 5737.24195 -2791.96684 5737.6123 -2792.06608 5737.95979 -2792.22811 5738.27386 -2792.44803 5738.54497 -2792.71914 5738.76489 -2793.03321 5738.92692 -2793.3807 5739.02616 -2793.75105 5739.05957 -2794.133 5739.05191 -2794.22053 5739.07218 -2794.38562 5739.15785 -2794.52819 5739.2941 -2794.62359 5739.45737 -2794.65533 5739.61944 -2794.61791 5739.8657 -2794.50308 5740.23605 -2794.40384 5740.618 -2794.37043 5740.99995 -2794.40384 5741.3703 -2794.50308 5741.71779 -2794.66511 5742.03186 -2794.88503 5742.30297 -2795.15614 5742.52289 -2795.47021 5742.68492 -2795.8177 5742.78416 -2796.18805 5742.81757 -2796.57 5742.78416 -2796.95195 5742.68492 -2797.3223 5742.52289 -2797.66979 5742.30297 -2797.98386 5742.03186 -2798.25497 5741.71779 -2798.47489 5741.3703 -2798.63692 5740.99995 -2798.73616 5740.618 -2798.76957 5740.23605 -2798.73616 5739.8657 -2798.63692 5739.51821 -2798.47489 5739.20414 -2798.25497 5739.08855 -2798.14564 5738.94477 -2798.03936 5738.78505 -2797.96872 5738.6224 -2797.9442 5732.3924 -2797.9442 5732.23933 -2797.97465 5732.10956 -2798.06136 5732.02285 -2798.19113 5731.9924 -2798.3442 5731.9924 -2798.47624 5731.96436 -2798.72511 5731.88911 -2798.94016 5731.76789 -2799.13308 5731.60678 -2799.29419 5731.41386 -2799.41541 5731.19881 -2799.49066 5730.94994 -2799.5187 5730.5482 -2799.5187 5730.5482 -2798.3442 5730.51776 -2798.19114 5730.43107 -2798.06138 5730.30132 -2797.97467 5730.14827 -2797.9442 5729.09987 -2797.94401 5728.94678 -2797.97443 5728.81698 -2798.06114 5728.73026 -2798.19092 5728.6998 -2798.34401 5728.6998 -2799.5187 5728.29806 -2799.5187 5728.04919 -2799.49066 5727.64289 -2799.33753 5727.47416 -2799.35081 5727.32602 -2799.43268 5727.22501 -2799.56849 5727.1892 -2799.73391 5727.1892 -2800.72653 5727.15 -2801.22109 5727.15 -2804.93254 5727.12196 -2805.18141 5727.04671 -2805.39646 5726.96469 -2805.52699 5726.907 -2805.68611 5726.92028 -2805.85484 5727.00216 -2806.00298 5727.13796 -2806.10399 5727.30338 -2806.1398 5727.947 -2806.1398 5727.947 -2808.0909 5725.677 -2808.0909 5725.677 -2807.18226 5725.70504 -2806.93339 5725.78029 -2806.71834 5725.86231 -2806.58781 5725.92 -2806.42869 5725.90672 -2806.25996 5725.82484 -2806.11182 5725.68904 -2806.01081 5725.52362 -2805.975 5724.87038 -2805.975 5724.70496 -2806.01081 5724.56916 -2806.11182 5724.48728 -2806.25996 5724.474 -2806.42869 5724.53169 -2806.58781 5724.61371 -2806.71834 5724.68896 -2806.93339 5724.717 -2807.18226 5724.717 -2811.86174 5724.68896 -2812.11061 5724.61371 -2812.32566 5724.49249 -2812.51858 5724.33138 -2812.67969 5724.13846 -2812.80091 5723.92341 -2812.87616 5723.67454 -2812.9042 5717.71946 -2812.9042 5717.47059 -2812.87616 5717.25554 -2812.80091 5717.06262 -2812.67969 5716.90151 -2812.51858 5716.78029 -2812.32566 5716.70504 -2812.11061 5716.677 -2811.86174 5716.677 -2807.18226 5716.69188 -2807.05019 5716.67551 -2806.88393 5716.59265 -2806.73886 5716.45777 -2806.64029 5716.2944 -2806.6054 5707.87782 -2806.6054 5707.45638 -2806.57223 5707.06064 -2806.47723 5706.68465 -2806.32148 5706.33764 -2806.10884 5706.01619 -2805.83429 5700.13291 -2799.95101 5699.85836 -2799.62956 5699.64572 -2799.28255 5699.48997 -2798.90656 5699.39497 -2798.51082 5699.36304 -2798.1051 5699.39497 -2797.69938 5699.48997 -2797.30364 5699.64572 -2796.92765 5699.85396 -2796.58783 5699.89788 -2796.48741 5699.9129 -2796.37883 5699.9129 -2795.75421 5699.94094 -2795.50534 5700.01619 -2795.29029 5700.11765 -2795.12881 5700.17199 -2794.99036 5700.17199 -2794.84164 5700.11765 -2794.70319 5700.01619 -2794.54171 5699.94094 -2794.32666 5699.9129 -2794.07779 5699.9129 -2793.62 5699.88245 -2793.46693 5699.79574 -2793.33716 5699.66597 -2793.25045 5699.5129 -2793.22 5693.79946 -2793.22 5693.64638 -2793.25045 5693.51661 -2793.33716 5693.4299 -2793.46693 5693.39946 -2793.62 5693.39946 -2810.05066 5693.42869 -2810.20076 5693.57022 -2810.55036 5693.71212 -2811.09147 5693.78366 -2811.64629 5693.78366 -2812.20571 5693.71212 -2812.76053 5693.57022 -2813.30164 5693.36029 -2813.82017 5693.08578 -2814.3076 5692.75119 -2814.75592 5692.36201 -2815.15778 5691.92465 -2815.50657 5691.44627 -2815.79656 5690.93473 -2816.023 5690.39844 -2816.18217 5689.8462 -2816.27145 5689.28707 -2816.28938 5688.73025 -2816.23567 5688.18486 -2816.11119 5687.65987 -2815.91798 5687.16389 -2815.65923 5686.70508 -2815.33918 5686.29096 -2814.96309 5685.92833 -2814.53713 5685.62315 -2814.06829 5685.38043 -2813.56428 5685.20415 -2813.03336 5685.09722 -2812.48426 5685.06137 -2811.926 5685.09722 -2811.36774 5685.20415 -2810.81864 5685.38043 -2810.28772 5685.44392 -2810.13278 5685.45394 -2810.04377 5685.45394 -2770.70179 5685.48878 -2770.17026 5685.59014 -2769.6607 5685.75715 -2769.16872 5685.98694 -2768.70275 5686.27558 -2768.27076 5686.6268 -2767.87028 5695.41488 -2759.0822 5695.81536 -2758.73098 5696.24735 -2758.44234 5696.71332 -2758.21255 5697.2053 -2758.04554 5697.71486 -2757.94418 Z M 5551.44705 -2549.75284 L 5551.829 -2549.71943 5552.21095 -2549.75284 5552.5813 -2549.85208 5552.92879 -2550.01411 5553.24286 -2550.23403 5553.51397 -2550.50514 5553.73389 -2550.81921 5553.89592 -2551.1667 5553.99516 -2551.53705 5554.02857 -2551.919 5553.99516 -2552.30095 5553.89592 -2552.6713 5553.73389 -2553.01879 5553.51199 -2553.33569 5553.45816 -2553.44483 5553.43965 -2553.56512 5553.43965 -2554.85509 5553.4701 -2555.00817 5553.55681 -2555.13794 5553.68658 -2555.22465 5553.83965 -2555.25509 5553.99272 -2555.22465 5554.12249 -2555.13794 5554.27912 -2554.98131 5554.47204 -2554.86009 5554.68709 -2554.78484 5554.93596 -2554.7568 5555.64775 -2554.7568 5555.64775 -2558.6764 5553.83965 -2558.6764 5553.68658 -2558.70685 5553.55681 -2558.79356 5553.4701 -2558.92333 5553.43965 -2559.0764 5553.43965 -2565.0756 5553.4701 -2565.22867 5553.55681 -2565.35844 5553.68658 -2565.44515 5553.83965 -2565.4756 5555.64775 -2565.4756 5555.64775 -2569.3952 5554.93596 -2569.3952 5554.68709 -2569.36716 5554.47204 -2569.29191 5554.27912 -2569.17069 5554.12249 -2569.01406 5553.99272 -2568.92735 5553.83965 -2568.89691 5553.68658 -2568.92735 5553.55681 -2569.01406 5553.4701 -2569.14383 5553.43965 -2569.29691 5553.43965 -2576.60509 5553.4701 -2576.75817 5553.55681 -2576.88794 5553.68658 -2576.97465 5553.83965 -2577.00509 5553.99272 -2576.97465 5554.12249 -2576.88794 5554.27912 -2576.73131 5554.47204 -2576.61009 5554.68709 -2576.53484 5554.93596 -2576.5068 5558.82804 -2576.5068 5559.07691 -2576.53484 5559.29196 -2576.61009 5559.48488 -2576.73131 5559.64599 -2576.89242 5559.76721 -2577.08534 5559.84246 -2577.30039 5559.8705 -2577.54926 5559.8705 -2590.10274 5559.84246 -2590.35161 5559.76721 -2590.56666 5559.64599 -2590.75958 5559.48488 -2590.92069 5559.29196 -2591.04191 5559.07691 -2591.11716 5558.82804 -2591.1452 5554.93596 -2591.1452 5554.68709 -2591.11716 5554.47204 -2591.04191 5554.27912 -2590.92069 5554.12249 -2590.76406 5553.99272 -2590.67735 5553.83965 -2590.64691 5553.68658 -2590.67735 5553.55681 -2590.76406 5553.4701 -2590.89383 5553.43965 -2591.04691 5553.43965 -2591.97825 5553.40681 -2592.31173 5553.31527 -2592.61349 5553.16661 -2592.8916 5552.95404 -2593.15063 5549.87163 -2596.23304 5549.6126 -2596.44561 5549.33449 -2596.59427 5549.03273 -2596.68581 5548.64879 -2596.72484 5548.50912 -2596.74971 5548.3773 -2596.79822 5548.25498 -2596.86976 5548.13665 -2596.97538 5548.00985 -2597.14577 5547.69593 -2597.61557 5547.34067 -2598.02067 5546.93557 -2598.37593 5546.48757 -2598.67528 5546.00433 -2598.91359 5545.49411 -2599.08679 5544.96566 -2599.1919 5544.428 -2599.22714 5543.89034 -2599.1919 5543.36189 -2599.08679 5542.85167 -2598.91359 5542.36843 -2598.67528 5541.92043 -2598.37593 5541.51533 -2598.02067 5541.16007 -2597.61557 5540.86072 -2597.16757 5540.62241 -2596.68433 5540.44921 -2596.17411 5540.3441 -2595.64566 5540.30886 -2595.108 5540.3441 -2594.57034 5540.44921 -2594.04189 5540.62241 -2593.53167 5540.86068 -2593.04851 5541.1758 -2592.57732 5541.23721 -2592.42455 5541.23187 -2592.25998 5541.16069 -2592.1115 5541.03573 -2592.00428 5540.87817 -2591.95648 5540.70305 -2591.94116 5540.3327 -2591.84192 5539.98521 -2591.67989 5539.67114 -2591.45997 5539.44009 -2591.22892 5539.34416 -2591.15812 5539.23162 -2591.11874 5539.11247 -2591.11428 5538.83804 -2591.1452 5537.20601 -2591.1452 5537.04891 -2591.17734 5536.91706 -2591.26859 5536.83164 -2591.4043 5536.80639 -2591.56265 5536.84535 -2591.71819 5536.94227 -2591.84594 5537.34067 -2592.19533 5537.69593 -2592.60043 5537.99528 -2593.04843 5538.12329 -2593.308 5536.228 -2593.308 5536.228 -2591.5452 5536.19755 -2591.39213 5536.11084 -2591.26236 5535.98107 -2591.17565 5535.828 -2591.1452 5534.94596 -2591.1452 5534.69709 -2591.11716 5534.48204 -2591.04191 5534.28912 -2590.92069 5534.12801 -2590.75958 5534.00679 -2590.56666 5533.93154 -2590.35161 5533.9035 -2590.10274 5533.9035 -2577.54926 5533.93154 -2577.30039 5534.00679 -2577.08534 5534.12801 -2576.89242 5534.28912 -2576.73131 5534.48204 -2576.61009 5534.69709 -2576.53484 5534.94596 -2576.5068 5538.83804 -2576.5068 5539.08691 -2576.53484 5539.30196 -2576.61009 5539.49488 -2576.73131 5539.65599 -2576.89242 5539.77721 -2577.08534 5539.85246 -2577.30039 5539.8805 -2577.54926 5539.8805 -2586.40504 5539.91095 -2586.55811 5539.99766 -2586.68788 5540.71755 -2587.40777 5540.82777 -2587.48576 5540.93411 -2587.53664 5541.07187 -2587.57428 5541.46695 -2587.60884 5541.8373 -2587.70808 5542.18479 -2587.87011 5542.49886 -2588.09003 5542.76997 -2588.36114 5542.98989 -2588.67521 5543.13598 -2588.98851 5543.22643 -2589.11268 5543.35702 -2589.1936 5543.50847 -2589.21934 5543.65846 -2589.18609 5543.78485 -2589.09876 5543.869 -2588.97023 5543.8985 -2588.81946 5543.8985 -2577.54926 5543.92654 -2577.30039 5544.00179 -2577.08534 5544.12301 -2576.89242 5544.28412 -2576.73131 5544.47704 -2576.61009 5544.69209 -2576.53484 5544.94096 -2576.5068 5548.83304 -2576.5068 5549.08191 -2576.53484 5549.29696 -2576.61009 5549.48988 -2576.73131 5549.66548 -2576.86385 5549.81855 -2576.89429 5549.97162 -2576.86385 5550.10139 -2576.77714 5550.1881 -2576.64737 5550.21855 -2576.49429 5550.21855 -2569.40771 5550.1881 -2569.25463 5550.10139 -2569.12486 5549.97162 -2569.03815 5549.81855 -2569.00771 5549.66548 -2569.03815 5549.48988 -2569.17069 5549.29696 -2569.29191 5549.08191 -2569.36716 5548.83304 -2569.3952 5544.94096 -2569.3952 5544.69209 -2569.36716 5544.47704 -2569.29191 5544.28412 -2569.17069 5544.12301 -2569.00958 5544.00179 -2568.81666 5543.92654 -2568.60161 5543.8985 -2568.35274 5543.8985 -2555.80323 5543.86512 -2555.64327 5543.83858 -2555.60587 5543.88225 -2555.57506 5543.96706 -2555.43458 5544.00179 -2555.33534 5544.12301 -2555.14242 5544.28412 -2554.98131 5544.47704 -2554.86009 5544.69209 -2554.78484 5544.94096 -2554.7568 5548.83304 -2554.7568 5549.08191 -2554.78484 5549.29696 -2554.86009 5549.48988 -2554.98131 5549.66548 -2555.11385 5549.81855 -2555.14429 5549.97162 -2555.11385 5550.10139 -2555.02714 5550.1881 -2554.89737 5550.21855 -2554.74429 5550.21855 -2553.5654 5550.20004 -2553.44512 5550.14621 -2553.33597 5549.92411 -2553.01879 5549.76208 -2552.6713 5549.66284 -2552.30095 5549.62943 -2551.919 5549.66284 -2551.53705 5549.76208 -2551.1667 5549.92411 -2550.81921 5550.14403 -2550.50514 5550.41514 -2550.23403 5550.72921 -2550.01411 5551.0767 -2549.85208 5551.44705 -2549.75284 Z M 5835.89757 -2551.8536 L 5836.31461 -2551.87041 5836.72356 -2551.9539 5837.11381 -2552.1019 5837.47528 -2552.31059 5837.79858 -2552.57456 5838.07535 -2552.88698 5838.29843 -2553.23974 5838.46203 -2553.62372 5838.56191 -2554.02897 5838.5955 -2554.445 5838.56191 -2554.86103 5838.46203 -2555.26628 5838.29843 -2555.65026 5838.06767 -2556.01517 5838.02154 -2556.11767 5838.00575 -2556.22896 5838.00575 -2557.99107 5838.03776 -2558.14785 5838.12866 -2558.27955 5838.26391 -2558.36507 5838.42186 -2558.39074 5838.57723 -2558.35245 5838.70515 -2558.25632 5838.78516 -2558.11773 5838.85203 -2557.91744 5839.046 -2557.54786 5839.29674 -2557.21419 5839.59775 -2556.92506 5839.94125 -2556.68796 5840.31833 -2556.50904 5840.71923 -2556.39291 5841.13357 -2556.3426 5841.55061 -2556.35941 5841.95956 -2556.4429 5842.34981 -2556.5909 5842.71128 -2556.79959 5843.03458 -2557.06356 5843.31135 -2557.37598 5843.53443 -2557.72874 5843.69803 -2558.11272 5843.79791 -2558.51797 5843.8315 -2558.934 5843.79791 -2559.35003 5843.69803 -2559.75528 5843.53443 -2560.13926 5843.30387 -2560.50385 5843.25774 -2560.60635 5843.24195 -2560.71764 5843.24195 -2562.41344 5843.2724 -2562.56652 5843.35911 -2562.69629 5843.41144 -2562.74862 5843.53266 -2562.94154 5843.60791 -2563.15659 5843.63595 -2563.40546 5843.63595 -2571.23454 5843.60791 -2571.48341 5843.53266 -2571.69846 5843.41144 -2571.89138 5843.25033 -2572.05249 5843.05741 -2572.17371 5842.84236 -2572.24896 5842.59349 -2572.277 5839.88251 -2572.277 5839.63364 -2572.24896 5839.41859 -2572.17371 5839.22567 -2572.05249 5839.06456 -2571.89138 5838.94334 -2571.69846 5838.86809 -2571.48341 5838.84005 -2571.23454 5838.84005 -2563.40546 5838.86809 -2563.15659 5838.94334 -2562.94154 5839.06456 -2562.74862 5839.11629 -2562.69689 5839.203 -2562.56712 5839.23345 -2562.41404 5839.23345 -2560.70313 5839.21286 -2560.57646 5839.15323 -2560.46283 5839.046 -2560.32014 5838.85203 -2559.95056 5838.78516 -2559.75027 5838.70515 -2559.61168 5838.57723 -2559.51555 5838.42186 -2559.47726 5838.26391 -2559.50293 5838.12866 -2559.58845 5838.03776 -2559.72015 5838.00575 -2559.87693 5838.00575 -2575.34237 5837.99774 -2575.52577 5837.97493 -2575.69907 5837.93708 -2575.86976 5837.88452 -2576.03646 5837.81761 -2576.19799 5837.7369 -2576.35303 5837.64296 -2576.50049 5837.53655 -2576.63916 5837.41253 -2576.77451 5833.70954 -2580.47742 5833.63777 -2580.57521 5833.5986 -2580.69002 5833.59565 -2580.81129 5833.63595 -2581.12462 5833.63595 -2588.95054 5833.60791 -2589.19941 5833.53266 -2589.41446 5833.41144 -2589.60738 5833.25033 -2589.76849 5833.05741 -2589.88971 5832.84236 -2589.96496 5832.59349 -2589.993 5829.88251 -2589.993 5829.63364 -2589.96496 5829.41859 -2589.88971 5829.22567 -2589.76849 5829.06456 -2589.60738 5828.94334 -2589.41446 5828.86809 -2589.19941 5828.84005 -2588.95054 5828.84005 -2581.12146 5828.86809 -2580.87259 5828.94334 -2580.65754 5829.06456 -2580.46462 5829.11629 -2580.41289 5829.19981 -2580.2906 5829.23312 -2580.14631 5829.24154 -2579.93954 5829.26427 -2579.76683 5829.30212 -2579.59614 5829.35468 -2579.42944 5829.42159 -2579.26791 5829.5023 -2579.11287 5829.59624 -2578.96541 5829.70265 -2578.82674 5829.82667 -2578.69139 5833.88009 -2574.63806 5833.9668 -2574.50829 5833.99725 -2574.35521 5833.99725 -2572.27126 5833.9668 -2572.11818 5833.88009 -2571.98841 5833.75032 -2571.9017 5833.59725 -2571.87126 5833.44418 -2571.9017 5833.31441 -2571.98841 5833.25033 -2572.05249 5833.05741 -2572.17371 5832.84236 -2572.24896 5832.59349 -2572.277 5832.17698 -2572.277 5832.17698 -2569.5385 5833.59725 -2569.5385 5833.75032 -2569.50805 5833.88009 -2569.42134 5833.9668 -2569.29157 5833.99725 -2569.1385 5833.99725 -2565.5015 5833.9668 -2565.34843 5833.88009 -2565.21866 5833.75032 -2565.13195 5833.59725 -2565.1015 5832.17698 -2565.1015 5832.17698 -2562.363 5832.59349 -2562.363 5832.84236 -2562.39104 5833.05741 -2562.46629 5833.25033 -2562.58751 5833.31441 -2562.65159 5833.44418 -2562.7383 5833.59725 -2562.76874 5833.75032 -2562.7383 5833.88009 -2562.65159 5833.9668 -2562.52182 5833.99725 -2562.36874 5833.99725 -2556.21386 5833.97666 -2556.08719 5833.91703 -2555.97356 5833.81 -2555.83114 5833.61603 -2555.46156 5833.48386 -2555.06566 5833.41691 -2554.65369 5833.41691 -2554.23631 5833.48386 -2553.82434 5833.61603 -2553.42844 5833.81 -2553.05886 5834.06074 -2552.72519 5834.36175 -2552.43606 5834.70525 -2552.19896 5835.08233 -2552.02004 5835.48323 -2551.90391 5835.89757 -2551.8536 Z M 5634.49275 -2571.67408 L 5635.06377 -2571.70927 5635.21543 -2571.72863 5635.77698 -2571.83799 5635.92481 -2571.87696 5636.4673 -2572.05863 5636.6088 -2572.11655 5637.12296 -2572.36741 5637.25569 -2572.44329 5637.73275 -2572.75907 5637.85445 -2572.85161 5638.28625 -2573.22691 5638.39484 -2573.33453 5638.774 -2573.76293 5638.86763 -2573.8838 5639.18769 -2574.358 5639.26476 -2574.49004 5639.52023 -2575.00193 5639.57942 -2575.1429 5639.76595 -2575.68373 5639.80625 -2575.83121 5639.92061 -2576.3915 5639.94154 -2576.54603 5639.98166 -2577.13572 5639.97872 -2577.44467 5639.9905 -2577.54926 5639.9905 -2590.10274 5639.96246 -2590.35161 5639.88721 -2590.56666 5639.76599 -2590.75958 5639.60488 -2590.92069 5639.41196 -2591.04191 5639.19691 -2591.11716 5638.94804 -2591.1452 5635.05596 -2591.1452 5634.80709 -2591.11716 5634.59204 -2591.04191 5634.39912 -2590.92069 5634.23801 -2590.75958 5634.11679 -2590.56666 5634.04154 -2590.35161 5634.0135 -2590.10274 5634.0135 -2583.10634 5633.98996 -2582.97114 5633.92209 -2582.85185 5633.8179 -2582.76251 5633.68965 -2582.71366 5633.08348 -2582.59611 5632.9364 -2582.55693 5632.39439 -2582.37384 5632.25305 -2582.31555 5631.73954 -2582.06334 5631.60701 -2581.98712 5631.13079 -2581.67009 5631.00933 -2581.57723 5630.65869 -2581.27086 5630.52763 -2581.19453 5630.37757 -2581.17248 5630.23009 -2581.20788 5630.10639 -2581.29565 5630.02426 -2581.42316 5629.9955 -2581.57208 5629.9955 -2590.10274 5629.96746 -2590.35161 5629.89221 -2590.56666 5629.77099 -2590.75958 5629.60988 -2590.92069 5629.41696 -2591.04191 5629.20191 -2591.11716 5628.95304 -2591.1452 5628.84174 -2591.1452 5628.66954 -2591.18417 5628.53088 -2591.29347 5628.45279 -2591.45182 5628.39326 -2591.72091 5628.3652 -2592.09312 5628.3652 -2593.30605 5628.39504 -2593.45764 5628.49623 -2593.63922 5628.63206 -2593.78713 5628.85689 -2594.10821 5629.01892 -2594.4557 5629.11816 -2594.82605 5629.15157 -2595.208 5629.11816 -2595.58995 5629.01892 -2595.9603 5628.85689 -2596.30779 5628.63697 -2596.62186 5628.36586 -2596.89297 5628.05179 -2597.11289 5627.7043 -2597.27492 5627.33395 -2597.37416 5626.952 -2597.40757 5626.57005 -2597.37416 5626.1997 -2597.27492 5625.85221 -2597.11289 5625.53814 -2596.89297 5625.26703 -2596.62186 5625.04711 -2596.30779 5624.88508 -2595.9603 5624.78584 -2595.58995 5624.75243 -2595.208 5624.78584 -2594.82605 5624.88508 -2594.4557 5625.04711 -2594.10821 5625.26703 -2593.79414 5625.38818 -2593.65926 5625.47573 -2593.52102 5625.52197 -2593.41842 5625.5378 -2593.307 5625.5378 -2591.82369 5625.50845 -2591.50599 5625.46766 -2591.36536 5625.379 -2591.24882 5625.25433 -2591.172 5624.81209 -2591.11716 5624.59704 -2591.04191 5624.40412 -2590.92069 5624.24301 -2590.75958 5624.12179 -2590.56666 5624.04654 -2590.35161 5624.0185 -2590.10274 5624.0185 -2577.54926 5624.04654 -2577.30039 5624.12179 -2577.08534 5624.24301 -2576.89242 5624.40412 -2576.73131 5624.59704 -2576.61009 5624.81209 -2576.53484 5625.06096 -2576.5068 5628.60488 -2576.5068 5628.73989 -2576.48333 5628.85905 -2576.41566 5628.94838 -2576.31175 5628.9974 -2576.18378 5629.05845 -2575.87248 5629.09761 -2575.72469 5629.27999 -2575.18244 5629.33809 -2575.04103 5629.58963 -2574.52719 5629.66568 -2574.39456 5629.98208 -2573.91792 5630.07478 -2573.79634 5630.45065 -2573.36503 5630.55841 -2573.25658 5630.98731 -2572.87798 5631.1083 -2572.78451 5631.58292 -2572.46507 5631.71506 -2572.38818 5632.22728 -2572.13337 5632.36833 -2572.07437 5632.90941 -2571.88854 5633.05694 -2571.84844 5633.61763 -2571.73476 5633.76914 -2571.71424 5634.33987 -2571.67466 5634.49275 -2571.67408 Z M 5574.67709 -2576.53484 L 5574.92596 -2576.5068 5578.81804 -2576.5068 5579.06691 -2576.53484 5579.28196 -2576.61009 5579.47488 -2576.73131 5579.63599 -2576.89242 5579.75721 -2577.08534 5579.83246 -2577.30039 5579.8605 -2577.54926 5579.8605 -2590.10274 5579.83246 -2590.35161 5579.75721 -2590.56666 5579.63599 -2590.75958 5579.47488 -2590.92069 5579.28196 -2591.04191 5579.0689 -2591.11646 5578.76719 -2591.14727 5578.63583 -2591.18407 5578.52448 -2591.26286 5578.44608 -2591.3745 5578.40975 -2591.50599 5578.3924 -2591.7018 5578.3923 -2610.26478 5578.42275 -2610.41786 5578.50946 -2610.54763 5578.55697 -2610.59514 5578.77689 -2610.90921 5578.93892 -2611.2567 5579.03816 -2611.62705 5579.07157 -2612.009 5579.03816 -2612.39095 5578.93892 -2612.7613 5578.77689 -2613.10879 5578.55697 -2613.42286 5578.28586 -2613.69397 5577.97179 -2613.91389 5577.6243 -2614.07592 5577.25395 -2614.17516 5576.872 -2614.20857 5576.49005 -2614.17516 5576.1197 -2614.07592 5575.77221 -2613.91389 5575.45814 -2613.69397 5575.18703 -2613.42286 5574.96711 -2613.10879 5574.80508 -2612.7613 5574.70584 -2612.39095 5574.67243 -2612.009 5574.70584 -2611.62705 5574.80508 -2611.2567 5574.96711 -2610.90921 5575.18703 -2610.59514 5575.23514 -2610.54703 5575.32185 -2610.41726 5575.3523 -2610.26419 5575.3523 -2591.70181 5575.33495 -2591.50599 5575.29862 -2591.37448 5575.2202 -2591.26284 5575.10881 -2591.18404 5574.97743 -2591.14726 5574.67506 -2591.11645 5574.46204 -2591.04191 5574.26912 -2590.92069 5574.10801 -2590.75958 5573.98679 -2590.56666 5573.91154 -2590.35161 5573.8835 -2590.10274 5573.8835 -2577.54926 5573.91154 -2577.30039 5573.98679 -2577.08534 5574.10801 -2576.89242 5574.26912 -2576.73131 5574.46204 -2576.61009 5574.67709 -2576.53484 Z M 5541.007 -2552.89043 L 5541.38895 -2552.92384 5541.7593 -2553.02308 5542.10679 -2553.18511 5542.42086 -2553.40503 5542.69197 -2553.67614 5542.91189 -2553.99021 5543.07392 -2554.3377 5543.17316 -2554.70805 5543.20657 -2555.09 5543.19103 -2555.26761 5543.21057 -2555.43054 5543.25125 -2555.49958 5543.18577 -2555.55384 5543.11213 -2555.6997 5543.07392 -2555.8423 5542.91189 -2556.18979 5542.69197 -2556.50386 5542.42086 -2556.77497 5542.10679 -2556.99489 5541.7593 -2557.15692 5541.38895 -2557.25616 5540.99238 -2557.29085 5540.85477 -2557.32842 5540.74922 -2557.37887 5540.63885 -2557.45693 5539.99766 -2558.09812 5539.91095 -2558.22789 5539.8805 -2558.38096 5539.8805 -2568.35274 5539.85246 -2568.60161 5539.77721 -2568.81666 5539.65599 -2569.00958 5539.49488 -2569.17069 5539.30196 -2569.29191 5539.08691 -2569.36716 5538.83804 -2569.3952 5534.94596 -2569.3952 5534.69709 -2569.36716 5534.48204 -2569.29191 5534.28912 -2569.17069 5534.12801 -2569.00958 5534.00679 -2568.81666 5533.93154 -2568.60161 5533.9035 -2568.35274 5533.9035 -2555.79926 5533.93154 -2555.55039 5534.00679 -2555.33534 5534.12801 -2555.14242 5534.28912 -2554.98131 5534.48204 -2554.86009 5534.69709 -2554.78484 5534.94596 -2554.7568 5538.51717 -2554.7568 5538.68358 -2554.72054 5538.81982 -2554.61834 5538.90119 -2554.46873 5538.93822 -2554.34168 5539.10211 -2553.99021 5539.32203 -2553.67614 5539.59314 -2553.40503 5539.90721 -2553.18511 5540.2547 -2553.02308 5540.62505 -2552.92384 5541.007 -2552.89043 Z M 5620.849 -2553.12643 L 5621.23095 -2553.15984 5621.6013 -2553.25908 5621.94879 -2553.42111 5622.26286 -2553.64103 5622.53397 -2553.91214 5622.75389 -2554.22621 5622.91592 -2554.5737 5623.01516 -2554.94405 5623.04857 -2555.326 5623.01516 -2555.70795 5622.91592 -2556.0783 5622.75389 -2556.42579 5622.53397 -2556.73986 5622.26286 -2557.01097 5621.94879 -2557.23089 5621.6013 -2557.39292 5621.23095 -2557.49216 5620.83549 -2557.52675 5620.69779 -2557.56437 5620.59171 -2557.61509 5620.48143 -2557.69311 5619.95766 -2558.21687 5619.87095 -2558.34664 5619.8405 -2558.49971 5619.8405 -2568.35274 5619.81246 -2568.60161 5619.73721 -2568.81666 5619.61599 -2569.00958 5619.45488 -2569.17069 5619.26196 -2569.29191 5619.04691 -2569.36716 5618.79804 -2569.3952 5614.90596 -2569.3952 5614.65709 -2569.36716 5614.44204 -2569.29191 5614.24912 -2569.17069 5614.08801 -2569.00958 5613.96679 -2568.81666 5613.89154 -2568.60161 5613.8635 -2568.35274 5613.8635 -2555.79926 5613.89154 -2555.55039 5613.96679 -2555.33534 5614.08801 -2555.14242 5614.24912 -2554.98131 5614.44204 -2554.86009 5614.65709 -2554.78484 5614.90596 -2554.7568 5618.44187 -2554.7568 5618.58955 -2554.72854 5618.71637 -2554.64775 5618.80439 -2554.52585 5618.94411 -2554.22621 5619.16403 -2553.91214 5619.43514 -2553.64103 5619.74921 -2553.42111 5620.0967 -2553.25908 5620.46705 -2553.15984 5620.849 -2553.12643 Z M 5524.70209 -2576.53484 L 5524.95096 -2576.5068 5528.84304 -2576.5068 5529.09191 -2576.53484 5529.30696 -2576.61009 5529.49988 -2576.73131 5529.66099 -2576.89242 5529.78221 -2577.08534 5529.85746 -2577.30039 5529.8855 -2577.54926 5529.8855 -2586.92184 5529.91595 -2587.07491 5530.04838 -2587.2504 5530.15885 -2587.32852 5530.26377 -2587.37862 5530.40128 -2587.41614 5530.79795 -2587.45084 5531.1683 -2587.55008 5531.51579 -2587.71211 5531.82986 -2587.93203 5532.10097 -2588.20314 5532.32089 -2588.51721 5532.48292 -2588.8647 5532.58216 -2589.23505 5532.61557 -2589.617 5532.58216 -2589.99895 5532.48292 -2590.3693 5532.3061 -2590.7485 5532.26909 -2590.89822 5532.29147 -2591.0508 5532.36991 -2591.18358 5532.52241 -2591.29133 5532.628 -2591.32584 5532.628 -2593.308 5530.73271 -2593.308 5530.86072 -2593.04843 5531.16007 -2592.60043 5531.33874 -2592.39668 5531.42078 -2592.24906 5531.43459 -2592.08073 5531.37769 -2591.92172 5531.26024 -2591.80036 5531.10317 -2591.73829 5530.93448 -2591.74657 5530.79795 -2591.78316 5530.416 -2591.81657 5530.03405 -2591.78316 5529.6637 -2591.68392 5529.31621 -2591.52189 5529.00214 -2591.30197 5528.83276 -2591.17565 5528.67969 -2591.1452 5524.95096 -2591.1452 5524.70209 -2591.11716 5524.48704 -2591.04191 5524.29412 -2590.92069 5524.13301 -2590.75958 5524.01179 -2590.56666 5523.93654 -2590.35161 5523.9085 -2590.10274 5523.9085 -2577.54926 5523.93654 -2577.30039 5524.01179 -2577.08534 5524.13301 -2576.89242 5524.29412 -2576.73131 5524.48704 -2576.61009 5524.70209 -2576.53484 Z M 5610.416 -2553.52043 L 5610.79795 -2553.55384 5611.1683 -2553.65308 5611.51579 -2553.81511 5611.82986 -2554.03503 5612.10097 -2554.30614 5612.32089 -2554.62021 5612.48292 -2554.9677 5612.58216 -2555.33805 5612.61557 -2555.72 5612.58216 -2556.10195 5612.48292 -2556.4723 5612.32089 -2556.81979 5612.10097 -2557.13386 5611.82986 -2557.40497 5611.51579 -2557.62489 5611.1683 -2557.78692 5610.79795 -2557.88616 5610.40171 -2557.92082 5610.26415 -2557.95837 5610.15873 -2558.00873 5610.04832 -2558.08681 5609.96266 -2558.17247 5609.87595 -2558.30224 5609.8455 -2558.45532 5609.8455 -2568.35274 5609.81746 -2568.60161 5609.74221 -2568.81666 5609.62099 -2569.00958 5609.45988 -2569.17069 5609.26696 -2569.29191 5609.05191 -2569.36716 5608.80304 -2569.3952 5604.91096 -2569.3952 5604.66209 -2569.36716 5604.44704 -2569.29191 5604.25412 -2569.17069 5604.09301 -2569.00958 5603.97179 -2568.81666 5603.89654 -2568.60161 5603.8685 -2568.35274 5603.8685 -2555.79926 5603.89654 -2555.55039 5603.97179 -2555.33534 5604.09301 -2555.14242 5604.25412 -2554.98131 5604.44704 -2554.86009 5604.66209 -2554.78484 5604.91096 -2554.7568 5608.20725 -2554.7568 5608.33307 -2554.7365 5608.44611 -2554.67765 5608.53491 -2554.58623 5608.73103 -2554.30614 5609.00214 -2554.03503 5609.31621 -2553.81511 5609.6637 -2553.65308 5610.03405 -2553.55384 5610.416 -2553.52043 Z M 5828.48609 -2631.95587 L 5829.09559 -2631.919 5833.00841 -2631.919 5833.61791 -2631.95587 5834.20661 -2632.06375 5834.77802 -2632.24181 5835.32379 -2632.48744 5835.83598 -2632.79707 5836.30711 -2633.16618 5836.73032 -2633.58939 5837.09943 -2634.06052 5837.40906 -2634.57271 5837.65469 -2635.11848 5837.83275 -2635.68989 5837.94063 -2636.27859 5837.97677 -2636.876 5837.94063 -2637.47341 5837.83275 -2638.06211 5837.65469 -2638.63352 5837.40906 -2639.17929 5837.09943 -2639.69148 5836.73032 -2640.16261 5836.30711 -2640.58582 5835.83598 -2640.95493 5835.32379 -2641.26456 5834.77802 -2641.51019 5834.20661 -2641.68825 5833.61791 -2641.79613 5833.00841 -2641.833 5829.09559 -2641.833 5828.48609 -2641.79613 5827.89739 -2641.68825 5827.32598 -2641.51019 5826.78021 -2641.26456 5826.26802 -2640.95493 5825.79689 -2640.58582 5825.37368 -2640.16261 5825.00457 -2639.69148 5824.69494 -2639.17929 5824.44931 -2638.63352 5824.27125 -2638.06211 5824.16337 -2637.47341 5824.12723 -2636.876 5824.16337 -2636.27859 5824.27125 -2635.68989 5824.44931 -2635.11848 5824.69494 -2634.57271 5825.00457 -2634.06052 5825.37368 -2633.58939 5825.79689 -2633.16618 5826.26802 -2632.79707 5826.78021 -2632.48744 5827.32598 -2632.24181 5827.89739 -2632.06375 5828.48609 -2631.95587 Z M 5931.03924 -2778.05266 L 5931.59917 -2778.08717 5931.75083 -2778.10653 5932.31238 -2778.21589 5932.46021 -2778.25486 5933.0027 -2778.43653 5933.1442 -2778.49445 5933.65836 -2778.74531 5933.79109 -2778.82119 5934.26815 -2779.13697 5934.38985 -2779.22951 5934.82165 -2779.60481 5934.93024 -2779.71243 5935.3094 -2780.14083 5935.40303 -2780.2617 5935.72309 -2780.7359 5935.80016 -2780.86794 5936.05563 -2781.37983 5936.11482 -2781.5208 5936.30135 -2782.06163 5936.34165 -2782.20911 5936.45601 -2782.7694 5936.47694 -2782.92393 5936.51736 -2783.51805 5936.51755 -2783.67399 5936.48013 -2784.24461 5936.46018 -2784.39619 5936.34861 -2784.9573 5936.30906 -2785.10499 5936.12526 -2785.64676 5936.06679 -2785.78802 5935.8139 -2786.3012 5935.73751 -2786.43363 5935.41986 -2786.90944 5935.32684 -2787.03078 5934.94985 -2787.4611 5934.8418 -2787.56927 5934.41191 -2787.94675 5934.29068 -2788.0399 5933.81523 -2788.35809 5933.68288 -2788.43464 5933.16999 -2788.6881 5933.0288 -2788.74674 5932.48723 -2788.93115 5932.33959 -2788.97086 5931.7786 -2789.08307 5931.62705 -2789.10319 5931.05622 -2789.14128 5930.90333 -2789.14146 5930.33241 -2789.10477 5930.1808 -2789.08502 5929.61954 -2788.97419 5929.4718 -2788.93483 5928.92979 -2788.75174 5928.78845 -2788.69345 5928.27494 -2788.44124 5928.14241 -2788.36502 5927.66619 -2788.04799 5927.54473 -2787.95513 5927.11391 -2787.57871 5927.0056 -2787.4708 5926.62756 -2787.0414 5926.53425 -2786.92029 5926.21544 -2786.44526 5926.13872 -2786.31302 5925.88458 -2785.80046 5925.82576 -2785.65934 5925.64064 -2785.11802 5925.60073 -2784.97043 5925.48779 -2784.40959 5925.46747 -2784.25806 5925.42864 -2783.68728 5925.42825 -2783.53439 5925.46419 -2782.96342 5925.48375 -2782.81179 5925.59385 -2782.25038 5925.63301 -2782.10259 5925.81539 -2781.56034 5925.87349 -2781.41893 5926.12503 -2780.90509 5926.20108 -2780.77246 5926.51748 -2780.29582 5926.61018 -2780.17424 5926.98605 -2779.74293 5927.09381 -2779.63448 5927.52271 -2779.25588 5927.6437 -2779.16241 5928.11832 -2778.84297 5928.25046 -2778.76608 5928.76268 -2778.51127 5928.90373 -2778.45227 5929.44481 -2778.26644 5929.59234 -2778.22634 5930.15303 -2778.11266 5930.30454 -2778.09214 5930.86418 -2778.05333 5931.03924 -2778.05266 Z M 5931.01964 -2571.63536 L 5931.57957 -2571.66987 5931.73123 -2571.68923 5932.29278 -2571.79859 5932.44061 -2571.83756 5932.9831 -2572.01923 5933.1246 -2572.07715 5933.63876 -2572.32801 5933.77149 -2572.40389 5934.24855 -2572.71967 5934.37025 -2572.81221 5934.80205 -2573.18751 5934.91064 -2573.29513 5935.2898 -2573.72353 5935.38343 -2573.8444 5935.70349 -2574.3186 5935.78056 -2574.45064 5936.03603 -2574.96253 5936.09522 -2575.1035 5936.28175 -2575.64433 5936.32205 -2575.79181 5936.43641 -2576.3521 5936.45734 -2576.50663 5936.49776 -2577.10075 5936.49795 -2577.25669 5936.46053 -2577.82731 5936.44058 -2577.97889 5936.32901 -2578.54 5936.28946 -2578.68769 5936.10566 -2579.22946 5936.04719 -2579.37072 5935.7943 -2579.8839 5935.71791 -2580.01633 5935.40026 -2580.49214 5935.30724 -2580.61348 5934.93025 -2581.0438 5934.8222 -2581.15197 5934.39231 -2581.52945 5934.27108 -2581.6226 5933.79563 -2581.94079 5933.66328 -2582.01734 5933.15039 -2582.2708 5933.0092 -2582.32944 5932.46763 -2582.51385 5932.31999 -2582.55356 5931.759 -2582.66577 5931.60745 -2582.68589 5931.03662 -2582.72398 5930.88373 -2582.72416 5930.31281 -2582.68747 5930.1612 -2582.66772 5929.59994 -2582.55689 5929.4522 -2582.51753 5928.91019 -2582.33444 5928.76885 -2582.27615 5928.25534 -2582.02394 5928.12281 -2581.94772 5927.64659 -2581.63069 5927.52513 -2581.53783 5927.09431 -2581.16141 5926.986 -2581.0535 5926.60796 -2580.6241 5926.51465 -2580.50299 5926.19584 -2580.02796 5926.11912 -2579.89572 5925.86498 -2579.38316 5925.80616 -2579.24204 5925.62104 -2578.70072 5925.58113 -2578.55313 5925.46819 -2577.99229 5925.44787 -2577.84076 5925.40904 -2577.26998 5925.40865 -2577.11709 5925.44459 -2576.54612 5925.46415 -2576.39449 5925.57425 -2575.83308 5925.61341 -2575.68529 5925.79579 -2575.14304 5925.85389 -2575.00163 5926.10543 -2574.48779 5926.18148 -2574.35516 5926.49788 -2573.87852 5926.59058 -2573.75694 5926.96645 -2573.32563 5927.07421 -2573.21718 5927.50311 -2572.83858 5927.6241 -2572.74511 5928.09872 -2572.42567 5928.23086 -2572.34878 5928.74308 -2572.09397 5928.88413 -2572.03497 5929.42521 -2571.84914 5929.57274 -2571.80904 5930.13343 -2571.69536 5930.28494 -2571.67484 5930.84458 -2571.63603 5931.01964 -2571.63536 Z M 5604.66209 -2576.53484 L 5604.91096 -2576.5068 5608.80304 -2576.5068 5609.05191 -2576.53484 5609.26696 -2576.61009 5609.45988 -2576.73131 5609.62099 -2576.89242 5609.74221 -2577.08534 5609.81746 -2577.30039 5609.8455 -2577.54926 5609.8455 -2590.10274 5609.81746 -2590.35161 5609.74221 -2590.56666 5609.62099 -2590.75958 5609.45988 -2590.92069 5609.26696 -2591.04191 5609.05191 -2591.11716 5608.86512 -2591.1382 5608.70905 -2591.18978 5608.58689 -2591.29977 5608.51928 -2591.4496 5608.51765 -2591.61397 5608.58225 -2591.76512 5608.81689 -2592.10021 5608.97892 -2592.4477 5609.07816 -2592.81805 5609.11157 -2593.2 5609.07816 -2593.58195 5608.97892 -2593.9523 5608.81689 -2594.29979 5608.59697 -2594.61386 5608.32586 -2594.88497 5608.01179 -2595.10489 5607.6643 -2595.26692 5607.29395 -2595.36616 5606.912 -2595.39957 5606.53005 -2595.36616 5606.1597 -2595.26692 5605.81221 -2595.10489 5605.49814 -2594.88497 5605.22703 -2594.61386 5605.00711 -2594.29979 5604.84508 -2593.9523 5604.74584 -2593.58195 5604.71243 -2593.2 5604.74584 -2592.81805 5604.84508 -2592.4477 5605.00711 -2592.10021 5605.23509 -2591.77463 5605.29979 -2591.62299 5605.29784 -2591.45813 5605.22956 -2591.30806 5605.10655 -2591.19828 5604.94971 -2591.14744 5604.66089 -2591.11674 5604.44704 -2591.04191 5604.25412 -2590.92069 5604.09301 -2590.75958 5603.97179 -2590.56666 5603.89654 -2590.35161 5603.8685 -2590.10274 5603.8685 -2577.54926 5603.89654 -2577.30039 5603.97179 -2577.08534 5604.09301 -2576.89242 5604.25412 -2576.73131 5604.44704 -2576.61009 5604.66209 -2576.53484 Z M 5618.79804 -2576.5068 L 5619.04691 -2576.53484 5619.26196 -2576.61009 5619.45488 -2576.73131 5619.61599 -2576.89242 5619.73721 -2577.08534 5619.81246 -2577.30039 5619.8405 -2577.54926 5619.8405 -2590.10274 5619.81246 -2590.35161 5619.73721 -2590.56666 5619.61599 -2590.75958 5619.45488 -2590.92069 5619.26196 -2591.04191 5619.07753 -2591.10644 5618.93575 -2591.19248 5618.84105 -2591.32862 5618.80971 -2591.49148 5618.84712 -2591.65305 5618.97892 -2591.9357 5619.07816 -2592.30605 5619.11157 -2592.688 5619.07816 -2593.06995 5618.97892 -2593.4403 5618.81689 -2593.78779 5618.59697 -2594.10186 5618.32586 -2594.37297 5618.01179 -2594.59289 5617.6643 -2594.75492 5617.29395 -2594.85416 5616.912 -2594.88757 5616.53005 -2594.85416 5616.1597 -2594.75492 5615.81221 -2594.59289 5615.49814 -2594.37297 5615.22703 -2594.10186 5615.00711 -2593.78779 5614.84508 -2593.4403 5614.74584 -2593.06995 5614.71243 -2592.688 5614.74584 -2592.30605 5614.84508 -2591.9357 5614.9632 -2591.68238 5614.99987 -2591.53877 5614.98173 -2591.39166 5614.91126 -2591.26126 5614.79815 -2591.16548 5614.44204 -2591.04191 5614.24912 -2590.92069 5614.08801 -2590.75958 5613.96679 -2590.56666 5613.89154 -2590.35161 5613.8635 -2590.10274 5613.8635 -2577.54926 5613.89154 -2577.30039 5613.96679 -2577.08534 5614.08801 -2576.89242 5614.24912 -2576.73131 5614.44204 -2576.61009 5614.65709 -2576.53484 5614.90596 -2576.5068 5618.79804 -2576.5068 Z M 5484.22639 -2604.86554 L 5484.47526 -2604.8375 5497.02874 -2604.8375 5497.27761 -2604.86554 5497.49266 -2604.94079 5497.68558 -2605.06201 5497.85332 -2605.22974 5497.97548 -2605.31321 5498.11963 -2605.34656 5498.32567 -2605.30476 5498.71609 -2605.23961 5499.11191 -2605.23961 5499.50233 -2605.30476 5499.87669 -2605.43328 5500.2248 -2605.62166 5500.53716 -2605.86478 5500.80524 -2606.15599 5501.02173 -2606.48735 5501.18073 -2606.84983 5501.27789 -2607.23354 5501.31058 -2607.628 5501.27789 -2608.02246 5501.18073 -2608.40617 5501.02173 -2608.76865 5500.80524 -2609.10001 5500.53716 -2609.39122 5500.2248 -2609.63434 5499.87669 -2609.82272 5499.50233 -2609.95124 5499.11191 -2610.01639 5498.71609 -2610.01639 5498.41394 -2609.96597 5498.27471 -2609.96731 5498.14437 -2610.01629 5498.03871 -2610.10699 5497.84669 -2610.42888 5497.68558 -2610.58999 5497.49266 -2610.71121 5497.27761 -2610.78646 5497.02874 -2610.8145 5484.47526 -2610.8145 5484.22639 -2610.78646 5484.01134 -2610.71121 5483.81842 -2610.58999 5483.65731 -2610.42888 5483.53609 -2610.23596 5483.46084 -2610.02091 5483.4328 -2609.77204 5483.4328 -2605.87996 5483.46084 -2605.63109 5483.53609 -2605.41604 5483.65731 -2605.22312 5483.81842 -2605.06201 5484.01134 -2604.94079 5484.22639 -2604.86554 Z M 5574.67709 -2554.78484 L 5574.92596 -2554.7568 5578.81804 -2554.7568 5579.06691 -2554.78484 5579.28196 -2554.86009 5579.47488 -2554.98131 5579.63599 -2555.14242 5579.75721 -2555.33534 5579.83246 -2555.55039 5579.8605 -2555.79926 5579.8605 -2568.35274 5579.83246 -2568.60161 5579.75721 -2568.81666 5579.63599 -2569.00958 5579.47488 -2569.17069 5579.28196 -2569.29191 5579.06691 -2569.36716 5578.81804 -2569.3952 5574.92596 -2569.3952 5574.67709 -2569.36716 5574.46204 -2569.29191 5574.26912 -2569.17069 5574.10801 -2569.00958 5573.98679 -2568.81666 5573.91154 -2568.60161 5573.8835 -2568.35274 5573.8835 -2555.79926 5573.91154 -2555.55039 5573.98679 -2555.33534 5574.10801 -2555.14242 5574.26912 -2554.98131 5574.46204 -2554.86009 5574.67709 -2554.78484 Z M 5564.68209 -2554.78484 L 5564.93096 -2554.7568 5568.82304 -2554.7568 5569.07191 -2554.78484 5569.28696 -2554.86009 5569.47988 -2554.98131 5569.64099 -2555.14242 5569.76221 -2555.33534 5569.83746 -2555.55039 5569.8655 -2555.79926 5569.8655 -2568.35274 5569.83746 -2568.60161 5569.76221 -2568.81666 5569.64099 -2569.00958 5569.47988 -2569.17069 5569.28696 -2569.29191 5569.07191 -2569.36716 5568.82304 -2569.3952 5564.93096 -2569.3952 5564.68209 -2569.36716 5564.46704 -2569.29191 5564.27412 -2569.17069 5564.11301 -2569.00958 5563.99179 -2568.81666 5563.91654 -2568.60161 5563.8885 -2568.35274 5563.8885 -2555.79926 5563.91654 -2555.55039 5563.99179 -2555.33534 5564.11301 -2555.14242 5564.27412 -2554.98131 5564.46704 -2554.86009 5564.68209 -2554.78484 Z M 5518.84804 -2576.5068 L 5519.09691 -2576.53484 5519.31196 -2576.61009 5519.50488 -2576.73131 5519.66599 -2576.89242 5519.78721 -2577.08534 5519.86246 -2577.30039 5519.8905 -2577.54926 5519.8905 -2590.10274 5519.86246 -2590.35161 5519.78721 -2590.56666 5519.66599 -2590.75958 5519.50488 -2590.92069 5519.31196 -2591.04191 5519.09691 -2591.11716 5518.84804 -2591.1452 5514.95596 -2591.1452 5514.70709 -2591.11716 5514.49204 -2591.04191 5514.29912 -2590.92069 5514.13801 -2590.75958 5514.01679 -2590.56666 5513.94154 -2590.35161 5513.9135 -2590.10274 5513.9135 -2577.54926 5513.94154 -2577.30039 5514.01679 -2577.08534 5514.13801 -2576.89242 5514.29912 -2576.73131 5514.49204 -2576.61009 5514.70709 -2576.53484 5514.95596 -2576.5068 5518.84804 -2576.5068 Z M 5859.63364 -2562.39104 L 5859.88251 -2562.363 5862.59349 -2562.363 5862.84236 -2562.39104 5863.05741 -2562.46629 5863.25033 -2562.58751 5863.41144 -2562.74862 5863.53266 -2562.94154 5863.60791 -2563.15659 5863.63595 -2563.40546 5863.63595 -2571.23454 5863.60791 -2571.48341 5863.53266 -2571.69846 5863.41144 -2571.89138 5863.25033 -2572.05249 5863.03544 -2572.18752 5862.93552 -2572.27681 5862.8707 -2572.39409 5862.84825 -2572.52621 5862.84825 -2573.46831 5862.86676 -2573.58859 5862.92059 -2573.69774 5863.14289 -2574.01521 5863.30492 -2574.3627 5863.40416 -2574.73305 5863.43757 -2575.115 5863.40416 -2575.49695 5863.30492 -2575.8673 5863.14289 -2576.21479 5862.92297 -2576.52886 5862.65186 -2576.79997 5862.33779 -2577.01989 5861.9903 -2577.18192 5861.61995 -2577.28116 5861.238 -2577.31457 5860.85605 -2577.28116 5860.4857 -2577.18192 5860.13821 -2577.01989 5859.82414 -2576.79997 5859.55303 -2576.52886 5859.33311 -2576.21479 5859.17108 -2575.8673 5859.07184 -2575.49695 5859.03843 -2575.115 5859.07184 -2574.73305 5859.17108 -2574.3627 5859.33311 -2574.01521 5859.55481 -2573.6986 5859.60864 -2573.58945 5859.62715 -2573.46917 5859.62715 -2572.52583 5859.6047 -2572.39372 5859.53988 -2572.27643 5859.43996 -2572.18714 5859.22567 -2572.05249 5859.06456 -2571.89138 5858.94334 -2571.69846 5858.86809 -2571.48341 5858.84005 -2571.23454 5858.84005 -2563.40546 5858.86809 -2563.15659 5858.94334 -2562.94154 5859.06456 -2562.74862 5859.22567 -2562.58751 5859.41859 -2562.46629 5859.63364 -2562.39104 Z M 5698.88287 -2807.79292 L 5699.427 -2807.75726 5699.97113 -2807.79292 5700.50595 -2807.8993 5701.02231 -2808.07458 5701.51137 -2808.31576 5701.96477 -2808.61871 5702.37475 -2808.97825 5702.73429 -2809.38823 5703.03724 -2809.84163 5703.27842 -2810.33069 5703.4537 -2810.84705 5703.56008 -2811.38187 5703.59574 -2811.926 5703.56008 -2812.47013 5703.4537 -2813.00495 5703.27842 -2813.52131 5703.03724 -2814.01037 5702.73429 -2814.46377 5702.37475 -2814.87375 5701.96477 -2815.23329 5701.51137 -2815.53624 5701.02231 -2815.77742 5700.50595 -2815.9527 5699.97113 -2816.05908 5699.427 -2816.09474 5698.88287 -2816.05908 5698.34805 -2815.9527 5697.83169 -2815.77742 5697.34263 -2815.53624 5696.88923 -2815.23329 5696.47925 -2814.87375 5696.11971 -2814.46377 5695.81676 -2814.01037 5695.57558 -2813.52131 5695.4003 -2813.00495 5695.29392 -2812.47013 5695.25826 -2811.926 5695.29392 -2811.38187 5695.4003 -2810.84705 5695.57558 -2810.33069 5695.81676 -2809.84163 5696.11971 -2809.38823 5696.47925 -2808.97825 5696.88923 -2808.61871 5697.34263 -2808.31576 5697.83169 -2808.07458 5698.34805 -2807.8993 5698.88287 -2807.79292 Z M 5794.68259 -2804.17204 L 5794.93146 -2804.144 5801.08654 -2804.144 5801.33541 -2804.17204 5801.55046 -2804.24729 5801.74338 -2804.36851 5801.90449 -2804.52962 5802.02571 -2804.72254 5802.10096 -2804.93759 5802.129 -2805.18646 5802.129 -2811.34154 5802.10096 -2811.59041 5802.02571 -2811.80546 5801.90449 -2811.99838 5801.74338 -2812.15949 5801.55046 -2812.28071 5801.33541 -2812.35596 5801.08654 -2812.384 5794.93146 -2812.384 5794.68259 -2812.35596 5794.46754 -2812.28071 5794.27462 -2812.15949 5794.11351 -2811.99838 5793.99229 -2811.80546 5793.91704 -2811.59041 5793.889 -2811.34154 5793.889 -2805.18646 5793.91704 -2804.93759 5793.99229 -2804.72254 5794.11351 -2804.52962 5794.27462 -2804.36851 5794.46754 -2804.24729 5794.68259 -2804.17204 Z M 5788.009 -2804.14446 L 5788.54671 -2804.1797 5789.07522 -2804.28483 5789.58548 -2804.45804 5790.06877 -2804.69637 5790.51682 -2804.99575 5790.92196 -2805.35104 5791.27725 -2805.75618 5791.57663 -2806.20423 5791.81496 -2806.68752 5791.98817 -2807.19778 5792.0933 -2807.72629 5792.12854 -2808.264 5792.0933 -2808.80171 5791.98817 -2809.33022 5791.81496 -2809.84048 5791.57663 -2810.32377 5791.27725 -2810.77182 5790.92196 -2811.17696 5790.51682 -2811.53225 5790.06877 -2811.83163 5789.58548 -2812.06996 5789.07522 -2812.24317 5788.54671 -2812.3483 5788.009 -2812.38354 5787.47129 -2812.3483 5786.94278 -2812.24317 5786.43252 -2812.06996 5785.94923 -2811.83163 5785.50118 -2811.53225 5785.09604 -2811.17696 5784.74075 -2810.77182 5784.44137 -2810.32377 5784.20304 -2809.84048 5784.02983 -2809.33022 5783.9247 -2808.80171 5783.88946 -2808.264 5783.9247 -2807.72629 5784.02983 -2807.19778 5784.20304 -2806.68752 5784.44137 -2806.20423 5784.74075 -2805.75618 5785.09604 -2805.35104 5785.50118 -2804.99575 5785.94923 -2804.69637 5786.43252 -2804.45804 5786.94278 -2804.28483 5787.47129 -2804.1797 5788.009 -2804.14446 Z M 5768.009 -2794.14486 L 5768.54666 -2794.1801 5769.07511 -2794.28521 5769.58533 -2794.45841 5770.06857 -2794.69672 5770.51657 -2794.99607 5770.92167 -2795.35133 5771.27693 -2795.75643 5771.57628 -2796.20443 5771.81459 -2796.68767 5771.98779 -2797.19789 5772.0929 -2797.72634 5772.12814 -2798.264 5772.0929 -2798.80166 5771.98779 -2799.33011 5771.81459 -2799.84033 5771.57628 -2800.32357 5771.27693 -2800.77157 5770.92167 -2801.17667 5770.51657 -2801.53193 5770.06857 -2801.83128 5769.58533 -2802.06959 5769.07511 -2802.24279 5768.54666 -2802.3479 5768.009 -2802.38314 5767.47134 -2802.3479 5766.94289 -2802.24279 5766.43267 -2802.06959 5765.94943 -2801.83128 5765.50143 -2801.53193 5765.09633 -2801.17667 5764.74107 -2800.77157 5764.44172 -2800.32357 5764.20341 -2799.84033 5764.03021 -2799.33011 5763.9251 -2798.80166 5763.88986 -2798.264 5763.9251 -2797.72634 5764.03021 -2797.19789 5764.20341 -2796.68767 5764.44172 -2796.20443 5764.74107 -2795.75643 5765.09633 -2795.35133 5765.50143 -2794.99607 5765.94943 -2794.69672 5766.43267 -2794.45841 5766.94289 -2794.28521 5767.47134 -2794.1801 5768.009 -2794.14486 Z M 5778.009 -2804.14486 L 5778.54666 -2804.1801 5779.07511 -2804.28521 5779.58533 -2804.45841 5780.06857 -2804.69672 5780.51657 -2804.99607 5780.92167 -2805.35133 5781.27693 -2805.75643 5781.57628 -2806.20443 5781.81459 -2806.68767 5781.98779 -2807.19789 5782.0929 -2807.72634 5782.12814 -2808.264 5782.0929 -2808.80166 5781.98779 -2809.33011 5781.81459 -2809.84033 5781.57628 -2810.32357 5781.27693 -2810.77157 5780.92167 -2811.17667 5780.51657 -2811.53193 5780.06857 -2811.83128 5779.58533 -2812.06959 5779.07511 -2812.24279 5778.54666 -2812.3479 5778.009 -2812.38314 5777.47134 -2812.3479 5776.94289 -2812.24279 5776.43267 -2812.06959 5775.94943 -2811.83128 5775.50143 -2811.53193 5775.09633 -2811.17667 5774.74107 -2810.77157 5774.44172 -2810.32357 5774.20341 -2809.84033 5774.03021 -2809.33011 5773.9251 -2808.80166 5773.88986 -2808.264 5773.9251 -2807.72634 5774.03021 -2807.19789 5774.20341 -2806.68767 5774.44172 -2806.20443 5774.74107 -2805.75643 5775.09633 -2805.35133 5775.50143 -2804.99607 5775.94943 -2804.69672 5776.43267 -2804.45841 5776.94289 -2804.28521 5777.47134 -2804.1801 5778.009 -2804.14486 Z M 5768.009 -2804.14486 L 5768.54666 -2804.1801 5769.07511 -2804.28521 5769.58533 -2804.45841 5770.06857 -2804.69672 5770.51657 -2804.99607 5770.92167 -2805.35133 5771.27693 -2805.75643 5771.57628 -2806.20443 5771.81459 -2806.68767 5771.98779 -2807.19789 5772.0929 -2807.72634 5772.12814 -2808.264 5772.0929 -2808.80166 5771.98779 -2809.33011 5771.81459 -2809.84033 5771.57628 -2810.32357 5771.27693 -2810.77157 5770.92167 -2811.17667 5770.51657 -2811.53193 5770.06857 -2811.83128 5769.58533 -2812.06959 5769.07511 -2812.24279 5768.54666 -2812.3479 5768.009 -2812.38314 5767.47134 -2812.3479 5766.94289 -2812.24279 5766.43267 -2812.06959 5765.94943 -2811.83128 5765.50143 -2811.53193 5765.09633 -2811.17667 5764.74107 -2810.77157 5764.44172 -2810.32357 5764.20341 -2809.84033 5764.03021 -2809.33011 5763.9251 -2808.80166 5763.88986 -2808.264 5763.9251 -2807.72634 5764.03021 -2807.19789 5764.20341 -2806.68767 5764.44172 -2806.20443 5764.74107 -2805.75643 5765.09633 -2805.35133 5765.50143 -2804.99607 5765.94943 -2804.69672 5766.43267 -2804.45841 5766.94289 -2804.28521 5767.47134 -2804.1801 5768.009 -2804.14486 Z M 5777.47134 -2794.1801 L 5778.009 -2794.14486 5778.54666 -2794.1801 5779.07511 -2794.28521 5779.58533 -2794.45841 5780.06857 -2794.69672 5780.51657 -2794.99607 5780.92167 -2795.35133 5781.27693 -2795.75643 5781.57628 -2796.20443 5781.81459 -2796.68767 5781.98779 -2797.19789 5782.0929 -2797.72634 5782.12814 -2798.264 5782.0929 -2798.80166 5781.98779 -2799.33011 5781.81459 -2799.84033 5781.57628 -2800.32357 5781.27693 -2800.77157 5780.92167 -2801.17667 5780.51657 -2801.53193 5780.06857 -2801.83128 5779.58533 -2802.06959 5779.07511 -2802.24279 5778.54666 -2802.3479 5778.009 -2802.38314 5777.47134 -2802.3479 5776.94289 -2802.24279 5776.43267 -2802.06959 5775.94943 -2801.83128 5775.50143 -2801.53193 5775.09633 -2801.17667 5774.74107 -2800.77157 5774.44172 -2800.32357 5774.20341 -2799.84033 5774.03021 -2799.33011 5773.9251 -2798.80166 5773.88986 -2798.264 5773.9251 -2797.72634 5774.03021 -2797.19789 5774.20341 -2796.68767 5774.44172 -2796.20443 5774.74107 -2795.75643 5775.09633 -2795.35133 5775.50143 -2794.99607 5775.94943 -2794.69672 5776.43267 -2794.45841 5776.94289 -2794.28521 5777.47134 -2794.1801 Z M 5918.37041 -2747.25915 L 5918.56284 -2747.27429 5918.98724 -2747.34327 5919.17456 -2747.38985 5919.58184 -2747.52769 5919.75894 -2747.60444 5920.138 -2747.80738 5920.30007 -2747.91221 5920.6406 -2748.17474 5920.78322 -2748.30479 5921.07594 -2748.61974 5921.19523 -2748.77149 5921.43217 -2749.13029 5921.52488 -2749.29958 5921.69958 -2749.69246 5921.76319 -2749.8747 5921.87083 -2750.29071 5921.90387 -2750.48398 5921.94173 -2750.92645 5921.94202 -2751.12251 5921.90663 -2751.55077 5921.87492 -2751.74116 5921.76952 -2752.15801 5921.70692 -2752.3406 5921.5344 -2752.73445 5921.44263 -2752.90425 5921.20769 -2753.26436 5921.08924 -2753.41676 5920.79827 -2753.73333 5920.65637 -2753.86418 5920.3173 -2754.12858 5920.15582 -2754.23431 5919.77788 -2754.43935 5919.60121 -2754.51708 5919.1947 -2754.65718 5919.00765 -2754.7048 5918.58363 -2754.77613 5918.3913 -2754.79234 5917.96132 -2754.79297 5917.76894 -2754.77732 5917.34472 -2754.70723 5917.15753 -2754.66016 5916.75061 -2754.52125 5916.57371 -2754.44404 5916.19518 -2754.24011 5916.03338 -2754.13485 5915.69354 -2753.87144 5915.55126 -2753.74101 5915.25937 -2753.42529 5915.14048 -2753.27324 5914.90448 -2752.91382 5914.81221 -2752.74428 5914.63854 -2752.35094 5914.57541 -2752.16854 5914.46879 -2751.752 5914.43652 -2751.56169 5914.39985 -2751.13329 5914.39932 -2750.94027 5914.43361 -2750.51167 5914.46482 -2750.32119 5914.56913 -2749.90406 5914.63125 -2749.72131 5914.80274 -2749.32702 5914.89407 -2749.15697 5915.12807 -2748.79625 5915.24611 -2748.64353 5915.53625 -2748.32621 5915.67781 -2748.19499 5916.01618 -2747.9297 5916.17739 -2747.82355 5916.55479 -2747.61752 5916.73126 -2747.53932 5917.1374 -2747.39816 5917.32432 -2747.35005 5917.74815 -2747.27761 5917.94045 -2747.2609 5918.37041 -2747.25915 Z M 5918.47041 -2778.85915 L 5918.66284 -2778.87429 5919.08724 -2778.94327 5919.27456 -2778.98985 5919.68184 -2779.12769 5919.85894 -2779.20444 5920.238 -2779.40738 5920.40007 -2779.51221 5920.7406 -2779.77474 5920.88322 -2779.90479 5921.17594 -2780.21974 5921.29523 -2780.37149 5921.53217 -2780.73029 5921.62488 -2780.89958 5921.79958 -2781.29246 5921.86319 -2781.4747 5921.97083 -2781.89071 5922.00387 -2782.08398 5922.04173 -2782.52645 5922.04202 -2782.72251 5922.00663 -2783.15077 5921.97492 -2783.34116 5921.86952 -2783.75801 5921.80692 -2783.9406 5921.6344 -2784.33445 5921.54263 -2784.50425 5921.30769 -2784.86436 5921.18924 -2785.01676 5920.89827 -2785.33333 5920.75637 -2785.46418 5920.4173 -2785.72858 5920.25582 -2785.83431 5919.87788 -2786.03935 5919.70121 -2786.11708 5919.2947 -2786.25718 5919.10765 -2786.3048 5918.68363 -2786.37613 5918.4913 -2786.39234 5918.06132 -2786.39297 5917.86894 -2786.37732 5917.44472 -2786.30723 5917.25753 -2786.26016 5916.85061 -2786.12125 5916.67371 -2786.04404 5916.29518 -2785.84011 5916.13338 -2785.73485 5915.79354 -2785.47144 5915.65126 -2785.34101 5915.35937 -2785.02529 5915.24048 -2784.87324 5915.00448 -2784.51382 5914.91221 -2784.34428 5914.73854 -2783.95094 5914.67541 -2783.76854 5914.56879 -2783.352 5914.53652 -2783.16169 5914.49985 -2782.73329 5914.49932 -2782.54027 5914.53361 -2782.11167 5914.56482 -2781.92119 5914.66913 -2781.50406 5914.73125 -2781.32131 5914.90274 -2780.92702 5914.99407 -2780.75697 5915.22807 -2780.39625 5915.34611 -2780.24353 5915.63625 -2779.92621 5915.77781 -2779.79499 5916.11618 -2779.5297 5916.27739 -2779.42355 5916.65479 -2779.21752 5916.83126 -2779.13932 5917.2374 -2778.99816 5917.42432 -2778.95005 5917.84815 -2778.87761 5918.04045 -2778.8609 5918.47041 -2778.85915 Z M 5931.61852 -2538.56762 L 5931.74294 -2538.6307 5932.53905 -2539.11967 5933.29265 -2539.67191 5933.99873 -2540.28373 5934.6526 -2540.95107 5935.24989 -2541.66948 5935.78664 -2542.43419 5936.21198 -2543.15947 5934.68191 -2543.15947 5934.53277 -2543.18832 5934.40513 -2543.27069 5934.31742 -2543.39471 5934.15828 -2543.74677 5933.94001 -2544.06971 5933.6703 -2544.35112 5933.35691 -2544.5829 5933.00886 -2544.75839 5932.63616 -2544.87252 5932.24953 -2544.92203 5931.8601 -2544.90549 5931.47906 -2544.82337 5931.11739 -2544.67804 5930.78547 -2544.47367 5930.49287 -2544.21615 5930.248 -2543.91288 5930.0579 -2543.57259 5929.92805 -2543.20507 5929.86218 -2542.82089 5929.86218 -2542.43111 5929.92805 -2542.04693 5930.0579 -2541.67941 5930.248 -2541.33912 5930.49287 -2541.03585 5930.78547 -2540.77833 5931.11739 -2540.57396 5931.36767 -2540.47339 5931.49936 -2540.38707 5931.58753 -2540.25662 5931.61852 -2540.10224 5931.61852 -2538.56762 Z M 5490.71853 -2538.31762 L 5490.84294 -2538.3807 5491.63905 -2538.86967 5492.39265 -2539.42191 5493.09873 -2540.03373 5493.7526 -2540.70107 5494.34989 -2541.41948 5494.88664 -2542.18419 5495.31198 -2542.90947 5493.78191 -2542.90947 5493.63277 -2542.93832 5493.50513 -2543.02069 5493.41742 -2543.14471 5493.25828 -2543.49677 5493.04001 -2543.81971 5492.7703 -2544.10112 5492.45691 -2544.3329 5492.10886 -2544.50839 5491.73616 -2544.62252 5491.34953 -2544.67203 5490.9601 -2544.65549 5490.57906 -2544.57337 5490.21739 -2544.42804 5489.88547 -2544.22367 5489.59287 -2543.96615 5489.348 -2543.66288 5489.1579 -2543.32259 5489.02805 -2542.95507 5488.96218 -2542.57089 5488.96218 -2542.18111 5489.02805 -2541.79693 5489.1579 -2541.42941 5489.348 -2541.08912 5489.59287 -2540.78585 5489.88547 -2540.52833 5490.21739 -2540.32396 5490.46767 -2540.22339 5490.59936 -2540.13707 5490.68753 -2540.00662 5490.71853 -2539.85224 5490.71853 -2538.31762 Z M 5490.16853 -2801.86762 L 5490.29294 -2801.9307 5491.08905 -2802.41967 5491.84265 -2802.97191 5492.54873 -2803.58373 5493.2026 -2804.25107 5493.79989 -2804.96948 5494.33664 -2805.73419 5494.76198 -2806.45947 5493.23191 -2806.45947 5493.08277 -2806.48832 5492.95513 -2806.57069 5492.86742 -2806.69471 5492.70828 -2807.04677 5492.49001 -2807.36971 5492.2203 -2807.65112 5491.90691 -2807.8829 5491.55886 -2808.05839 5491.18616 -2808.17252 5490.79953 -2808.22203 5490.4101 -2808.20549 5490.02906 -2808.12337 5489.66739 -2807.97804 5489.33547 -2807.77367 5489.04287 -2807.51615 5488.798 -2807.21288 5488.6079 -2806.87259 5488.47805 -2806.50507 5488.41218 -2806.12089 5488.41218 -2805.73111 5488.47805 -2805.34693 5488.6079 -2804.97941 5488.798 -2804.63912 5489.04287 -2804.33585 5489.33547 -2804.07833 5489.66739 -2803.87396 5489.91767 -2803.77339 5490.04936 -2803.68707 5490.13753 -2803.55662 5490.16853 -2803.40224 5490.16853 -2801.86762 Z M 5931.46853 -2802.76762 L 5931.59294 -2802.8307 5932.38905 -2803.31967 5933.14265 -2803.87191 5933.84873 -2804.48373 5934.5026 -2805.15107 5935.09989 -2805.86948 5935.63664 -2806.63419 5936.06198 -2807.35947 5934.53191 -2807.35947 5934.38277 -2807.38832 5934.25513 -2807.47069 5934.16742 -2807.59471 5934.00828 -2807.94677 5933.79001 -2808.26971 5933.5203 -2808.55112 5933.20691 -2808.7829 5932.85886 -2808.95839 5932.48616 -2809.07252 5932.09953 -2809.12203 5931.7101 -2809.10549 5931.32906 -2809.02337 5930.96739 -2808.87804 5930.63547 -2808.67367 5930.34287 -2808.41615 5930.098 -2808.11288 5929.9079 -2807.77259 5929.77805 -2807.40507 5929.71218 -2807.02089 5929.71218 -2806.63111 5929.77805 -2806.24693 5929.9079 -2805.87941 5930.098 -2805.53912 5930.34287 -2805.23585 5930.63547 -2804.97833 5930.96739 -2804.77396 5931.21767 -2804.67339 5931.34936 -2804.58707 5931.43753 -2804.45662 5931.46853 -2804.30224 5931.46853 -2802.76762 Z M 5920.53548 -2802.60553 L 5920.53548 -2804.46032 5920.56225 -2804.6042 5920.63898 -2804.72882 5920.75539 -2804.81749 5920.95691 -2804.9191 5921.2703 -2805.15088 5921.54001 -2805.43229 5921.75828 -2805.75523 5921.91883 -2806.11041 5922.01705 -2806.48762 5922.0501 -2806.876 5922.01705 -2807.26438 5921.91883 -2807.64159 5921.75828 -2807.99677 5921.54001 -2808.31971 5921.2703 -2808.60112 5920.95691 -2808.8329 5920.60886 -2809.00839 5920.23616 -2809.12252 5919.84953 -2809.17203 5919.4601 -2809.15549 5919.07906 -2809.07337 5918.71739 -2808.92804 5918.38547 -2808.72367 5918.09287 -2808.46615 5917.848 -2808.16288 5917.6579 -2807.82259 5917.58852 -2807.62622 5917.50404 -2807.48681 5917.37095 -2807.39269 5917.21137 -2807.35947 5915.9485 -2807.35947 5916.12282 -2807.03233 5916.62793 -2806.24636 5917.19543 -2805.50418 5917.23979 -2805.45505 5917.76511 -2805.45505 5917.93757 -2805.41596 5918.38547 -2805.02833 5918.71739 -2804.82396 5919.07906 -2804.67863 5919.2445 -2804.6196 5919.34599 -2804.53028 5919.41193 -2804.41225 5919.43477 -2804.27899 5919.43477 -2802.60553 5920.53548 -2802.60553 Z M 5479.23548 -2801.87202 L 5479.23548 -2803.56032 5479.26225 -2803.7042 5479.33898 -2803.82882 5479.45539 -2803.91749 5479.65691 -2804.0191 5479.9703 -2804.25088 5480.24001 -2804.53229 5480.45828 -2804.85523 5480.61883 -2805.21041 5480.71705 -2805.58762 5480.7501 -2805.976 5480.71705 -2806.36438 5480.61883 -2806.74159 5480.45828 -2807.09677 5480.24001 -2807.41971 5479.9703 -2807.70112 5479.65691 -2807.9329 5479.30886 -2808.10839 5478.93616 -2808.22252 5478.54953 -2808.27203 5478.1601 -2808.25549 5477.77906 -2808.17337 5477.41739 -2808.02804 5477.08547 -2807.82367 5476.79287 -2807.56615 5476.548 -2807.26288 5476.3579 -2806.92259 5476.28852 -2806.72622 5476.20404 -2806.58681 5476.07095 -2806.49269 5475.91137 -2806.45947 5474.6485 -2806.45947 5474.82282 -2806.13233 5475.32793 -2805.34636 5475.89543 -2804.60418 5476.52153 -2803.91073 5477.20207 -2803.27061 5477.93252 -2802.6881 5478.70801 -2802.16706 5479.23548 -2801.87202 Z M 5920.68548 -2538.57202 L 5920.68548 -2540.26032 5920.71225 -2540.4042 5920.78898 -2540.52882 5920.90539 -2540.61749 5921.10691 -2540.7191 5921.4203 -2540.95088 5921.69001 -2541.23229 5921.90828 -2541.55523 5922.06883 -2541.91041 5922.16705 -2542.28762 5922.2001 -2542.676 5922.16705 -2543.06438 5922.06883 -2543.44159 5921.90828 -2543.79677 5921.69001 -2544.11971 5921.4203 -2544.40112 5921.10691 -2544.6329 5920.75886 -2544.80839 5920.38616 -2544.92252 5919.99953 -2544.97203 5919.6101 -2544.95549 5919.22906 -2544.87337 5918.86739 -2544.72804 5918.53547 -2544.52367 5918.24287 -2544.26615 5917.998 -2543.96288 5917.8079 -2543.62259 5917.73852 -2543.42622 5917.65404 -2543.28681 5917.52095 -2543.19269 5917.36137 -2543.15947 5916.0985 -2543.15947 5916.27282 -2542.83233 5916.77793 -2542.04636 5917.34543 -2541.30418 5917.97153 -2540.61073 5918.65207 -2539.97061 5919.38252 -2539.3881 5920.15801 -2538.86706 5920.68548 -2538.57202 Z M 5479.78548 -2538.32202 L 5479.78548 -2540.01032 5479.81225 -2540.1542 5479.88898 -2540.27882 5480.00539 -2540.36749 5480.20691 -2540.4691 5480.5203 -2540.70088 5480.79001 -2540.98229 5481.00828 -2541.30523 5481.16883 -2541.66041 5481.26705 -2542.03762 5481.3001 -2542.426 5481.26705 -2542.81438 5481.16883 -2543.19159 5481.00828 -2543.54677 5480.79001 -2543.86971 5480.5203 -2544.15112 5480.20691 -2544.3829 5479.85886 -2544.55839 5479.48616 -2544.67252 5479.09953 -2544.72203 5478.7101 -2544.70549 5478.32906 -2544.62337 5477.96739 -2544.47804 5477.63547 -2544.27367 5477.34287 -2544.01615 5477.098 -2543.71288 5476.9079 -2543.37259 5476.83852 -2543.17622 5476.75404 -2543.03681 5476.62095 -2542.94269 5476.46137 -2542.90947 5475.1985 -2542.90947 5475.37282 -2542.58233 5475.87793 -2541.79636 5476.44543 -2541.05418 5477.07153 -2540.36073 5477.75207 -2539.72061 5478.48252 -2539.1381 5479.25801 -2538.61706 5479.78548 -2538.32202 Z M 5491.39953 -2552.27997 L 5491.78616 -2552.32948 5492.15886 -2552.44361 5492.50691 -2552.6191 5492.8203 -2552.85088 5493.09001 -2553.13229 5493.30828 -2553.45523 5493.37701 -2553.60729 5493.46473 -2553.73131 5493.59236 -2553.81368 5493.7415 -2553.84253 5495.31198 -2553.84253 5494.88664 -2554.56781 5494.34989 -2555.33252 5493.7526 -2556.05093 5493.09873 -2556.71827 5492.39265 -2557.33009 5491.63905 -2557.88233 5490.84294 -2558.3713 5490.71853 -2558.43438 5490.71853 -2557.07967 5490.68753 -2556.92529 5490.59936 -2556.79484 5490.46767 -2556.70852 5490.26739 -2556.62804 5489.93547 -2556.42367 5489.64287 -2556.16615 5489.398 -2555.86288 5489.2079 -2555.52259 5489.07805 -2555.15507 5489.01218 -2554.77089 5489.01218 -2554.38111 5489.07805 -2553.99693 5489.2079 -2553.62941 5489.398 -2553.28912 5489.64287 -2552.98585 5489.93547 -2552.72833 5490.26739 -2552.52396 5490.62906 -2552.37863 5491.0101 -2552.29651 5491.39953 -2552.27997 Z M 5932.14953 -2816.72997 L 5932.53616 -2816.77948 5932.90886 -2816.89361 5933.25691 -2817.0691 5933.5703 -2817.30088 5933.84001 -2817.58229 5934.05828 -2817.90523 5934.12701 -2818.05729 5934.21473 -2818.18131 5934.34236 -2818.26368 5934.4915 -2818.29253 5936.06198 -2818.29253 5935.63664 -2819.01781 5935.09989 -2819.78252 5934.5026 -2820.50093 5933.84873 -2821.16827 5933.14265 -2821.78009 5932.38905 -2822.33233 5931.59294 -2822.8213 5931.46853 -2822.88438 5931.46853 -2821.52967 5931.43753 -2821.37529 5931.34936 -2821.24484 5931.21767 -2821.15852 5931.01739 -2821.07804 5930.68547 -2820.87367 5930.39287 -2820.61615 5930.148 -2820.31288 5929.9579 -2819.97259 5929.82805 -2819.60507 5929.76218 -2819.22089 5929.76218 -2818.83111 5929.82805 -2818.44693 5929.9579 -2818.07941 5930.148 -2817.73912 5930.39287 -2817.43585 5930.68547 -2817.17833 5931.01739 -2816.97396 5931.37906 -2816.82863 5931.7601 -2816.74651 5932.14953 -2816.72997 Z M 5932.29953 -2552.52997 L 5932.68616 -2552.57948 5933.05886 -2552.69361 5933.40691 -2552.8691 5933.7203 -2553.10088 5933.99001 -2553.38229 5934.20828 -2553.70523 5934.27701 -2553.85729 5934.36473 -2553.98131 5934.49236 -2554.06368 5934.6415 -2554.09253 5936.21198 -2554.09253 5935.78664 -2554.81781 5935.24989 -2555.58252 5934.6526 -2556.30093 5933.99873 -2556.96827 5933.29265 -2557.58009 5932.53905 -2558.13233 5931.74294 -2558.6213 5931.61852 -2558.68438 5931.61852 -2557.32967 5931.58753 -2557.17529 5931.49936 -2557.04484 5931.36767 -2556.95852 5931.16739 -2556.87804 5930.83547 -2556.67367 5930.54287 -2556.41615 5930.298 -2556.11288 5930.1079 -2555.77259 5929.97805 -2555.40507 5929.91218 -2555.02089 5929.91218 -2554.63111 5929.97805 -2554.24693 5930.1079 -2553.87941 5930.298 -2553.53912 5930.54287 -2553.23585 5930.83547 -2552.97833 5931.16739 -2552.77396 5931.52906 -2552.62863 5931.9101 -2552.54651 5932.29953 -2552.52997 Z M 5490.84953 -2815.82997 L 5491.23616 -2815.87948 5491.60886 -2815.99361 5491.95691 -2816.1691 5492.2703 -2816.40088 5492.54001 -2816.68229 5492.75828 -2817.00523 5492.82701 -2817.15729 5492.91473 -2817.28131 5493.04236 -2817.36368 5493.1915 -2817.39253 5494.76198 -2817.39253 5494.33664 -2818.11781 5493.79989 -2818.88252 5493.2026 -2819.60093 5492.54873 -2820.26827 5491.84265 -2820.88009 5491.08905 -2821.43233 5490.29294 -2821.9213 5490.16853 -2821.98438 5490.16853 -2820.62967 5490.13753 -2820.47529 5490.04936 -2820.34484 5489.91767 -2820.25852 5489.71739 -2820.17804 5489.38547 -2819.97367 5489.09287 -2819.71615 5488.848 -2819.41288 5488.6579 -2819.07259 5488.52805 -2818.70507 5488.46218 -2818.32089 5488.46218 -2817.93111 5488.52805 -2817.54693 5488.6579 -2817.17941 5488.848 -2816.83912 5489.09287 -2816.53585 5489.38547 -2816.27833 5489.71739 -2816.07396 5490.07906 -2815.92863 5490.4601 -2815.84651 5490.84953 -2815.82997 Z M 5479.09953 -2552.32997 L 5479.48616 -2552.37948 5479.85886 -2552.49361 5480.20691 -2552.6691 5480.5203 -2552.90088 5480.79001 -2553.18229 5481.00828 -2553.50523 5481.16883 -2553.86041 5481.26705 -2554.23762 5481.3001 -2554.626 5481.26705 -2555.01438 5481.16883 -2555.39159 5481.00828 -2555.74677 5480.79001 -2556.06971 5480.5203 -2556.35112 5480.20691 -2556.5829 5480.00539 -2556.68451 5479.88898 -2556.77318 5479.81225 -2556.8978 5479.78548 -2557.04168 5479.78548 -2558.42998 5479.25801 -2558.13494 5478.48252 -2557.6139 5477.75207 -2557.03139 5477.07153 -2556.39127 5476.44543 -2555.69782 5475.87793 -2554.95564 5475.37282 -2554.16967 5475.1985 -2553.84253 5476.58205 -2553.84253 5476.72063 -2553.81775 5476.84204 -2553.7465 5476.93126 -2553.6376 5477.098 -2553.33912 5477.34287 -2553.03585 5477.63547 -2552.77833 5477.96739 -2552.57396 5478.32906 -2552.42863 5478.7101 -2552.34651 5479.09953 -2552.32997 Z M 5478.54953 -2815.87997 L 5478.93616 -2815.92948 5479.30886 -2816.04361 5479.65691 -2816.2191 5479.9703 -2816.45088 5480.24001 -2816.73229 5480.45828 -2817.05523 5480.61883 -2817.41041 5480.71705 -2817.78762 5480.7501 -2818.176 5480.71705 -2818.56438 5480.61883 -2818.94159 5480.45828 -2819.29677 5480.24001 -2819.61971 5479.9703 -2819.90112 5479.65691 -2820.1329 5479.45539 -2820.23451 5479.33898 -2820.32318 5479.26225 -2820.4478 5479.23548 -2820.59168 5479.23548 -2821.97998 5478.70801 -2821.68494 5477.93252 -2821.1639 5477.20207 -2820.58139 5476.52153 -2819.94127 5475.89543 -2819.24782 5475.32793 -2818.50564 5474.82282 -2817.71967 5474.6485 -2817.39253 5476.03205 -2817.39253 5476.17063 -2817.36775 5476.29204 -2817.2965 5476.38126 -2817.1876 5476.548 -2816.88912 5476.79287 -2816.58585 5477.08547 -2816.32833 5477.41739 -2816.12396 5477.77906 -2815.97863 5478.1601 -2815.89651 5478.54953 -2815.87997 Z M 5919.99953 -2552.57997 L 5920.38616 -2552.62948 5920.75886 -2552.74361 5921.10691 -2552.9191 5921.4203 -2553.15088 5921.69001 -2553.43229 5921.90828 -2553.75523 5922.06883 -2554.11041 5922.16705 -2554.48762 5922.2001 -2554.876 5922.16705 -2555.26438 5922.06883 -2555.64159 5921.90828 -2555.99677 5921.69001 -2556.31971 5921.4203 -2556.60112 5921.10691 -2556.8329 5920.90539 -2556.93451 5920.78898 -2557.02318 5920.71225 -2557.1478 5920.68548 -2557.29168 5920.68548 -2558.67998 5920.15801 -2558.38494 5919.38252 -2557.8639 5918.65207 -2557.28139 5917.97153 -2556.64127 5917.34543 -2555.94782 5916.77793 -2555.20564 5916.27282 -2554.41967 5916.0985 -2554.09253 5917.48205 -2554.09253 5917.62063 -2554.06775 5917.74204 -2553.9965 5917.83126 -2553.8876 5917.998 -2553.58912 5918.24287 -2553.28585 5918.53547 -2553.02833 5918.86739 -2552.82396 5919.22906 -2552.67863 5919.6101 -2552.59651 5919.99953 -2552.57997 Z M 5919.84953 -2816.77997 L 5920.23616 -2816.82948 5920.60886 -2816.94361 5920.95691 -2817.1191 5921.2703 -2817.35088 5921.54001 -2817.63229 5921.75828 -2817.95523 5921.91883 -2818.31041 5922.01705 -2818.68762 5922.0501 -2819.076 5922.01705 -2819.46438 5921.91883 -2819.84159 5921.75828 -2820.19677 5921.54001 -2820.51971 5921.2703 -2820.80112 5920.95691 -2821.0329 5920.75539 -2821.13451 5920.63898 -2821.22318 5920.56225 -2821.3478 5920.53548 -2821.49168 5920.53548 -2822.87998 5920.00801 -2822.58494 5919.23252 -2822.0639 5918.50207 -2821.48139 5917.82153 -2820.84127 5917.19543 -2820.14782 5916.62793 -2819.40564 5916.12282 -2818.61967 5915.9485 -2818.29253 5917.33205 -2818.29253 5917.47063 -2818.26775 5917.59204 -2818.1965 5917.68126 -2818.0876 5917.848 -2817.78912 5918.09287 -2817.48585 5918.38547 -2817.22833 5918.71739 -2817.02396 5919.07906 -2816.87863 5919.4601 -2816.79651 5919.84953 -2816.77997 Z M 5521.52442 -2544.64787 L 5521.97876 -2544.70032 5522.41977 -2544.82151 5522.8371 -2545.0086 5523.22099 -2545.2572 5523.56243 -2545.56149 5523.85342 -2545.91434 5524.08714 -2546.30747 5524.2581 -2546.73166 5524.36231 -2547.17699 5524.39732 -2547.633 5524.36231 -2548.08901 5524.2581 -2548.53434 5524.08714 -2548.95853 5523.85342 -2549.35166 5523.56243 -2549.70451 5523.22099 -2550.0088 5522.8371 -2550.2574 5522.41977 -2550.44449 5521.97876 -2550.56568 5521.52442 -2550.61813 5521.0674 -2550.60061 5520.61841 -2550.51354 5520.18798 -2550.35894 5519.78619 -2550.14046 5519.42246 -2549.8632 5519.10531 -2549.53366 5518.84219 -2549.15958 5518.63925 -2548.74971 5518.50126 -2548.31367 5518.43144 -2547.86168 5518.43144 -2547.40432 5518.50126 -2546.95233 5518.63925 -2546.51629 5518.84219 -2546.10642 5519.10531 -2545.73234 5519.42246 -2545.4028 5519.78619 -2545.12554 5520.18798 -2544.90706 5520.61841 -2544.75246 5521.0674 -2544.66539 5521.52442 -2544.64787 Z M 5506.98242 -2809.25587 L 5507.43676 -2809.30832 5507.87777 -2809.42951 5508.2951 -2809.6166 5508.67899 -2809.8652 5509.02043 -2810.16949 5509.31142 -2810.52234 5509.54514 -2810.91547 5509.7161 -2811.33966 5509.82031 -2811.78499 5509.85532 -2812.241 5509.82031 -2812.69701 5509.7161 -2813.14234 5509.54514 -2813.56653 5509.31142 -2813.95966 5509.02043 -2814.31251 5508.67899 -2814.6168 5508.2951 -2814.8654 5507.87777 -2815.05249 5507.43676 -2815.17368 5506.98242 -2815.22613 5506.5254 -2815.20861 5506.07641 -2815.12154 5505.64598 -2814.96694 5505.24419 -2814.74846 5504.88046 -2814.4712 5504.56331 -2814.14166 5504.30019 -2813.76758 5504.09725 -2813.35771 5503.95926 -2812.92167 5503.88944 -2812.46968 5503.88944 -2812.01232 5503.95926 -2811.56033 5504.09725 -2811.12429 5504.30019 -2810.71442 5504.56331 -2810.34034 5504.88046 -2810.0108 5505.24419 -2809.73354 5505.64598 -2809.51506 5506.07641 -2809.36046 5506.5254 -2809.27339 5506.98242 -2809.25587 Z M 5900.73642 -2559.13287 L 5901.19076 -2559.18532 5901.63177 -2559.30651 5902.0491 -2559.4936 5902.43299 -2559.7422 5902.77443 -2560.04649 5903.06542 -2560.39934 5903.29914 -2560.79247 5903.4701 -2561.21666 5903.57431 -2561.66199 5903.60932 -2562.118 5903.57431 -2562.57401 5903.4701 -2563.01934 5903.29914 -2563.44353 5903.06542 -2563.83666 5902.77443 -2564.18951 5902.43299 -2564.4938 5902.0491 -2564.7424 5901.63177 -2564.92949 5901.19076 -2565.05068 5900.73642 -2565.10313 5900.2794 -2565.08561 5899.83041 -2564.99854 5899.39998 -2564.84394 5898.99819 -2564.62546 5898.63446 -2564.3482 5898.31731 -2564.01866 5898.05419 -2563.64458 5897.85125 -2563.23471 5897.71326 -2562.79867 5897.64344 -2562.34668 5897.64344 -2561.88932 5897.71326 -2561.43733 5897.85125 -2561.00129 5898.05419 -2560.59142 5898.31731 -2560.21734 5898.63446 -2559.8878 5898.99819 -2559.61054 5899.39998 -2559.39206 5899.83041 -2559.23746 5900.2794 -2559.15039 5900.73642 -2559.13287 Z M 5903.55742 -2800.70587 L 5904.01176 -2800.75832 5904.45277 -2800.87951 5904.8701 -2801.0666 5905.25399 -2801.3152 5905.59543 -2801.61949 5905.88642 -2801.97234 5906.12014 -2802.36547 5906.2911 -2802.78966 5906.39531 -2803.23499 5906.43032 -2803.691 5906.39531 -2804.14701 5906.2911 -2804.59234 5906.12014 -2805.01653 5905.88642 -2805.40966 5905.59543 -2805.76251 5905.25399 -2806.0668 5904.8701 -2806.3154 5904.45277 -2806.50249 5904.01176 -2806.62368 5903.55742 -2806.67613 5903.1004 -2806.65861 5902.65141 -2806.57154 5902.22098 -2806.41694 5901.81919 -2806.19846 5901.45546 -2805.9212 5901.13831 -2805.59166 5900.87519 -2805.21758 5900.67225 -2804.80771 5900.53426 -2804.37167 5900.46444 -2803.91968 5900.46444 -2803.46232 5900.53426 -2803.01033 5900.67225 -2802.57429 5900.87519 -2802.16442 5901.13831 -2801.79034 5901.45546 -2801.4608 5901.81919 -2801.18354 5902.22098 -2800.96506 5902.65141 -2800.81046 5903.1004 -2800.72339 5903.55742 -2800.70587 Z M 5934.3601 -2546.39651 L 5934.74953 -2546.37997 5935.13616 -2546.42948 5935.50886 -2546.54361 5935.85691 -2546.7191 5936.1703 -2546.95088 5936.44001 -2547.23229 5936.65828 -2547.55523 5936.81883 -2547.91041 5936.91705 -2548.28762 5936.9501 -2548.676 5936.91705 -2549.06438 5936.81883 -2549.44159 5936.65828 -2549.79677 5936.44001 -2550.11971 5936.1703 -2550.40112 5935.85691 -2550.6329 5935.50886 -2550.80839 5935.13616 -2550.92252 5934.74953 -2550.97203 5934.3601 -2550.95549 5933.97906 -2550.87337 5933.61739 -2550.72804 5933.28547 -2550.52367 5932.99287 -2550.26615 5932.748 -2549.96288 5932.5579 -2549.62259 5932.42805 -2549.25507 5932.36218 -2548.87089 5932.36218 -2548.48111 5932.42805 -2548.09693 5932.5579 -2547.72941 5932.748 -2547.38912 5932.99287 -2547.08585 5933.28547 -2546.82833 5933.61739 -2546.62396 5933.97906 -2546.47863 5934.3601 -2546.39651 Z M 5493.29953 -2809.67997 L 5493.68616 -2809.72948 5494.05886 -2809.84361 5494.40691 -2810.0191 5494.7203 -2810.25088 5494.99001 -2810.53229 5495.20828 -2810.85523 5495.36883 -2811.21041 5495.46705 -2811.58762 5495.5001 -2811.976 5495.46705 -2812.36438 5495.36883 -2812.74159 5495.20828 -2813.09677 5494.99001 -2813.41971 5494.7203 -2813.70112 5494.40691 -2813.9329 5494.05886 -2814.10839 5493.68616 -2814.22252 5493.29953 -2814.27203 5492.9101 -2814.25549 5492.52906 -2814.17337 5492.16739 -2814.02804 5491.83547 -2813.82367 5491.54287 -2813.56615 5491.298 -2813.26288 5491.1079 -2812.92259 5490.97805 -2812.55507 5490.91218 -2812.17089 5490.91218 -2811.78111 5490.97805 -2811.39693 5491.1079 -2811.02941 5491.298 -2810.68912 5491.54287 -2810.38585 5491.83547 -2810.12833 5492.16739 -2809.92396 5492.52906 -2809.77863 5492.9101 -2809.69651 5493.29953 -2809.67997 Z M 5917.19953 -2546.17997 L 5917.58616 -2546.22948 5917.95886 -2546.34361 5918.30691 -2546.5191 5918.6203 -2546.75088 5918.89001 -2547.03229 5919.10828 -2547.35523 5919.26883 -2547.71041 5919.36705 -2548.08762 5919.4001 -2548.476 5919.36705 -2548.86438 5919.26883 -2549.24159 5919.10828 -2549.59677 5918.89001 -2549.91971 5918.6203 -2550.20112 5918.30691 -2550.4329 5917.95886 -2550.60839 5917.58616 -2550.72252 5917.19953 -2550.77203 5916.8101 -2550.75549 5916.42906 -2550.67337 5916.06739 -2550.52804 5915.73547 -2550.32367 5915.44287 -2550.06615 5915.198 -2549.76288 5915.0079 -2549.42259 5914.87805 -2549.05507 5914.81218 -2548.67089 5914.81218 -2548.28111 5914.87805 -2547.89693 5915.0079 -2547.52941 5915.198 -2547.18912 5915.44287 -2546.88585 5915.73547 -2546.62833 5916.06739 -2546.42396 5916.42906 -2546.27863 5916.8101 -2546.19651 5917.19953 -2546.17997 Z M 5917.04953 -2810.37997 L 5917.43616 -2810.42948 5917.80886 -2810.54361 5918.15691 -2810.7191 5918.4703 -2810.95088 5918.74001 -2811.23229 5918.95828 -2811.55523 5919.11883 -2811.91041 5919.21705 -2812.28762 5919.2501 -2812.676 5919.21705 -2813.06438 5919.11883 -2813.44159 5918.95828 -2813.79677 5918.74001 -2814.11971 5918.4703 -2814.40112 5918.15691 -2814.6329 5917.80886 -2814.80839 5917.43616 -2814.92252 5917.04953 -2814.97203 5916.6601 -2814.95549 5916.27906 -2814.87337 5915.91739 -2814.72804 5915.58547 -2814.52367 5915.29287 -2814.26615 5915.048 -2813.96288 5914.8579 -2813.62259 5914.72805 -2813.25507 5914.66218 -2812.87089 5914.66218 -2812.48111 5914.72805 -2812.09693 5914.8579 -2811.72941 5915.048 -2811.38912 5915.29287 -2811.08585 5915.58547 -2810.82833 5915.91739 -2810.62396 5916.27906 -2810.47863 5916.6601 -2810.39651 5917.04953 -2810.37997 Z M 5493.4601 -2546.14651 L 5493.84953 -2546.12997 5494.23616 -2546.17948 5494.60886 -2546.29361 5494.95691 -2546.4691 5495.2703 -2546.70088 5495.54001 -2546.98229 5495.75828 -2547.30523 5495.91883 -2547.66041 5496.01705 -2548.03762 5496.0501 -2548.426 5496.01705 -2548.81438 5495.91883 -2549.19159 5495.75828 -2549.54677 5495.54001 -2549.86971 5495.2703 -2550.15112 5494.95691 -2550.3829 5494.60886 -2550.55839 5494.23616 -2550.67252 5493.84953 -2550.72203 5493.4601 -2550.70549 5493.07906 -2550.62337 5492.71739 -2550.47804 5492.38547 -2550.27367 5492.09287 -2550.01615 5491.848 -2549.71288 5491.6579 -2549.37259 5491.52805 -2549.00507 5491.46218 -2548.62089 5491.46218 -2548.23111 5491.52805 -2547.84693 5491.6579 -2547.47941 5491.848 -2547.13912 5492.09287 -2546.83585 5492.38547 -2546.57833 5492.71739 -2546.37396 5493.07906 -2546.22863 5493.4601 -2546.14651 Z M 5934.59953 -2810.57997 L 5934.98616 -2810.62948 5935.35886 -2810.74361 5935.70691 -2810.9191 5936.0203 -2811.15088 5936.29001 -2811.43229 5936.50828 -2811.75523 5936.66883 -2812.11041 5936.76705 -2812.48762 5936.8001 -2812.876 5936.76705 -2813.26438 5936.66883 -2813.64159 5936.50828 -2813.99677 5936.29001 -2814.31971 5936.0203 -2814.60112 5935.70691 -2814.8329 5935.35886 -2815.00839 5934.98616 -2815.12252 5934.59953 -2815.17203 5934.2101 -2815.15549 5933.82906 -2815.07337 5933.46739 -2814.92804 5933.13547 -2814.72367 5932.84287 -2814.46615 5932.598 -2814.16288 5932.4079 -2813.82259 5932.27805 -2813.45507 5932.21218 -2813.07089 5932.21218 -2812.68111 5932.27805 -2812.29693 5932.4079 -2811.92941 5932.598 -2811.58912 5932.84287 -2811.28585 5933.13547 -2811.02833 5933.46739 -2810.82396 5933.82906 -2810.67863 5934.2101 -2810.59651 5934.59953 -2810.57997 Z M 5476.29953 -2545.92997 L 5476.68616 -2545.97948 5477.05886 -2546.09361 5477.40691 -2546.2691 5477.7203 -2546.50088 5477.99001 -2546.78229 5478.20828 -2547.10523 5478.36883 -2547.46041 5478.46705 -2547.83762 5478.5001 -2548.226 5478.46705 -2548.61438 5478.36883 -2548.99159 5478.20828 -2549.34677 5477.99001 -2549.66971 5477.7203 -2549.95112 5477.40691 -2550.1829 5477.05886 -2550.35839 5476.68616 -2550.47252 5476.29953 -2550.52203 5475.9101 -2550.50549 5475.52906 -2550.42337 5475.16739 -2550.27804 5474.83547 -2550.07367 5474.54287 -2549.81615 5474.298 -2549.51288 5474.1079 -2549.17259 5473.97805 -2548.80507 5473.91218 -2548.42089 5473.91218 -2548.03111 5473.97805 -2547.64693 5474.1079 -2547.27941 5474.298 -2546.93912 5474.54287 -2546.63585 5474.83547 -2546.37833 5475.16739 -2546.17396 5475.52906 -2546.02863 5475.9101 -2545.94651 5476.29953 -2545.92997 Z M 5484.64953 -2801.07997 L 5485.03616 -2801.12948 5485.40886 -2801.24361 5485.75691 -2801.4191 5486.0703 -2801.65088 5486.34001 -2801.93229 5486.55828 -2802.25523 5486.71883 -2802.61041 5486.81705 -2802.98762 5486.8501 -2803.376 5486.81705 -2803.76438 5486.71883 -2804.14159 5486.55828 -2804.49677 5486.34001 -2804.81971 5486.0703 -2805.10112 5485.75691 -2805.3329 5485.40886 -2805.50839 5485.03616 -2805.62252 5484.64953 -2805.67203 5484.2601 -2805.65549 5483.87906 -2805.57337 5483.51739 -2805.42804 5483.18547 -2805.22367 5482.89287 -2804.96615 5482.648 -2804.66288 5482.4579 -2804.32259 5482.32805 -2803.95507 5482.26218 -2803.57089 5482.26218 -2803.18111 5482.32805 -2802.79693 5482.4579 -2802.42941 5482.648 -2802.08912 5482.89287 -2801.78585 5483.18547 -2801.52833 5483.51739 -2801.32396 5483.87906 -2801.17863 5484.2601 -2801.09651 5484.64953 -2801.07997 Z M 5926.09953 -2537.77997 L 5926.48616 -2537.82948 5926.85886 -2537.94361 5927.20691 -2538.1191 5927.5203 -2538.35088 5927.79001 -2538.63229 5928.00828 -2538.95523 5928.16883 -2539.31041 5928.26705 -2539.68762 5928.3001 -2540.076 5928.26705 -2540.46438 5928.16883 -2540.84159 5928.00828 -2541.19677 5927.79001 -2541.51971 5927.5203 -2541.80112 5927.20691 -2542.0329 5926.85886 -2542.20839 5926.48616 -2542.32252 5926.09953 -2542.37203 5925.7101 -2542.35549 5925.32906 -2542.27337 5924.96739 -2542.12804 5924.63547 -2541.92367 5924.34287 -2541.66615 5924.098 -2541.36288 5923.9079 -2541.02259 5923.77805 -2540.65507 5923.71218 -2540.27089 5923.71218 -2539.88111 5923.77805 -2539.49693 5923.9079 -2539.12941 5924.098 -2538.78912 5924.34287 -2538.48585 5924.63547 -2538.22833 5924.96739 -2538.02396 5925.32906 -2537.87863 5925.7101 -2537.79651 5926.09953 -2537.77997 Z M 5925.94953 -2801.97997 L 5926.33616 -2802.02948 5926.70886 -2802.14361 5927.05691 -2802.3191 5927.3703 -2802.55088 5927.64001 -2802.83229 5927.85828 -2803.15523 5928.01883 -2803.51041 5928.11705 -2803.88762 5928.1501 -2804.276 5928.11705 -2804.66438 5928.01883 -2805.04159 5927.85828 -2805.39677 5927.64001 -2805.71971 5927.3703 -2806.00112 5927.05691 -2806.2329 5926.70886 -2806.40839 5926.33616 -2806.52252 5925.94953 -2806.57203 5925.5601 -2806.55549 5925.17906 -2806.47337 5924.81739 -2806.32804 5924.48547 -2806.12367 5924.19287 -2805.86615 5923.948 -2805.56288 5923.7579 -2805.22259 5923.62805 -2804.85507 5923.56218 -2804.47089 5923.56218 -2804.08111 5923.62805 -2803.69693 5923.7579 -2803.32941 5923.948 -2802.98912 5924.19287 -2802.68585 5924.48547 -2802.42833 5924.81739 -2802.22396 5925.17906 -2802.07863 5925.5601 -2801.99651 5925.94953 -2801.97997 Z M 5485.19953 -2537.52997 L 5485.58616 -2537.57948 5485.95886 -2537.69361 5486.30691 -2537.8691 5486.6203 -2538.10088 5486.89001 -2538.38229 5487.10828 -2538.70523 5487.26883 -2539.06041 5487.36705 -2539.43762 5487.4001 -2539.826 5487.36705 -2540.21438 5487.26883 -2540.59159 5487.10828 -2540.94677 5486.89001 -2541.26971 5486.6203 -2541.55112 5486.30691 -2541.7829 5485.95886 -2541.95839 5485.58616 -2542.07252 5485.19953 -2542.12203 5484.8101 -2542.10549 5484.42906 -2542.02337 5484.06739 -2541.87804 5483.73547 -2541.67367 5483.44287 -2541.41615 5483.198 -2541.11288 5483.0079 -2540.77259 5482.87805 -2540.40507 5482.81218 -2540.02089 5482.81218 -2539.63111 5482.87805 -2539.24693 5483.0079 -2538.87941 5483.198 -2538.53912 5483.44287 -2538.23585 5483.73547 -2537.97833 5484.06739 -2537.77396 5484.42906 -2537.62863 5484.8101 -2537.54651 5485.19953 -2537.52997 Z M 5475.3601 -2809.49651 L 5475.74953 -2809.47997 5476.13616 -2809.52948 5476.50886 -2809.64361 5476.85691 -2809.8191 5477.1703 -2810.05088 5477.44001 -2810.33229 5477.65828 -2810.65523 5477.81883 -2811.01041 5477.91705 -2811.38762 5477.9501 -2811.776 5477.91705 -2812.16438 5477.81883 -2812.54159 5477.65828 -2812.89677 5477.44001 -2813.21971 5477.1703 -2813.50112 5476.85691 -2813.7329 5476.50886 -2813.90839 5476.13616 -2814.02252 5475.74953 -2814.07203 5475.3601 -2814.05549 5474.97906 -2813.97337 5474.61739 -2813.82804 5474.28547 -2813.62367 5473.99287 -2813.36615 5473.748 -2813.06288 5473.5579 -2812.72259 5473.42805 -2812.35507 5473.36218 -2811.97089 5473.36218 -2811.58111 5473.42805 -2811.19693 5473.5579 -2810.82941 5473.748 -2810.48912 5473.99287 -2810.18585 5474.28547 -2809.92833 5474.61739 -2809.72396 5474.97906 -2809.57863 5475.3601 -2809.49651 Z M 5485.19953 -2554.82997 L 5485.58616 -2554.87948 5485.95886 -2554.99361 5486.30691 -2555.1691 5486.6203 -2555.40088 5486.89001 -2555.68229 5487.10828 -2556.00523 5487.26883 -2556.36041 5487.36705 -2556.73762 5487.4001 -2557.126 5487.36705 -2557.51438 5487.26883 -2557.89159 5487.10828 -2558.24677 5486.89001 -2558.56971 5486.6203 -2558.85112 5486.30691 -2559.0829 5485.95886 -2559.25839 5485.58616 -2559.37252 5485.19953 -2559.42203 5484.8101 -2559.40549 5484.42906 -2559.32337 5484.06739 -2559.17804 5483.73547 -2558.97367 5483.44287 -2558.71615 5483.198 -2558.41288 5483.0079 -2558.07259 5482.87805 -2557.70507 5482.81218 -2557.32089 5482.81218 -2556.93111 5482.87805 -2556.54693 5483.0079 -2556.17941 5483.198 -2555.83912 5483.44287 -2555.53585 5483.73547 -2555.27833 5484.06739 -2555.07396 5484.42906 -2554.92863 5484.8101 -2554.84651 5485.19953 -2554.82997 Z M 5925.94953 -2819.27997 L 5926.33616 -2819.32948 5926.70886 -2819.44361 5927.05691 -2819.6191 5927.3703 -2819.85088 5927.64001 -2820.13229 5927.85828 -2820.45523 5928.01883 -2820.81041 5928.11705 -2821.18762 5928.1501 -2821.576 5928.11705 -2821.96438 5928.01883 -2822.34159 5927.85828 -2822.69677 5927.64001 -2823.01971 5927.3703 -2823.30112 5927.05691 -2823.5329 5926.70886 -2823.70839 5926.33616 -2823.82252 5925.94953 -2823.87203 5925.5601 -2823.85549 5925.17906 -2823.77337 5924.81739 -2823.62804 5924.48547 -2823.42367 5924.19287 -2823.16615 5923.948 -2822.86288 5923.7579 -2822.52259 5923.62805 -2822.15507 5923.56218 -2821.77089 5923.56218 -2821.38111 5923.62805 -2820.99693 5923.7579 -2820.62941 5923.948 -2820.28912 5924.19287 -2819.98585 5924.48547 -2819.72833 5924.81739 -2819.52396 5925.17906 -2819.37863 5925.5601 -2819.29651 5925.94953 -2819.27997 Z M 5926.09953 -2555.07997 L 5926.48616 -2555.12948 5926.85886 -2555.24361 5927.20691 -2555.4191 5927.5203 -2555.65088 5927.79001 -2555.93229 5928.00828 -2556.25523 5928.16883 -2556.61041 5928.26705 -2556.98762 5928.3001 -2557.376 5928.26705 -2557.76438 5928.16883 -2558.14159 5928.00828 -2558.49677 5927.79001 -2558.81971 5927.5203 -2559.10112 5927.20691 -2559.3329 5926.85886 -2559.50839 5926.48616 -2559.62252 5926.09953 -2559.67203 5925.7101 -2559.65549 5925.32906 -2559.57337 5924.96739 -2559.42804 5924.63547 -2559.22367 5924.34287 -2558.96615 5924.098 -2558.66288 5923.9079 -2558.32259 5923.77805 -2557.95507 5923.71218 -2557.57089 5923.71218 -2557.18111 5923.77805 -2556.79693 5923.9079 -2556.42941 5924.098 -2556.08912 5924.34287 -2555.78585 5924.63547 -2555.52833 5924.96739 -2555.32396 5925.32906 -2555.17863 5925.7101 -2555.09651 5926.09953 -2555.07997 Z M 5484.2601 -2818.39651 L 5484.64953 -2818.37997 5485.03616 -2818.42948 5485.40886 -2818.54361 5485.75691 -2818.7191 5486.0703 -2818.95088 5486.34001 -2819.23229 5486.55828 -2819.55523 5486.71883 -2819.91041 5486.81705 -2820.28762 5486.8501 -2820.676 5486.81705 -2821.06438 5486.71883 -2821.44159 5486.55828 -2821.79677 5486.34001 -2822.11971 5486.0703 -2822.40112 5485.75691 -2822.6329 5485.40886 -2822.80839 5485.03616 -2822.92252 5484.64953 -2822.97203 5484.2601 -2822.95549 5483.87906 -2822.87337 5483.51739 -2822.72804 5483.18547 -2822.52367 5482.89287 -2822.26615 5482.648 -2821.96288 5482.4579 -2821.62259 5482.32805 -2821.25507 5482.26218 -2820.87089 5482.26218 -2820.48111 5482.32805 -2820.09693 5482.4579 -2819.72941 5482.648 -2819.38912 5482.89287 -2819.08585 5483.18547 -2818.82833 5483.51739 -2818.62396 5483.87906 -2818.47863 5484.2601 -2818.39651 Z M 5706.2722 -2589.09785 L 5706.2722 -2592.95924 5706.24416 -2593.20811 5706.16891 -2593.42316 5706.04769 -2593.61608 5705.88658 -2593.77719 5705.69366 -2593.89841 5705.47861 -2593.97366 5705.22974 -2594.0017 5702.3526 -2594.0017 5702.3526 -2589.09785 5706.2722 -2589.09785 Z M 5692.42739 -2575.45434 L 5692.67626 -2575.4263 5695.5534 -2575.4263 5695.5534 -2580.33015 5691.6338 -2580.33015 5691.6338 -2576.46876 5691.66184 -2576.21989 5691.73709 -2576.00484 5691.85831 -2575.81192 5692.01942 -2575.65081 5692.21234 -2575.52959 5692.42739 -2575.45434 Z M 5691.6338 -2592.95924 L 5691.6338 -2589.09785 5695.5534 -2589.09785 5695.5534 -2594.0017 5692.67626 -2594.0017 5692.42739 -2593.97366 5692.21234 -2593.89841 5692.01942 -2593.77719 5691.85831 -2593.61608 5691.73709 -2593.42316 5691.66184 -2593.20811 5691.6338 -2592.95924 Z M 5705.22974 -2575.4263 L 5705.47861 -2575.45434 5705.69366 -2575.52959 5705.88658 -2575.65081 5706.04769 -2575.81192 5706.16891 -2576.00484 5706.24416 -2576.21989 5706.2722 -2576.46876 5706.2722 -2580.33015 5702.3526 -2580.33015 5702.3526 -2575.4263 5705.22974 -2575.4263 Z M 5480.96024 -2775.18475 L 5481.20911 -2775.21279 5481.42416 -2775.28804 5481.61708 -2775.40926 5481.77819 -2775.57037 5481.89941 -2775.76329 5481.97466 -2775.97834 5482.0027 -2776.22721 5482.0027 -2778.41538 5479.06735 -2778.41538 5479.06735 -2775.18475 5480.96024 -2775.18475 Z M 5474.23665 -2775.18475 L 5474.23665 -2778.41538 5471.3013 -2778.41538 5471.3013 -2776.22721 5471.32934 -2775.97834 5471.40459 -2775.76329 5471.52581 -2775.57037 5471.68692 -2775.40926 5471.87984 -2775.28804 5472.09489 -2775.21279 5472.34376 -2775.18475 5474.23665 -2775.18475 Z M 5471.3013 -2786.02479 L 5471.3013 -2783.83663 5474.23665 -2783.83663 5474.23665 -2787.06725 5472.34376 -2787.06725 5472.09489 -2787.03921 5471.87984 -2786.96396 5471.68692 -2786.84274 5471.52581 -2786.68163 5471.40459 -2786.48871 5471.32934 -2786.27366 5471.3013 -2786.02479 Z M 5482.0027 -2783.83663 L 5482.0027 -2786.02479 5481.97466 -2786.27366 5481.89941 -2786.48871 5481.77819 -2786.68163 5481.61708 -2786.84274 5481.42416 -2786.96396 5481.20911 -2787.03921 5480.96024 -2787.06725 5479.06735 -2787.06725 5479.06735 -2783.83663 5482.0027 -2783.83663 Z M 5706.71405 -2755.56074 L 5706.71405 -2754.6521 5711.42103 -2754.6521 5711.42103 -2756.6032 5707.75651 -2756.6032 5707.50764 -2756.57516 5707.29259 -2756.49991 5707.09967 -2756.37869 5706.93856 -2756.21758 5706.81734 -2756.02466 5706.74209 -2755.80961 5706.71405 -2755.56074 Z M 5723.45949 -2749.8388 L 5723.70836 -2749.86684 5723.92341 -2749.94209 5724.11633 -2750.06331 5724.27744 -2750.22442 5724.39866 -2750.41734 5724.47391 -2750.63239 5724.50195 -2750.88126 5724.50195 -2751.7899 5719.79497 -2751.7899 5719.79497 -2749.8388 5723.45949 -2749.8388 Z M 5707.50764 -2749.86684 L 5707.75651 -2749.8388 5711.42103 -2749.8388 5711.42103 -2751.7899 5706.71405 -2751.7899 5706.71405 -2750.88126 5706.74209 -2750.63239 5706.81734 -2750.41734 5706.93856 -2750.22442 5707.09967 -2750.06331 5707.29259 -2749.94209 5707.50764 -2749.86684 Z M 5724.50195 -2754.6521 L 5724.50195 -2755.56074 5724.47391 -2755.80961 5724.39866 -2756.02466 5724.27744 -2756.21758 5724.11633 -2756.37869 5723.92341 -2756.49991 5723.70836 -2756.57516 5723.45949 -2756.6032 5719.79497 -2756.6032 5719.79497 -2754.6521 5724.50195 -2754.6521 Z M 5513.52763 -2805.98475 L 5513.52763 -2809.21537 5511.28125 -2809.21537 5511.28125 -2807.02721 5511.30929 -2806.77834 5511.38454 -2806.56329 5511.50576 -2806.37037 5511.66687 -2806.20926 5511.85979 -2806.08804 5512.07484 -2806.01279 5512.32371 -2805.98475 5513.52763 -2805.98475 Z M 5541.87363 -2805.98475 L 5541.87363 -2809.21537 5539.62725 -2809.21537 5539.62725 -2807.02721 5539.65529 -2806.77834 5539.73054 -2806.56329 5539.85176 -2806.37037 5540.01287 -2806.20926 5540.20579 -2806.08804 5540.42084 -2806.01279 5540.66971 -2805.98475 5541.87363 -2805.98475 Z M 5513.52763 -2814.63663 L 5513.52763 -2817.86725 5512.32371 -2817.86725 5512.07484 -2817.83921 5511.85979 -2817.76396 5511.66687 -2817.64274 5511.50576 -2817.48163 5511.38454 -2817.28871 5511.30929 -2817.07366 5511.28125 -2816.82479 5511.28125 -2814.63663 5513.52763 -2814.63663 Z M 5516.98037 -2809.21537 L 5516.98037 -2805.98475 5518.18429 -2805.98475 5518.43316 -2806.01279 5518.64821 -2806.08804 5518.84113 -2806.20926 5519.00224 -2806.37037 5519.12346 -2806.56329 5519.19871 -2806.77834 5519.22675 -2807.02721 5519.22675 -2809.21537 5516.98037 -2809.21537 Z M 5546.53029 -2805.98475 L 5546.77916 -2806.01279 5546.99421 -2806.08804 5547.18713 -2806.20926 5547.34824 -2806.37037 5547.46946 -2806.56329 5547.54471 -2806.77834 5547.57275 -2807.02721 5547.57275 -2809.21537 5545.32637 -2809.21537 5545.32637 -2805.98475 5546.53029 -2805.98475 Z M 5519.22675 -2814.63663 L 5519.22675 -2816.82479 5519.19871 -2817.07366 5519.12346 -2817.28871 5519.00224 -2817.48163 5518.84113 -2817.64274 5518.64821 -2817.76396 5518.43316 -2817.83921 5518.18429 -2817.86725 5516.98037 -2817.86725 5516.98037 -2814.63663 5519.22675 -2814.63663 Z M 5595.62775 -2554.7568 L 5595.62775 -2558.6764 5593.8735 -2558.6764 5593.8735 -2555.79926 5593.90154 -2555.55039 5593.97679 -2555.33534 5594.09801 -2555.14242 5594.25912 -2554.98131 5594.45204 -2554.86009 5594.66709 -2554.78484 5594.91596 -2554.7568 5595.62775 -2554.7568 Z M 5523.9085 -2568.35274 L 5523.9085 -2565.4756 5525.66275 -2565.4756 5525.66275 -2569.3952 5524.95096 -2569.3952 5524.70209 -2569.36716 5524.48704 -2569.29191 5524.29412 -2569.17069 5524.13301 -2569.00958 5524.01179 -2568.81666 5523.93654 -2568.60161 5523.9085 -2568.35274 Z M 5593.8735 -2568.35274 L 5593.8735 -2565.4756 5595.62775 -2565.4756 5595.62775 -2569.3952 5594.91596 -2569.3952 5594.66709 -2569.36716 5594.45204 -2569.29191 5594.25912 -2569.17069 5594.09801 -2569.00958 5593.97679 -2568.81666 5593.90154 -2568.60161 5593.8735 -2568.35274 Z M 5528.13125 -2558.6764 L 5528.13125 -2554.7568 5528.84304 -2554.7568 5529.09191 -2554.78484 5529.30696 -2554.86009 5529.49988 -2554.98131 5529.66099 -2555.14242 5529.78221 -2555.33534 5529.85746 -2555.55039 5529.8855 -2555.79926 5529.8855 -2558.6764 5528.13125 -2558.6764 Z M 5524.70209 -2554.78484 L 5524.95096 -2554.7568 5525.66275 -2554.7568 5525.66275 -2558.6764 5523.9085 -2558.6764 5523.9085 -2555.79926 5523.93654 -2555.55039 5524.01179 -2555.33534 5524.13301 -2555.14242 5524.29412 -2554.98131 5524.48704 -2554.86009 5524.70209 -2554.78484 Z M 5529.8855 -2565.4756 L 5529.8855 -2568.35274 5529.85746 -2568.60161 5529.78221 -2568.81666 5529.66099 -2569.00958 5529.49988 -2569.17069 5529.30696 -2569.29191 5529.09191 -2569.36716 5528.84304 -2569.3952 5528.13125 -2569.3952 5528.13125 -2565.4756 5529.8855 -2565.4756 Z M 5598.09625 -2558.6764 L 5598.09625 -2554.7568 5598.80804 -2554.7568 5599.05691 -2554.78484 5599.27196 -2554.86009 5599.46488 -2554.98131 5599.62599 -2555.14242 5599.74721 -2555.33534 5599.82246 -2555.55039 5599.8505 -2555.79926 5599.8505 -2558.6764 5598.09625 -2558.6764 Z M 5558.11625 -2558.6764 L 5558.11625 -2554.7568 5558.82804 -2554.7568 5559.07691 -2554.78484 5559.29196 -2554.86009 5559.48488 -2554.98131 5559.64599 -2555.14242 5559.76721 -2555.33534 5559.84246 -2555.55039 5559.8705 -2555.79926 5559.8705 -2558.6764 5558.11625 -2558.6764 Z M 5558.11625 -2569.3952 L 5558.11625 -2565.4756 5559.8705 -2565.4756 5559.8705 -2568.35274 5559.84246 -2568.60161 5559.76721 -2568.81666 5559.64599 -2569.00958 5559.48488 -2569.17069 5559.29196 -2569.29191 5559.07691 -2569.36716 5558.82804 -2569.3952 5558.11625 -2569.3952 Z M 5599.8505 -2565.4756 L 5599.8505 -2568.35274 5599.82246 -2568.60161 5599.74721 -2568.81666 5599.62599 -2569.00958 5599.46488 -2569.17069 5599.27196 -2569.29191 5599.05691 -2569.36716 5598.80804 -2569.3952 5598.09625 -2569.3952 5598.09625 -2565.4756 5599.8505 -2565.4756 Z M 5709.02874 -2604.9375 L 5709.27761 -2604.96554 5709.49266 -2605.04079 5709.68558 -2605.16201 5709.84669 -2605.32312 5709.96791 -2605.51604 5710.04316 -2605.73109 5710.0712 -2605.97996 5710.0712 -2606.69175 5706.1516 -2606.69175 5706.1516 -2604.9375 5709.02874 -2604.9375 Z M 5483.4328 -2679.73704 L 5483.4328 -2679.02525 5487.3524 -2679.02525 5487.3524 -2680.7795 5484.47526 -2680.7795 5484.22639 -2680.75146 5484.01134 -2680.67621 5483.81842 -2680.55499 5483.65731 -2680.39388 5483.53609 -2680.20096 5483.46084 -2679.98591 5483.4328 -2679.73704 Z M 5699.3524 -2604.9375 L 5699.3524 -2606.69175 5695.4328 -2606.69175 5695.4328 -2605.97996 5695.46084 -2605.73109 5695.53609 -2605.51604 5695.65731 -2605.32312 5695.81842 -2605.16201 5696.01134 -2605.04079 5696.22639 -2604.96554 5696.47526 -2604.9375 5699.3524 -2604.9375 Z M 5494.1516 -2700.7695 L 5494.1516 -2699.01525 5498.0712 -2699.01525 5498.0712 -2699.72704 5498.04316 -2699.97591 5497.96791 -2700.19096 5497.84669 -2700.38388 5497.68558 -2700.54499 5497.49266 -2700.66621 5497.27761 -2700.74146 5497.02874 -2700.7695 5494.1516 -2700.7695 Z M 5494.1516 -2666.56175 L 5494.1516 -2664.8075 5497.02874 -2664.8075 5497.27761 -2664.83554 5497.49266 -2664.91079 5497.68558 -2665.03201 5497.84669 -2665.19312 5497.96791 -2665.38604 5498.04316 -2665.60109 5498.0712 -2665.84996 5498.0712 -2666.56175 5494.1516 -2666.56175 Z M 5487.3524 -2699.01525 L 5487.3524 -2700.7695 5484.47526 -2700.7695 5484.22639 -2700.74146 5484.01134 -2700.66621 5483.81842 -2700.54499 5483.65731 -2700.38388 5483.53609 -2700.19096 5483.46084 -2699.97591 5483.4328 -2699.72704 5483.4328 -2699.01525 5487.3524 -2699.01525 Z M 5484.22639 -2664.83554 L 5484.47526 -2664.8075 5487.3524 -2664.8075 5487.3524 -2666.56175 5483.4328 -2666.56175 5483.4328 -2665.84996 5483.46084 -2665.60109 5483.53609 -2665.38604 5483.65731 -2665.19312 5483.81842 -2665.03201 5484.01134 -2664.91079 5484.22639 -2664.83554 Z M 5484.22639 -2694.82054 L 5484.47526 -2694.7925 5487.3524 -2694.7925 5487.3524 -2696.54675 5483.4328 -2696.54675 5483.4328 -2695.83496 5483.46084 -2695.58609 5483.53609 -2695.37104 5483.65731 -2695.17812 5483.81842 -2695.01701 5484.01134 -2694.89579 5484.22639 -2694.82054 Z M 5498.0712 -2669.03025 L 5498.0712 -2669.74204 5498.04316 -2669.99091 5497.96791 -2670.20596 5497.84669 -2670.39888 5497.68558 -2670.55999 5497.49266 -2670.68121 5497.27761 -2670.75646 5497.02874 -2670.7845 5494.1516 -2670.7845 5494.1516 -2669.03025 5498.0712 -2669.03025 Z M 5494.1516 -2696.54675 L 5494.1516 -2694.7925 5497.02874 -2694.7925 5497.27761 -2694.82054 5497.49266 -2694.89579 5497.68558 -2695.01701 5497.84669 -2695.17812 5497.96791 -2695.37104 5498.04316 -2695.58609 5498.0712 -2695.83496 5498.0712 -2696.54675 5494.1516 -2696.54675 Z M 5487.3524 -2669.03025 L 5487.3524 -2670.7845 5484.47526 -2670.7845 5484.22639 -2670.75646 5484.01134 -2670.68121 5483.81842 -2670.55999 5483.65731 -2670.39888 5483.53609 -2670.20596 5483.46084 -2669.99091 5483.4328 -2669.74204 5483.4328 -2669.03025 5487.3524 -2669.03025 Z M 5494.1516 -2680.7795 L 5494.1516 -2679.02525 5498.0712 -2679.02525 5498.0712 -2679.73704 5498.04316 -2679.98591 5497.96791 -2680.20096 5497.84669 -2680.39388 5497.68558 -2680.55499 5497.49266 -2680.67621 5497.27761 -2680.75146 5497.02874 -2680.7795 5494.1516 -2680.7795 Z M 5487.3524 -2674.8025 L 5487.3524 -2676.55675 5483.4328 -2676.55675 5483.4328 -2675.84496 5483.46084 -2675.59609 5483.53609 -2675.38104 5483.65731 -2675.18812 5483.81842 -2675.02701 5484.01134 -2674.90579 5484.22639 -2674.83054 5484.47526 -2674.8025 5487.3524 -2674.8025 Z M 5497.02874 -2674.8025 L 5497.27761 -2674.83054 5497.49266 -2674.90579 5497.68558 -2675.02701 5497.84669 -2675.18812 5497.96791 -2675.38104 5498.04316 -2675.59609 5498.0712 -2675.84496 5498.0712 -2676.55675 5494.1516 -2676.55675 5494.1516 -2674.8025 5497.02874 -2674.8025 Z M 5922.66855 -2741.25553 L 5922.66855 -2742.26259 5922.64051 -2742.51146 5922.56526 -2742.72651 5922.44404 -2742.91943 5922.28293 -2743.08054 5922.09001 -2743.20176 5921.87496 -2743.27701 5921.62609 -2743.30505 5919.63477 -2743.30505 5919.63477 -2741.25553 5922.66855 -2741.25553 Z M 5914.40723 -2797.49695 L 5914.40723 -2799.54647 5911.37345 -2799.54647 5911.37345 -2798.53941 5911.40149 -2798.29054 5911.47674 -2798.07549 5911.59796 -2797.88257 5911.75907 -2797.72146 5911.95199 -2797.60024 5912.16704 -2797.52499 5912.41591 -2797.49695 5914.40723 -2797.49695 Z M 5914.60723 -2741.25553 L 5914.60723 -2743.30505 5912.61591 -2743.30505 5912.36704 -2743.27701 5912.15199 -2743.20176 5911.95907 -2743.08054 5911.79796 -2742.91943 5911.67674 -2742.72651 5911.60149 -2742.51146 5911.57345 -2742.26259 5911.57345 -2741.25553 5914.60723 -2741.25553 Z M 5911.37345 -2803.61259 L 5911.37345 -2802.60553 5914.40723 -2802.60553 5914.40723 -2804.65505 5912.41591 -2804.65505 5912.16704 -2804.62701 5911.95199 -2804.55176 5911.75907 -2804.43054 5911.59796 -2804.26943 5911.47674 -2804.07651 5911.40149 -2803.86146 5911.37345 -2803.61259 Z M 5919.43477 -2799.54647 L 5919.43477 -2797.49695 5921.42609 -2797.49695 5921.67496 -2797.52499 5921.89001 -2797.60024 5922.08293 -2797.72146 5922.24404 -2797.88257 5922.36526 -2798.07549 5922.44051 -2798.29054 5922.46855 -2798.53941 5922.46855 -2799.54647 5919.43477 -2799.54647 Z M 5601.08633 -2821.13283 L 5601.08633 -2822.78865 5600.27611 -2822.78865 5600.02724 -2822.76061 5599.81219 -2822.68536 5599.61927 -2822.56414 5599.45816 -2822.40303 5599.39523 -2822.30288 5599.28433 -2822.18689 5599.13678 -2822.12382 5598.97631 -2822.12382 5598.82875 -2822.18689 5598.68659 -2822.35263 5598.52548 -2822.51374 5598.33256 -2822.63496 5598.11751 -2822.71021 5597.86864 -2822.73825 5597.55055 -2822.73825 5597.55055 -2821.47613 5599.3111 -2821.47613 5599.45094 -2821.45088 5599.57313 -2821.37835 5599.66225 -2821.26767 5599.70706 -2821.13283 5601.08633 -2821.13283 Z M 5877.44383 -2799.49845 L 5877.44383 -2801.9909 5876.28911 -2801.9909 5876.04024 -2801.96286 5875.82519 -2801.88761 5875.63227 -2801.76639 5875.47116 -2801.60528 5875.34994 -2801.41236 5875.27469 -2801.19731 5875.24665 -2800.94844 5875.24665 -2799.49845 5877.44383 -2799.49845 Z M 5882.99535 -2799.49845 L 5882.99535 -2800.94844 5882.96731 -2801.19731 5882.89206 -2801.41236 5882.77084 -2801.60528 5882.60973 -2801.76639 5882.41681 -2801.88761 5882.20176 -2801.96286 5881.95289 -2801.9909 5880.79817 -2801.9909 5880.79817 -2799.49845 5882.99535 -2799.49845 Z M 5880.79817 -2795.55355 L 5880.79817 -2793.0611 5881.95289 -2793.0611 5882.20176 -2793.08914 5882.41681 -2793.16439 5882.60973 -2793.28561 5882.77084 -2793.44672 5882.89206 -2793.63964 5882.96731 -2793.85469 5882.99535 -2794.10356 5882.99535 -2795.55355 5880.79817 -2795.55355 Z M 5876.04024 -2793.08914 L 5876.28911 -2793.0611 5877.44383 -2793.0611 5877.44383 -2795.55355 5875.24665 -2795.55355 5875.24665 -2794.10356 5875.27469 -2793.85469 5875.34994 -2793.63964 5875.47116 -2793.44672 5875.63227 -2793.28561 5875.82519 -2793.16439 5876.04024 -2793.08914 Z M 5684.4232 -2586.684 L 5684.4232 -2587.91154 5684.39516 -2588.16041 5684.31991 -2588.37546 5684.19869 -2588.56838 5684.03758 -2588.72949 5683.84466 -2588.85071 5683.62961 -2588.92596 5683.38074 -2588.954 5682.4721 -2588.954 5682.4721 -2586.684 5684.4232 -2586.684 Z M 5678.45239 -2580.94204 L 5678.70126 -2580.914 5679.6099 -2580.914 5679.6099 -2583.184 5677.6588 -2583.184 5677.6588 -2581.95646 5677.68684 -2581.70759 5677.76209 -2581.49254 5677.88331 -2581.29962 5678.04442 -2581.13851 5678.23734 -2581.01729 5678.45239 -2580.94204 Z M 5682.4721 -2583.184 L 5682.4721 -2580.914 5683.38074 -2580.914 5683.62961 -2580.94204 5683.84466 -2581.01729 5684.03758 -2581.13851 5684.19869 -2581.29962 5684.31991 -2581.49254 5684.39516 -2581.70759 5684.4232 -2581.95646 5684.4232 -2583.184 5682.4721 -2583.184 Z M 5679.6099 -2586.684 L 5679.6099 -2588.954 5678.70126 -2588.954 5678.45239 -2588.92596 5678.23734 -2588.85071 5678.04442 -2588.72949 5677.88331 -2588.56838 5677.76209 -2588.37546 5677.68684 -2588.16041 5677.6588 -2587.91154 5677.6588 -2586.684 5679.6099 -2586.684 Z M 5731.447 -2808.0909 L 5731.447 -2806.1398 5732.67454 -2806.1398 5732.92341 -2806.16784 5733.13846 -2806.24309 5733.33138 -2806.36431 5733.49249 -2806.52542 5733.61371 -2806.71834 5733.68896 -2806.93339 5733.717 -2807.18226 5733.717 -2808.0909 5731.447 -2808.0909 Z M 5727.947 -2810.9531 L 5727.947 -2812.9042 5726.71946 -2812.9042 5726.47059 -2812.87616 5726.25554 -2812.80091 5726.06262 -2812.67969 5725.90151 -2812.51858 5725.78029 -2812.32566 5725.70504 -2812.11061 5725.677 -2811.86174 5725.677 -2810.9531 5727.947 -2810.9531 Z M 5731.447 -2812.9042 L 5731.447 -2810.9531 5733.717 -2810.9531 5733.717 -2811.86174 5733.68896 -2812.11061 5733.61371 -2812.32566 5733.49249 -2812.51858 5733.33138 -2812.67969 5733.13846 -2812.80091 5732.92341 -2812.87616 5732.67454 -2812.9042 5731.447 -2812.9042 Z M 5520.8799 -2749.997 L 5520.8799 -2752.267 5519.97126 -2752.267 5519.72239 -2752.23896 5519.50734 -2752.16371 5519.31442 -2752.04249 5519.15331 -2751.88138 5519.03209 -2751.68846 5518.95684 -2751.47341 5518.9288 -2751.22454 5518.9288 -2749.997 5520.8799 -2749.997 Z M 5525.6932 -2749.997 L 5525.6932 -2751.22454 5525.66516 -2751.47341 5525.58991 -2751.68846 5525.46869 -2751.88138 5525.30758 -2752.04249 5525.11466 -2752.16371 5524.89961 -2752.23896 5524.65074 -2752.267 5523.7421 -2752.267 5523.7421 -2749.997 5525.6932 -2749.997 Z M 5523.7421 -2746.497 L 5523.7421 -2744.227 5524.65074 -2744.227 5524.89961 -2744.25504 5525.11466 -2744.33029 5525.30758 -2744.45151 5525.46869 -2744.61262 5525.58991 -2744.80554 5525.66516 -2745.02059 5525.6932 -2745.26946 5525.6932 -2746.497 5523.7421 -2746.497 Z M 5520.8799 -2744.227 L 5520.8799 -2746.497 5518.9288 -2746.497 5518.9288 -2745.26946 5518.95684 -2745.02059 5519.03209 -2744.80554 5519.15331 -2744.61262 5519.31442 -2744.45151 5519.50734 -2744.33029 5519.72239 -2744.25504 5519.97126 -2744.227 5520.8799 -2744.227 Z M 5497.32764 -2716.42675 L 5497.57651 -2716.45479 5497.79156 -2716.53004 5497.98448 -2716.65126 5498.14559 -2716.81237 5498.26681 -2717.00529 5498.29827 -2717.0952 5498.3826 -2717.23516 5498.51587 -2717.32971 5498.67582 -2717.36309 5498.83578 -2717.32971 5498.96904 -2717.23516 5499.07119 -2717.04429 5499.19241 -2716.85137 5499.35352 -2716.69026 5499.54644 -2716.56904 5499.76149 -2716.49379 5500.01036 -2716.46575 5500.32845 -2716.46575 5500.32845 -2717.72788 5498.94238 -2717.72788 5498.7701 -2717.68887 5497.00955 -2717.68887 5497.00955 -2716.42675 5497.32764 -2716.42675 Z M 5880.29903 -2580.079 L 5880.29903 -2582.8175 5878.84005 -2582.8175 5878.84005 -2581.12146 5878.83189 -2580.9175 5878.74328 -2580.76064 5878.88364 -2580.69666 5878.98935 -2580.58432 5879.06456 -2580.46462 5879.22567 -2580.30351 5879.41859 -2580.18229 5879.63364 -2580.10704 5879.88251 -2580.079 5880.29903 -2580.079 Z M 5592.55055 -2822.73825 L 5592.55055 -2821.47613 5595.86945 -2821.47613 5595.86945 -2822.73825 5595.55136 -2822.73825 5595.30249 -2822.71021 5595.08744 -2822.63496 5594.89452 -2822.51374 5594.73341 -2822.35263 5594.61219 -2822.15971 5594.58755 -2822.0893 5594.50322 -2821.94934 5594.36996 -2821.85479 5594.21 -2821.82141 5594.05004 -2821.85479 5593.91678 -2821.94934 5593.83245 -2822.0893 5593.80781 -2822.15971 5593.68659 -2822.35263 5593.52548 -2822.51374 5593.33256 -2822.63496 5593.11751 -2822.71021 5592.86864 -2822.73825 5592.55055 -2822.73825 Z M 5878.84005 -2588.95054 L 5878.84005 -2587.2545 5880.29903 -2587.2545 5880.29903 -2589.993 5879.88251 -2589.993 5879.63364 -2589.96496 5879.41859 -2589.88971 5879.22567 -2589.76849 5879.06456 -2589.60738 5878.94334 -2589.41446 5878.86809 -2589.19941 5878.84005 -2588.95054 Z M 5882.17698 -2582.8175 L 5882.17698 -2580.079 5882.59349 -2580.079 5882.84236 -2580.10704 5883.05741 -2580.18229 5883.25033 -2580.30351 5883.41144 -2580.46462 5883.53266 -2580.65754 5883.60791 -2580.87259 5883.63595 -2581.12146 5883.63595 -2582.8175 5882.17698 -2582.8175 Z M 5883.63595 -2587.2545 L 5883.63595 -2588.95054 5883.60791 -2589.19941 5883.53266 -2589.41446 5883.41144 -2589.60738 5883.25033 -2589.76849 5883.05741 -2589.88971 5882.84236 -2589.96496 5882.59349 -2589.993 5882.17698 -2589.993 5882.17698 -2587.2545 5883.63595 -2587.2545 Z M 5828.84005 -2571.23454 L 5828.84005 -2569.5385 5830.29903 -2569.5385 5830.29903 -2572.277 5829.88251 -2572.277 5829.63364 -2572.24896 5829.41859 -2572.17371 5829.22567 -2572.05249 5829.06456 -2571.89138 5828.94334 -2571.69846 5828.86809 -2571.48341 5828.84005 -2571.23454 Z M 5830.29903 -2562.363 L 5830.29903 -2565.1015 5828.84005 -2565.1015 5828.84005 -2563.40546 5828.86809 -2563.15659 5828.94334 -2562.94154 5829.06456 -2562.74862 5829.22567 -2562.58751 5829.41859 -2562.46629 5829.63364 -2562.39104 5829.88251 -2562.363 5830.29903 -2562.363 Z M 5756.2088 -2800.0642 L 5756.2088 -2801.95963 5755.94923 -2801.83163 5755.50118 -2801.53225 5755.09604 -2801.17696 5754.74075 -2800.77182 5754.44137 -2800.32377 5754.31337 -2800.0642 5756.2088 -2800.0642 Z M 5759.8092 -2796.4638 L 5759.8092 -2794.56837 5760.06877 -2794.69637 5760.51682 -2794.99575 5760.92196 -2795.35104 5761.27725 -2795.75618 5761.57663 -2796.20423 5761.70463 -2796.4638 5759.8092 -2796.4638 Z M 5756.2088 -2794.56837 L 5756.2088 -2796.4638 5754.31337 -2796.4638 5754.44137 -2796.20423 5754.74075 -2795.75618 5755.09604 -2795.35104 5755.50118 -2794.99575 5755.94923 -2794.69637 5756.2088 -2794.56837 Z M 5759.8092 -2801.95963 L 5759.8092 -2800.0642 5761.70463 -2800.0642 5761.57663 -2800.32377 5761.27725 -2800.77182 5760.92196 -2801.17696 5760.51682 -2801.53225 5760.06877 -2801.83163 5759.8092 -2801.95963 Z M 5538.12329 -2596.908 L 5537.99528 -2597.16757 5537.69593 -2597.61557 5537.34067 -2598.02067 5536.93557 -2598.37593 5536.48757 -2598.67528 5536.228 -2598.80329 5536.228 -2596.908 5538.12329 -2596.908 Z M 5799.809 -2801.95929 L 5799.809 -2800.064 5801.70429 -2800.064 5801.57628 -2800.32357 5801.27693 -2800.77157 5800.92167 -2801.17667 5800.51657 -2801.53193 5800.06857 -2801.83128 5799.809 -2801.95929 Z M 5794.44172 -2800.32357 L 5794.31371 -2800.064 5796.209 -2800.064 5796.209 -2801.95929 5795.94943 -2801.83128 5795.50143 -2801.53193 5795.09633 -2801.17667 5794.74107 -2800.77157 5794.44172 -2800.32357 Z M 5532.628 -2596.908 L 5532.628 -2598.80329 5532.36843 -2598.67528 5531.92043 -2598.37593 5531.51533 -2598.02067 5531.16007 -2597.61557 5530.86072 -2597.16757 5530.73271 -2596.908 5532.628 -2596.908 Z M 5796.209 -2794.56871 L 5796.209 -2796.464 5794.31371 -2796.464 5794.44172 -2796.20443 5794.74107 -2795.75643 5795.09633 -2795.35133 5795.50143 -2794.99607 5795.94943 -2794.69672 5796.209 -2794.56871 Z M 5799.809 -2796.464 L 5799.809 -2794.56871 5800.06857 -2794.69672 5800.51657 -2794.99607 5800.92167 -2795.35133 5801.27693 -2795.75643 5801.57628 -2796.20443 5801.70429 -2796.464 5799.809 -2796.464 Z M 5500.32512 -2577.14545 L 5500.32512 -2575.2099 5501.11979 -2575.2099 5501.36866 -2575.23794 5501.58371 -2575.31319 5501.77663 -2575.43441 5501.93774 -2575.59552 5502.05896 -2575.78844 5502.13421 -2576.00349 5502.16225 -2576.25236 5502.16225 -2577.14545 5500.32512 -2577.14545 Z M 5497.69088 -2575.2099 L 5497.69088 -2577.14545 5495.85375 -2577.14545 5495.85375 -2576.25236 5495.88179 -2576.00349 5495.95704 -2575.78844 5496.07826 -2575.59552 5496.23937 -2575.43441 5496.43229 -2575.31319 5496.64734 -2575.23794 5496.89621 -2575.2099 5497.69088 -2575.2099 Z M 5495.85375 -2580.86964 L 5495.85375 -2579.97655 5497.69088 -2579.97655 5497.69088 -2581.9121 5496.89621 -2581.9121 5496.64734 -2581.88406 5496.43229 -2581.80881 5496.23937 -2581.68759 5496.07826 -2581.52648 5495.95704 -2581.33356 5495.88179 -2581.11851 5495.85375 -2580.86964 Z M 5502.16225 -2579.97655 L 5502.16225 -2580.86964 5502.13421 -2581.11851 5502.05896 -2581.33356 5501.93774 -2581.52648 5501.77663 -2581.68759 5501.58371 -2581.80881 5501.36866 -2581.88406 5501.11979 -2581.9121 5500.32512 -2581.9121 5500.32512 -2579.97655 5502.16225 -2579.97655 Z M 5552.70776 -2784.70875 L 5552.967 -2784.58786 5552.967 -2787.18 5551.597 -2787.18 5551.597 -2786.64746 5551.63223 -2786.24477 5551.73232 -2785.87124 5551.89575 -2785.52076 5552.11755 -2785.20399 5552.39099 -2784.93055 5552.70776 -2784.70875 Z M 5821.445 -2627.85 L 5821.445 -2628.82754 5821.41696 -2629.07641 5821.34171 -2629.29146 5821.22049 -2629.48438 5821.05938 -2629.64549 5820.86646 -2629.76671 5820.65141 -2629.84196 5820.40254 -2629.87 5819.775 -2629.87 5819.775 -2627.85 5821.445 -2627.85 Z M 5817.475 -2627.85 L 5817.475 -2629.87 5816.84746 -2629.87 5816.59859 -2629.84196 5816.38354 -2629.76671 5816.19062 -2629.64549 5816.02951 -2629.48438 5815.90829 -2629.29146 5815.83304 -2629.07641 5815.805 -2628.82754 5815.805 -2627.85 5817.475 -2627.85 Z M 5820.40254 -2622.83 L 5820.65141 -2622.85804 5820.86646 -2622.93329 5821.05938 -2623.05451 5821.22049 -2623.21562 5821.34171 -2623.40854 5821.41696 -2623.62359 5821.445 -2623.87246 5821.445 -2624.85 5819.775 -2624.85 5819.775 -2622.83 5820.40254 -2622.83 Z M 5817.475 -2622.83 L 5817.475 -2624.85 5815.805 -2624.85 5815.805 -2623.87246 5815.83304 -2623.62359 5815.90829 -2623.40854 5816.02951 -2623.21562 5816.19062 -2623.05451 5816.38354 -2622.93329 5816.59859 -2622.85804 5816.84746 -2622.83 5817.475 -2622.83 Z M 5476.22294 -2607.70069 L 5476.47181 -2607.67265 5477.08518 -2607.67265 5477.08518 -2609.52533 5475.42935 -2609.52533 5475.42935 -2608.71511 5475.45739 -2608.46624 5475.53264 -2608.25119 5475.65386 -2608.05827 5475.81497 -2607.89716 5476.00789 -2607.77594 5476.22294 -2607.70069 Z M 5479.97019 -2607.67265 L 5480.21906 -2607.70069 5480.43411 -2607.77594 5480.62703 -2607.89716 5480.78814 -2608.05827 5480.90936 -2608.25119 5480.98461 -2608.46624 5481.01265 -2608.71511 5481.01265 -2609.52533 5479.35682 -2609.52533 5479.35682 -2607.67265 5479.97019 -2607.67265 Z M 5479.23482 -2698.30732 L 5479.23482 -2696.45465 5479.84819 -2696.45465 5480.09706 -2696.48269 5480.31211 -2696.55794 5480.50503 -2696.67916 5480.66614 -2696.84027 5480.78736 -2697.03319 5480.86261 -2697.24824 5480.89065 -2697.49711 5480.89065 -2698.30732 5479.23482 -2698.30732 Z M 5639.37382 -2824.28435 L 5639.37382 -2822.43168 5641.02965 -2822.43168 5641.02965 -2823.24189 5641.00161 -2823.49076 5640.92636 -2823.70581 5640.80514 -2823.89873 5640.64403 -2824.05984 5640.45111 -2824.18106 5640.23606 -2824.25631 5639.98719 -2824.28435 5639.37382 -2824.28435 Z M 5637.10217 -2822.43168 L 5637.10217 -2824.28435 5636.48881 -2824.28435 5636.23994 -2824.25631 5636.02489 -2824.18106 5635.83197 -2824.05984 5635.67086 -2823.89873 5635.54964 -2823.70581 5635.47439 -2823.49076 5635.44635 -2823.24189 5635.44635 -2822.43168 5637.10217 -2822.43168 Z M 5503.68165 -2599.06219 L 5503.68165 -2598.44883 5505.53433 -2598.44883 5505.53433 -2600.10465 5504.72411 -2600.10465 5504.47524 -2600.07661 5504.26019 -2600.00136 5504.06727 -2599.88014 5503.90616 -2599.71903 5503.78494 -2599.52611 5503.70969 -2599.31106 5503.68165 -2599.06219 Z M 5847.23865 -2782.21119 L 5847.23865 -2781.59783 5849.09133 -2781.59783 5849.09133 -2783.25365 5848.28111 -2783.25365 5848.03224 -2783.22561 5847.81719 -2783.15036 5847.62427 -2783.02914 5847.46316 -2782.86803 5847.34194 -2782.67511 5847.26669 -2782.46006 5847.23865 -2782.21119 Z M 5764.20865 -2730.04819 L 5764.20865 -2729.43483 5766.06133 -2729.43483 5766.06133 -2731.09065 5765.25111 -2731.09065 5765.00224 -2731.06261 5764.78719 -2730.98736 5764.59427 -2730.86614 5764.43316 -2730.70503 5764.31194 -2730.51211 5764.23669 -2730.29706 5764.20865 -2730.04819 Z M 5505.53433 -2594.52135 L 5505.53433 -2596.17718 5503.68165 -2596.17718 5503.68165 -2595.56381 5503.70969 -2595.31494 5503.78494 -2595.09989 5503.90616 -2594.90697 5504.06727 -2594.74586 5504.26019 -2594.62464 5504.47524 -2594.54939 5504.72411 -2594.52135 5505.53433 -2594.52135 Z M 5766.06133 -2725.50735 L 5766.06133 -2727.16317 5764.20865 -2727.16317 5764.20865 -2726.54981 5764.23669 -2726.30094 5764.31194 -2726.08589 5764.43316 -2725.89297 5764.59427 -2725.73186 5764.78719 -2725.61064 5765.00224 -2725.53539 5765.25111 -2725.50735 5766.06133 -2725.50735 Z M 5823.70245 -2641.21545 L 5824.03593 -2641.24829 5824.33769 -2641.33983 5824.6158 -2641.48849 5824.85956 -2641.68854 5825.05961 -2641.9323 5825.20827 -2642.21041 5825.2296 -2642.28073 5823.33232 -2642.28073 5823.33232 -2641.21545 5823.70245 -2641.21545 Z M 5820.37168 -2641.21545 L 5820.37168 -2642.28073 5818.4744 -2642.28073 5818.49573 -2642.21041 5818.64439 -2641.9323 5818.84444 -2641.68854 5819.0882 -2641.48849 5819.36631 -2641.33983 5819.66807 -2641.24829 5820.00155 -2641.21545 5820.37168 -2641.21545 Z M 5515.62845 -2744.02127 L 5515.74009 -2743.94323 5515.83303 -2744.06443 5516.00871 -2744.15719 5516.20163 -2744.27841 5516.36274 -2744.43952 5516.48396 -2744.63244 5516.55921 -2744.84749 5516.58725 -2745.09636 5516.58725 -2745.41445 5515.32512 -2745.41445 5515.32512 -2744.0539 5515.47021 -2744.0539 5515.62845 -2744.02127 Z M 5621.13415 -2812.76625 L 5621.13415 -2813.47804 5621.10611 -2813.72691 5621.03086 -2813.94196 5620.90964 -2814.13488 5620.74853 -2814.29599 5620.55561 -2814.41721 5620.34056 -2814.49246 5620.08857 -2814.5205 5620.08857 -2812.76625 5621.13415 -2812.76625 Z M 5502.70797 -2716.44785 L 5502.71798 -2716.47628 5502.8436 -2716.60174 5502.98448 -2716.69026 5503.14559 -2716.85137 5503.26681 -2717.04429 5503.34206 -2717.25934 5503.3701 -2717.50821 5503.3701 -2717.72788 5502.00955 -2717.72788 5502.00955 -2716.46575 5502.32764 -2716.46575 5502.50458 -2716.48569 5502.65907 -2716.47286 5502.70797 -2716.44785 Z M 5772.27664 -2618.15375 L 5772.52551 -2618.18179 5772.74056 -2618.25704 5772.93348 -2618.37826 5773.09459 -2618.53937 5773.21581 -2618.73229 5773.29106 -2618.94734 5773.3191 -2619.19621 5773.3191 -2619.41587 5771.95855 -2619.41587 5771.95855 -2618.15375 5772.27664 -2618.15375 Z M 5528.79345 -2776.82813 L 5528.79345 -2778.09025 5528.47536 -2778.09025 5528.22649 -2778.06221 5528.01144 -2777.98696 5527.81852 -2777.86574 5527.65741 -2777.70463 5527.53619 -2777.51171 5527.46094 -2777.29666 5527.4329 -2777.04779 5527.4329 -2776.82813 5528.79345 -2776.82813 Z M 5766.52864 -2618.23275 L 5766.77751 -2618.26079 5766.99256 -2618.33604 5767.18548 -2618.45726 5767.34659 -2618.61837 5767.46781 -2618.81129 5767.54306 -2619.02634 5767.5711 -2619.27521 5767.5711 -2619.49487 5766.21055 -2619.49487 5766.21055 -2618.23275 5766.52864 -2618.23275 Z M 5530.75264 -2779.14375 L 5531.00151 -2779.17179 5531.21656 -2779.24704 5531.40948 -2779.36826 5531.57059 -2779.52937 5531.69181 -2779.72229 5531.76706 -2779.93734 5531.7951 -2780.18621 5531.7951 -2780.40587 5530.43455 -2780.40587 5530.43455 -2779.14375 5530.75264 -2779.14375 Z M 5803.30188 -2602.7559 L 5803.30188 -2604.11645 5802.03975 -2604.11645 5802.03975 -2603.79836 5802.06779 -2603.54949 5802.14304 -2603.33444 5802.26426 -2603.14152 5802.42537 -2602.98041 5802.61829 -2602.85919 5802.83334 -2602.78394 5803.08221 -2602.7559 5803.30188 -2602.7559 Z M 5526.53725 -2598.27155 L 5526.53725 -2598.58964 5526.50921 -2598.83851 5526.43396 -2599.05356 5526.31274 -2599.24648 5526.15163 -2599.40759 5525.95871 -2599.52881 5525.74366 -2599.60406 5525.49479 -2599.6321 5525.27513 -2599.6321 5525.27513 -2598.27155 5526.53725 -2598.27155 Z M 5822.09213 -2621.6611 L 5822.09213 -2620.30055 5823.35425 -2620.30055 5823.35425 -2620.61864 5823.32621 -2620.86751 5823.25096 -2621.08256 5823.12974 -2621.27548 5822.96863 -2621.43659 5822.77571 -2621.55781 5822.56066 -2621.63306 5822.31179 -2621.6611 5822.09213 -2621.6611 Z M 5621.07625 -2822.48855 L 5621.07625 -2822.80664 5621.04821 -2823.05551 5620.97296 -2823.27056 5620.85174 -2823.46348 5620.69063 -2823.62459 5620.49771 -2823.74581 5620.28266 -2823.82106 5620.03379 -2823.8491 5619.81412 -2823.8491 5619.81412 -2822.48855 5621.07625 -2822.48855 Z M 5853.11787 -2769.4029 L 5853.11787 -2770.76345 5851.85575 -2770.76345 5851.85575 -2770.44536 5851.88379 -2770.19649 5851.95904 -2769.98144 5852.08026 -2769.78852 5852.24137 -2769.62741 5852.43429 -2769.50619 5852.64934 -2769.43094 5852.89821 -2769.4029 5853.11787 -2769.4029 Z M 5564.45125 -2782.25455 L 5564.45125 -2782.57264 5564.42321 -2782.82151 5564.34796 -2783.03656 5564.22674 -2783.22948 5564.06563 -2783.39059 5563.87271 -2783.51181 5563.65766 -2783.58706 5563.40879 -2783.6151 5563.18912 -2783.6151 5563.18912 -2782.25455 5564.45125 -2782.25455 Z M 5476.50688 -2714.4989 L 5476.50688 -2715.85945 5475.24475 -2715.85945 5475.24475 -2715.54136 5475.27279 -2715.29249 5475.34804 -2715.07744 5475.46926 -2714.88452 5475.63037 -2714.72341 5475.82329 -2714.60219 5476.03834 -2714.52694 5476.28721 -2714.4989 5476.50688 -2714.4989 Z M 5585.74287 -2801.0239 L 5585.74287 -2802.38445 5584.48075 -2802.38445 5584.48075 -2802.06636 5584.50879 -2801.81749 5584.58404 -2801.60244 5584.70526 -2801.40952 5584.86637 -2801.24841 5585.05929 -2801.12719 5585.27434 -2801.05194 5585.52321 -2801.0239 5585.74287 -2801.0239 Z M 5523.08445 -2776.63113 L 5523.08445 -2777.89325 5522.76636 -2777.89325 5522.51749 -2777.86521 5522.30244 -2777.78996 5522.10952 -2777.66874 5521.94841 -2777.50763 5521.82719 -2777.31471 5521.75194 -2777.09966 5521.7239 -2776.85079 5521.7239 -2776.63113 5523.08445 -2776.63113 Z M 5525.08364 -2779.30075 L 5525.33251 -2779.32879 5525.54756 -2779.40404 5525.74048 -2779.52526 5525.90159 -2779.68637 5526.02281 -2779.87929 5526.09806 -2780.09434 5526.1261 -2780.34321 5526.1261 -2780.56287 5524.76555 -2780.56287 5524.76555 -2779.30075 5525.08364 -2779.30075 Z M 5770.27745 -2618.15375 L 5770.27745 -2619.41587 5768.9169 -2619.41587 5768.9169 -2619.19621 5768.94494 -2618.94734 5769.02019 -2618.73229 5769.14141 -2618.53937 5769.30252 -2618.37826 5769.49544 -2618.25704 5769.71049 -2618.18179 5769.95936 -2618.15375 5770.27745 -2618.15375 Z M 5531.8351 -2776.82813 L 5531.8351 -2777.04779 5531.80706 -2777.29666 5531.73181 -2777.51171 5531.61059 -2777.70463 5531.44948 -2777.86574 5531.25656 -2777.98696 5531.04151 -2778.06221 5530.79264 -2778.09025 5530.47455 -2778.09025 5530.47455 -2776.82813 5531.8351 -2776.82813 Z M 5494.76149 -2716.45479 L 5495.01036 -2716.42675 5495.32845 -2716.42675 5495.32845 -2717.68887 5493.9679 -2717.68887 5493.9679 -2717.46921 5493.99594 -2717.22034 5494.07119 -2717.00529 5494.19241 -2716.81237 5494.35352 -2716.65126 5494.54644 -2716.53004 5494.76149 -2716.45479 Z M 5802.03975 -2606.11564 L 5802.03975 -2605.79755 5803.30188 -2605.79755 5803.30188 -2607.1581 5803.08221 -2607.1581 5802.83334 -2607.13006 5802.61829 -2607.05481 5802.42537 -2606.93359 5802.26426 -2606.77248 5802.14304 -2606.57956 5802.06779 -2606.36451 5802.03975 -2606.11564 Z M 5853.11787 -2772.44455 L 5853.11787 -2773.8051 5852.89821 -2773.8051 5852.64934 -2773.77706 5852.43429 -2773.70181 5852.24137 -2773.58059 5852.08026 -2773.41948 5851.95904 -2773.22656 5851.88379 -2773.01151 5851.85575 -2772.76264 5851.85575 -2772.44455 5853.11787 -2772.44455 Z M 5822.31179 -2617.2589 L 5822.56066 -2617.28694 5822.77571 -2617.36219 5822.96863 -2617.48341 5823.12974 -2617.64452 5823.25096 -2617.83744 5823.32621 -2618.05249 5823.35425 -2618.30136 5823.35425 -2618.61945 5822.09213 -2618.61945 5822.09213 -2617.2589 5822.31179 -2617.2589 Z M 5525.27513 -2596.59045 L 5525.27513 -2595.2299 5525.49479 -2595.2299 5525.74366 -2595.25794 5525.95871 -2595.33319 5526.15163 -2595.45441 5526.31274 -2595.61552 5526.43396 -2595.80844 5526.50921 -2596.02349 5526.53725 -2596.27236 5526.53725 -2596.59045 5525.27513 -2596.59045 Z M 5770.56088 -2721.58055 L 5770.56088 -2722.9411 5770.34121 -2722.9411 5770.09234 -2722.91306 5769.87729 -2722.83781 5769.68437 -2722.71659 5769.52326 -2722.55548 5769.40204 -2722.36256 5769.32679 -2722.14751 5769.29875 -2721.89864 5769.29875 -2721.58055 5770.56088 -2721.58055 Z M 5620.03379 -2819.4469 L 5620.28266 -2819.47494 5620.49771 -2819.55019 5620.69063 -2819.67141 5620.85174 -2819.83252 5620.97296 -2820.02544 5621.04821 -2820.24049 5621.07625 -2820.48936 5621.07625 -2820.80745 5619.81412 -2820.80745 5619.81412 -2819.4469 5620.03379 -2819.4469 Z M 5563.18912 -2780.57345 L 5563.18912 -2779.2129 5563.40879 -2779.2129 5563.65766 -2779.24094 5563.87271 -2779.31619 5564.06563 -2779.43741 5564.22674 -2779.59852 5564.34796 -2779.79144 5564.42321 -2780.00649 5564.45125 -2780.25536 5564.45125 -2780.57345 5563.18912 -2780.57345 Z M 5522.51749 -2779.32879 L 5522.76636 -2779.30075 5523.08445 -2779.30075 5523.08445 -2780.56287 5521.7239 -2780.56287 5521.7239 -2780.34321 5521.75194 -2780.09434 5521.82719 -2779.87929 5521.94841 -2779.68637 5522.10952 -2779.52526 5522.30244 -2779.40404 5522.51749 -2779.32879 Z M 5524.76555 -2777.89325 L 5524.76555 -2776.63113 5526.1261 -2776.63113 5526.1261 -2776.85079 5526.09806 -2777.09966 5526.02281 -2777.31471 5525.90159 -2777.50763 5525.74048 -2777.66874 5525.54756 -2777.78996 5525.33251 -2777.86521 5525.08364 -2777.89325 5524.76555 -2777.89325 Z M 5528.75345 -2779.14375 L 5528.75345 -2780.40587 5527.3929 -2780.40587 5527.3929 -2780.18621 5527.42094 -2779.93734 5527.49619 -2779.72229 5527.61741 -2779.52937 5527.77852 -2779.36826 5527.97144 -2779.24704 5528.18649 -2779.17179 5528.43536 -2779.14375 5528.75345 -2779.14375 Z M 5820.37168 -2645.34827 L 5820.37168 -2646.23473 5818.4744 -2646.23473 5818.49573 -2646.16441 5818.59427 -2645.98006 5818.63616 -2645.85666 5818.63616 -2645.72634 5818.59427 -2645.60294 5818.49573 -2645.41859 5818.4744 -2645.34827 5820.37168 -2645.34827 Z M 5823.33232 -2646.23473 L 5823.33232 -2645.34827 5825.2296 -2645.34827 5825.20827 -2645.41859 5825.10973 -2645.60294 5825.06784 -2645.72634 5825.06784 -2645.85666 5825.10973 -2645.98006 5825.20827 -2646.16441 5825.2296 -2646.23473 5823.33232 -2646.23473 Z M 5825.2296 -2647.32528 L 5825.20827 -2647.39559 5825.10973 -2647.57994 5825.06784 -2647.70334 5825.06784 -2647.83366 5825.10973 -2647.95706 5825.20827 -2648.14141 5825.2296 -2648.21173 5823.33232 -2648.21173 5823.33232 -2647.32528 5825.2296 -2647.32528 Z M 5820.37168 -2647.32528 L 5820.37168 -2648.21173 5818.4744 -2648.21173 5818.49573 -2648.14141 5818.59427 -2647.95706 5818.63616 -2647.83366 5818.63616 -2647.70334 5818.59427 -2647.57994 5818.49573 -2647.39559 5818.4744 -2647.32528 5820.37168 -2647.32528 Z M 5823.33232 -2644.25772 L 5823.33232 -2643.37127 5825.2296 -2643.37127 5825.20827 -2643.44159 5825.10973 -2643.62594 5825.06784 -2643.74934 5825.06784 -2643.87966 5825.10973 -2644.00306 5825.20827 -2644.18741 5825.2296 -2644.25772 5823.33232 -2644.25772 Z M 5818.49573 -2643.44159 L 5818.4744 -2643.37127 5820.37168 -2643.37127 5820.37168 -2644.25772 5818.4744 -2644.25772 5818.49573 -2644.18741 5818.59427 -2644.00306 5818.63616 -2643.87966 5818.63616 -2643.74934 5818.59427 -2643.62594 5818.49573 -2643.44159 Z M 5559.44392 -2817.16938 L 5559.48288 -2817.14015 5559.48288 -2817.93545 5558.22075 -2817.93545 5558.22075 -2817.61736 5558.24879 -2817.36849 5558.30702 -2817.20208 5558.33214 -2817.20911 5558.78214 -2817.24848 5558.85186 -2817.24848 5559.30186 -2817.20911 5559.44392 -2817.16938 Z \"]]~0~gge9684~1~1~2~1~yes~0","ARC~1~2~U6-7~M 5473.2221 -2734.901 A 1.64432 1.64432 0 0 0 5474.38481 -2735.38261~~rep1432~0","ARC~1~2~U6-7~M 5474.38482 -2735.3826 A 1.64432 1.64432 0 0 0 5473.9032 -2734.2199~~rep1433~0","ARC~1.1811~2~SDA~M 5851.63145 -2594.5243 A 1.42571 1.42571 0 0 0 5852.04903 -2593.51617~~rep1434~0","ARC~1.1811~2~SDA~M 5852.04902 -2593.51616 A 1.42571 1.42571 0 0 0 5851.0409 -2593.93375~~rep1435~0","ARC~1.1811~2~SDA~M 5860.82012 -2575.53238 A 1.42571 1.42571 0 0 0 5861.2377 -2576.54051~~rep1436~0","ARC~1.1811~2~SDA~M 5861.2377 -2576.54051 A 1.42571 1.42571 0 0 0 5861.65528 -2575.53238~~rep1437~0","ARC~0.7874~2~SD_DAT3~M 5767.2325 -2747.908 A 1.90095 1.90095 0 0 0 5765.88833 -2747.35122~~rep1438~0","ARC~0.7874~2~SD_DAT3~M 5765.88832 -2747.35123 A 1.90095 1.90095 0 0 0 5766.4451 -2748.6954~~rep1439~0","ARC~0.7874~2~SD_CMD~M 5719.5948 -2745.0734 A 1.90095 1.90095 0 0 0 5718.25063 -2744.51662~~rep1440~0","ARC~0.7874~2~SD_CMD~M 5718.25062 -2744.51663 A 1.90095 1.90095 0 0 0 5718.8074 -2745.8608~~rep1441~0","ARC~0.7874~2~SD_DAT2~M 5733.4924 -2750.6639 A 1.90095 1.90095 0 0 0 5732.14823 -2750.10712~~rep1442~0","ARC~0.7874~2~SD_DAT2~M 5732.14822 -2750.10713 A 1.90095 1.90095 0 0 0 5732.705 -2751.4513~~rep1443~0","ARC~0.7874~2~SD_DAT2~M 5845.70678 -2779.52538 A 1.90095 1.90095 0 0 0 5847.05095 -2778.9686~~rep1444~0","ARC~0.7874~2~SD_DAT2~M 5847.05095 -2778.9686 A 1.90095 1.90095 0 0 0 5845.70678 -2778.41182~~rep1445~0","ARC~0.7874~2~SD_DAT3~M 5845.70678 -2775.19468 A 1.68586 1.68586 0 0 0 5846.89886 -2774.7009~~rep1446~0","ARC~0.7874~2~SD_DAT3~M 5847.20305 -2774.7009 A 2.11605 2.11605 0 0 0 5845.70678 -2774.08112~~rep1447~0","ARC~0.7874~2~SD_DAT3~M 5712.32502 -2618.47758 A 1.90095 1.90095 0 0 0 5712.8818 -2619.82175~~rep1448~0","ARC~0.7874~2~SD_DAT3~M 5712.8818 -2619.82175 A 1.90095 1.90095 0 0 0 5713.43858 -2618.47758~~rep1449~0","ARC~0.7874~2~SD_CMD~M 5845.91358 -2770.93268 A 1.90095 1.90095 0 0 0 5847.25775 -2770.3759~~rep1450~0","ARC~0.7874~2~SD_CMD~M 5847.25775 -2770.3759 A 1.90095 1.90095 0 0 0 5845.91358 -2769.81912~~rep1451~0","ARC~0.7874~2~SD_DAT2~M 5869.27822 -2778.41182 A 1.90095 1.90095 0 0 0 5867.93405 -2778.9686~~rep1452~0","ARC~0.7874~2~SD_DAT2~M 5867.93405 -2778.9686 A 1.90095 1.90095 0 0 0 5869.27822 -2779.52538~~rep1453~0","ARC~0.7874~2~SD_DAT3~M 5869.26252 -2774.14412 A 1.90095 1.90095 0 0 0 5867.91835 -2774.7009~~rep1454~0","ARC~0.7874~2~SD_DAT3~M 5867.91835 -2774.7009 A 1.90095 1.90095 0 0 0 5869.26252 -2775.25768~~rep1455~0","ARC~0.7874~2~SD_CMD~M 5869.30762 -2769.81912 A 1.90095 1.90095 0 0 0 5867.96345 -2770.3759~~rep1456~0","ARC~0.7874~2~SD_CMD~M 5867.96345 -2770.3759 A 1.90095 1.90095 0 0 0 5869.30762 -2770.93268~~rep1457~0","ARC~0.7874~2~SD_CLK~M 5712.5081 -2742.1206 A 1.90095 1.90095 0 0 0 5711.16393 -2741.56382~~rep1458~0","ARC~0.7874~2~SD_CLK~M 5711.16392 -2741.56383 A 1.90095 1.90095 0 0 0 5711.7207 -2742.908~~rep1459~0","ARC~0.7874~2~SD_DAT0~M 5717.8625 -2739.5616 A 1.90095 1.90095 0 0 0 5716.51833 -2739.00482~~rep1460~0","ARC~0.7874~2~SD_DAT0~M 5716.51832 -2739.00483 A 1.90095 1.90095 0 0 0 5717.0751 -2740.349~~rep1461~0","ARC~0.7874~2~SD_DAT1~M 5752.03569 -2736.9631 A 1.90095 1.90095 0 0 0 5750.69152 -2736.40633~~rep1462~0","ARC~0.7874~2~SD_DAT1~M 5750.69152 -2736.40633 A 1.90095 1.90095 0 0 0 5751.2483 -2737.75051~~rep1463~0","ARC~0.7874~2~SD_DAT1~M 5713.09712 -2628.50178 A 1.90095 1.90095 0 0 0 5713.6539 -2629.84595~~rep1464~0","ARC~0.7874~2~SD_DAT1~M 5713.6539 -2629.84595 A 1.90095 1.90095 0 0 0 5714.21068 -2628.50178~~rep1465~0","ARC~0.7874~2~SD_CD~M 5722.4688 -2734.3647 A 1.90095 1.90095 0 0 0 5721.12462 -2733.80793~~rep1466~0","ARC~0.7874~2~SD_CD~M 5721.12462 -2733.80793 A 1.90095 1.90095 0 0 0 5721.6814 -2735.1521~~rep1467~0","ARC~0.7874~2~SD_DAT0~M 5672.24738 -2638.46758 A 1.90095 1.90095 0 0 0 5673.59155 -2637.9108~~rep1468~0","ARC~0.7874~2~SD_DAT0~M 5673.59155 -2637.9108 A 1.90095 1.90095 0 0 0 5672.24738 -2637.35402~~rep1469~0","ARC~0.7874~2~SD_CMD~M 5672.24188 -2648.46258 A 1.90095 1.90095 0 0 0 5673.58605 -2647.9058~~rep1470~0","ARC~0.7874~2~SD_CMD~M 5673.58605 -2647.9058 A 1.90095 1.90095 0 0 0 5672.24188 -2647.34902~~rep1471~0","ARC~0.7874~2~SD_DAT2~M 5672.23188 -2628.47258 A 1.90095 1.90095 0 0 0 5673.57605 -2627.9158~~rep1472~0","ARC~0.7874~2~SD_DAT2~M 5673.57605 -2627.9158 A 1.90095 1.90095 0 0 0 5672.23188 -2627.35902~~rep1473~0","ARC~0.7874~2~SD_CD~M 5672.17868 -2618.47758 A 1.90095 1.90095 0 0 0 5673.52285 -2617.9208~~rep1474~0","ARC~0.7874~2~SD_CD~M 5673.52285 -2617.9208 A 1.90095 1.90095 0 0 0 5672.17868 -2617.36402~~rep1475~0","ARC~0.7874~2~SD_CLK~M 5672.35558 -2658.45758 A 1.90095 1.90095 0 0 0 5673.69975 -2657.9008~~rep1476~0","ARC~0.7874~2~SD_CLK~M 5673.69975 -2657.9008 A 1.90095 1.90095 0 0 0 5672.35558 -2657.34402~~rep1477~0","ARC~0.7874~2~TP_D~M 5789.90812 -2714.09228 A 1.90095 1.90095 0 0 0 5790.4649 -2715.43645~~rep1478~0","ARC~0.7874~2~TP_D~M 5790.4649 -2715.43645 A 1.90095 1.90095 0 0 0 5791.02168 -2714.09228~~rep1479~0","ARC~0.7874~2~SW_D~M 5500.57302 -2711.67952 A 1.90095 1.90095 0 0 0 5499.22885 -2712.2363~~rep1480~0","ARC~0.7874~2~SW_D~M 5499.22885 -2712.2363 A 1.90095 1.90095 0 0 0 5500.57302 -2712.79308~~rep1481~0","ARC~0.7874~2~TP_U~M 5748.10828 -2724.01358 A 1.90095 1.90095 0 0 0 5749.45245 -2723.4568~~rep1482~0","ARC~0.7874~2~TP_U~M 5749.45245 -2723.4568 A 1.90095 1.90095 0 0 0 5748.10828 -2722.90002~~rep1483~0","ARC~0.7874~2~TP_U~M 5778.45142 -2722.90002 A 1.90095 1.90095 0 0 0 5777.10725 -2723.4568~~rep1484~0","ARC~0.7874~2~TP_U~M 5777.10725 -2723.4568 A 1.90095 1.90095 0 0 0 5778.45142 -2724.01358~~rep1485~0","ARC~0.7874~2~TP_L~M 5750.39178 -2721.25768 A 1.90095 1.90095 0 0 0 5751.73595 -2720.7009~~rep1486~0","ARC~0.7874~2~TP_L~M 5751.73595 -2720.7009 A 1.90095 1.90095 0 0 0 5750.39178 -2720.14412~~rep1487~0","ARC~0.7874~2~TP_L~M 5781.24672 -2720.14412 A 1.90095 1.90095 0 0 0 5779.90255 -2720.7009~~rep1488~0","ARC~0.7874~2~TP_L~M 5779.90255 -2720.7009 A 1.90095 1.90095 0 0 0 5781.24672 -2721.25768~~rep1489~0","ARC~0.7874~2~TP_D~M 5753.34448 -2718.69858 A 1.90095 1.90095 0 0 0 5754.68865 -2718.1418~~rep1490~0","ARC~0.7874~2~TP_D~M 5754.68865 -2718.1418 A 1.90095 1.90095 0 0 0 5753.34448 -2717.58502~~rep1491~0","ARC~0.7874~2~TP_D~M 5784.91938 -2718.65918 A 1.90095 1.90095 0 0 0 5786.26355 -2718.1024~~rep1492~0","ARC~0.7874~2~TP_D~M 5786.26355 -2718.1024 A 1.90095 1.90095 0 0 0 5784.91938 -2717.54562~~rep1493~0","ARC~0.7874~2~TP_R~M 5786.24672 -2714.78972 A 1.90095 1.90095 0 0 0 5784.90255 -2715.3465~~rep1494~0","ARC~0.7874~2~TP_R~M 5784.90255 -2715.3465 A 1.90095 1.90095 0 0 0 5786.24672 -2715.90328~~rep1495~0","ARC~0.7874~2~TP_R~M 5756.10047 -2715.86397 A 1.76677 1.76677 0 0 0 5757.34977 -2715.3465~~rep1496~0","ARC~0.7874~2~TP_R~M 5757.53953 -2715.3465 A 2.03513 2.03513 0 0 0 5756.10048 -2714.75042~~rep1497~0","ARC~0.7874~2~H1_CPLD_TCK~M 5671.13978 -2693.52992 A 1.90095 1.90095 0 0 0 5670.583 -2692.18575~~rep1498~0","ARC~0.7874~2~H1_CPLD_TCK~M 5670.583 -2692.18575 A 1.90095 1.90095 0 0 0 5670.02622 -2693.52992~~rep1499~0","ARC~0.7874~2~PP_CPLD_TMS~M 5708.72702 -2642.24188 A 1.90095 1.90095 0 0 0 5709.2838 -2643.58605~~rep1500~0","ARC~0.7874~2~PP_CPLD_TMS~M 5709.2838 -2643.58605 A 1.90095 1.90095 0 0 0 5709.84058 -2642.24188~~rep1501~0","ARC~0.7874~2~PP_CPLD_TMS~M 5715.23028 -2709.16222 A 1.90095 1.90095 0 0 0 5714.6735 -2707.81805~~rep1502~0","ARC~0.7874~2~PP_CPLD_TMS~M 5714.6735 -2707.81805 A 1.90095 1.90095 0 0 0 5714.11672 -2709.16222~~rep1503~0","ARC~0.7874~2~PP_CPLD_TMS~M 5714.11672 -2710.27578 A 1.90095 1.90095 0 0 0 5714.6735 -2711.61995~~rep1504~0","ARC~0.7874~2~PP_CPLD_TMS~M 5714.6735 -2711.61995 A 1.90095 1.90095 0 0 0 5715.23028 -2710.27578~~rep1505~0","ARC~0.7874~2~H1_CPLD_TCK~M 5670.02622 -2688.54108 A 1.90095 1.90095 0 0 0 5670.583 -2689.88525~~rep1506~0","ARC~0.7874~2~H1_CPLD_TCK~M 5670.583 -2689.88525 A 1.90095 1.90095 0 0 0 5671.13978 -2688.54108~~rep1507~0","ARC~0.7874~2~PP_CPLD_TDO~M 5708.72702 -2652.28128 A 1.90095 1.90095 0 0 0 5709.2838 -2653.62545~~rep1508~0","ARC~0.7874~2~PP_CPLD_TDO~M 5709.2838 -2653.62545 A 1.90095 1.90095 0 0 0 5709.84058 -2652.28128~~rep1509~0","ARC~0.7874~2~PP_CPLD_TDO~M 5726.37198 -2699.98902 A 1.90095 1.90095 0 0 0 5725.8152 -2698.64485~~rep1510~0","ARC~0.7874~2~PP_CPLD_TDO~M 5725.8152 -2698.64485 A 1.90095 1.90095 0 0 0 5725.25842 -2699.98902~~rep1511~0","ARC~0.7874~2~PP_CPLD_TDO~M 5725.25842 -2701.10258 A 1.90095 1.90095 0 0 0 5725.8152 -2702.44675~~rep1512~0","ARC~0.7874~2~PP_CPLD_TDO~M 5725.8152 -2702.44675 A 1.90095 1.90095 0 0 0 5726.37198 -2701.10258~~rep1513~0","ARC~1~2~NETK2_3~M 5476.83751 -2761.24739 A 1.64432 1.64432 0 0 0 5476.3559 -2760.08468~~rep1514~0","ARC~1~2~NETK2_3~M 5476.3559 -2760.08468 A 1.64432 1.64432 0 0 0 5475.87429 -2761.24739~~rep1515~0","ARC~1.1811~2~NETK2_3~M 5476.77348 -2761.31142 A 1.42571 1.42571 0 0 0 5476.3559 -2760.30329~~rep1516~0","ARC~1.1811~2~NETK2_3~M 5476.3559 -2760.30329 A 1.42571 1.42571 0 0 0 5475.93832 -2761.31142~~rep1517~0","ARC~0.7874~2~RESET#~M 5530.97288 -2590.17418 A 1.90095 1.90095 0 0 0 5532.31705 -2589.6174~~rep1518~0","ARC~0.7874~2~RESET#~M 5532.31705 -2589.6174 A 1.90095 1.90095 0 0 0 5530.97288 -2589.06062~~rep1519~0","ARC~0.7874~2~RESET#~M 5717.76642 -2586.63802 A 1.56943 1.56943 0 0 0 5716.65667 -2587.0977~~rep1520~0","ARC~0.7874~2~RESET#~M 5716.18783 -2587.0977 A 2.23247 2.23247 0 0 0 5717.76642 -2587.75158~~rep1521~0","ARC~0.7874~2~MCU_LCD_RD~M 5541.64218 -2590.33168 A 1.90095 1.90095 0 0 0 5542.98635 -2589.7749~~rep1522~0","ARC~0.7874~2~MCU_LCD_RD~M 5542.98635 -2589.7749 A 1.90095 1.90095 0 0 0 5541.64218 -2589.21812~~rep1523~0","ARC~0.7874~2~MCU_LCD_RD~M 5721.44612 -2589.21812 A 1.90095 1.90095 0 0 0 5720.10195 -2589.7749~~rep1524~0","ARC~0.7874~2~MCU_LCD_RD~M 5720.10195 -2589.7749 A 1.90095 1.90095 0 0 0 5721.44612 -2590.33168~~rep1525~0","ARC~0.7874~2~MCU_LCD_TE~M 5541.56348 -2555.64658 A 1.90095 1.90095 0 0 0 5542.90765 -2555.0898~~rep1526~0","ARC~0.7874~2~MCU_LCD_TE~M 5542.90765 -2555.0898 A 1.90095 1.90095 0 0 0 5541.56348 -2554.53302~~rep1527~0","ARC~0.7874~2~MCU_IO_STBX~M 5610.97288 -2556.27658 A 1.90095 1.90095 0 0 0 5612.31705 -2555.7198~~rep1528~0","ARC~0.7874~2~MCU_IO_STBX~M 5612.31705 -2555.7198 A 1.90095 1.90095 0 0 0 5610.97288 -2555.16302~~rep1529~0","ARC~0.7874~2~MCU_ADDR~M 5607.46898 -2593.75688 A 1.90095 1.90095 0 0 0 5608.81315 -2593.2001~~rep1530~0","ARC~0.7874~2~MCU_ADDR~M 5608.81315 -2593.2001 A 1.90095 1.90095 0 0 0 5607.46898 -2592.64332~~rep1531~0","ARC~0.7874~2~MCU_ADDR~M 5730.65612 -2597.50632 A 1.69644 1.69644 0 0 0 5729.45656 -2598.0032~~rep1532~0","ARC~0.7874~2~MCU_ADDR~M 5729.16734 -2598.0032 A 2.10546 2.10546 0 0 0 5730.65613 -2598.61987~~rep1533~0","ARC~0.7874~2~P2_8~M 5627.50828 -2595.76478 A 1.90095 1.90095 0 0 0 5628.85245 -2595.208~~rep1534~0","ARC~0.7874~2~P2_8~M 5628.85245 -2595.208 A 1.90095 1.90095 0 0 0 5627.50828 -2594.65122~~rep1535~0","ARC~0.7874~2~P2_8~M 5732.93962 -2594.63222 A 1.96582 1.96582 0 0 0 5731.54958 -2595.208~~rep1536~0","ARC~0.7874~2~P2_8~M 5731.64132 -2595.208 A 1.83608 1.83608 0 0 0 5732.93962 -2595.74578~~rep1537~0","ARC~0.7874~2~REF_EN~M 5752.89082 -2551.04028 A 1.90095 1.90095 0 0 0 5753.4476 -2552.38445~~rep1538~0","ARC~0.7874~2~REF_EN~M 5753.4476 -2552.38445 A 1.90095 1.90095 0 0 0 5754.00438 -2551.04028~~rep1539~0","ARC~0.7874~2~REF_EN~M 5754.00438 -2562.40712 A 1.90095 1.90095 0 0 0 5753.4476 -2561.06295~~rep1540~0","ARC~0.7874~2~REF_EN~M 5753.4476 -2561.06295 A 1.90095 1.90095 0 0 0 5752.89082 -2562.40712~~rep1541~0","ARC~0.7874~2~MCU_LCD_WR~M 5617.46898 -2593.24508 A 1.90095 1.90095 0 0 0 5618.81315 -2592.6883~~rep1542~0","ARC~0.7874~2~MCU_LCD_WR~M 5618.81315 -2592.6883 A 1.90095 1.90095 0 0 0 5617.46898 -2592.13152~~rep1543~0","ARC~0.7874~2~MCU_LCD_WR~M 5784.42622 -2592.13152 A 1.90095 1.90095 0 0 0 5783.08205 -2592.6883~~rep1544~0","ARC~0.7874~2~MCU_LCD_WR~M 5783.08205 -2592.6883 A 1.90095 1.90095 0 0 0 5784.42622 -2593.24508~~rep1545~0","ARC~0.7874~2~MCU_DIR~M 5621.40598 -2555.88288 A 1.90095 1.90095 0 0 0 5622.75015 -2555.3261~~rep1546~0","ARC~0.7874~2~MCU_DIR~M 5622.75015 -2555.3261 A 1.90095 1.90095 0 0 0 5621.40598 -2554.76932~~rep1547~0","ARC~0.7874~2~MCU_DIR~M 5788.26482 -2567.15122 A 1.90095 1.90095 0 0 0 5786.92065 -2567.708~~rep1548~0","ARC~0.7874~2~MCU_DIR~M 5786.92065 -2567.708 A 1.90095 1.90095 0 0 0 5788.26482 -2568.26478~~rep1549~0","ARC~0.7874~2~SCL~M 5820.56282 -2601.81338 A 1.8972 1.8972 0 0 0 5821.1185 -2603.1549~~rep1550~0","ARC~0.7874~2~SCL~M 5821.1185 -2603.16021 A 1.90471 1.90471 0 0 0 5821.67638 -2601.81338~~rep1551~0","ARC~1.1811~2~NETM1_2~M 5552.24668 -2552.33678 A 1.42571 1.42571 0 0 0 5553.25481 -2551.9192~~rep1552~0","ARC~1.1811~2~NETM1_2~M 5553.25481 -2551.9192 A 1.42571 1.42571 0 0 0 5552.24668 -2551.50162~~rep1553~0","ARC~1~2~I2S0_WS~M 5587.23001 -2618.19011 A 1.64432 1.64432 0 0 0 5588.39272 -2617.7085~~rep1554~0","ARC~1~2~I2S0_WS~M 5588.39272 -2617.7085 A 1.64432 1.64432 0 0 0 5587.23001 -2617.22689~~rep1555~0","ARC~1.9685~2~VBAT~M 5808.76188 -2567.07102 A 1.90095 1.90095 0 0 0 5808.2051 -2565.72685~~rep1556~0","ARC~1.9685~2~VBAT~M 5808.2051 -2565.72685 A 1.90095 1.90095 0 0 0 5807.64832 -2567.07102~~rep1557~0","ARC~1~2~I2S0_MCLK~M 5597.34391 -2621.02891 A 1.64432 1.64432 0 0 0 5598.50662 -2620.5473~~rep1558~0","ARC~1~2~I2S0_MCLK~M 5598.50662 -2620.5473 A 1.64432 1.64432 0 0 0 5597.34391 -2620.06569~~rep1559~0","ARC~1~2~I2S0_TX_SDA~M 5577.35391 -2612.49091 A 1.54872 1.54872 0 0 0 5578.44902 -2612.0373~~rep1560~0","ARC~1~2~I2S0_TX_SDA~M 5578.58422 -2612.0373 A 1.73992 1.73992 0 0 0 5577.35391 -2611.52769~~rep1561~0","ARC~1~2~I2S0_SCK~M 5592.26941 -2609.29251 A 1.64432 1.64432 0 0 0 5593.43212 -2608.8109~~rep1562~0","ARC~1~2~I2S0_SCK~M 5593.43212 -2608.8109 A 1.64432 1.64432 0 0 0 5592.26941 -2608.32929~~rep1563~0","ARC~0.7874~2~I2S0_SCK~M 5592.34458 -2609.36768 A 1.90095 1.90095 0 0 0 5593.68875 -2608.8109~~rep1564~0","ARC~0.7874~2~I2S0_SCK~M 5593.68875 -2608.8109 A 1.90095 1.90095 0 0 0 5592.34458 -2608.25412~~rep1565~0","ARC~1.9685~2~+3V3~M 5811.80355 -2711.0946 A 4.07724 4.07724 0 0 0 5810.60935 -2713.97764~~rep1566~0","ARC~1.9685~2~+3V3~M 5811.8047 -2711.1158 A 3.07169 3.07169 0 0 0 5810.92289 -2713.6187~~rep1567~0","ARC~1.9685~2~+3V3~M 5811.8047 -2711.1158 A 3.07169 3.07169 0 0 0 5810.92289 -2713.6187~~rep1568~0","ARC~1~2~NETR20_1~M 5644.02389 -2800.47831 A 1.37528 1.37528 0 0 0 5644.4267 -2801.45078~~rep1569~0","ARC~1~2~NETR20_1~M 5644.4267 -2801.83126 A 1.91336 1.91336 0 0 0 5644.98711 -2800.47831~~rep1570~0","ARC~1~2~NETR20_1~M 5644.90831 -2807.46789 A 1.64432 1.64432 0 0 0 5644.4267 -2806.30518~~rep1571~0","ARC~1~2~NETR20_1~M 5644.4267 -2806.30518 A 1.64432 1.64432 0 0 0 5643.94509 -2807.46789~~rep1572~0","ARC~1~2~I2S0_WS~M 5659.55401 -2807.46789 A 1.5098 1.5098 0 0 0 5659.1118 -2806.4003~~rep1573~0","ARC~1~2~I2S0_WS~M 5659.1118 -2806.21006 A 1.77884 1.77884 0 0 0 5658.59079 -2807.46789~~rep1574~0","ARC~1~2~H1_CPLD_TDI~M 5669.47531 -2802.42849 A 1.64432 1.64432 0 0 0 5668.9937 -2801.26578~~rep1575~0","ARC~1~2~H1_CPLD_TDI~M 5668.9937 -2801.26578 A 1.64432 1.64432 0 0 0 5668.51209 -2802.42849~~rep1576~0","ARC~1~2~H1_CPLD_TDI~M 5668.51209 -2698.39171 A 1.64432 1.64432 0 0 0 5668.9937 -2699.55442~~rep1577~0","ARC~1~2~H1_CPLD_TDI~M 5668.9937 -2699.55442 A 1.64432 1.64432 0 0 0 5669.47531 -2698.39171~~rep1578~0","ARC~1~2~I2S0_SCK~M 5666.32561 -2792.38909 A 1.64432 1.64432 0 0 0 5665.844 -2791.22638~~rep1579~0","ARC~1~2~I2S0_SCK~M 5665.844 -2791.22638 A 1.64432 1.64432 0 0 0 5665.36239 -2792.38909~~rep1580~0","ARC~1~2~I2S0_TX_SDA~M 5662.93981 -2797.50719 A 1.64432 1.64432 0 0 0 5662.4582 -2796.34448~~rep1581~0","ARC~1~2~I2S0_TX_SDA~M 5662.4582 -2796.34448 A 1.64432 1.64432 0 0 0 5661.97659 -2797.50719~~rep1582~0","ARC~1~2~I2S0_MCLK~M 5656.48311 -2772.60379 A 1.64432 1.64432 0 0 0 5656.0015 -2771.44108~~rep1583~0","ARC~1~2~I2S0_MCLK~M 5656.0015 -2771.44108 A 1.64432 1.64432 0 0 0 5655.51989 -2772.60379~~rep1584~0","ARC~1~2~RHPOUT~M 5520.32309 -2769.10041 A 1.64432 1.64432 0 0 0 5520.8047 -2770.26312~~rep1585~0","ARC~1~2~RHPOUT~M 5520.8047 -2770.26312 A 1.64432 1.64432 0 0 0 5521.28631 -2769.10041~~rep1586~0","ARC~1~2~RHPOUT~M 5623.35459 -2817.86159 A 1.64432 1.64432 0 0 0 5622.19188 -2818.3432~~rep1587~0","ARC~1~2~RHPOUT~M 5622.19188 -2818.3432 A 1.64432 1.64432 0 0 0 5623.35459 -2818.82481~~rep1588~0","ARC~1~2~LHPOUT~M 5521.0015 -2789.9298 A 1.64432 1.64432 0 0 0 5522.16421 -2790.41141~~rep1589~0","ARC~1~2~LHPOUT~M 5522.16421 -2790.41141 A 1.64432 1.64432 0 0 0 5521.6826 -2789.2487~~rep1590~0","ARC~1~2~NETK2_1~M 5572.9818 -2815.5873 A 1.64432 1.64432 0 0 0 5573.46341 -2814.42459~~rep1591~0","ARC~1~2~NETK2_1~M 5573.46341 -2814.42459 A 1.64432 1.64432 0 0 0 5572.3007 -2814.9062~~rep1592~0","ARC~1~2~RHPOUT_SPK~M 5519.482 -2758.09 A 1.64432 1.64432 0 0 0 5520.6447 -2758.57162~~rep1593~0","ARC~1~2~RHPOUT_SPK~M 5520.6447 -2758.57162 A 1.64432 1.64432 0 0 0 5520.1631 -2757.4089~~rep1594~0","ARC~1~2~RHPOUT_SPK~M 5573.90579 -2801.08989 A 1.77884 1.77884 0 0 0 5572.64796 -2801.6109~~rep1595~0","ARC~1~2~RHPOUT_SPK~M 5572.8382 -2801.6109 A 1.5098 1.5098 0 0 0 5573.90579 -2802.05311~~rep1596~0","ARC~1.1811~2~+3V3~M 5639.90582 -2777.28248 A 1.45576 1.45576 0 0 0 5640.3322 -2778.31186~~rep1597~0","ARC~1.1811~2~+3V3~M 5640.3322 -2778.26937 A 1.39567 1.39567 0 0 0 5640.74098 -2777.28248~~rep1598~0","ARC~1.1811~2~+3V3~M 5640.71048 -2807.68942 A 1.29154 1.29154 0 0 0 5640.3322 -2806.77616~~rep1599~0","ARC~1.1811~2~+3V3~M 5640.3322 -2806.58641 A 1.55989 1.55989 0 0 0 5639.87532 -2807.68942~~rep1600~0","ARC~1~2~+3V3~M 5617.07341 -2816.22401 A 1.64432 1.64432 0 0 0 5618.23612 -2815.7424~~rep1601~0","ARC~1~2~+3V3~M 5618.23612 -2815.7424 A 1.64432 1.64432 0 0 0 5617.07341 -2815.26079~~rep1602~0","ARC~0.7874~2~SCL~M 5597.41322 -2795.15978 A 1.90095 1.90095 0 0 0 5597.97 -2796.50395~~rep1603~0","ARC~0.7874~2~SCL~M 5597.97 -2796.50395 A 1.90095 1.90095 0 0 0 5598.52678 -2795.15978~~rep1604~0","ARC~0.7874~2~SDA~M 5594.61802 -2798.30938 A 1.90095 1.90095 0 0 0 5595.1748 -2799.65355~~rep1605~0","ARC~0.7874~2~SDA~M 5595.1748 -2799.65355 A 1.90095 1.90095 0 0 0 5595.73158 -2798.30938~~rep1606~0","ARC~1~2~+3V3~M 5671.46479 -2815.22379 A 1.77065 1.77065 0 0 0 5670.21275 -2815.7424~~rep1607~0","ARC~1~2~+3V3~M 5670.39141 -2815.7424 A 1.51799 1.51799 0 0 0 5671.46479 -2816.18701~~rep1608~0","ARC~0.7874~2~SCL~M 5736.0724 -2794.13352 A 1.90095 1.90095 0 0 0 5735.51563 -2795.47769~~rep1609~0","ARC~0.7874~2~SCL~M 5735.51564 -2795.47768 A 1.90095 1.90095 0 0 0 5736.85981 -2794.9209~~rep1610~0","ARC~0.7874~2~SCL~M 5737.6472 -2794.1335 A 1.90095 1.90095 0 0 0 5738.20398 -2792.78932~~rep1611~0","ARC~0.7874~2~SCL~M 5738.20397 -2792.78933 A 1.90095 1.90095 0 0 0 5736.8598 -2793.3461~~rep1612~0","ARC~0.7874~2~SDA~M 5739.8306 -2796.5697 A 2.09143 2.09143 0 0 0 5739.21803 -2798.04856~~rep1613~0","ARC~0.7874~2~SDA~M 5739.40852 -2797.85809 A 1.71047 1.71047 0 0 0 5740.618 -2797.3571~~rep1614~0","ARC~0.7874~2~SDA~M 5741.4054 -2796.5697 A 1.71047 1.71047 0 0 0 5741.90639 -2795.36022~~rep1615~0","ARC~0.7874~2~SDA~M 5742.09686 -2795.16973 A 2.09143 2.09143 0 0 0 5740.618 -2795.7823~~rep1616~0","ARC~0.7874~2~PP_CPLD_TDO~M 5763.6499 -2753.1836 A 1.90095 1.90095 0 0 0 5762.30573 -2752.62683~~rep1617~0","ARC~0.7874~2~PP_CPLD_TDO~M 5762.30572 -2752.62682 A 1.90095 1.90095 0 0 0 5762.8625 -2753.971~~rep1618~0","ARC~1~2~PP_CPLD_TDO~M 5792.76189 -2754.45261 A 1.51731 1.51731 0 0 0 5793.2063 -2755.52551~~rep1619~0","ARC~1~2~PP_CPLD_TDO~M 5793.2063 -2755.70513 A 1.77133 1.77133 0 0 0 5793.72511 -2754.45261~~rep1620~0","ARC~0.7874~2~H1_CPLD_TCK~M 5722.07862 -2703.86518 A 1.90095 1.90095 0 0 0 5722.6354 -2705.20935~~rep1621~0","ARC~0.7874~2~H1_CPLD_TCK~M 5722.6354 -2705.20935 A 1.90095 1.90095 0 0 0 5723.19218 -2703.86518~~rep1622~0","ARC~0.7874~2~H1_CPLD_TCK~M 5762.4294 -2756.3726 A 1.90095 1.90095 0 0 0 5761.08523 -2755.81582~~rep1623~0","ARC~0.7874~2~H1_CPLD_TCK~M 5761.08522 -2755.81583 A 1.90095 1.90095 0 0 0 5761.642 -2757.16~~rep1624~0","ARC~1~2~H1_CPLD_TCK~M 5805.36239 -2757.72241 A 1.64432 1.64432 0 0 0 5805.844 -2758.88512~~rep1625~0","ARC~1~2~H1_CPLD_TCK~M 5805.844 -2758.88512 A 1.64432 1.64432 0 0 0 5806.32561 -2757.72241~~rep1626~0","ARC~1~2~H1_CPLD_TCK~M 5805.36239 -2757.72241 A 1.64432 1.64432 0 0 0 5805.844 -2758.88512~~rep1627~0","ARC~1~2~H1_CPLD_TCK~M 5805.844 -2758.88512 A 1.64432 1.64432 0 0 0 5806.32561 -2757.72241~~rep1628~0","ARC~0.7874~2~H1_CPLD_TDI~M 5718.37152 -2706.68948 A 1.90095 1.90095 0 0 0 5718.9283 -2708.03365~~rep1629~0","ARC~0.7874~2~H1_CPLD_TDI~M 5718.9283 -2708.03365 A 1.90095 1.90095 0 0 0 5719.48508 -2706.68948~~rep1630~0","ARC~0.7874~2~H1_CPLD_TDI~M 5754.2011 -2753.7348 A 1.90095 1.90095 0 0 0 5752.85693 -2753.17802~~rep1631~0","ARC~0.7874~2~H1_CPLD_TDI~M 5752.85692 -2753.17803 A 1.90095 1.90095 0 0 0 5753.4137 -2754.5222~~rep1632~0","ARC~0.7874~2~PP_CPLD_TMS~M 5756.2877 -2761.412 A 1.90095 1.90095 0 0 0 5754.94353 -2760.85522~~rep1633~0","ARC~0.7874~2~PP_CPLD_TMS~M 5754.94352 -2760.85523 A 1.90095 1.90095 0 0 0 5755.5003 -2762.1994~~rep1634~0","ARC~1~2~PP_CPLD_TMS~M 5782.38089 -2762.68101 A 1.64432 1.64432 0 0 0 5782.8625 -2763.84372~~rep1635~0","ARC~1~2~PP_CPLD_TMS~M 5782.8625 -2763.84372 A 1.64432 1.64432 0 0 0 5783.34411 -2762.68101~~rep1636~0","ARC~1~2~PP_CPLD_TMS~M 5782.38089 -2762.68101 A 1.64432 1.64432 0 0 0 5782.8625 -2763.84372~~rep1637~0","ARC~1~2~PP_CPLD_TMS~M 5782.8625 -2763.84372 A 1.64432 1.64432 0 0 0 5783.34411 -2762.68101~~rep1638~0","ARC~0.7874~2~SDA~M 5823.19952 -2598.23068 A 1.90095 1.90095 0 0 0 5823.7563 -2599.57485~~rep1639~0","ARC~0.7874~2~SDA~M 5823.7563 -2599.57485 A 1.90095 1.90095 0 0 0 5824.31308 -2598.23068~~rep1640~0","ARC~1~2~U6-9~M 5486.2479 -2742.3846 A 1.64432 1.64432 0 0 0 5485.08519 -2741.90299~~rep1641~0","ARC~1~2~U6-9~M 5485.08519 -2741.90299 A 1.64432 1.64432 0 0 0 5485.5668 -2743.0657~~rep1642~0","ARC~0.7874~2~VIN~M 5487.87366 -2738.77132 A 0.56754 0.56754 0 0 0 5487.3828 -2739.13658~~rep1643~0","ARC~0.7874~2~VIN~M 5487.3828 -2739.13658 A 0.56754 0.56754 0 0 0 5487.92009 -2739.42931~~rep1644~0","ARC~0.7874~2~VIN~M 5486.78604 -2738.41621 A 2.45136 2.45136 0 0 0 5488.6101 -2739.05~~rep1645~0","ARC~0.7874~2~VIN~M 5488.38646 -2739.80498 A 1.52303 1.52303 0 0 0 5487.34519 -2738.72859~~rep1646~0","ARC~0.7874~2~VIN~M 5488.86691 -2739.79435 A 1.76372 1.76372 0 0 0 5487.04452 -2739.37419~~rep1647~0","ARC~0.7874~2~VIN~M 5488.6101 -2739.05 A 2.37691 2.37691 0 0 0 5486.15412 -2738.48376~~rep1648~0","ARC~0.7874~2~VIN~M 5488.35329 -2738.30565 A 2.99009 2.99009 0 0 0 5485.26374 -2737.59333~~rep1649~0","ARC~0.7874~2~VIN~M 5488.17737 -2738.39216 A 1.90074 1.90074 0 0 0 5486.74855 -2738.66568~~rep1650~0","ARC~0.7874~2~VIN~M 5486.74826 -2738.66562 A 1.90116 1.90116 0 0 0 5487.95226 -2739.48273~~rep1651~0","ARC~0.7874~2~VIN~M 5488.17737 -2738.39216 A 1.90074 1.90074 0 0 0 5486.74855 -2738.66568~~rep1652~0","ARC~0.7874~2~VIN~M 5486.74826 -2738.66562 A 1.90116 1.90116 0 0 0 5487.95226 -2739.48273~~rep1653~0","ARC~0.7874~2~VIN~M 5488.38645 -2739.80497 A 1.52296 1.52296 0 0 0 5487.34524 -2738.72862~~rep1654~0","ARC~0.7874~2~VIN~M 5490.1062 -2738.21297 A 1.63605 1.63605 0 0 0 5488.73995 -2739.82662~~rep1655~0","ARC~0.7874~2~VIN~M 5490.1062 -2737.28299 A 1.79154 1.79154 0 0 0 5488.6101 -2739.05~~rep1656~0","ARC~0.7874~2~VIN~M 5488.88112 -2739.78929 A 1.29746 1.29746 0 0 0 5487.27319 -2739.14958~~rep1657~0","ARC~0.7874~2~VIN~M 5488.6101 -2739.05 A 1.39531 1.39531 0 0 0 5486.88091 -2738.36204~~rep1658~0","ARC~0.7874~2~VIN~M 5488.38646 -2739.80498 A 1.52303 1.52303 0 0 0 5487.34519 -2738.72859~~rep1659~0","ARC~0.7874~2~VIN~M 5488.86691 -2739.79435 A 1.76372 1.76372 0 0 0 5487.04452 -2739.37419~~rep1660~0","ARC~0.7874~2~VIN~M 5488.6101 -2739.05 A 2.37691 2.37691 0 0 0 5486.15412 -2738.48376~~rep1661~0","ARC~0.7874~2~VIN~M 5488.35329 -2738.30565 A 2.99009 2.99009 0 0 0 5485.26374 -2737.59333~~rep1662~0","ARC~0.7874~2~VIN~M 5488.17737 -2738.39216 A 1.90074 1.90074 0 0 0 5486.74855 -2738.66568~~rep1663~0","ARC~0.7874~2~VIN~M 5486.74826 -2738.66562 A 1.90116 1.90116 0 0 0 5487.95226 -2739.48273~~rep1664~0","ARC~0.7874~2~VIN~M 5488.17737 -2738.39216 A 1.90074 1.90074 0 0 0 5486.74855 -2738.66568~~rep1665~0","ARC~0.7874~2~VIN~M 5486.74826 -2738.66562 A 1.90116 1.90116 0 0 0 5487.95226 -2739.48273~~rep1666~0","ARC~0.7874~2~VIN~M 5488.38645 -2739.80497 A 1.52296 1.52296 0 0 0 5487.34524 -2738.72862~~rep1667~0","ARC~0.7874~2~VIN~M 5490.1062 -2738.21297 A 1.63605 1.63605 0 0 0 5488.73995 -2739.82662~~rep1668~0","ARC~0.7874~2~VIN~M 5490.1062 -2737.28299 A 1.79154 1.79154 0 0 0 5488.6101 -2739.05~~rep1669~0","ARC~0.7874~2~VIN~M 5488.88112 -2739.78929 A 1.29746 1.29746 0 0 0 5487.27319 -2739.14958~~rep1670~0","ARC~0.7874~2~VIN~M 5488.6101 -2739.05 A 1.39531 1.39531 0 0 0 5486.88091 -2738.36204~~rep1671~0","ARC~3.937~2~VIN~M 5488.5314 -2734.64707 A 5.47273 5.47273 0 0 0 5486.92847 -2738.51687~~rep1672~0","ARC~0.7874~2~VIN~M 5486.8234 -2739.15305 A 1.55226 1.55226 0 0 0 5486.3717 -2737.9601~~rep1673~0","ARC~0.7874~2~VIN~M 5488.05876 -2740.38847 A 3.09683 3.09683 0 0 0 5487.15761 -2738.00847~~rep1674~0","ARC~0.7874~2~VIN~M 5487.13774 -2739.32474 A 1.53299 1.53299 0 0 0 5486.3717 -2737.9601~~rep1675~0","ARC~0.7874~2~VIN~M 5487.13774 -2739.32474 A 1.53299 1.53299 0 0 0 5486.3717 -2737.9601~~rep1676~0","ARC~0.7874~2~VIN~M 5486.3717 -2737.9601 A 2.43973 2.43973 0 0 0 5487.46931 -2739.54333~~rep1677~0","ARC~0.7874~2~VIN~M 5485.81493 -2738.51687 A 1.882 1.882 0 0 0 5485.2637 -2737.1861~~rep1678~0","ARC~0.7874~2~VIN~M 5486.3717 -2737.9601 A 3.78295 3.78295 0 0 0 5485.2637 -2735.28515~~rep1679~0","ARC~0.7874~2~VIN~M 5486.92848 -2737.40332 A 5.6839 5.6839 0 0 0 5485.2637 -2733.3842~~rep1680~0","ARC~0.7874~2~VIN~M 5486.36542 -2736.42793 A 1.54316 1.54316 0 0 0 5486.3717 -2737.9601~~rep1681~0","ARC~0.7874~2~VIN~M 5485.677 -2735.23556 A 2.3532 2.3532 0 0 0 5485.68658 -2737.57201~~rep1682~0","ARC~0.7874~2~VIN~M 5486.5755 -2737.19953 A 1.9003 1.9003 0 0 0 5485.42162 -2736.31413~~rep1683~0","ARC~0.7874~2~VIN~M 5485.42116 -2736.31334 A 1.9016 1.9016 0 0 0 5485.61113 -2737.75631~~rep1684~0","ARC~0.7874~2~VIN~M 5495.9723 -2747.9082 A 1.90095 1.90095 0 0 0 5494.62813 -2747.35142~~rep1685~0","ARC~0.7874~2~VIN~M 5494.62812 -2747.35143 A 1.90095 1.90095 0 0 0 5495.1849 -2748.6956~~rep1686~0","ARC~1.9685~2~VIN~M 5540.86972 -2714.74318 A 1.82893 1.82893 0 0 0 5541.4054 -2716.03643~~rep1687~0","ARC~1~2~LHPOUT~M 5652.64739 -2820.57809 A 1.64432 1.64432 0 0 0 5651.48468 -2821.0597~~rep1688~0","ARC~1~2~LHPOUT~M 5651.48468 -2821.0597 A 1.64432 1.64432 0 0 0 5652.64739 -2821.54131~~rep1689~0","ARC~1~2~PP_CPLD_TMS~M 5779.6094 -2808.26442 A 3.86274 3.86274 0 0 0 5780.7408 -2805.53306~~rep1690~0","ARC~1~2~PP_CPLD_TMS~M 5780.6094 -2808.26443 A 6.27696 6.27696 0 0 0 5782.44792 -2803.82596~~rep1691~0","ARC~1~2~PP_CPLD_TMS~M 5780.7408 -2805.53306 A 3.86274 3.86274 0 0 0 5778.00942 -2806.6644~~rep1692~0","ARC~1~2~PP_CPLD_TMS~M 5782.44793 -2803.82597 A 6.27696 6.27696 0 0 0 5778.00943 -2805.6644~~rep1693~0","ARC~1~2~H1_CPLD_TCK~M 5799.6094 -2808.2644 A 3.86274 3.86274 0 0 0 5800.74077 -2805.53303~~rep1694~0","ARC~1~2~H1_CPLD_TCK~M 5800.6094 -2808.2644 A 6.27696 6.27696 0 0 0 5802.44788 -2803.82592~~rep1695~0","ARC~1~2~H1_CPLD_TCK~M 5800.74077 -2805.53303 A 3.86274 3.86274 0 0 0 5798.0094 -2806.6644~~rep1696~0","ARC~1~2~H1_CPLD_TCK~M 5802.44788 -2803.82592 A 6.27696 6.27696 0 0 0 5798.0094 -2805.6644~~rep1697~0","ARC~1~2~PP_CPLD_TDO~M 5789.60979 -2808.26441 A 3.86368 3.86368 0 0 0 5790.74146 -2805.53239~~rep1698~0","ARC~1~2~PP_CPLD_TDO~M 5790.60979 -2808.26443 A 6.2779 6.2779 0 0 0 5792.44859 -2803.8253~~rep1699~0","ARC~1~2~PP_CPLD_TDO~M 5790.74146 -2805.53239 A 3.86368 3.86368 0 0 0 5788.00941 -2806.66401~~rep1700~0","ARC~1~2~PP_CPLD_TDO~M 5792.44859 -2803.8253 A 6.2779 6.2779 0 0 0 5788.00943 -2805.66401~~rep1701~0","ARC~1.1811~2~NETK2_3~M 5678.52994 -2547.40144 A 3.32667 3.32667 0 0 0 5676.17763 -2548.3758~~rep1702~0","ARC~1.1811~2~NETK2_3~M 5677.69478 -2546.56628 A 6.17809 6.17809 0 0 0 5673.32621 -2548.3758~~rep1703~0","ARC~1.1811~2~NETK2_3~M 5676.17763 -2548.3758 A 3.32667 3.32667 0 0 0 5678.52994 -2549.35016~~rep1704~0","ARC~1.1811~2~NETK2_3~M 5673.32621 -2548.3758 A 6.17809 6.17809 0 0 0 5677.69478 -2550.18532~~rep1705~0","ARC~1.1811~2~NETM1_2~M 5698.12635 -2548.3758 A 3.32667 3.32667 0 0 0 5697.15199 -2550.72811~~rep1706~0","ARC~1.1811~2~NETM1_2~M 5696.94525 -2548.3758 A 6.17809 6.17809 0 0 0 5695.13573 -2552.74437~~rep1707~0","ARC~1.1811~2~NETM1_2~M 5697.15199 -2550.72811 A 3.32667 3.32667 0 0 0 5699.5043 -2549.75375~~rep1708~0","ARC~1.1811~2~NETM1_2~M 5695.13573 -2552.74437 A 6.17809 6.17809 0 0 0 5699.5043 -2550.93485~~rep1709~0","ARC~1.1811~2~NETK2_1~M 5687.9295 -2548.3758 A 3.8019 3.8019 0 0 0 5686.81595 -2551.06415~~rep1710~0","ARC~1.1811~2~NETK2_1~M 5686.7484 -2548.3758 A 6.65333 6.65333 0 0 0 5684.79968 -2553.08041~~rep1711~0","ARC~1.1811~2~NETK2_1~M 5686.81595 -2551.06415 A 3.8019 3.8019 0 0 0 5689.5043 -2549.9506~~rep1712~0","ARC~1.1811~2~NETK2_1~M 5684.79969 -2553.08042 A 6.65333 6.65333 0 0 0 5689.5043 -2551.1317~~rep1713~0","ARC~1~2~U6-7~M 5474.3849 -2735.3826 A 1.6443 1.6443 0 0 0 5473.9033 -2734.2199~~rep1714~0","ARC~1~2~U6-7~M 5473.2221 -2734.901 A 1.6443 1.6443 0 0 0 5474.3848 -2735.3826~~rep1715~0","ARC~1.1811~2~SDA~M 5852.04902 -2593.51612 A 1.4257 1.4257 0 0 0 5851.0409 -2593.9337~~rep1716~0","ARC~1.1811~2~SDA~M 5851.6315 -2594.5243 A 1.4257 1.4257 0 0 0 5852.04908 -2593.51618~~rep1717~0","ARC~1.1811~2~SDA~M 5861.2378 -2576.5406 A 1.4257 1.4257 0 0 0 5861.65538 -2575.53248~~rep1718~0","ARC~1.1811~2~SDA~M 5860.82012 -2575.53248 A 1.4257 1.4257 0 0 0 5861.2377 -2576.5406~~rep1719~0","ARC~0.7874~2~SD_DAT3~M 5765.88834 -2747.35126 A 1.9009 1.9009 0 0 0 5766.4451 -2748.6954~~rep1720~0","ARC~0.7874~2~SD_DAT3~M 5767.2325 -2747.908 A 1.9009 1.9009 0 0 0 5765.88836 -2747.35124~~rep1721~0","ARC~0.7874~2~SD_CMD~M 5718.25054 -2744.51666 A 1.9009 1.9009 0 0 0 5718.8073 -2745.8608~~rep1722~0","ARC~0.7874~2~SD_CMD~M 5719.5948 -2745.0733 A 1.9009 1.9009 0 0 0 5718.25066 -2744.51654~~rep1723~0","ARC~0.7874~2~SD_DAT2~M 5732.14814 -2750.10716 A 1.9009 1.9009 0 0 0 5732.7049 -2751.4513~~rep1724~0","ARC~0.7874~2~SD_DAT2~M 5733.4924 -2750.6639 A 1.9009 1.9009 0 0 0 5732.14826 -2750.10714~~rep1725~0","ARC~0.7874~2~SD_DAT2~M 5847.0509 -2778.9685 A 1.9009 1.9009 0 0 0 5845.70676 -2778.41174~~rep1726~0","ARC~0.7874~2~SD_DAT2~M 5845.70676 -2779.52536 A 1.9009 1.9009 0 0 0 5847.0509 -2778.9686~~rep1727~0","ARC~0.7874~2~SD_DAT3~M 5847.2031 -2774.7009 A 2.1161 2.1161 0 0 0 5845.70679 -2774.08111~~rep1728~0","ARC~0.7874~2~SD_DAT3~M 5845.70673 -2775.19473 A 1.6857 1.6857 0 0 0 5846.8987 -2774.701~~rep1729~0","ARC~0.7874~2~SD_DAT3~M 5712.8818 -2619.8218 A 1.9009 1.9009 0 0 0 5713.43856 -2618.47766~~rep1730~0","ARC~0.7874~2~SD_DAT3~M 5712.32494 -2618.47766 A 1.9009 1.9009 0 0 0 5712.8817 -2619.8218~~rep1731~0","ARC~0.7874~2~SD_CMD~M 5847.2578 -2770.3759 A 1.9009 1.9009 0 0 0 5845.91366 -2769.81914~~rep1732~0","ARC~0.7874~2~SD_CMD~M 5845.91366 -2770.93276 A 1.9009 1.9009 0 0 0 5847.2578 -2770.376~~rep1733~0","ARC~0.7874~2~SD_DAT2~M 5867.934 -2778.9686 A 1.9009 1.9009 0 0 0 5869.27814 -2779.52536~~rep1734~0","ARC~0.7874~2~SD_DAT2~M 5869.27814 -2778.41174 A 1.9009 1.9009 0 0 0 5867.934 -2778.9685~~rep1735~0","ARC~0.7874~2~SD_DAT3~M 5867.9183 -2774.701 A 1.9009 1.9009 0 0 0 5869.26244 -2775.25776~~rep1736~0","ARC~0.7874~2~SD_DAT3~M 5869.26244 -2774.14414 A 1.9009 1.9009 0 0 0 5867.9183 -2774.7009~~rep1737~0","ARC~0.7874~2~SD_CMD~M 5867.9634 -2770.376 A 1.9009 1.9009 0 0 0 5869.30754 -2770.93276~~rep1738~0","ARC~0.7874~2~SD_CMD~M 5869.30754 -2769.81914 A 1.9009 1.9009 0 0 0 5867.9634 -2770.3759~~rep1739~0","ARC~0.7874~2~SD_CLK~M 5711.16394 -2741.56386 A 1.9009 1.9009 0 0 0 5711.7207 -2742.908~~rep1740~0","ARC~0.7874~2~SD_CLK~M 5712.5081 -2742.1206 A 1.9009 1.9009 0 0 0 5711.16396 -2741.56384~~rep1741~0","ARC~0.7874~2~SD_DAT0~M 5716.51824 -2739.00486 A 1.9009 1.9009 0 0 0 5717.075 -2740.349~~rep1742~0","ARC~0.7874~2~SD_DAT0~M 5717.8625 -2739.5615 A 1.9009 1.9009 0 0 0 5716.51836 -2739.00474~~rep1743~0","ARC~0.7874~2~SD_DAT1~M 5750.69154 -2736.40636 A 1.9009 1.9009 0 0 0 5751.2483 -2737.7505~~rep1744~0","ARC~0.7874~2~SD_DAT1~M 5752.0357 -2736.9631 A 1.9009 1.9009 0 0 0 5750.69156 -2736.40634~~rep1745~0","ARC~0.7874~2~SD_DAT1~M 5713.6539 -2629.8459 A 1.9009 1.9009 0 0 0 5714.21066 -2628.50176~~rep1746~0","ARC~0.7874~2~SD_DAT1~M 5713.09704 -2628.50176 A 1.9009 1.9009 0 0 0 5713.6538 -2629.8459~~rep1747~0","ARC~0.7874~2~SD_CD~M 5721.12454 -2733.80796 A 1.9009 1.9009 0 0 0 5721.6813 -2735.1521~~rep1748~0","ARC~0.7874~2~SD_CD~M 5722.4688 -2734.3647 A 1.9009 1.9009 0 0 0 5721.12466 -2733.80794~~rep1749~0","ARC~0.7874~2~SD_DAT0~M 5673.5916 -2637.9108 A 1.9009 1.9009 0 0 0 5672.24746 -2637.35404~~rep1750~0","ARC~0.7874~2~SD_DAT0~M 5672.24746 -2638.46766 A 1.9009 1.9009 0 0 0 5673.5916 -2637.9109~~rep1751~0","ARC~0.7874~2~SD_CMD~M 5673.5861 -2647.9058 A 1.9009 1.9009 0 0 0 5672.24196 -2647.34904~~rep1752~0","ARC~0.7874~2~SD_CMD~M 5672.24196 -2648.46266 A 1.9009 1.9009 0 0 0 5673.5861 -2647.9059~~rep1753~0","ARC~0.7874~2~SD_DAT2~M 5673.5761 -2627.9158 A 1.9009 1.9009 0 0 0 5672.23196 -2627.35904~~rep1754~0","ARC~0.7874~2~SD_DAT2~M 5672.23196 -2628.47266 A 1.9009 1.9009 0 0 0 5673.5761 -2627.9159~~rep1755~0","ARC~0.7874~2~SD_CD~M 5673.5229 -2617.9208 A 1.9009 1.9009 0 0 0 5672.17876 -2617.36404~~rep1756~0","ARC~0.7874~2~SD_CD~M 5672.17876 -2618.47766 A 1.9009 1.9009 0 0 0 5673.5229 -2617.9209~~rep1757~0","ARC~0.7874~2~SD_CLK~M 5673.6997 -2657.9008 A 1.9009 1.9009 0 0 0 5672.35556 -2657.34404~~rep1758~0","ARC~0.7874~2~SD_CLK~M 5672.35556 -2658.45766 A 1.9009 1.9009 0 0 0 5673.6997 -2657.9009~~rep1759~0","ARC~0.7874~2~TP_D~M 5790.465 -2715.4365 A 1.9009 1.9009 0 0 0 5791.02176 -2714.09236~~rep1760~0","ARC~0.7874~2~TP_D~M 5789.90814 -2714.09236 A 1.9009 1.9009 0 0 0 5790.4649 -2715.4365~~rep1761~0","ARC~0.7874~2~SW_D~M 5499.2289 -2712.2363 A 1.9009 1.9009 0 0 0 5500.57304 -2712.79306~~rep1762~0","ARC~0.7874~2~SW_D~M 5500.57304 -2711.67944 A 1.9009 1.9009 0 0 0 5499.2289 -2712.2362~~rep1763~0","ARC~0.7874~2~TP_U~M 5749.4525 -2723.4567 A 1.9009 1.9009 0 0 0 5748.10836 -2722.89994~~rep1764~0","ARC~0.7874~2~TP_U~M 5748.10836 -2724.01356 A 1.9009 1.9009 0 0 0 5749.4525 -2723.4568~~rep1765~0","ARC~0.7874~2~TP_U~M 5777.1073 -2723.4568 A 1.9009 1.9009 0 0 0 5778.45144 -2724.01356~~rep1766~0","ARC~0.7874~2~TP_U~M 5778.45144 -2722.89994 A 1.9009 1.9009 0 0 0 5777.1073 -2723.4567~~rep1767~0","ARC~0.7874~2~TP_L~M 5751.7359 -2720.7008 A 1.9009 1.9009 0 0 0 5750.39176 -2720.14404~~rep1768~0","ARC~0.7874~2~TP_L~M 5750.39176 -2721.25766 A 1.9009 1.9009 0 0 0 5751.7359 -2720.7009~~rep1769~0","ARC~0.7874~2~TP_L~M 5779.9025 -2720.7009 A 1.9009 1.9009 0 0 0 5781.24664 -2721.25766~~rep1770~0","ARC~0.7874~2~TP_L~M 5781.24664 -2720.14404 A 1.9009 1.9009 0 0 0 5779.9025 -2720.7008~~rep1771~0","ARC~0.7874~2~TP_D~M 5754.6887 -2718.1418 A 1.9009 1.9009 0 0 0 5753.34456 -2717.58504~~rep1772~0","ARC~0.7874~2~TP_D~M 5753.34456 -2718.69866 A 1.9009 1.9009 0 0 0 5754.6887 -2718.1419~~rep1773~0","ARC~0.7874~2~TP_D~M 5786.2635 -2718.1024 A 1.9009 1.9009 0 0 0 5784.91936 -2717.54564~~rep1774~0","ARC~0.7874~2~TP_D~M 5784.91936 -2718.65926 A 1.9009 1.9009 0 0 0 5786.2635 -2718.1025~~rep1775~0","ARC~0.7874~2~TP_R~M 5784.9026 -2715.3466 A 1.9009 1.9009 0 0 0 5786.24674 -2715.90336~~rep1776~0","ARC~0.7874~2~TP_R~M 5786.24674 -2714.78974 A 1.9009 1.9009 0 0 0 5784.9026 -2715.3465~~rep1777~0","ARC~0.7874~2~TP_R~M 5757.5397 -2715.3465 A 2.0353 2.0353 0 0 0 5756.10053 -2714.75037~~rep1778~0","ARC~0.7874~2~TP_R~M 5756.1005 -2715.864 A 1.7665 1.7665 0 0 0 5757.3496 -2715.3466~~rep1779~0","ARC~0.7874~2~H1_CPLD_TCK~M 5670.583 -2692.1857 A 1.9009 1.9009 0 0 0 5670.02624 -2693.52984~~rep1780~0","ARC~0.7874~2~H1_CPLD_TCK~M 5671.13986 -2693.52984 A 1.9009 1.9009 0 0 0 5670.5831 -2692.1857~~rep1781~0","ARC~0.7874~2~PP_CPLD_TMS~M 5709.2839 -2643.5861 A 1.9009 1.9009 0 0 0 5709.84066 -2642.24196~~rep1782~0","ARC~0.7874~2~PP_CPLD_TMS~M 5708.72704 -2642.24196 A 1.9009 1.9009 0 0 0 5709.2838 -2643.5861~~rep1783~0","ARC~0.7874~2~PP_CPLD_TMS~M 5714.6735 -2711.62 A 1.9009 1.9009 0 0 0 5715.23026 -2710.27586~~rep1784~0","ARC~0.7874~2~PP_CPLD_TMS~M 5714.11664 -2710.27586 A 1.9009 1.9009 0 0 0 5714.6734 -2711.62~~rep1785~0","ARC~0.7874~2~PP_CPLD_TMS~M 5714.6734 -2707.8181 A 1.9009 1.9009 0 0 0 5714.11664 -2709.16224~~rep1786~0","ARC~0.7874~2~PP_CPLD_TMS~M 5715.23026 -2709.16224 A 1.9009 1.9009 0 0 0 5714.6735 -2707.8181~~rep1787~0","ARC~0.7874~2~H1_CPLD_TCK~M 5670.5831 -2689.8853 A 1.9009 1.9009 0 0 0 5671.13986 -2688.54116~~rep1788~0","ARC~0.7874~2~H1_CPLD_TCK~M 5670.02624 -2688.54116 A 1.9009 1.9009 0 0 0 5670.583 -2689.8853~~rep1789~0","ARC~0.7874~2~PP_CPLD_TDO~M 5709.2839 -2653.6254 A 1.9009 1.9009 0 0 0 5709.84066 -2652.28126~~rep1790~0","ARC~0.7874~2~PP_CPLD_TDO~M 5708.72704 -2652.28126 A 1.9009 1.9009 0 0 0 5709.2838 -2653.6254~~rep1791~0","ARC~0.7874~2~PP_CPLD_TDO~M 5725.8153 -2702.4468 A 1.9009 1.9009 0 0 0 5726.37206 -2701.10266~~rep1792~0","ARC~0.7874~2~PP_CPLD_TDO~M 5725.25844 -2701.10266 A 1.9009 1.9009 0 0 0 5725.8152 -2702.4468~~rep1793~0","ARC~0.7874~2~PP_CPLD_TDO~M 5725.8152 -2698.6449 A 1.9009 1.9009 0 0 0 5725.25844 -2699.98904~~rep1794~0","ARC~0.7874~2~PP_CPLD_TDO~M 5726.37206 -2699.98904 A 1.9009 1.9009 0 0 0 5725.8153 -2698.6449~~rep1795~0","ARC~1.1811~2~NETK2_3~M 5476.3558 -2760.3033 A 1.4257 1.4257 0 0 0 5475.93822 -2761.31142~~rep1796~0","ARC~1.1811~2~NETK2_3~M 5476.77348 -2761.31142 A 1.4257 1.4257 0 0 0 5476.3559 -2760.3033~~rep1797~0","ARC~1~2~NETK2_3~M 5476.3558 -2760.0847 A 1.6443 1.6443 0 0 0 5475.8742 -2761.2474~~rep1798~0","ARC~1~2~NETK2_3~M 5476.8375 -2761.2474 A 1.6443 1.6443 0 0 0 5476.3559 -2760.0847~~rep1799~0","ARC~0.7874~2~RESET#~M 5532.3171 -2589.6174 A 1.9009 1.9009 0 0 0 5530.97296 -2589.06064~~rep1800~0","ARC~0.7874~2~RESET#~M 5530.97296 -2590.17426 A 1.9009 1.9009 0 0 0 5532.3171 -2589.6175~~rep1801~0","ARC~0.7874~2~RESET#~M 5716.188 -2587.0978 A 2.2322 2.2322 0 0 0 5717.7664 -2587.7516~~rep1802~0","ARC~0.7874~2~RESET#~M 5717.76637 -2586.63797 A 1.5696 1.5696 0 0 0 5716.6565 -2587.0977~~rep1803~0","ARC~0.7874~2~MCU_LCD_RD~M 5542.9863 -2589.7748 A 1.9009 1.9009 0 0 0 5541.64216 -2589.21804~~rep1804~0","ARC~0.7874~2~MCU_LCD_RD~M 5541.64216 -2590.33166 A 1.9009 1.9009 0 0 0 5542.9863 -2589.7749~~rep1805~0","ARC~0.7874~2~MCU_LCD_RD~M 5720.1019 -2589.7749 A 1.9009 1.9009 0 0 0 5721.44604 -2590.33166~~rep1806~0","ARC~0.7874~2~MCU_LCD_RD~M 5721.44604 -2589.21804 A 1.9009 1.9009 0 0 0 5720.1019 -2589.7748~~rep1807~0","ARC~0.7874~2~MCU_LCD_TE~M 5542.9076 -2555.0898 A 1.9009 1.9009 0 0 0 5541.56346 -2554.53304~~rep1808~0","ARC~0.7874~2~MCU_LCD_TE~M 5541.56346 -2555.64666 A 1.9009 1.9009 0 0 0 5542.9076 -2555.0899~~rep1809~0","ARC~0.7874~2~MCU_IO_STBX~M 5612.3171 -2555.7197 A 1.9009 1.9009 0 0 0 5610.97296 -2555.16294~~rep1810~0","ARC~0.7874~2~MCU_IO_STBX~M 5610.97296 -2556.27656 A 1.9009 1.9009 0 0 0 5612.3171 -2555.7198~~rep1811~0","ARC~0.7874~2~MCU_ADDR~M 5608.8131 -2593.2 A 1.9009 1.9009 0 0 0 5607.46896 -2592.64324~~rep1812~0","ARC~0.7874~2~MCU_ADDR~M 5607.46896 -2593.75686 A 1.9009 1.9009 0 0 0 5608.8131 -2593.2001~~rep1813~0","ARC~0.7874~2~MCU_ADDR~M 5729.1675 -2598.0033 A 2.1052 2.1052 0 0 0 5730.6561 -2598.6199~~rep1814~0","ARC~0.7874~2~MCU_ADDR~M 5730.65618 -2597.50628 A 1.6966 1.6966 0 0 0 5729.4565 -2598.0032~~rep1815~0","ARC~0.7874~2~REF_EN~M 5753.4477 -2552.3845 A 1.9009 1.9009 0 0 0 5754.00446 -2551.04036~~rep1816~0","ARC~0.7874~2~REF_EN~M 5752.89084 -2551.04036 A 1.9009 1.9009 0 0 0 5753.4476 -2552.3845~~rep1817~0","ARC~0.7874~2~REF_EN~M 5753.4476 -2561.0629 A 1.9009 1.9009 0 0 0 5752.89084 -2562.40704~~rep1818~0","ARC~0.7874~2~REF_EN~M 5754.00446 -2562.40704 A 1.9009 1.9009 0 0 0 5753.4477 -2561.0629~~rep1819~0","ARC~0.7874~2~MCU_LCD_WR~M 5618.8131 -2592.6882 A 1.9009 1.9009 0 0 0 5617.46896 -2592.13144~~rep1820~0","ARC~0.7874~2~MCU_LCD_WR~M 5617.46896 -2593.24506 A 1.9009 1.9009 0 0 0 5618.8131 -2592.6883~~rep1821~0","ARC~0.7874~2~MCU_LCD_WR~M 5783.0821 -2592.6883 A 1.9009 1.9009 0 0 0 5784.42624 -2593.24506~~rep1822~0","ARC~0.7874~2~MCU_LCD_WR~M 5784.42624 -2592.13144 A 1.9009 1.9009 0 0 0 5783.0821 -2592.6882~~rep1823~0","ARC~0.7874~2~MCU_DIR~M 5622.7501 -2555.326 A 1.9009 1.9009 0 0 0 5621.40596 -2554.76924~~rep1824~0","ARC~0.7874~2~MCU_DIR~M 5621.40596 -2555.88286 A 1.9009 1.9009 0 0 0 5622.7501 -2555.3261~~rep1825~0","ARC~0.7874~2~MCU_DIR~M 5786.9207 -2567.708 A 1.9009 1.9009 0 0 0 5788.26484 -2568.26476~~rep1826~0","ARC~0.7874~2~MCU_DIR~M 5788.26484 -2567.15114 A 1.9009 1.9009 0 0 0 5786.9207 -2567.7079~~rep1827~0","ARC~0.7874~2~SCL~M 5821.1185 -2603.1604 A 1.9049 1.9049 0 0 0 5821.67643 -2601.81343~~rep1828~0","ARC~0.7874~2~SCL~M 5820.56281 -2601.81339 A 1.8969 1.8969 0 0 0 5821.1184 -2603.1547~~rep1829~0","ARC~1.1811~2~NETM1_2~M 5553.2548 -2551.9191 A 1.4257 1.4257 0 0 0 5552.24668 -2551.50152~~rep1830~0","ARC~1.1811~2~NETM1_2~M 5552.24668 -2552.33678 A 1.4257 1.4257 0 0 0 5553.2548 -2551.9192~~rep1831~0","ARC~1~2~I2S0_WS~M 5588.3927 -2617.7085 A 1.6443 1.6443 0 0 0 5587.23 -2617.2269~~rep1832~0","ARC~1~2~I2S0_WS~M 5587.23 -2618.1901 A 1.6443 1.6443 0 0 0 5588.3927 -2617.7085~~rep1833~0","ARC~1.9685~2~VBAT~M 5808.205 -2565.7269 A 1.9009 1.9009 0 0 0 5807.64824 -2567.07104~~rep1834~0","ARC~1.9685~2~VBAT~M 5808.76186 -2567.07104 A 1.9009 1.9009 0 0 0 5808.2051 -2565.7269~~rep1835~0","ARC~1~2~I2S0_MCLK~M 5598.5066 -2620.5473 A 1.6443 1.6443 0 0 0 5597.3439 -2620.0657~~rep1836~0","ARC~1~2~I2S0_MCLK~M 5597.3439 -2621.029 A 1.6443 1.6443 0 0 0 5598.5066 -2620.5474~~rep1837~0","ARC~1~2~I2S0_TX_SDA~M 5578.5843 -2612.0372 A 1.7399 1.7399 0 0 0 5577.354 -2611.5276~~rep1838~0","ARC~1~2~I2S0_TX_SDA~M 5577.35397 -2612.49097 A 1.5486 1.5486 0 0 0 5578.449 -2612.0374~~rep1839~0","ARC~1~2~I2S0_SCK~M 5593.4321 -2608.8109 A 1.6443 1.6443 0 0 0 5592.2694 -2608.3293~~rep1840~0","ARC~1~2~I2S0_SCK~M 5592.2694 -2609.2925 A 1.6443 1.6443 0 0 0 5593.4321 -2608.8109~~rep1841~0","ARC~0.7874~2~I2S0_SCK~M 5593.6887 -2608.8108 A 1.9009 1.9009 0 0 0 5592.34456 -2608.25404~~rep1842~0","ARC~0.7874~2~I2S0_SCK~M 5592.34456 -2609.36766 A 1.9009 1.9009 0 0 0 5593.6887 -2608.8109~~rep1843~0","ARC~1.9685~2~+3V3~M 5811.81119 -2711.14917 A 2.1633 2.1633 0 0 0 5811.26248 -2713.27898~~rep1844~0","ARC~1~2~NETR20_1~M 5644.4268 -2801.8312 A 1.9131 1.9131 0 0 0 5644.98713 -2800.47843~~rep1845~0","ARC~1~2~NETR20_1~M 5644.02385 -2800.47835 A 1.3754 1.3754 0 0 0 5644.4267 -2801.4509~~rep1846~0","ARC~1~2~NETR20_1~M 5644.4267 -2806.3051 A 1.6443 1.6443 0 0 0 5643.9451 -2807.4678~~rep1847~0","ARC~1~2~NETR20_1~M 5644.9083 -2807.4678 A 1.6443 1.6443 0 0 0 5644.4267 -2806.3051~~rep1848~0","ARC~1~2~I2S0_WS~M 5659.1117 -2806.2101 A 1.7787 1.7787 0 0 0 5658.59073 -2807.46783~~rep1849~0","ARC~1~2~I2S0_WS~M 5659.55401 -2807.46779 A 1.5098 1.5098 0 0 0 5659.1118 -2806.4002~~rep1850~0","ARC~1~2~H1_CPLD_TDI~M 5668.9936 -2801.2658 A 1.6443 1.6443 0 0 0 5668.512 -2802.4285~~rep1851~0","ARC~1~2~H1_CPLD_TDI~M 5669.4753 -2802.4285 A 1.6443 1.6443 0 0 0 5668.9937 -2801.2658~~rep1852~0","ARC~1~2~H1_CPLD_TDI~M 5668.9937 -2699.5544 A 1.6443 1.6443 0 0 0 5669.4753 -2698.3917~~rep1853~0","ARC~1~2~H1_CPLD_TDI~M 5668.512 -2698.3917 A 1.6443 1.6443 0 0 0 5668.9936 -2699.5544~~rep1854~0","ARC~1~2~I2S0_SCK~M 5665.844 -2791.2264 A 1.6443 1.6443 0 0 0 5665.3624 -2792.3891~~rep1855~0","ARC~1~2~I2S0_SCK~M 5666.3257 -2792.3891 A 1.6443 1.6443 0 0 0 5665.8441 -2791.2264~~rep1856~0","ARC~1~2~I2S0_TX_SDA~M 5662.4582 -2796.3445 A 1.6443 1.6443 0 0 0 5661.9766 -2797.5072~~rep1857~0","ARC~1~2~I2S0_TX_SDA~M 5662.9398 -2797.5072 A 1.6443 1.6443 0 0 0 5662.4582 -2796.3445~~rep1858~0","ARC~1~2~I2S0_MCLK~M 5656.0015 -2771.4411 A 1.6443 1.6443 0 0 0 5655.5199 -2772.6038~~rep1859~0","ARC~1~2~I2S0_MCLK~M 5656.4831 -2772.6038 A 1.6443 1.6443 0 0 0 5656.0015 -2771.4411~~rep1860~0","ARC~1~2~RHPOUT~M 5520.8047 -2770.2631 A 1.6443 1.6443 0 0 0 5521.2863 -2769.1004~~rep1861~0","ARC~1~2~RHPOUT~M 5520.3231 -2769.1004 A 1.6443 1.6443 0 0 0 5520.8047 -2770.2631~~rep1862~0","ARC~1~2~LHPOUT~M 5522.1642 -2790.4114 A 1.6443 1.6443 0 0 0 5521.6826 -2789.2487~~rep1863~0","ARC~1~2~LHPOUT~M 5521.0015 -2789.9298 A 1.6443 1.6443 0 0 0 5522.1642 -2790.4114~~rep1864~0","ARC~1~2~NETK2_1~M 5573.4634 -2814.4246 A 1.6443 1.6443 0 0 0 5572.3007 -2814.9062~~rep1865~0","ARC~1~2~NETK2_1~M 5572.9819 -2815.5873 A 1.6443 1.6443 0 0 0 5573.4635 -2814.4246~~rep1866~0","ARC~1~2~RHPOUT_SPK~M 5520.6447 -2758.5716 A 1.6443 1.6443 0 0 0 5520.1631 -2757.4089~~rep1867~0","ARC~1~2~RHPOUT_SPK~M 5519.482 -2758.09 A 1.6443 1.6443 0 0 0 5520.6447 -2758.5716~~rep1868~0","ARC~1~2~RHPOUT_SPK~M 5572.8381 -2801.6109 A 1.5099 1.5099 0 0 0 5573.90576 -2802.05314~~rep1869~0","ARC~1~2~RHPOUT_SPK~M 5573.90573 -2801.08993 A 1.7787 1.7787 0 0 0 5572.648 -2801.6109~~rep1870~0","ARC~1.1811~2~+3V3~M 5640.3322 -2778.2694 A 1.3957 1.3957 0 0 0 5640.74099 -2777.28249~~rep1871~0","ARC~1.1811~2~+3V3~M 5639.90584 -2777.28256 A 1.4557 1.4557 0 0 0 5640.3322 -2778.3119~~rep1872~0","ARC~1.1811~2~+3V3~M 5640.3322 -2806.5862 A 1.5601 1.5601 0 0 0 5639.87526 -2807.68936~~rep1873~0","ARC~1.1811~2~+3V3~M 5640.71041 -2807.68939 A 1.2913 1.2913 0 0 0 5640.3322 -2806.7763~~rep1874~0","ARC~0.7874~2~SCL~M 5597.9701 -2796.504 A 1.9009 1.9009 0 0 0 5598.52686 -2795.15986~~rep1875~0","ARC~0.7874~2~SCL~M 5597.41324 -2795.15986 A 1.9009 1.9009 0 0 0 5597.97 -2796.504~~rep1876~0","ARC~0.7874~2~SDA~M 5595.1748 -2799.6536 A 1.9009 1.9009 0 0 0 5595.73156 -2798.30946~~rep1877~0","ARC~0.7874~2~SDA~M 5594.61794 -2798.30946 A 1.9009 1.9009 0 0 0 5595.1747 -2799.6536~~rep1878~0","ARC~1~2~+3V3~M 5670.3913 -2815.7424 A 1.5181 1.5181 0 0 0 5671.46476 -2816.18704~~rep1879~0","ARC~1~2~+3V3~M 5671.46473 -2815.22373 A 1.7705 1.7705 0 0 0 5670.2128 -2815.7423~~rep1880~0","ARC~0.7874~2~SCL~M 5738.20394 -2792.78934 A 1.9009 1.9009 0 0 0 5736.8598 -2793.3461~~rep1881~0","ARC~0.7874~2~SCL~M 5737.6473 -2794.1335 A 1.9009 1.9009 0 0 0 5738.20406 -2792.78936~~rep1882~0","ARC~0.7874~2~SCL~M 5735.51566 -2795.47776 A 1.9009 1.9009 0 0 0 5736.8598 -2794.921~~rep1883~0","ARC~0.7874~2~SCL~M 5736.0724 -2794.1335 A 1.9009 1.9009 0 0 0 5735.51564 -2795.47764~~rep1884~0","ARC~0.7874~2~SDA~M 5742.09684 -2795.16964 A 2.0914 2.0914 0 0 0 5740.618 -2795.7822~~rep1885~0","ARC~0.7874~2~SDA~M 5741.4055 -2796.5697 A 1.7104 1.7104 0 0 0 5741.90646 -2795.36026~~rep1886~0","ARC~0.7874~2~SDA~M 5739.40856 -2797.85806 A 1.7104 1.7104 0 0 0 5740.618 -2797.3571~~rep1887~0","ARC~0.7874~2~SDA~M 5739.8306 -2796.5697 A 2.0914 2.0914 0 0 0 5739.21804 -2798.04854~~rep1888~0","ARC~0.7874~2~PP_CPLD_TDO~M 5762.30564 -2752.62686 A 1.9009 1.9009 0 0 0 5762.8624 -2753.971~~rep1889~0","ARC~0.7874~2~PP_CPLD_TDO~M 5763.6499 -2753.1836 A 1.9009 1.9009 0 0 0 5762.30576 -2752.62684~~rep1890~0","ARC~1~2~PP_CPLD_TDO~M 5793.2063 -2755.7053 A 1.7716 1.7716 0 0 0 5793.72519 -2754.45259~~rep1891~0","ARC~1~2~PP_CPLD_TDO~M 5792.76188 -2754.45262 A 1.517 1.517 0 0 0 5793.2062 -2755.5253~~rep1892~0","ARC~0.7874~2~H1_CPLD_TCK~M 5722.6355 -2705.2094 A 1.9009 1.9009 0 0 0 5723.19226 -2703.86526~~rep1893~0","ARC~0.7874~2~H1_CPLD_TCK~M 5722.07864 -2703.86526 A 1.9009 1.9009 0 0 0 5722.6354 -2705.2094~~rep1894~0","ARC~1~2~H1_CPLD_TCK~M 5805.8441 -2758.8852 A 1.6443 1.6443 0 0 0 5806.3257 -2757.7225~~rep1895~0","ARC~1~2~H1_CPLD_TCK~M 5805.36232 -2757.72248 A 1.6442 1.6442 0 0 0 5805.8439 -2758.8851~~rep1896~0","ARC~1~2~H1_CPLD_TCK~M 5805.8441 -2758.8851 A 1.6443 1.6443 0 0 0 5806.3257 -2757.7224~~rep1897~0","ARC~1~2~H1_CPLD_TCK~M 5805.3624 -2757.7224 A 1.6443 1.6443 0 0 0 5805.844 -2758.8851~~rep1898~0","ARC~0.7874~2~H1_CPLD_TDI~M 5718.9283 -2708.0337 A 1.9009 1.9009 0 0 0 5719.48506 -2706.68956~~rep1899~0","ARC~0.7874~2~H1_CPLD_TDI~M 5718.37144 -2706.68956 A 1.9009 1.9009 0 0 0 5718.9282 -2708.0337~~rep1900~0","ARC~0.7874~2~H1_CPLD_TDI~M 5752.85684 -2753.17806 A 1.9009 1.9009 0 0 0 5753.4136 -2754.5222~~rep1901~0","ARC~0.7874~2~H1_CPLD_TDI~M 5754.2011 -2753.7347 A 1.9009 1.9009 0 0 0 5752.85696 -2753.17794~~rep1902~0","ARC~0.7874~2~PP_CPLD_TMS~M 5754.94344 -2760.85526 A 1.9009 1.9009 0 0 0 5755.5002 -2762.1994~~rep1903~0","ARC~0.7874~2~PP_CPLD_TMS~M 5756.2877 -2761.4119 A 1.9009 1.9009 0 0 0 5754.94356 -2760.85514~~rep1904~0","ARC~1~2~PP_CPLD_TMS~M 5782.8625 -2763.8437 A 1.6443 1.6443 0 0 0 5783.3441 -2762.681~~rep1905~0","ARC~1~2~PP_CPLD_TMS~M 5782.3809 -2762.681 A 1.6443 1.6443 0 0 0 5782.8625 -2763.8437~~rep1906~0","ARC~1~2~PP_CPLD_TMS~M 5782.8625 -2763.8437 A 1.6443 1.6443 0 0 0 5783.3441 -2762.681~~rep1907~0","ARC~1~2~PP_CPLD_TMS~M 5782.3809 -2762.681 A 1.6443 1.6443 0 0 0 5782.8625 -2763.8437~~rep1908~0","ARC~0.7874~2~SDA~M 5823.7563 -2599.5748 A 1.9009 1.9009 0 0 0 5824.31306 -2598.23066~~rep1909~0","ARC~0.7874~2~SDA~M 5823.19944 -2598.23066 A 1.9009 1.9009 0 0 0 5823.7562 -2599.5748~~rep1910~0","ARC~1~2~U6-9~M 5485.0852 -2741.903 A 1.6443 1.6443 0 0 0 5485.5668 -2743.0657~~rep1911~0","ARC~1~2~U6-9~M 5486.2479 -2742.3846 A 1.6443 1.6443 0 0 0 5485.0852 -2741.903~~rep1912~0","ARC~0.7874~2~VIN~M 5490.1062 -2737.283 A 1.7915 1.7915 0 0 0 5488.61017 -2739.04997~~rep1913~0","ARC~0.7874~2~VIN~M 5490.1062 -2738.213 A 1.636 1.636 0 0 0 5488.74002 -2739.8266~~rep1914~0","ARC~0.7874~2~VIN~M 5488.61011 -2739.04994 A 3.9858 3.9858 0 0 0 5485.55971 -2737.88929~~rep1915~0","ARC~0.7874~2~VIN~M 5488.65593 -2739.83599 A 2.4245 2.4245 0 0 0 5486.80042 -2739.12998~~rep1916~0","ARC~0.7874~2~VIN~M 5488.61011 -2739.04994 A 3.9858 3.9858 0 0 0 5485.55971 -2737.88929~~rep1917~0","ARC~0.7874~2~VIN~M 5488.65593 -2739.83599 A 2.4245 2.4245 0 0 0 5486.80042 -2739.12998~~rep1918~0","ARC~0.7874~2~VIN~M 5490.1062 -2737.283 A 1.7915 1.7915 0 0 0 5488.61017 -2739.04997~~rep1919~0","ARC~0.7874~2~VIN~M 5490.1062 -2738.213 A 1.636 1.636 0 0 0 5488.74002 -2739.8266~~rep1920~0","ARC~3.937~2~VIN~M 5488.5314 -2734.6472 A 5.4725 5.4725 0 0 0 5486.92854 -2738.51684~~rep1921~0","ARC~0.7874~2~VIN~M 5486.92853 -2737.40327 A 5.6841 5.6841 0 0 0 5485.2637 -2733.384~~rep1922~0","ARC~0.7874~2~VIN~M 5486.37184 -2737.95996 A 3.7831 3.7831 0 0 0 5485.2638 -2735.2849~~rep1923~0","ARC~0.7874~2~VIN~M 5485.81498 -2738.51682 A 1.8822 1.8822 0 0 0 5485.2637 -2737.1859~~rep1924~0","ARC~0.7874~2~VIN~M 5488.05883 -2740.38847 A 3.0968 3.0968 0 0 0 5487.15765 -2738.00846~~rep1925~0","ARC~0.7874~2~VIN~M 5486.82346 -2739.15304 A 1.5523 1.5523 0 0 0 5486.37173 -2737.96004~~rep1926~0","ARC~0.7874~2~VIN~M 5494.62814 -2747.35146 A 1.9009 1.9009 0 0 0 5495.1849 -2748.6956~~rep1927~0","ARC~0.7874~2~VIN~M 5495.9723 -2747.9082 A 1.9009 1.9009 0 0 0 5494.62816 -2747.35144~~rep1928~0","ARC~1.9685~2~VIN~M 5540.86963 -2714.74317 A 1.8289 1.8289 0 0 0 5541.4053 -2716.0364~~rep1929~0","TRACK~1~2~LHPOUT~5521.0015 -2789.2487 5552.8126 -2821.0597 5653.129 -2821.0597~rep3159~0","TRACK~0.7874~2~SDA~5823.7563 -2597.6739 5823.7563 -2606.0924 5823.7563 -2713.5103 5736.4255 -2800.8411 5731.5527 -2805.7139 5720.8834 -2805.7139~rep3160~0","TRACK~1.9685~2~BAT+~5575.8035 -2753.5794 5575.8035 -2741.4073 5559.5043 -2725.1081 5559.5043 -2605.2656 5563.5594 -2601.2105 5626.1578 -2601.2105 5626.4728 -2601.5255 5799.2681 -2601.5255 5799.2681 -2600.9034 5841.2377 -2558.9337 5876.2771 -2558.9337~rep3161~0","TRACK~1.9685~2~VBAT~5498.9137 -2607.6278 5506.8665 -2599.6751 5506.8665 -2560.3444 5527.1421 -2540.0688 5748.5988 -2540.0688 5775.2129 -2540.0688 5780.646 -2540.0688 5789.4649 -2540.0688 5808.2051 -2558.8089 5808.2051 -2567.6278~rep3168~0","TRACK~1.9685~2~VBAT~5803.7956 -2554.3995 5826.394 -2554.3995 5881.2838 -2554.3995~rep3171~0","TRACK~1.9685~2~+3V3~5811.9858 -2604.9574 5811.9858 -2647.3194 5811.9858 -2712.5558 5810.9228 -2713.6188 5812.0004 -2712.5412~rep3172~0","TRACK~1~2~PP_CPLD_TMS~5778.0094 -2808.2644 5782.8625 -2803.4114 5782.8625 -2803.275 5782.8625 -2762.1994 5782.8625 -2766.5715~rep3173~0","TRACK~1.1811~2~+3V3~5640.3322 -2776.8737 5640.3322 -2778.7762 5640.3322 -2808.2251~rep3174~0","TRACK~1~2~I2S0_MCLK~5654.8539 -2629.1628 5656.0015 -2630.3105 5656.0015 -2773.0854~rep3175~0","TRACK~1.9685~2~VIN~5541.4054 -2714.4437 5541.4054 -2785.2431~rep3177~0","TRACK~1.1811~2~NETK2_3~5476.3559 -2761.729 5476.3559 -2754.8392 5479.1012 -2752.0939 5529.7394 -2752.0939 5530.5768 -2751.2566 5535.5786 -2746.2547 5535.5786 -2700.3492 5520.2523 -2685.0229 5520.2523 -2595.9286 5511.3216 -2586.9979 5511.3216 -2561.7434 5528.6838 -2544.3812 5666.5972 -2544.3812 5670.5919 -2548.3758 5679.5043 -2548.3758~rep3178~0","TRACK~3.937~2~VIN~5488.5314 -2736.7271 5488.5314 -2731.3728 5506.0904 -2713.8138 5506.9172 -2712.987 5520.4605 -2712.987~rep3182~0","TRACK~0.7874~2~VIN~5487.429 -2730.2311 5485.2637 -2732.3964 5485.2637 -2737.5933 5488.0589 -2740.3886 5489.7912 -2740.3886 5490.1062 -2740.0736 5490.1062 -2742.8295 5495.9723 -2748.6956~rep3184~0","TRACK~0.7874~2~VIN~5490.0274 -2735.7035 5490.0274 -2736.7271 5490.1062 -2736.8059 5490.1062 -2740.0736~rep3191~0","TRACK~0.7874~2~SW_D~5494.2821 -2712.2363 5501.1298 -2712.2363~rep3194~0","TRACK~1.9685~2~+3V3~5566.8773 -2604.9528 5812.0004 -2604.9528~rep3197~0","TRACK~1.9685~2~+3V3~5671.9813 -2789.1261 5735.4609 -2789.1261 5758.3906 -2766.1963 5794.9824 -2729.6045 5796.2865 -2728.3005 5812.0004 -2712.5866~rep3198~0","TRACK~0.7874~2~SCL~5597.97 -2794.603 5597.97 -2807.2408 5601.5527 -2810.8235 5665.3322 -2810.8235 5673.3004 -2802.8553 5728.1381 -2802.8553 5821.1185 -2709.8749 5821.1185 -2601.7828 5821.1185 -2600.3904~rep3202~0","TRACK~1.9685~2~+3V3~5823.1796 -2766.1779 5841.8868 -2766.1779~rep3203~0","TRACK~0.7874~2~H1_CPLD_TDI~5718.9283 -2706.1327 5718.9283 -2719.2494 5754.2011 -2754.5222~rep3204~0","TRACK~0.7874~2~PP_CPLD_TMS~5709.2838 -2641.6851 5709.2838 -2646.0158 5706.1736 -2649.1261 5706.1736 -2664.1654 5714.6735 -2672.6653 5714.6735 -2720.5852 5756.2877 -2762.1994~rep3206~0","TRACK~0.7874~2~SD_CD~5671.6219 -2617.9208 5693.2361 -2617.9208 5704.0082 -2628.693 5704.0082 -2716.6916 5722.4688 -2735.1521~rep3209~0","TRACK~0.7874~2~SD_DAT2~5671.6751 -2627.9158 5691.7744 -2627.9158 5701.7248 -2637.8662 5701.7248 -2719.6837 5733.4924 -2751.4513~rep3211~0","TRACK~0.7874~2~SD_DAT0~5671.6906 -2637.9108 5694.3284 -2637.9108 5699.52 -2643.1024 5699.52 -2722.0065 5717.8625 -2740.349~rep3213~0","TRACK~0.7874~2~SD_CMD~5671.6851 -2647.9058 5691.4888 -2647.9058 5697.1578 -2653.5749 5697.1578 -2723.4238 5719.5948 -2745.8608~rep3215~0","TRACK~0.7874~2~SD_CLK~5671.7988 -2657.9008 5688.4917 -2657.9008 5694.7956 -2664.2048 5694.7956 -2725.1955 5712.5081 -2742.908~rep3217~0","TRACK~0.7874~2~PP_CPLD_TDO~5709.2838 -2651.7245 5709.2838 -2661.882 5725.8152 -2678.4134 5725.8152 -2716.1364 5763.6499 -2753.971~rep3219~0","TRACK~0.7874~2~H1_CPLD_TCK~5722.6354 -2703.3084 5722.6354 -2717.366 5762.4294 -2757.16~rep3220~0","TRACK~0.7874~2~SD_DAT1~5713.6539 -2627.945 5713.6539 -2662.8269 5728.8467 -2678.0197 5728.8467 -2714.5616 5752.0357 -2737.7505~rep3224~0","TRACK~0.7874~2~SD_DAT3~5712.8818 -2617.9208 5712.8818 -2621.661 5716.5673 -2625.3465 5716.5673 -2661.7639 5731.5239 -2676.7205 5731.5239 -2712.9868 5767.2325 -2748.6954~rep3227~0","TRACK~0.7874~2~SDA~5595.1748 -2797.7526 5595.1748 -2807.5164 5600.844 -2813.1857 5666.6708 -2813.1857 5674.1139 -2805.7427 5720.8834 -2805.7427~rep3235~0","TRACK~1~2~+3V3~5616.5918 -2815.7424 5671.9094 -2815.7424~rep3239~0","TRACK~1~2~I2S0_MCLK~5596.8623 -2620.5473 5646.2372 -2620.5473 5656.0015 -2630.3117~rep3240~0","TRACK~1~2~RHPOUT_SPK~5519.482 -2757.4089 5524.6629 -2762.5899 5524.6629 -2765.9022 5524.6629 -2781.4534 5544.8204 -2801.6109 5574.348 -2801.6109~rep3248~0","TRACK~1~2~NETK2_1~5515.1011 -2583.408 5555.1511 -2623.4579 5555.1511 -2752.4534 5577.1826 -2774.4849 5577.1826 -2810.7054 5572.3007 -2815.5873~rep3249~0","TRACK~1~2~RHPOUT~5520.8047 -2768.6188 5520.8047 -2782.5951 5556.5527 -2818.3432 5623.8362 -2818.3432~rep3253~0","TRACK~1~2~NETK2_3~5476.3559 -2754.8392 5476.3559 -2761.729~rep3258~0","TRACK~1~2~I2S0_WS~5586.7484 -2617.7085 5648.1621 -2617.7085 5659.1118 -2628.6581 5659.1118 -2807.9101~rep3259~0","TRACK~1~2~I2S0_TX_SDA~5576.9003 -2612.0373 5655.5224 -2612.0373 5662.4582 -2618.9731 5662.4582 -2797.9888~rep3261~0","TRACK~1~2~I2S0_SCK~5591.7878 -2608.8109 5657.3354 -2608.8109 5665.844 -2617.3196 5665.844 -2792.8707~rep3266~0","TRACK~1~2~H1_CPLD_TDI~5668.9937 -2697.9101 5668.9937 -2802.9101~rep3268~0","TRACK~1.1811~2~NETK2_1~5515.1011 -2582.8707 5515.1011 -2583.408~rep3270~0","TRACK~1~2~NETK2_1~5515.1011 -2582.8707 5515.1011 -2564.145 5531.2429 -2548.0032 5663.7626 -2548.0032 5669.7862 -2554.0268~rep3271~0","TRACK~1~2~NETR20_1~5644.4267 -2800.0755 5644.4267 -2807.9495~rep3277~0","TRACK~1.1811~2~NETM1_2~5551.8291 -2551.9192 5654.5456 -2551.9192 5660.0968 -2557.4703 5690.4098 -2557.4703 5699.5043 -2548.3758~rep3284~0","TRACK~0.7874~2~MCU_LCD_WR~5616.9122 -2592.6883 5784.983 -2592.6883~rep3288~0","TRACK~0.7874~2~REF_EN~5753.4476 -2550.4835 5753.4476 -2562.9639~rep3289~0","TRACK~0.7874~2~MCU_ADDR~5606.9122 -2593.2001 5611.8334 -2593.2001 5616.6366 -2598.0032 5731.1531 -2598.0032~rep3290~0","TRACK~0.7874~2~MCU_DIR~5620.8492 -2555.3261 5652.8964 -2555.3261 5658.9988 -2561.4284 5744.6484 -2561.4284 5750.9279 -2567.708 5788.8216 -2567.708~rep3292~0","TRACK~0.7874~2~MCU_IO_STBX~5610.4161 -2555.7198 5616.0067 -2555.7198 5618.4476 -2558.1607 5651.4397 -2558.1607 5657.1484 -2563.8694 5727.5311 -2563.8694 5727.7484 -2564.0867~rep3297~0","TRACK~0.7874~2~MCU_LCD_TE~5541.0067 -2555.0898 5603.4082 -2555.0898 5606.5972 -2558.2788 5615.298 -2558.2788 5617.3846 -2560.3654 5649.7862 -2560.3654 5655.5736 -2566.1528 5724.3421 -2566.1528~rep3301~0","TRACK~0.7874~2~MCU_LCD_RD~5541.0854 -2589.7749 5698.9594 -2589.7749~rep3307~0","TRACK~0.7874~2~RESET#~5530.4161 -2589.6174 5535.613 -2589.6174 5538.1326 -2587.0977 5695.2586 -2587.0977 5718.2261 -2587.0977~rep3308~0","TRACK~1.1811~2~NETK2_1~5669.7862 -2554.0268 5683.8533 -2554.0268 5689.5043 -2548.3758~rep3313~0","TRACK~0.7874~2~I2S0_SCK~5591.7878 -2608.8109 5614.5198 -2608.8109~rep3317~0","TRACK~0.7874~2~P2_8~5626.9515 -2595.208 5733.4775 -2595.208~rep3322~0","TRACK~0.7874~2~H1_CPLD_TCK~5670.583 -2687.9843 5670.583 -2694.0867~rep3327~0","TRACK~0.7874~2~TP_R~5755.5043 -2715.3465 5786.8035 -2715.3465~rep3328~0","TRACK~0.7874~2~TP_D~5752.7877 -2718.1418 5784.3232 -2718.1418~rep3329~0","TRACK~0.7874~2~TP_L~5749.835 -2720.7009 5781.8035 -2720.7009~rep3330~0","TRACK~0.7874~2~TP_U~5747.5515 -2723.4568 5779.0082 -2723.4568~rep3331~0","TRACK~0.7874~2~TP_D~5784.3626 -2718.1024 5789.7169 -2718.1024 5790.4649 -2717.3544 5790.4649 -2713.5355~rep3332~0","TRACK~0.7874~2~SD_CMD~5845.3568 -2770.3759 5869.8644 -2770.3759~rep3346~0","TRACK~0.7874~2~SD_DAT3~5845.213 -2774.7009 5869.8193 -2774.7009~rep3350~0","TRACK~0.7874~2~SD_DAT2~5845.15 -2778.9686 5869.835 -2778.9686~rep3351~0","TRACK~1.9685~2~+3V3~5771.1051 -2605.2387 5771.1051 -2625.2678 5771.1051 -2629.2026~rep3352~0","TRACK~0.7874~2~MCU_LCD_RD~5697.5751 -2589.7749 5722.0029 -2589.7749~rep3353~0","TRACK~1.9685~2~+3V3~5841.2377 -2593.7369 5841.2377 -2604.9574~rep3365~0","TRACK~1.1811~2~SDA~5861.2377 -2575.1148 5861.2377 -2584.3274 5851.0409 -2594.5243~rep3368~0","TRACK~1~2~H1_CPLD_TCK~5798.0094 -2808.2644 5805.844 -2800.4298 5805.844 -2757.2408 5805.844 -2794.6818~rep3370~0","TRACK~1~2~PP_CPLD_TDO~5793.2063 -2753.9337 5793.2063 -2784.2508 5793.2063 -2803.0676 5788.0094 -2808.2644~rep3371~0","TRACK~1~2~U6-7~5473.2221 -2734.2199 5485.2176 -2746.2153 5486.2873 -2746.2153~rep3379~0","TRACK~1~2~U6-9~5472.4741 -2731.2278 5474.41 -2731.2278 5486.2479 -2743.0657~rep3381~0","TRACK~1~2~NETK2_3~5529.6213 -2752.212 5530.5768 -2751.2566~rep3385~0","RECT~5486.051~-2738.666~1.339~2.017~2~rep3503~0~0~~~VIN~","RECT~5486.336~-2738.666~1.054~1.584~2~rep3504~0~0~~~VIN~","RECT~5486.878~-2739.247~0.512~2.165~2~rep3505~0~0~~~VIN~","RECT~5487.39~-2740.074~2.717~2.992~2~rep3506~0~0~~~VIN~","RECT~5485.848~-2732.987~0.23~1.175~2~rep3507~0~0~~~VIN~","RECT~5486.078~-2732.987~1.469~1.405~2~rep3508~0~0~~~VIN~","RECT~5485.264~-2737.593~3.268~5.158~2~rep3509~0~0~~~VIN~","RECT~5913.768~-2825.191~20.58~28.622~2~rep3510~0~0~~~GND~","RECT~5934.441~-2815.742~3.896~8.112~2~rep3511~0~0~~~GND~","RECT~5937.512~-2815.742~0.825~1.459~2~rep3512~0~0~~~GND~","RECT~5929.363~-2821.738~8.027~19.108~2~rep3513~0~0~~~GND~","RECT~5926.002~-2540.076~6.663~3.556~2~rep3514~0~0~~~GND~","RECT~5924.638~-2541.843~10.389~3.624~2~rep3515~0~0~~~GND~","RECT~5914.949~-2541.843~11.264~5.551~2~rep3516~0~0~~~GND~","RECT~5914.418~-2545.27~22.542~4.724~2~rep3517~0~0~~~GND~","RECT~5911.056~-2562.987~27.048~20.079~2~rep3518~0~0~~~GND~","RECT~5472.414~-2820.467~29.07~22.441~2~rep3519~0~0~~~GND~","RECT~5475.58~-2824.619~21.26~7.223~2~rep3520~0~0~~~GND~","RECT~5472.584~-2561.806~26.184~20.079~2~rep3521~0~0~~~GND~","RECT~5474.595~-2544.286~22.245~5.315~2~rep3522~0~0~~~GND~","RECT~5480.54~-2541.373~11.969~6.256~2~rep3523~0~0~~~GND~","RECT~5476.721~-2540.9~6.22~4.488~2~rep3524~0~0~~~GND~","RECT~5490.225~-2540.546~5.395~3.386~2~rep3525~0~0~~~GND~","COPPERAREA~1~2~GND~M 5469.1211 -2828.9504 L 5941.1202 -2828.9504 L 5941.1202 -2532.951 L 5469.1211 -2532.951 L5469.1211,-2828.9504 Z~1~solid~gge9825~spoke~none~[[\"M 5544.34839 -2803.08658 L 5544.18485 -2803.14967 5544.06399 -2803.27661 5544.00901 -2803.44305 5544.03046 -2803.61701 5544.12424 -2803.7651 5557.06515 -2816.70604 5557.19492 -2816.79275 5557.34799 -2816.8232 5569.84245 -2816.8232 5569.9858 -2816.79663 5570.1101 -2816.72046 5570.19885 -2816.6048 5570.24026 -2816.46501 5570.22882 -2816.31967 5570.13484 -2815.96895 5570.10143 -2815.587 5570.13484 -2815.20505 5570.23408 -2814.8347 5570.39611 -2814.48721 5570.61603 -2814.17314 5570.88714 -2813.90203 5571.20121 -2813.68211 5571.5487 -2813.52008 5571.91905 -2813.42084 5572.21072 -2813.39533 5572.34491 -2813.35937 5572.4587 -2813.27969 5575.54544 -2810.19295 5575.63215 -2810.06318 5575.6626 -2809.91011 5575.6626 -2804.01899 5575.63603 -2803.87565 5575.55986 -2803.75134 5575.4442 -2803.66259 5575.30441 -2803.62118 5575.15907 -2803.63262 5574.76895 -2803.73716 5574.387 -2803.77057 5574.00505 -2803.73716 5573.6347 -2803.63792 5573.28721 -2803.47589 5572.83546 -2803.16135 5572.68239 -2803.1309 5544.84005 -2803.1309 5544.34839 -2803.08658 Z \",\"M 5671.80824 -2606.99453 L 5671.6392 -2606.95705 5658.57582 -2606.95705 5658.41672 -2606.99005 5658.28387 -2607.08361 5658.1992 -2607.22229 5658.17668 -2607.38321 5658.22001 -2607.53981 5658.32206 -2607.66625 5658.4241 -2607.74999 5666.90491 -2616.23091 5667.10622 -2616.47621 5667.24651 -2616.73866 5667.3329 -2617.02344 5667.364 -2617.33925 5667.364 -2695.62448 5667.3958 -2695.78078 5667.48614 -2695.91222 5667.62065 -2695.99792 5667.77796 -2696.02424 5667.93305 -2695.98701 5668.2417 -2695.84308 5668.44432 -2695.78879 5668.59842 -2695.7084 5668.70388 -2695.57025 5668.74079 -2695.40041 5668.70218 -2695.23095 5668.51573 -2694.838 5668.41684 -2694.46895 5668.38343 -2694.087 5668.41684 -2693.70505 5668.51608 -2693.3347 5668.67811 -2692.98721 5668.89803 -2692.67314 5669.02073 -2692.53658 5669.10743 -2692.3994 5669.15352 -2692.29694 5669.1693 -2692.1857 5669.1693 -2689.8853 5669.13885 -2689.73223 5669.03897 -2689.55372 5668.90319 -2689.40523 5668.67811 -2689.08379 5668.51608 -2688.7363 5668.41684 -2688.36595 5668.38343 -2687.984 5668.41684 -2687.60205 5668.51608 -2687.2317 5668.67811 -2686.88421 5668.89803 -2686.57014 5669.16914 -2686.29903 5669.48321 -2686.07911 5669.8307 -2685.91708 5670.20105 -2685.81784 5670.583 -2685.78443 5670.96495 -2685.81784 5671.3353 -2685.91708 5671.68279 -2686.07911 5671.99686 -2686.29903 5672.26797 -2686.57014 5672.48789 -2686.88421 5672.64992 -2687.2317 5672.74916 -2687.60205 5672.78257 -2687.984 5672.74916 -2688.36595 5672.64992 -2688.7363 5672.48789 -2689.08379 5672.26797 -2689.39786 5672.1459 -2689.53373 5672.05877 -2689.67144 5672.01261 -2689.77396 5671.9968 -2689.88528 5671.9967 -2692.18473 5672.02654 -2692.33634 5672.12705 -2692.51718 5672.26277 -2692.66572 5672.48789 -2692.98721 5672.64992 -2693.3347 5672.74916 -2693.70505 5672.78257 -2694.087 5672.74916 -2694.46895 5672.64992 -2694.8393 5672.48789 -2695.18679 5672.26797 -2695.50086 5671.99686 -2695.77197 5671.68279 -2695.99189 5671.3353 -2696.15392 5671.13268 -2696.20821 5670.97858 -2696.2886 5670.87312 -2696.42675 5670.83621 -2696.59659 5670.87482 -2696.76605 5671.06127 -2697.159 5671.16016 -2697.52805 5671.19357 -2697.91 5671.16016 -2698.29195 5671.06092 -2698.6623 5670.89889 -2699.00979 5670.67897 -2699.32386 5670.63086 -2699.37197 5670.54415 -2699.50174 5670.5137 -2699.65481 5670.5137 -2786.76462 5670.5455 -2786.92091 5670.63584 -2787.05235 5670.77035 -2787.13805 5670.92766 -2787.16437 5671.08275 -2787.12714 5671.2287 -2787.05908 5671.59905 -2786.95984 5671.981 -2786.92643 5672.36295 -2786.95984 5672.7333 -2787.05908 5672.78754 -2787.08437 5672.95659 -2787.12185 5734.46502 -2787.12185 5734.6181 -2787.0914 5734.74787 -2787.00469 5755.94351 -2765.80895 5756.00845 -2765.72372 5756.04843 -2765.62431 5756.10527 -2765.39983 5756.26427 -2765.03735 5756.3547 -2764.83762 5756.34815 -2764.67394 5756.27654 -2764.52661 5756.15188 -2764.42033 5755.99507 -2764.37294 5755.90605 -2764.36516 5755.5357 -2764.26592 5755.18821 -2764.10389 5754.87414 -2763.88397 5754.60303 -2763.61286 5754.38311 -2763.29879 5754.22108 -2762.9513 5754.12184 -2762.58095 5754.08757 -2762.18922 5754.04037 -2762.01198 5754.00109 -2761.92743 5753.94329 -2761.85427 5713.68869 -2721.59966 5713.48972 -2721.35396 5713.35575 -2721.09104 5713.27801 -2720.8009 5713.2598 -2720.56948 5713.2598 -2711.62095 5713.22996 -2711.46936 5713.12965 -2711.28874 5712.99431 -2711.1404 5712.76911 -2710.81879 5712.60708 -2710.4713 5712.50784 -2710.10095 5712.47443 -2709.719 5712.50784 -2709.33705 5712.60708 -2708.9667 5712.76911 -2708.61921 5712.98903 -2708.30514 5713.11063 -2708.16949 5713.19828 -2708.0303 5713.24411 -2707.92808 5713.2598 -2707.81715 5713.2598 -2673.41656 5713.22935 -2673.26349 5713.14264 -2673.13372 5706.10474 -2666.09582 5705.97497 -2666.00911 5705.8219 -2665.97866 5705.66883 -2666.00911 5705.53906 -2666.09582 5705.45235 -2666.22559 5705.4219 -2666.37866 5705.4219 -2715.94034 5705.45235 -2716.09341 5705.53906 -2716.22318 5722.12415 -2732.80819 5722.25363 -2732.89478 5722.43383 -2732.94941 5722.85098 -2732.98585 5723.2213 -2733.08508 5723.56879 -2733.24711 5723.88286 -2733.46703 5724.15397 -2733.73814 5724.37389 -2734.05221 5724.53592 -2734.3997 5724.63516 -2734.77005 5724.66857 -2735.152 5724.63516 -2735.53395 5724.53592 -2735.9043 5724.37389 -2736.25179 5724.15397 -2736.56586 5723.88286 -2736.83697 5723.56879 -2737.05689 5723.2213 -2737.21892 5722.85095 -2737.31816 5722.469 -2737.35157 5722.38349 -2737.34409 5722.22281 -2737.36287 5722.08271 -2737.44376 5721.9861 -2737.57352 5721.9488 -2737.73093 5721.97689 -2737.89025 5722.06579 -2738.02541 5733.14779 -2749.10742 5733.27737 -2749.19405 5733.45692 -2749.2484 5733.87397 -2749.28485 5734.2443 -2749.38408 5734.59179 -2749.54611 5734.90586 -2749.76603 5735.17697 -2750.03714 5735.39689 -2750.35121 5735.55892 -2750.6987 5735.65816 -2751.06905 5735.69157 -2751.451 5735.65816 -2751.83295 5735.55892 -2752.2033 5735.39689 -2752.55079 5735.17697 -2752.86486 5734.90586 -2753.13597 5734.59179 -2753.35589 5734.2443 -2753.51792 5733.87395 -2753.61716 5733.492 -2753.65057 5733.11005 -2753.61716 5732.7397 -2753.51792 5732.39221 -2753.35589 5732.07814 -2753.13597 5731.80703 -2752.86486 5731.58711 -2752.55079 5731.42508 -2752.2033 5731.32584 -2751.83295 5731.28938 -2751.41614 5731.23455 -2751.23556 5731.14799 -2751.10617 5720.6762 -2740.63437 5720.5367 -2740.54378 5720.37242 -2740.51776 5720.21176 -2740.56081 5720.0825 -2740.66549 5720.00699 -2740.81369 5719.92992 -2741.1013 5719.76789 -2741.44879 5719.54797 -2741.76286 5719.27686 -2742.03397 5718.96279 -2742.25389 5718.81516 -2742.32272 5718.69167 -2742.41245 5718.61077 -2742.5419 5718.58427 -2742.69223 5718.616 -2742.84154 5718.70136 -2742.96809 5719.24967 -2743.51639 5719.37817 -2743.60258 5719.55969 -2743.65806 5719.97683 -2743.69481 5720.3473 -2743.79408 5720.69479 -2743.95611 5721.00886 -2744.17603 5721.27997 -2744.44714 5721.49989 -2744.76121 5721.66192 -2745.1087 5721.76116 -2745.47905 5721.79457 -2745.861 5721.76116 -2746.24295 5721.66192 -2746.6133 5721.49989 -2746.96079 5721.27997 -2747.27486 5721.00886 -2747.54597 5720.69479 -2747.76589 5720.3473 -2747.92792 5719.97695 -2748.02716 5719.595 -2748.06057 5719.21305 -2748.02716 5718.8427 -2747.92792 5718.49521 -2747.76589 5718.18114 -2747.54597 5717.91003 -2747.27486 5717.69011 -2746.96079 5717.52808 -2746.6133 5717.42884 -2746.24295 5717.39376 -2745.84197 5717.3446 -2745.66498 5717.25039 -2745.51567 5715.23813 -2743.5034 5715.11125 -2743.4179 5714.96156 -2743.38629 5714.81095 -2743.41319 5714.68146 -2743.49466 5714.59202 -2743.61879 5714.41238 -2744.00851 5714.19297 -2744.32186 5713.92186 -2744.59297 5713.60779 -2744.81289 5713.2603 -2744.97492 5712.88995 -2745.07416 5712.508 -2745.10757 5712.12605 -2745.07416 5711.7557 -2744.97492 5711.40821 -2744.81289 5711.09414 -2744.59297 5710.82303 -2744.32186 5710.60311 -2744.00779 5710.44108 -2743.6603 5710.34184 -2743.28995 5710.30538 -2742.87314 5710.25121 -2742.69375 5710.16429 -2742.56348 5693.81079 -2726.20996 5693.61182 -2725.96426 5693.47785 -2725.70134 5693.40011 -2725.4112 5693.3819 -2725.17978 5693.3819 -2664.95605 5693.35145 -2664.80298 5693.26474 -2664.67321 5688.02328 -2659.43166 5687.89351 -2659.34495 5687.74043 -2659.3145 5673.70065 -2659.3145 5673.54906 -2659.34434 5673.3675 -2659.4455 5673.21988 -2659.58105 5672.89879 -2659.80589 5672.5513 -2659.96792 5672.18095 -2660.06716 5671.799 -2660.10057 5671.41705 -2660.06716 5671.0467 -2659.96792 5670.69921 -2659.80589 5670.38514 -2659.58597 5670.11403 -2659.31486 5669.89411 -2659.00079 5669.73208 -2658.6533 5669.63284 -2658.28295 5669.59943 -2657.901 5669.63284 -2657.51905 5669.73208 -2657.1487 5669.89411 -2656.80121 5670.11403 -2656.48714 5670.38514 -2656.21603 5670.69921 -2655.99611 5671.0467 -2655.83408 5671.41705 -2655.73484 5671.799 -2655.70143 5672.18095 -2655.73484 5672.5513 -2655.83408 5672.89879 -2655.99611 5673.21286 -2656.21603 5673.35135 -2656.34044 5673.48668 -2656.42562 5673.58887 -2656.47142 5673.69976 -2656.4871 5688.47074 -2656.4871 5688.78517 -2656.52015 5689.06581 -2656.61133 5689.32593 -2656.76152 5689.50246 -2656.91228 5695.06126 -2662.47117 5695.19102 -2662.55788 5695.3441 -2662.58833 5695.49717 -2662.55788 5695.62694 -2662.47117 5695.71365 -2662.3414 5695.7441 -2662.18833 5695.7441 -2654.32615 5695.71365 -2654.17308 5695.62695 -2654.04331 5691.02038 -2649.43666 5690.89061 -2649.34995 5690.73753 -2649.3195 5673.58705 -2649.3195 5673.43546 -2649.34934 5673.25425 -2649.45018 5673.10608 -2649.58592 5672.78479 -2649.81089 5672.4373 -2649.97292 5672.06695 -2650.07216 5671.685 -2650.10557 5671.30305 -2650.07216 5670.9327 -2649.97292 5670.58521 -2649.81089 5670.27114 -2649.59097 5670.00003 -2649.31986 5669.78011 -2649.00579 5669.61808 -2648.6583 5669.51884 -2648.28795 5669.48543 -2647.906 5669.51884 -2647.52405 5669.61808 -2647.1537 5669.78011 -2646.80621 5670.00003 -2646.49214 5670.27114 -2646.22103 5670.58521 -2646.00111 5670.9327 -2645.83908 5671.30305 -2645.73984 5671.685 -2645.70643 5672.06695 -2645.73984 5672.4373 -2645.83908 5672.78479 -2646.00111 5673.09886 -2646.22103 5673.23522 -2646.34353 5673.3724 -2646.43023 5673.47486 -2646.47632 5673.5861 -2646.4921 5691.46784 -2646.4921 5691.78227 -2646.52515 5692.06291 -2646.61633 5692.32303 -2646.76652 5692.49956 -2646.91729 5697.42345 -2651.84127 5697.55322 -2651.92798 5697.7063 -2651.95843 5697.85937 -2651.92798 5697.98914 -2651.84127 5698.07585 -2651.7115 5698.1063 -2651.55843 5698.1063 -2643.85366 5698.07585 -2643.70059 5697.98914 -2643.57082 5693.85998 -2639.44166 5693.73021 -2639.35495 5693.57714 -2639.3245 5673.59255 -2639.3245 5673.44096 -2639.35434 5673.25931 -2639.45559 5673.11183 -2639.59109 5672.79079 -2639.81589 5672.4433 -2639.97792 5672.07295 -2640.07716 5671.691 -2640.11057 5671.30905 -2640.07716 5670.9387 -2639.97792 5670.59121 -2639.81589 5670.27714 -2639.59597 5670.00603 -2639.32486 5669.78611 -2639.01079 5669.62408 -2638.6633 5669.52484 -2638.29295 5669.49143 -2637.911 5669.52484 -2637.52905 5669.62408 -2637.1587 5669.78611 -2636.81121 5670.00603 -2636.49714 5670.27714 -2636.22603 5670.59121 -2636.00611 5670.9387 -2635.84408 5671.30905 -2635.74484 5671.691 -2635.71143 5672.07295 -2635.74484 5672.4433 -2635.84408 5672.79079 -2636.00611 5673.10486 -2636.22603 5673.24419 -2636.35119 5673.37874 -2636.43576 5673.48084 -2636.48146 5673.5916 -2636.4971 5694.30744 -2636.4971 5694.62187 -2636.53015 5694.90251 -2636.62133 5695.16264 -2636.77152 5695.33915 -2636.92228 5699.62826 -2641.21138 5699.75803 -2641.29809 5699.9111 -2641.32854 5700.06417 -2641.29809 5700.19394 -2641.21138 5700.28065 -2641.08161 5700.3111 -2640.92854 5700.3111 -2638.61746 5700.28065 -2638.46439 5700.19394 -2638.33462 5691.30598 -2629.44666 5691.17621 -2629.35995 5691.02314 -2629.3295 5673.57705 -2629.3295 5673.42546 -2629.35934 5673.24425 -2629.46018 5673.09608 -2629.59592 5672.77479 -2629.82089 5672.4273 -2629.98292 5672.05695 -2630.08216 5671.675 -2630.11557 5671.29305 -2630.08216 5670.9227 -2629.98292 5670.57521 -2629.82089 5670.26114 -2629.60097 5669.99003 -2629.32986 5669.77011 -2629.01579 5669.60808 -2628.6683 5669.50884 -2628.29795 5669.47543 -2627.916 5669.50884 -2627.53405 5669.60808 -2627.1637 5669.77011 -2626.81621 5669.99003 -2626.50214 5670.26114 -2626.23103 5670.57521 -2626.01111 5670.9227 -2625.84908 5671.29305 -2625.74984 5671.675 -2625.71643 5672.05695 -2625.74984 5672.4273 -2625.84908 5672.77479 -2626.01111 5673.08886 -2626.23103 5673.22522 -2626.35353 5673.3624 -2626.44023 5673.46486 -2626.48632 5673.5761 -2626.5021 5691.75344 -2626.5021 5692.06787 -2626.53515 5692.34851 -2626.62633 5692.60864 -2626.77652 5692.78515 -2626.92728 5701.91166 -2636.05378 5702.04143 -2636.14049 5702.1945 -2636.17094 5702.34757 -2636.14049 5702.47734 -2636.05378 5702.56405 -2635.92401 5702.5945 -2635.77094 5702.5945 -2629.44425 5702.56405 -2629.29118 5702.47734 -2629.16141 5692.76768 -2619.45166 5692.63791 -2619.36495 5692.48484 -2619.3345 5673.52385 -2619.3345 5673.37226 -2619.36434 5673.19088 -2619.46534 5673.04298 -2619.60098 5672.72179 -2619.82589 5672.3743 -2619.98792 5672.00395 -2620.08716 5671.622 -2620.12057 5671.24005 -2620.08716 5670.8697 -2619.98792 5670.52221 -2619.82589 5670.20814 -2619.60597 5669.93703 -2619.33486 5669.71711 -2619.02079 5669.55508 -2618.6733 5669.45584 -2618.30295 5669.42243 -2617.921 5669.45584 -2617.53905 5669.55508 -2617.1687 5669.71711 -2616.82121 5669.93703 -2616.50714 5670.20814 -2616.23603 5670.52221 -2616.01611 5670.8697 -2615.85408 5671.24005 -2615.75484 5671.622 -2615.72143 5672.00395 -2615.75484 5672.3743 -2615.85408 5672.72179 -2616.01611 5673.03586 -2616.23603 5673.1734 -2616.3596 5673.30953 -2616.44544 5673.41185 -2616.49138 5673.5229 -2616.5071 5693.21514 -2616.5071 5693.52957 -2616.54015 5693.81021 -2616.63133 5694.07034 -2616.78152 5694.24685 -2616.93228 5704.99302 -2627.67854 5705.19198 -2627.92425 5705.32595 -2628.18717 5705.40369 -2628.47731 5705.4219 -2628.70872 5705.4219 -2646.91281 5705.45235 -2647.06589 5705.53906 -2647.19566 5705.66883 -2647.28236 5705.8219 -2647.31281 5705.97498 -2647.28236 5706.10475 -2647.19565 5707.75295 -2645.5474 5707.83965 -2645.41763 5707.8701 -2645.26456 5707.8701 -2643.5861 5707.83965 -2643.43303 5707.73978 -2643.25454 5707.6042 -2643.10624 5707.37911 -2642.78479 5707.21708 -2642.4373 5707.11784 -2642.06695 5707.08443 -2641.685 5707.11784 -2641.30305 5707.21708 -2640.9327 5707.37911 -2640.58521 5707.59903 -2640.27114 5707.87014 -2640.00003 5708.18421 -2639.78011 5708.5317 -2639.61808 5708.90205 -2639.51884 5709.284 -2639.48543 5709.66595 -2639.51884 5710.0363 -2639.61808 5710.38379 -2639.78011 5710.69786 -2640.00003 5710.96897 -2640.27114 5711.18889 -2640.58521 5711.35092 -2640.9327 5711.45383 -2641.31676 5711.52747 -2641.46263 5711.65329 -2641.56688 5711.81031 -2641.61211 5711.97231 -2641.59079 5712.11227 -2641.50645 5712.20682 -2641.37319 5712.2402 -2641.21323 5712.2402 -2629.84685 5712.21036 -2629.69526 5712.10962 -2629.51417 5711.97413 -2629.36614 5711.74911 -2629.04479 5711.58708 -2628.6973 5711.48784 -2628.32695 5711.45443 -2627.945 5711.48784 -2627.56305 5711.58708 -2627.1927 5711.74911 -2626.84521 5711.96903 -2626.53114 5712.24014 -2626.26003 5712.55421 -2626.04011 5712.9017 -2625.87808 5713.27205 -2625.77884 5713.654 -2625.74543 5713.99803 -2625.77553 5714.15871 -2625.75675 5714.29881 -2625.67586 5714.39541 -2625.5461 5714.43272 -2625.38868 5714.40463 -2625.22937 5714.31573 -2625.09421 5711.89699 -2622.67546 5711.69802 -2622.42976 5711.56405 -2622.16684 5711.48631 -2621.8767 5711.4681 -2621.64528 5711.4681 -2619.82275 5711.43826 -2619.67116 5711.33753 -2619.49007 5711.20213 -2619.34214 5710.97711 -2619.02079 5710.81508 -2618.6733 5710.71584 -2618.30295 5710.68243 -2617.921 5710.71584 -2617.53905 5710.81508 -2617.1687 5710.97711 -2616.82121 5711.19703 -2616.50714 5711.46814 -2616.23603 5711.78221 -2616.01611 5712.1297 -2615.85408 5712.50005 -2615.75484 5712.882 -2615.72143 5713.26395 -2615.75484 5713.6343 -2615.85408 5713.98179 -2616.01611 5714.29586 -2616.23603 5714.56697 -2616.50714 5714.78689 -2616.82121 5714.94892 -2617.1687 5715.04816 -2617.53905 5715.08157 -2617.921 5715.04816 -2618.30295 5714.94892 -2618.6733 5714.78689 -2619.02079 5714.56697 -2619.33486 5714.44034 -2619.47579 5714.35662 -2619.60929 5714.31108 -2619.71124 5714.2955 -2619.8218 5714.2955 -2620.90974 5714.32595 -2621.06281 5714.41266 -2621.19258 5717.55211 -2624.33204 5717.75108 -2624.57774 5717.88505 -2624.84066 5717.96279 -2625.1308 5717.981 -2625.36222 5717.981 -2661.01264 5718.01145 -2661.16571 5718.09816 -2661.29548 5732.50871 -2675.70604 5732.70768 -2675.95174 5732.84165 -2676.21466 5732.91939 -2676.5048 5732.9376 -2676.73622 5732.9376 -2712.23554 5732.96805 -2712.38861 5733.05476 -2712.51838 5744.70563 -2724.16925 5744.84079 -2724.25815 5745.0001 -2724.28624 5745.15752 -2724.24893 5745.28728 -2724.15233 5745.36817 -2724.01223 5745.38695 -2723.85155 5745.35243 -2723.457 5745.38584 -2723.07505 5745.48508 -2722.7047 5745.64711 -2722.35721 5745.86703 -2722.04314 5746.13814 -2721.77203 5746.45221 -2721.55211 5746.7997 -2721.39008 5747.17005 -2721.29084 5747.28463 -2721.28082 5747.43446 -2721.23715 5747.55618 -2721.13946 5747.63125 -2721.00262 5747.64824 -2720.84748 5747.63543 -2720.701 5747.66884 -2720.31905 5747.76808 -2719.9487 5747.93011 -2719.60121 5748.15003 -2719.28714 5748.42114 -2719.01603 5748.73521 -2718.79611 5749.0827 -2718.63408 5749.45305 -2718.53484 5749.835 -2718.50143 5750.15302 -2718.52925 5750.30816 -2718.51226 5750.445 -2718.43719 5750.54269 -2718.31547 5750.58636 -2718.16564 5750.62184 -2717.76005 5750.72108 -2717.3897 5750.88311 -2717.04221 5751.10303 -2716.72814 5751.37414 -2716.45703 5751.68821 -2716.23711 5752.0357 -2716.07508 5752.40605 -2715.97584 5752.788 -2715.94243 5752.92985 -2715.95484 5753.10152 -2715.93224 5753.24756 -2715.8392 5753.34059 -2715.69317 5753.36319 -2715.5215 5753.34443 -2715.307 5753.37784 -2714.92505 5753.47708 -2714.5547 5753.63911 -2714.20721 5753.85903 -2713.89314 5754.13014 -2713.62203 5754.44421 -2713.40211 5754.7917 -2713.24008 5755.16205 -2713.14084 5755.544 -2713.10743 5755.92595 -2713.14084 5756.2963 -2713.24008 5756.64379 -2713.40211 5756.95786 -2713.62203 5757.07379 -2713.73169 5757.21722 -2713.83765 5757.37687 -2713.90825 5757.53971 -2713.9328 5784.90254 -2713.9328 5785.05562 -2713.90235 5785.2345 -2713.80213 5785.38297 -2713.66605 5785.70421 -2713.44111 5786.0517 -2713.27908 5786.42205 -2713.17984 5786.804 -2713.14643 5787.18595 -2713.17984 5787.5563 -2713.27908 5787.75431 -2713.37141 5787.92336 -2713.40889 5788.09241 -2713.37141 5788.22978 -2713.26601 5788.30973 -2713.11242 5788.39808 -2712.7827 5788.56011 -2712.43521 5788.78003 -2712.12114 5789.05114 -2711.85003 5789.36521 -2711.63011 5789.7127 -2711.46808 5790.08305 -2711.36884 5790.465 -2711.33543 5790.84695 -2711.36884 5791.2173 -2711.46808 5791.56479 -2711.63011 5791.87886 -2711.85003 5792.14997 -2712.12114 5792.36989 -2712.43521 5792.53192 -2712.7827 5792.63116 -2713.15305 5792.66457 -2713.535 5792.63116 -2713.91695 5792.53192 -2714.2873 5792.36989 -2714.63479 5792.14997 -2714.94886 5792.02832 -2715.08424 5791.94077 -2715.22248 5791.89453 -2715.32507 5791.8787 -2715.43648 5791.8786 -2717.33343 5791.84555 -2717.64787 5791.75437 -2717.92851 5791.60418 -2718.18864 5791.45342 -2718.36515 5790.73136 -2719.08721 5790.48566 -2719.28618 5790.22274 -2719.42015 5789.9326 -2719.49789 5789.70118 -2719.5161 5786.26445 -2719.5161 5786.11286 -2719.54594 5785.9317 -2719.64674 5785.7841 -2719.7819 5785.46279 -2720.00689 5785.1153 -2720.16892 5784.74421 -2720.26836 5784.36871 -2720.30266 5784.23501 -2720.33896 5784.12172 -2720.4187 5784.04241 -2720.5323 5784.00662 -2720.66614 5783.97016 -2721.08295 5783.87092 -2721.4533 5783.70889 -2721.80079 5783.48897 -2722.11486 5783.21786 -2722.38597 5782.90379 -2722.60589 5782.5563 -2722.76792 5782.18595 -2722.86716 5781.804 -2722.90057 5781.6288 -2722.88524 5781.45713 -2722.90785 5781.3111 -2723.00088 5781.21806 -2723.14691 5781.19546 -2723.31858 5781.20757 -2723.457 5781.17416 -2723.83895 5781.07492 -2724.2093 5780.91289 -2724.55679 5780.69297 -2724.87086 5780.42186 -2725.14197 5780.10779 -2725.36189 5779.7603 -2725.52392 5779.38995 -2725.62316 5779.008 -2725.65657 5778.62605 -2725.62316 5778.2557 -2725.52392 5777.90821 -2725.36189 5777.59414 -2725.14197 5777.45286 -2725.01503 5777.31963 -2724.93155 5777.21774 -2724.88606 5777.10724 -2724.8705 5749.4525 -2724.8705 5749.29943 -2724.90095 5749.12003 -2725.00165 5748.97273 -2725.13716 5748.65179 -2725.36189 5748.3043 -2725.52392 5747.93395 -2725.62316 5747.552 -2725.65657 5747.15745 -2725.62205 5746.99677 -2725.64083 5746.85667 -2725.72172 5746.76007 -2725.85148 5746.72276 -2726.0089 5746.75085 -2726.16821 5746.83975 -2726.30337 5766.88789 -2746.35152 5767.01747 -2746.43815 5767.19712 -2746.4925 5767.61504 -2746.52887 5767.9853 -2746.62808 5768.33279 -2746.79011 5768.64686 -2747.01003 5768.91797 -2747.28114 5769.13789 -2747.59521 5769.29992 -2747.9427 5769.39916 -2748.31305 5769.43257 -2748.695 5769.39916 -2749.07695 5769.29992 -2749.4473 5769.13789 -2749.79479 5768.91797 -2750.10886 5768.64686 -2750.37997 5768.33279 -2750.59989 5767.9853 -2750.76192 5767.61495 -2750.86116 5767.233 -2750.89457 5766.85105 -2750.86116 5766.4807 -2750.76192 5766.13321 -2750.59989 5765.81914 -2750.37997 5765.54803 -2750.10886 5765.32811 -2749.79479 5765.16608 -2749.4473 5765.06684 -2749.07695 5765.03307 -2748.69095 5764.98768 -2748.51454 5764.94811 -2748.42671 5764.88869 -2748.35088 5754.79087 -2738.25306 5754.65138 -2738.16247 5754.48709 -2738.13645 5754.32643 -2738.1795 5754.19717 -2738.28417 5754.12166 -2738.43237 5754.10292 -2738.5023 5753.94089 -2738.84979 5753.72097 -2739.16386 5753.44986 -2739.43497 5753.13579 -2739.65489 5752.7883 -2739.81692 5752.43757 -2739.9109 5752.28937 -2739.98641 5752.18469 -2740.11567 5752.14164 -2740.27634 5752.16766 -2740.44062 5752.25825 -2740.58011 5763.30527 -2751.6271 5763.43479 -2751.71371 5763.61504 -2751.76838 5764.03196 -2751.80485 5764.4023 -2751.90408 5764.74979 -2752.06611 5765.06386 -2752.28603 5765.33497 -2752.55714 5765.55489 -2752.87121 5765.71692 -2753.2187 5765.81616 -2753.58905 5765.84957 -2753.971 5765.81616 -2754.35295 5765.71692 -2754.7233 5765.54548 -2755.08421 5765.48012 -2755.23928 5765.48431 -2755.40751 5765.55733 -2755.55912 5765.68624 -2755.66729 5765.84823 -2755.71287 5766.01463 -2755.68779 5766.15599 -2755.59649 5794.18717 -2727.56534 5794.26685 -2727.45155 5794.38311 -2727.20221 5794.60303 -2726.88814 5794.87414 -2726.61703 5795.18821 -2726.39711 5795.43764 -2726.2808 5795.55144 -2726.20112 5809.19208 -2712.56048 5809.42655 -2712.27782 5809.47012 -2712.21262 5809.62472 -2711.92338 5809.65473 -2711.85093 5809.74993 -2711.53709 5809.76548 -2711.45748 5809.83363 -2710.71385 5809.94407 -2710.31912 5809.98155 -2710.15008 5809.98155 -2648.02206 5809.94284 -2647.82495 5809.90943 -2647.443 5809.94284 -2647.06105 5809.98155 -2646.86394 5809.98155 -2607.35705 5809.9511 -2607.20398 5809.86439 -2607.07421 5809.73462 -2606.9875 5809.58155 -2606.95705 5773.50935 -2606.95705 5773.35628 -2606.9875 5773.22651 -2607.07421 5773.1398 -2607.20398 5773.10935 -2607.35705 5773.10935 -2628.22784 5773.14683 -2628.39689 5773.17192 -2628.4507 5773.27116 -2628.82105 5773.30457 -2629.203 5773.27116 -2629.58495 5773.17192 -2629.9553 5773.00989 -2630.30279 5772.78997 -2630.61686 5772.51886 -2630.88797 5772.20479 -2631.10789 5771.8573 -2631.26992 5771.48695 -2631.36916 5771.105 -2631.40257 5770.72305 -2631.36916 5770.3527 -2631.26992 5770.00521 -2631.10789 5769.69114 -2630.88797 5769.42003 -2630.61686 5769.20011 -2630.30279 5769.03808 -2629.9553 5768.93884 -2629.58495 5768.90543 -2629.203 5768.93884 -2628.82105 5769.03808 -2628.4507 5769.06337 -2628.39646 5769.10085 -2628.22741 5769.10085 -2607.35705 5769.0704 -2607.20398 5768.98369 -2607.07421 5768.85392 -2606.9875 5768.70085 -2606.95705 5673.5908 -2606.95705 5673.42176 -2606.99453 5673.3673 -2607.01992 5672.99695 -2607.11916 5672.615 -2607.15257 5672.23305 -2607.11916 5671.8627 -2607.01992 5671.80824 -2606.99453 Z \",\"M 5667.19965 -2542.07305 L 5667.04141 -2542.10568 5666.90899 -2542.19825 5666.82399 -2542.33566 5666.80028 -2542.49548 5666.84174 -2542.65164 5666.94159 -2542.77867 5667.08355 -2542.85583 5667.21277 -2542.89503 5667.49088 -2543.04367 5667.74991 -2543.25625 5671.14184 -2546.6481 5671.27161 -2546.7348 5671.42468 -2546.76525 5673.35237 -2546.76439 5673.94822 -2546.72191 5674.53342 -2546.60202 5675.09797 -2546.40676 5675.63221 -2546.13949 5676.127 -2545.80477 5676.96624 -2545.06871 5677.41963 -2544.76576 5677.90869 -2544.52458 5678.42505 -2544.3493 5678.95987 -2544.24292 5679.504 -2544.20726 5680.04813 -2544.24292 5680.58295 -2544.3493 5681.09931 -2544.52458 5681.58837 -2544.76576 5682.04177 -2545.06871 5682.45175 -2545.42825 5682.81129 -2545.83823 5683.11424 -2546.29163 5683.35542 -2546.78069 5683.5307 -2547.29705 5683.63708 -2547.83187 5683.67274 -2548.376 5683.63708 -2548.92013 5683.5307 -2549.45495 5683.35542 -2549.97131 5683.11424 -2550.46037 5682.81129 -2550.91377 5682.45175 -2551.32375 5682.0412 -2551.68366 5681.92375 -2551.80502 5681.86686 -2551.96404 5681.88066 -2552.13236 5681.9627 -2552.27999 5682.09835 -2552.3806 5682.26343 -2552.41625 5683.0205 -2552.41625 5683.17358 -2552.3858 5683.30335 -2552.29909 5683.6787 -2551.92253 5684.07917 -2551.46588 5684.11102 -2551.42437 5684.44842 -2550.91941 5684.47458 -2550.8741 5684.74319 -2550.32943 5684.76321 -2550.28109 5684.95842 -2549.70601 5684.97196 -2549.65547 5685.09044 -2549.05984 5685.0973 -2549.0076 5685.1742 -2547.81782 5685.28115 -2547.26864 5685.45743 -2546.73772 5685.70015 -2546.23371 5686.00533 -2545.76487 5686.36796 -2545.33891 5686.78208 -2544.96282 5687.24089 -2544.64277 5687.73687 -2544.38402 5688.26186 -2544.19081 5688.80725 -2544.06633 5689.36407 -2544.01262 5689.9232 -2544.03055 5690.47544 -2544.11983 5691.01173 -2544.279 5691.52327 -2544.50544 5692.00165 -2544.79543 5692.43901 -2545.14422 5692.82819 -2545.54608 5693.16278 -2545.9944 5693.43729 -2546.48183 5693.64722 -2547.00036 5693.78912 -2547.54147 5693.86066 -2548.09629 5693.86066 -2548.65571 5693.78912 -2549.21053 5693.64722 -2549.75164 5693.43729 -2550.27017 5693.16278 -2550.7576 5692.82819 -2551.20592 5692.43901 -2551.60778 5692.00165 -2551.95657 5691.52327 -2552.24656 5691.01173 -2552.473 5690.47544 -2552.63217 5689.9232 -2552.72145 5689.57285 -2552.73356 5688.87214 -2552.78283 5688.82026 -2552.78966 5688.22463 -2552.90814 5688.17409 -2552.92168 5687.59901 -2553.11689 5687.55067 -2553.13691 5687.006 -2553.40552 5686.96069 -2553.43168 5686.45573 -2553.76908 5686.41422 -2553.80093 5685.93852 -2554.21925 5685.00599 -2555.15177 5684.9047 -2555.27841 5684.86201 -2555.43487 5684.88494 -2555.59541 5684.96973 -2555.73365 5685.10243 -2555.82688 5685.26123 -2555.85975 5689.577 -2555.85975 5689.73008 -2555.8293 5689.85985 -2555.74259 5693.9969 -2551.60554 5694.40608 -2551.13507 5694.73511 -2550.63649 5694.99624 -2550.09922 5695.18501 -2549.53248 5695.2982 -2548.94583 5695.37093 -2547.83182 5695.4773 -2547.29705 5695.65258 -2546.78069 5695.89376 -2546.29163 5696.19671 -2545.83823 5696.55625 -2545.42825 5696.96623 -2545.06871 5697.41963 -2544.76576 5697.90869 -2544.52458 5698.42505 -2544.3493 5698.95987 -2544.24292 5699.504 -2544.20726 5700.04813 -2544.24292 5700.58295 -2544.3493 5701.09931 -2544.52458 5701.58837 -2544.76576 5702.04177 -2545.06871 5702.45175 -2545.42825 5702.81129 -2545.83823 5703.11424 -2546.29163 5703.35542 -2546.78069 5703.5307 -2547.29705 5703.63708 -2547.83187 5703.67274 -2548.376 5703.63708 -2548.92013 5703.5307 -2549.45495 5703.35542 -2549.97131 5703.11424 -2550.46037 5702.81129 -2550.91377 5702.45175 -2551.32375 5702.04177 -2551.68329 5701.58837 -2551.98624 5701.09931 -2552.22742 5700.58295 -2552.4027 5700.04816 -2552.50907 5698.93423 -2552.58191 5698.34762 -2552.69509 5697.78088 -2552.88386 5697.24361 -2553.14499 5696.74503 -2553.47402 5696.27456 -2553.8832 5691.56253 -2558.59524 5691.3035 -2558.80781 5691.02539 -2558.95647 5690.72363 -2559.04801 5690.39015 -2559.08085 5660.11645 -2559.08085 5659.78299 -2559.04801 5659.63838 -2559.00414 5659.46357 -2558.99125 5659.30003 -2559.05433 5659.17917 -2559.18128 5659.12419 -2559.34772 5659.14565 -2559.52168 5659.23943 -2559.66976 5659.46721 -2559.89755 5659.59698 -2559.98425 5659.75005 -2560.0147 5744.62744 -2560.0147 5744.94187 -2560.04775 5745.22251 -2560.13893 5745.48263 -2560.28912 5745.65916 -2560.43988 5751.39632 -2566.17714 5751.52609 -2566.26385 5751.67917 -2566.2943 5786.91975 -2566.2943 5787.07134 -2566.26446 5787.25218 -2566.16395 5787.40072 -2566.02823 5787.72221 -2565.80311 5788.0697 -2565.64108 5788.44005 -2565.54184 5788.822 -2565.50843 5789.20395 -2565.54184 5789.5743 -2565.64108 5789.92179 -2565.80311 5790.23586 -2566.02303 5790.50697 -2566.29414 5790.72689 -2566.60821 5790.88892 -2566.9557 5790.98816 -2567.32605 5791.02157 -2567.708 5790.98816 -2568.08995 5790.88892 -2568.4603 5790.72689 -2568.80779 5790.50697 -2569.12186 5790.23586 -2569.39297 5789.92179 -2569.61289 5789.5743 -2569.77492 5789.20395 -2569.87416 5788.822 -2569.90757 5788.44005 -2569.87416 5788.0697 -2569.77492 5787.72221 -2569.61289 5787.40814 -2569.39297 5787.27182 -2569.27049 5787.13439 -2569.1836 5787.03191 -2569.13749 5786.92064 -2569.1217 5750.94886 -2569.1217 5750.63443 -2569.08865 5750.35379 -2568.99747 5750.09367 -2568.84728 5749.91714 -2568.69652 5744.17998 -2562.95926 5744.05021 -2562.87255 5743.89713 -2562.8421 5730.20422 -2562.8421 5730.06087 -2562.86867 5729.93657 -2562.94484 5729.84782 -2563.0605 5729.80641 -2563.20029 5729.81785 -2563.34563 5729.91416 -2563.70505 5729.94757 -2564.087 5729.91416 -2564.46895 5729.81492 -2564.8393 5729.65289 -2565.18679 5729.43297 -2565.50086 5729.16186 -2565.77197 5728.84779 -2565.99189 5728.5003 -2566.15392 5728.12995 -2566.25316 5727.748 -2566.28657 5727.36605 -2566.25316 5727.01235 -2566.15838 5726.83937 -2566.15083 5726.6794 -2566.21709 5726.56242 -2566.34475 5726.40892 -2566.9053 5726.24689 -2567.25279 5726.02697 -2567.56686 5725.75586 -2567.83797 5725.44179 -2568.05789 5725.0943 -2568.21992 5724.72395 -2568.31916 5724.342 -2568.35257 5723.96005 -2568.31916 5723.5897 -2568.21992 5723.24221 -2568.05789 5722.92814 -2567.83797 5722.77383 -2567.68366 5722.64406 -2567.59695 5722.49099 -2567.5665 5655.59456 -2567.5665 5655.28013 -2567.53345 5654.99949 -2567.44227 5654.73936 -2567.29208 5654.56285 -2567.14132 5649.31778 -2561.89626 5649.18801 -2561.80955 5649.03494 -2561.7791 5617.40556 -2561.7791 5617.09113 -2561.74605 5616.81049 -2561.65487 5616.55036 -2561.50468 5616.37385 -2561.35392 5614.82958 -2559.80966 5614.69981 -2559.72295 5614.54674 -2559.6925 5606.61816 -2559.6925 5606.30373 -2559.65945 5606.02309 -2559.56827 5605.76296 -2559.41808 5605.58645 -2559.26732 5602.93978 -2556.62066 5602.81001 -2556.53395 5602.65694 -2556.5035 5542.90855 -2556.5035 5542.75696 -2556.53334 5542.57531 -2556.63459 5542.42783 -2556.77009 5542.10679 -2556.99489 5541.7593 -2557.15692 5541.38895 -2557.25616 5541.007 -2557.28957 5540.62505 -2557.25616 5540.2547 -2557.15692 5539.90721 -2556.99489 5539.59314 -2556.77497 5539.32203 -2556.50386 5539.10211 -2556.18979 5538.94008 -2555.8423 5538.84084 -2555.47195 5538.80743 -2555.09 5538.84084 -2554.70805 5538.94008 -2554.3377 5539.10211 -2553.99021 5539.32203 -2553.67614 5539.59314 -2553.40503 5539.90721 -2553.18511 5540.2547 -2553.02308 5540.62505 -2552.92384 5541.007 -2552.89043 5541.38895 -2552.92384 5541.7593 -2553.02308 5542.10679 -2553.18511 5542.42086 -2553.40503 5542.55994 -2553.52997 5542.69475 -2553.61473 5542.79687 -2553.66045 5542.90766 -2553.6761 5549.61598 -2553.6761 5549.78503 -2553.63862 5549.9224 -2553.53322 5550.00235 -2553.37963 5550.0099 -2553.20664 5549.76208 -2552.6713 5549.66284 -2552.30095 5549.62943 -2551.919 5549.66284 -2551.53705 5549.76208 -2551.1667 5549.92411 -2550.81921 5550.14378 -2550.5055 5550.44391 -2550.20665 5550.53095 -2550.07693 5550.56167 -2549.92377 5550.53139 -2549.77052 5550.44472 -2549.64056 5550.31488 -2549.5537 5550.16167 -2549.5232 5532.03819 -2549.5232 5531.88512 -2549.55365 5531.75535 -2549.64036 5516.73826 -2564.65745 5516.65155 -2564.78722 5516.6211 -2564.94029 5516.6211 -2582.30731 5516.63832 -2582.42342 5516.67881 -2582.55687 5516.69528 -2582.72417 5516.73176 -2582.85599 5516.81051 -2582.96781 5530.63358 -2596.79084 5530.76335 -2596.87755 5530.91643 -2596.908 5532.628 -2596.908 5532.628 -2598.61957 5532.65845 -2598.77264 5532.74516 -2598.90241 5556.21201 -2622.3692 5556.41332 -2622.61451 5556.55361 -2622.87696 5556.64 -2623.16174 5556.6711 -2623.47755 5556.6711 -2751.65811 5556.70155 -2751.81118 5556.78826 -2751.94095 5578.24351 -2773.3962 5578.44482 -2773.64151 5578.58511 -2773.90396 5578.6715 -2774.18874 5578.7026 -2774.50455 5578.7026 -2810.68575 5578.6715 -2811.00156 5578.58511 -2811.28634 5578.44482 -2811.54879 5578.24351 -2811.7941 5574.60831 -2815.4293 5574.52863 -2815.54309 5574.49267 -2815.67728 5574.46716 -2815.96895 5574.37318 -2816.31967 5574.36174 -2816.46501 5574.40315 -2816.6048 5574.4919 -2816.72046 5574.6162 -2816.79663 5574.75955 -2816.8232 5614.09192 -2816.8232 5614.23526 -2816.79663 5614.35957 -2816.72046 5614.44832 -2816.6048 5614.48973 -2816.46501 5614.47829 -2816.31967 5614.42584 -2816.12395 5614.39243 -2815.742 5614.42584 -2815.36005 5614.49474 -2815.10293 5614.50618 -2814.95759 5614.46477 -2814.8178 5614.37602 -2814.70214 5614.25172 -2814.62597 5614.10837 -2814.5994 5600.86496 -2814.5994 5600.55053 -2814.56635 5600.26989 -2814.47517 5600.00977 -2814.32498 5599.83324 -2814.17421 5594.18998 -2808.53085 5593.99101 -2808.28515 5593.85705 -2808.02222 5593.77931 -2807.73209 5593.7611 -2807.50068 5593.7611 -2799.65455 5593.73126 -2799.50296 5593.63037 -2799.3217 5593.49506 -2799.17405 5593.27011 -2798.85279 5593.10808 -2798.5053 5593.00884 -2798.13495 5592.97543 -2797.753 5593.00884 -2797.37105 5593.10808 -2797.0007 5593.27011 -2796.65321 5593.49003 -2796.33914 5593.76114 -2796.06803 5594.07521 -2795.84811 5594.4227 -2795.68608 5594.79305 -2795.58684 5595.175 -2795.55343 5595.40583 -2795.57362 5595.55764 -2795.55767 5595.69242 -2795.486 5595.79054 -2795.36907 5595.83771 -2795.22389 5595.82707 -2795.07162 5595.80384 -2794.98495 5595.77043 -2794.603 5595.80384 -2794.22105 5595.90308 -2793.8507 5596.06511 -2793.50321 5596.28503 -2793.18914 5596.55614 -2792.91803 5596.87021 -2792.69811 5597.2177 -2792.53608 5597.58805 -2792.43684 5597.97 -2792.40343 5598.35195 -2792.43684 5598.7223 -2792.53608 5599.06979 -2792.69811 5599.38386 -2792.91803 5599.65497 -2793.18914 5599.87489 -2793.50321 5600.03692 -2793.8507 5600.13616 -2794.22105 5600.16957 -2794.603 5600.13616 -2794.98495 5600.03692 -2795.3553 5599.87489 -2795.70279 5599.65497 -2796.01686 5599.5313 -2796.1545 5599.44546 -2796.29063 5599.39952 -2796.39295 5599.3838 -2796.50399 5599.3837 -2806.48954 5599.41415 -2806.64261 5599.50086 -2806.77238 5602.02112 -2809.29264 5602.15089 -2809.37935 5602.30396 -2809.4098 5637.85491 -2809.4098 5637.99866 -2809.38308 5638.1232 -2809.30648 5638.2119 -2809.19024 5638.25289 -2809.04989 5638.24071 -2808.90419 5638.12675 -2808.48787 5638.09343 -2808.107 5638.12684 -2807.72505 5638.22608 -2807.3547 5638.3872 -2807.00918 5638.64682 -2806.64679 5638.70248 -2806.53617 5638.72165 -2806.41384 5638.72165 -2788.0882 5638.69283 -2787.93913 5638.61054 -2787.81153 5638.48662 -2787.7238 5638.33893 -2787.68857 5638.18875 -2787.71092 5638.05772 -2787.78763 5637.87651 -2787.94675 5637.75528 -2788.0399 5637.27983 -2788.35809 5637.14748 -2788.43464 5636.63459 -2788.6881 5636.4934 -2788.74674 5635.95183 -2788.93115 5635.80419 -2788.97086 5635.2432 -2789.08307 5635.09165 -2789.10319 5634.52082 -2789.14128 5634.36793 -2789.14146 5633.79701 -2789.10477 5633.6454 -2789.08502 5633.08414 -2788.97419 5632.9364 -2788.93483 5632.39439 -2788.75174 5632.25305 -2788.69345 5631.73954 -2788.44124 5631.60701 -2788.36502 5631.13079 -2788.04799 5631.00933 -2787.95513 5630.57851 -2787.57871 5630.4702 -2787.4708 5630.09216 -2787.0414 5629.99885 -2786.92029 5629.68004 -2786.44526 5629.60332 -2786.31302 5629.34918 -2785.80046 5629.29036 -2785.65934 5629.10524 -2785.11802 5629.06533 -2784.97043 5628.95239 -2784.40959 5628.93207 -2784.25806 5628.89324 -2783.68728 5628.89285 -2783.53439 5628.92879 -2782.96342 5628.94835 -2782.81179 5629.05845 -2782.25038 5629.09761 -2782.10259 5629.27999 -2781.56034 5629.33809 -2781.41893 5629.58963 -2780.90509 5629.66568 -2780.77246 5629.98208 -2780.29582 5630.07478 -2780.17424 5630.45065 -2779.74293 5630.55841 -2779.63448 5630.98731 -2779.25588 5631.1083 -2779.16241 5631.58292 -2778.84297 5631.71506 -2778.76608 5632.22728 -2778.51127 5632.36833 -2778.45227 5632.90941 -2778.26644 5633.05694 -2778.22634 5633.61763 -2778.11266 5633.76914 -2778.09214 5634.33987 -2778.05256 5634.49275 -2778.05198 5635.06377 -2778.08717 5635.21543 -2778.10653 5635.77698 -2778.21589 5635.92481 -2778.25486 5636.4673 -2778.43653 5636.6088 -2778.49445 5637.12296 -2778.74531 5637.25569 -2778.82119 5637.73275 -2779.13697 5637.85445 -2779.22951 5638.05925 -2779.40751 5638.19035 -2779.48344 5638.34028 -2779.50517 5638.48754 -2779.46958 5638.611 -2779.38178 5638.69296 -2779.25436 5638.72165 -2779.10561 5638.72165 -2778.5244 5638.70314 -2778.40412 5638.64931 -2778.29497 5638.41811 -2777.96479 5638.25608 -2777.6173 5638.15684 -2777.24695 5638.12343 -2776.865 5638.15684 -2776.48305 5638.25608 -2776.1127 5638.41811 -2775.76521 5638.63803 -2775.45114 5638.90914 -2775.18003 5639.22321 -2774.96011 5639.5707 -2774.79808 5639.94105 -2774.69884 5640.323 -2774.66543 5640.70495 -2774.69884 5641.0753 -2774.79808 5641.42279 -2774.96011 5641.73686 -2775.18003 5642.00797 -2775.45114 5642.22789 -2775.76521 5642.38992 -2776.1127 5642.48916 -2776.48305 5642.52257 -2776.865 5642.48916 -2777.24695 5642.38992 -2777.6173 5642.22789 -2777.96479 5642.01509 -2778.26869 5641.96126 -2778.37784 5641.94275 -2778.49812 5641.94275 -2798.56882 5641.97781 -2798.73258 5642.07683 -2798.86763 5642.22247 -2798.95031 5642.38919 -2798.96611 5642.54777 -2798.91228 5642.67041 -2798.79825 5642.82103 -2798.58314 5643.09214 -2798.31203 5643.40621 -2798.09211 5643.7537 -2797.93008 5644.12405 -2797.83084 5644.506 -2797.79743 5644.88795 -2797.83084 5645.2583 -2797.93008 5645.60579 -2798.09211 5645.91986 -2798.31203 5646.19097 -2798.58314 5646.41089 -2798.89721 5646.57292 -2799.2447 5646.67216 -2799.61505 5646.70557 -2799.997 5646.67216 -2800.37895 5646.57292 -2800.7493 5646.41089 -2801.09679 5646.18626 -2801.41758 5646.05256 -2801.56265 5645.9741 -2801.68822 5645.9467 -2801.83373 5645.9467 -2806.20419 5645.97715 -2806.35726 5646.06386 -2806.48703 5646.11197 -2806.53514 5646.33189 -2806.84921 5646.49392 -2807.1967 5646.59316 -2807.56705 5646.62657 -2807.949 5646.59316 -2808.33095 5646.49392 -2808.7013 5646.42889 -2808.84075 5646.39166 -2808.99584 5646.41798 -2809.15315 5646.50368 -2809.28766 5646.63512 -2809.378 5646.79142 -2809.4098 5656.70758 -2809.4098 5656.86388 -2809.378 5656.99532 -2809.28766 5657.08102 -2809.15315 5657.10734 -2808.99584 5657.07011 -2808.84075 5657.00508 -2808.7013 5656.90584 -2808.33095 5656.87243 -2807.949 5656.90584 -2807.56705 5657.00508 -2807.1967 5657.16711 -2806.84921 5657.38915 -2806.53212 5657.47978 -2806.4381 5657.56274 -2806.31017 5657.5918 -2806.16049 5657.5918 -2775.38926 5657.56 -2775.23297 5657.46966 -2775.10153 5657.33515 -2775.01583 5657.17784 -2774.98951 5657.02275 -2775.02674 5656.7543 -2775.15192 5656.38395 -2775.25116 5656.002 -2775.28457 5655.62005 -2775.25116 5655.2497 -2775.15192 5654.90221 -2774.98989 5654.58814 -2774.76997 5654.31703 -2774.49886 5654.09711 -2774.18479 5653.93508 -2773.8373 5653.83584 -2773.46695 5653.80243 -2773.085 5653.83584 -2772.70305 5653.93508 -2772.3327 5654.09711 -2771.98521 5654.31703 -2771.67114 5654.36434 -2771.62383 5654.45105 -2771.49406 5654.4815 -2771.34099 5654.4815 -2631.10698 5654.45105 -2630.95391 5654.36434 -2630.82414 5645.72475 -2622.18446 5645.59498 -2622.09775 5645.4419 -2622.0673 5598.60621 -2622.0673 5598.45314 -2622.09775 5598.32337 -2622.18446 5598.27586 -2622.23197 5597.96179 -2622.45189 5597.6143 -2622.61392 5597.24395 -2622.71316 5596.862 -2622.74657 5596.48005 -2622.71316 5596.1097 -2622.61392 5595.76221 -2622.45189 5595.44814 -2622.23197 5595.17703 -2621.96086 5594.95711 -2621.64679 5594.79508 -2621.2993 5594.69584 -2620.92895 5594.66243 -2620.547 5594.69584 -2620.16505 5594.7951 -2619.79463 5594.83107 -2619.63989 5594.80397 -2619.48335 5594.71807 -2619.34971 5594.58693 -2619.26005 5594.43123 -2619.2285 5588.49201 -2619.2285 5588.33894 -2619.25895 5588.20917 -2619.34566 5588.16186 -2619.39297 5587.84779 -2619.61289 5587.5003 -2619.77492 5587.12995 -2619.87416 5586.748 -2619.90757 5586.36605 -2619.87416 5585.9957 -2619.77492 5585.64821 -2619.61289 5585.33414 -2619.39297 5585.06303 -2619.12186 5584.84311 -2618.80779 5584.68108 -2618.4603 5584.58184 -2618.08995 5584.54843 -2617.708 5584.58184 -2617.32605 5584.68108 -2616.9557 5584.84311 -2616.60821 5585.06303 -2616.29414 5585.33414 -2616.02303 5585.64821 -2615.80311 5585.9957 -2615.64108 5586.36605 -2615.54184 5586.748 -2615.50843 5587.12995 -2615.54184 5587.5003 -2615.64108 5587.84779 -2615.80311 5588.16186 -2616.02303 5588.21017 -2616.07134 5588.33994 -2616.15805 5588.49301 -2616.1885 5648.14244 -2616.1885 5648.45825 -2616.2196 5648.74303 -2616.30599 5649.00549 -2616.44627 5649.25079 -2616.64759 5660.1727 -2627.5694 5660.229 -2627.63799 5660.35544 -2627.74004 5660.51204 -2627.78338 5660.67296 -2627.76085 5660.81164 -2627.67618 5660.9052 -2627.54333 5660.9382 -2627.38423 5660.9382 -2619.76839 5660.90775 -2619.61532 5660.82104 -2619.48555 5655.00995 -2613.67446 5654.88018 -2613.58775 5654.72711 -2613.5573 5578.58821 -2613.5573 5578.43514 -2613.58775 5577.97179 -2613.91389 5577.6243 -2614.07592 5577.25395 -2614.17516 5576.872 -2614.20857 5576.49005 -2614.17516 5576.1197 -2614.07592 5575.77221 -2613.91389 5575.45814 -2613.69397 5575.18703 -2613.42286 5574.96711 -2613.10879 5574.80508 -2612.7613 5574.70584 -2612.39095 5574.67243 -2612.009 5574.70584 -2611.62705 5574.80508 -2611.2567 5574.96711 -2610.90921 5575.18703 -2610.59514 5575.45814 -2610.32403 5575.77221 -2610.10411 5576.1197 -2609.94208 5576.49005 -2609.84284 5576.872 -2609.80943 5577.25395 -2609.84284 5577.6243 -2609.94208 5577.97179 -2610.10411 5578.28801 -2610.32554 5578.36836 -2610.40382 5578.49683 -2610.48784 5578.64749 -2610.5173 5589.53941 -2610.5173 5589.69589 -2610.48542 5589.82744 -2610.39486 5589.91307 -2610.26005 5589.93913 -2610.10249 5589.90148 -2609.94729 5589.72094 -2609.56278 5589.62184 -2609.19295 5589.58843 -2608.811 5589.62184 -2608.42905 5589.72108 -2608.0587 5589.88311 -2607.71121 5589.97045 -2607.58648 5590.03672 -2607.42651 5590.02916 -2607.25352 5589.94921 -2607.09993 5589.81184 -2606.99453 5589.64279 -2606.95705 5568.29332 -2606.95705 5568.19513 -2606.96929 5568.10294 -2607.00526 5567.83969 -2607.14772 5567.46533 -2607.27624 5567.07491 -2607.34139 5566.67909 -2607.34139 5566.28867 -2607.27624 5565.91431 -2607.14772 5565.5662 -2606.95934 5565.25384 -2606.71622 5564.98576 -2606.42501 5564.76927 -2606.09365 5564.61027 -2605.73117 5564.51311 -2605.34746 5564.48042 -2604.953 5564.51311 -2604.55854 5564.61027 -2604.17483 5564.67911 -2604.0179 5564.71274 -2603.86431 5564.68457 -2603.70962 5564.59897 -2603.57774 5564.46914 -2603.48904 5564.31516 -2603.45723 5564.16082 -2603.48722 5564.02996 -2603.57438 5561.62571 -2605.97863 5561.539 -2606.1084 5561.50855 -2606.26147 5561.50855 -2665.1762 5561.53747 -2665.32553 5561.62005 -2665.45327 5561.74435 -2665.54095 5561.8924 -2665.57587 5562.04278 -2665.55301 5562.17375 -2665.47565 5562.61804 -2665.08217 5563.07063 -2664.77976 5563.55969 -2664.53858 5564.07605 -2664.3633 5564.61087 -2664.25692 5565.155 -2664.22126 5565.69913 -2664.25692 5566.23395 -2664.3633 5566.75031 -2664.53858 5567.23937 -2664.77976 5567.69277 -2665.08271 5568.10275 -2665.44225 5568.46229 -2665.85223 5568.76524 -2666.30563 5569.00642 -2666.79469 5569.1817 -2667.31105 5569.28808 -2667.84587 5569.32374 -2668.39 5569.28808 -2668.93413 5569.1817 -2669.46895 5569.00642 -2669.98531 5568.76524 -2670.47437 5568.46229 -2670.92777 5568.10275 -2671.33775 5567.69277 -2671.69729 5567.23937 -2672.00024 5566.75031 -2672.24142 5566.23395 -2672.4167 5565.69913 -2672.52308 5565.155 -2672.55874 5564.61087 -2672.52308 5564.07605 -2672.4167 5563.55969 -2672.24142 5563.07063 -2672.00024 5562.61804 -2671.69783 5562.17375 -2671.30435 5562.04278 -2671.22699 5561.8924 -2671.20413 5561.74435 -2671.23905 5561.62005 -2671.32673 5561.53747 -2671.45447 5561.50855 -2671.6038 5561.50855 -2724.11223 5561.539 -2724.2653 5561.62571 -2724.39507 5577.21455 -2739.98391 5577.33855 -2740.11924 5577.44497 -2740.25793 5577.5389 -2740.40537 5577.61962 -2740.56043 5577.68652 -2740.72194 5577.73909 -2740.88866 5577.77693 -2741.05933 5577.79974 -2741.23265 5577.80775 -2741.41603 5577.80775 -2752.60255 5577.84523 -2752.7716 5577.87092 -2752.8267 5577.97016 -2753.19705 5578.00357 -2753.579 5577.97016 -2753.96095 5577.87092 -2754.3313 5577.70889 -2754.67879 5577.48897 -2754.99286 5577.21786 -2755.26397 5576.90379 -2755.48389 5576.5563 -2755.64592 5576.18595 -2755.74516 5575.804 -2755.77857 5575.42205 -2755.74516 5575.0517 -2755.64592 5574.70421 -2755.48389 5574.39014 -2755.26397 5574.11903 -2754.99286 5573.89911 -2754.67879 5573.73708 -2754.3313 5573.63784 -2753.96095 5573.60443 -2753.579 5573.63784 -2753.19705 5573.73708 -2752.8267 5573.76177 -2752.77374 5573.79925 -2752.6047 5573.79925 -2742.40317 5573.7688 -2742.2501 5573.68209 -2742.12033 5558.09325 -2726.53149 5557.96925 -2726.39616 5557.86283 -2726.25747 5557.7689 -2726.11003 5557.68818 -2725.95497 5557.62128 -2725.79346 5557.56871 -2725.62674 5557.53087 -2725.45607 5557.50806 -2725.28275 5557.50005 -2725.09937 5557.50005 -2605.27433 5557.50806 -2605.09095 5557.53087 -2604.91763 5557.56871 -2604.74696 5557.62128 -2604.58024 5557.68818 -2604.41873 5557.7689 -2604.26367 5557.86283 -2604.11623 5557.96925 -2603.97754 5558.09325 -2603.84221 5562.13601 -2599.79945 5562.27134 -2599.67545 5562.41003 -2599.56903 5562.55747 -2599.4751 5562.71253 -2599.39438 5562.87404 -2599.32748 5563.04076 -2599.27491 5563.21143 -2599.23707 5563.38475 -2599.21426 5563.56813 -2599.20625 5614.87468 -2599.20625 5615.02775 -2599.1758 5615.15752 -2599.08909 5615.24423 -2598.95932 5615.27468 -2598.80625 5615.24423 -2598.65317 5615.15752 -2598.5234 5611.36499 -2594.73095 5611.23522 -2594.64425 5611.08215 -2594.6138 5608.81316 -2594.6138 5608.66008 -2594.64425 5608.48151 -2594.74419 5608.3332 -2594.87983 5608.01179 -2595.10489 5607.6643 -2595.26692 5607.29395 -2595.36616 5606.912 -2595.39957 5606.53005 -2595.36616 5606.1597 -2595.26692 5605.81221 -2595.10489 5605.49814 -2594.88497 5605.22703 -2594.61386 5605.00711 -2594.29979 5604.84508 -2593.9523 5604.74584 -2593.58195 5604.71243 -2593.2 5604.74584 -2592.81805 5604.84508 -2592.4477 5605.00711 -2592.10021 5605.2047 -2591.81803 5605.27096 -2591.65806 5605.26341 -2591.48507 5605.18346 -2591.33148 5605.04609 -2591.22608 5604.87704 -2591.1886 5547.2555 -2591.1886 5547.0984 -2591.22074 5546.96655 -2591.31199 5546.88113 -2591.4477 5546.85588 -2591.60605 5546.89484 -2591.76159 5546.99176 -2591.88934 5547.34067 -2592.19533 5547.69593 -2592.60043 5547.99528 -2593.04843 5548.23359 -2593.53167 5548.40679 -2594.04189 5548.5119 -2594.57034 5548.54714 -2595.108 5548.5119 -2595.64566 5548.40679 -2596.17411 5548.23359 -2596.68433 5547.99528 -2597.16757 5547.69593 -2597.61557 5547.34067 -2598.02067 5546.93557 -2598.37593 5546.48757 -2598.67528 5546.00433 -2598.91359 5545.49411 -2599.08679 5544.96566 -2599.1919 5544.428 -2599.22714 5543.89034 -2599.1919 5543.36189 -2599.08679 5542.85167 -2598.91359 5542.36843 -2598.67528 5541.92043 -2598.37593 5541.51533 -2598.02067 5541.16007 -2597.61557 5540.86072 -2597.16757 5540.62241 -2596.68433 5540.44921 -2596.17411 5540.3441 -2595.64566 5540.30886 -2595.108 5540.3441 -2594.57034 5540.44921 -2594.04189 5540.62241 -2593.53167 5540.86068 -2593.04851 5541.1758 -2592.57732 5541.23721 -2592.42455 5541.23187 -2592.25998 5541.16069 -2592.1115 5541.03573 -2592.00428 5540.87817 -2591.95648 5540.70305 -2591.94116 5540.3327 -2591.84192 5539.98521 -2591.67989 5539.67114 -2591.45997 5539.40003 -2591.18886 5539.18011 -2590.87479 5539.01808 -2590.5273 5538.91884 -2590.15695 5538.88543 -2589.775 5538.91884 -2589.39305 5538.93617 -2589.18359 5538.86991 -2589.02361 5538.74224 -2588.90663 5538.5771 -2588.85457 5538.40543 -2588.87717 5538.2594 -2588.97021 5536.6285 -2590.60118 5536.33927 -2590.83198 5536.23684 -2590.95451 5536.19051 -2591.10736 5536.20767 -2591.26615 5536.2856 -2591.40556 5536.41185 -2591.50338 5536.48757 -2591.54072 5536.93557 -2591.84007 5537.34067 -2592.19533 5537.69593 -2592.60043 5537.99528 -2593.04843 5538.12329 -2593.308 5536.228 -2593.308 5536.228 -2591.41418 5536.19447 -2591.25388 5536.09952 -2591.12045 5535.95905 -2591.03625 5535.79661 -2591.01541 5535.59728 -2591.0311 5533.028 -2591.0311 5532.87493 -2591.06155 5532.74516 -2591.14826 5532.65845 -2591.27803 5532.628 -2591.4311 5532.628 -2593.308 5530.73271 -2593.308 5530.86072 -2593.04843 5531.16007 -2592.60043 5531.33874 -2592.39668 5531.42078 -2592.24906 5531.43459 -2592.08073 5531.37769 -2591.92172 5531.26024 -2591.80036 5531.10317 -2591.73829 5530.93448 -2591.74657 5530.79795 -2591.78316 5530.416 -2591.81657 5530.03405 -2591.78316 5529.6637 -2591.68392 5529.31621 -2591.52189 5529.00214 -2591.30197 5528.73103 -2591.03086 5528.51111 -2590.71679 5528.34908 -2590.3693 5528.24984 -2589.99895 5528.21643 -2589.617 5528.24984 -2589.23505 5528.34908 -2588.8647 5528.51111 -2588.51721 5528.73103 -2588.20314 5529.00214 -2587.93203 5529.31621 -2587.71211 5529.6637 -2587.55008 5530.03405 -2587.45084 5530.416 -2587.41743 5530.79795 -2587.45084 5531.1683 -2587.55008 5531.51579 -2587.71211 5531.82986 -2587.93203 5531.97039 -2588.05833 5532.10442 -2588.14247 5532.20644 -2588.18809 5532.3171 -2588.2037 5534.86172 -2588.2037 5535.0148 -2588.17325 5535.14457 -2588.08654 5537.11812 -2586.11291 5537.36382 -2585.91393 5537.62674 -2585.77996 5537.91687 -2585.70222 5538.14832 -2585.684 5716.56949 -2585.684 5716.72256 -2585.65355 5716.85233 -2585.56684 5716.90914 -2585.51003 5717.22321 -2585.29011 5717.5707 -2585.12808 5717.94105 -2585.02884 5718.323 -2584.99543 5718.70495 -2585.02884 5719.0753 -2585.12808 5719.42279 -2585.29011 5719.73686 -2585.51003 5720.00797 -2585.78114 5720.22789 -2586.09521 5720.38992 -2586.4427 5720.48916 -2586.81305 5720.52257 -2587.195 5720.50519 -2587.39369 5720.52546 -2587.55878 5720.61113 -2587.70135 5720.74737 -2587.79675 5720.91065 -2587.82849 5721.07271 -2587.79108 5721.2507 -2587.70808 5721.62105 -2587.60884 5722.003 -2587.57543 5722.38495 -2587.60884 5722.7553 -2587.70808 5723.10279 -2587.87011 5723.41686 -2588.09003 5723.68797 -2588.36114 5723.90789 -2588.67521 5724.06992 -2589.0227 5724.16916 -2589.39305 5724.20257 -2589.775 5724.16916 -2590.15695 5724.06992 -2590.5273 5723.9868 -2590.70555 5723.94957 -2590.86064 5723.97589 -2591.01795 5724.06159 -2591.15246 5724.19303 -2591.2428 5724.34932 -2591.2746 5783.08115 -2591.2746 5783.23274 -2591.24476 5783.41422 -2591.14367 5783.56207 -2591.00798 5783.88321 -2590.78311 5784.2307 -2590.62108 5784.60105 -2590.52184 5784.983 -2590.48843 5785.36495 -2590.52184 5785.7353 -2590.62108 5786.08279 -2590.78311 5786.39686 -2591.00303 5786.66797 -2591.27414 5786.88789 -2591.58821 5787.04992 -2591.9357 5787.14916 -2592.30605 5787.18257 -2592.688 5787.14916 -2593.06995 5787.04992 -2593.4403 5786.88789 -2593.78779 5786.66797 -2594.10186 5786.39686 -2594.37297 5786.08279 -2594.59289 5785.7353 -2594.75492 5785.36495 -2594.85416 5784.983 -2594.88757 5784.60105 -2594.85416 5784.2307 -2594.75492 5783.88321 -2594.59289 5783.56914 -2594.37297 5783.43253 -2594.25026 5783.29563 -2594.1638 5783.19321 -2594.11776 5783.08204 -2594.102 5735.99453 -2594.102 5735.85118 -2594.12857 5735.72688 -2594.20474 5735.63813 -2594.3204 5735.59672 -2594.46019 5735.60816 -2594.60553 5735.66216 -2594.80705 5735.69557 -2595.189 5735.66216 -2595.57095 5735.56292 -2595.9413 5735.40089 -2596.28879 5735.18097 -2596.60286 5734.90986 -2596.87397 5734.59579 -2597.09389 5734.2483 -2597.25592 5733.87795 -2597.35516 5733.75313 -2597.36608 5733.60329 -2597.40975 5733.48157 -2597.50744 5733.4065 -2597.64427 5733.38951 -2597.79942 5733.41257 -2598.063 5733.37916 -2598.44495 5733.27992 -2598.8153 5733.21608 -2598.9522 5733.17885 -2599.10729 5733.20517 -2599.2646 5733.29087 -2599.39911 5733.42231 -2599.48945 5733.57861 -2599.52125 5797.65013 -2599.52125 5797.8032 -2599.4908 5797.93297 -2599.40409 5838.56965 -2558.76732 5838.64284 -2558.66679 5838.68162 -2558.54864 5838.71986 -2558.31334 5838.85203 -2557.91744 5839.046 -2557.54786 5839.29674 -2557.21419 5839.42371 -2557.09223 5839.51355 -2556.963 5839.54659 -2556.80912 5839.5177 -2556.65441 5839.43136 -2556.52281 5839.30094 -2556.43471 5839.14662 -2556.40375 5837.83297 -2556.40375 5837.69869 -2556.42696 5837.57999 -2556.49391 5837.47528 -2556.57941 5837.11381 -2556.7881 5836.72356 -2556.9361 5836.31461 -2557.01959 5835.89757 -2557.0364 5835.48323 -2556.98609 5835.08233 -2556.86996 5834.70525 -2556.69104 5834.39163 -2556.47456 5834.2834 -2556.42186 5834.1644 -2556.40375 5809.60007 -2556.40375 5809.447 -2556.4342 5809.31723 -2556.52091 5809.23052 -2556.65068 5809.20007 -2556.80375 5809.23052 -2556.95682 5809.31723 -2557.08659 5809.61614 -2557.38551 5809.74015 -2557.52084 5809.84657 -2557.65952 5809.9405 -2557.80697 5810.02122 -2557.96202 5810.08812 -2558.12354 5810.14069 -2558.29025 5810.17853 -2558.46093 5810.20134 -2558.63425 5810.20935 -2558.81763 5810.20935 -2565.54388 5810.23407 -2565.68232 5810.30519 -2565.80366 5810.46249 -2565.98784 5810.69128 -2566.36118 5810.85884 -2566.76571 5810.96106 -2567.19148 5810.99541 -2567.628 5810.96106 -2568.06452 5810.85884 -2568.49029 5810.69128 -2568.89482 5810.46249 -2569.26816 5810.17812 -2569.60112 5809.84516 -2569.88549 5809.47182 -2570.11428 5809.06729 -2570.28184 5808.64152 -2570.38406 5808.205 -2570.41841 5807.76848 -2570.38406 5807.34271 -2570.28184 5806.93818 -2570.11428 5806.56484 -2569.88549 5806.23188 -2569.60112 5805.94751 -2569.26816 5805.71872 -2568.89482 5805.55116 -2568.49029 5805.44894 -2568.06452 5805.41459 -2567.628 5805.44894 -2567.19148 5805.55116 -2566.76571 5805.71872 -2566.36118 5805.94751 -2565.98784 5806.10501 -2565.80342 5806.17613 -2565.68209 5806.20085 -2565.54364 5806.20085 -2559.80478 5806.1704 -2559.6517 5806.08369 -2559.52193 5788.75187 -2542.19021 5788.6221 -2542.1035 5788.46903 -2542.07305 5667.19965 -2542.07305 Z M 5594.386 -2713.78143 L 5595.2066 -2713.81937 5596.02019 -2713.93286 5596.81984 -2714.12093 5597.59873 -2714.38199 5598.35021 -2714.7138 5599.06786 -2715.11353 5599.74557 -2715.57778 5600.37756 -2716.10257 5600.95843 -2716.68344 5601.48322 -2717.31543 5601.94747 -2717.99314 5602.3472 -2718.71079 5602.67901 -2719.46227 5602.94007 -2720.24116 5603.12814 -2721.04081 5603.24163 -2721.8544 5603.27957 -2722.675 5603.24163 -2723.4956 5603.12814 -2724.30919 5602.94007 -2725.10884 5602.67901 -2725.88773 5602.3472 -2726.63921 5601.94747 -2727.35686 5601.48322 -2728.03457 5600.95843 -2728.66656 5600.37756 -2729.24743 5599.74557 -2729.77222 5599.06786 -2730.23647 5598.35021 -2730.6362 5597.59873 -2730.96801 5596.81984 -2731.22907 5596.02019 -2731.41714 5595.2066 -2731.53063 5594.386 -2731.56857 5593.5654 -2731.53063 5592.75181 -2731.41714 5591.95216 -2731.22907 5591.17327 -2730.96801 5590.42179 -2730.6362 5589.70414 -2730.23647 5589.02643 -2729.77222 5588.39444 -2729.24743 5587.81357 -2728.66656 5587.28878 -2728.03457 5586.82453 -2727.35686 5586.4248 -2726.63921 5586.09299 -2725.88773 5585.83193 -2725.10884 5585.64386 -2724.30919 5585.53037 -2723.4956 5585.49243 -2722.675 5585.53037 -2721.8544 5585.64386 -2721.04081 5585.83193 -2720.24116 5586.09299 -2719.46227 5586.4248 -2718.71079 5586.82453 -2717.99314 5587.28878 -2717.31543 5587.81357 -2716.68344 5588.39444 -2716.10257 5589.02643 -2715.57778 5589.70414 -2715.11353 5590.42179 -2714.7138 5591.17327 -2714.38199 5591.95216 -2714.12093 5592.75181 -2713.93286 5593.5654 -2713.81937 5594.386 -2713.78143 Z M 5634.49275 -2571.67408 L 5635.06377 -2571.70927 5635.21543 -2571.72863 5635.77698 -2571.83799 5635.92481 -2571.87696 5636.4673 -2572.05863 5636.6088 -2572.11655 5637.12296 -2572.36741 5637.25569 -2572.44329 5637.73275 -2572.75907 5637.85445 -2572.85161 5638.28625 -2573.22691 5638.39484 -2573.33453 5638.774 -2573.76293 5638.86763 -2573.8838 5639.18769 -2574.358 5639.26476 -2574.49004 5639.52023 -2575.00193 5639.57942 -2575.1429 5639.76595 -2575.68373 5639.80625 -2575.83121 5639.92061 -2576.3915 5639.94154 -2576.54603 5639.98196 -2577.14015 5639.98215 -2577.29609 5639.94473 -2577.86671 5639.92478 -2578.01829 5639.81321 -2578.5794 5639.77366 -2578.72709 5639.58986 -2579.26886 5639.53139 -2579.41012 5639.2785 -2579.9233 5639.20211 -2580.05573 5638.88446 -2580.53154 5638.79144 -2580.65288 5638.41445 -2581.0832 5638.3064 -2581.19137 5637.87651 -2581.56885 5637.75528 -2581.662 5637.27983 -2581.98019 5637.14748 -2582.05674 5636.63459 -2582.3102 5636.4934 -2582.36884 5635.95183 -2582.55325 5635.80419 -2582.59296 5635.2432 -2582.70517 5635.09165 -2582.72529 5634.52082 -2582.76338 5634.36793 -2582.76356 5633.79701 -2582.72687 5633.6454 -2582.70712 5633.08414 -2582.59629 5632.9364 -2582.55693 5632.39439 -2582.37384 5632.25305 -2582.31555 5631.73954 -2582.06334 5631.60701 -2581.98712 5631.13079 -2581.67009 5631.00933 -2581.57723 5630.57851 -2581.20081 5630.4702 -2581.0929 5630.09216 -2580.6635 5629.99885 -2580.54239 5629.68004 -2580.06736 5629.60332 -2579.93512 5629.34918 -2579.42256 5629.29036 -2579.28144 5629.10524 -2578.74012 5629.06533 -2578.59253 5628.95239 -2578.03169 5628.93207 -2577.88016 5628.89324 -2577.30938 5628.89285 -2577.15649 5628.92879 -2576.58552 5628.94835 -2576.43389 5629.05845 -2575.87248 5629.09761 -2575.72469 5629.27999 -2575.18244 5629.33809 -2575.04103 5629.58963 -2574.52719 5629.66568 -2574.39456 5629.98208 -2573.91792 5630.07478 -2573.79634 5630.45065 -2573.36503 5630.55841 -2573.25658 5630.98731 -2572.87798 5631.1083 -2572.78451 5631.58292 -2572.46507 5631.71506 -2572.38818 5632.22728 -2572.13337 5632.36833 -2572.07437 5632.90941 -2571.88854 5633.05694 -2571.84844 5633.61763 -2571.73476 5633.76914 -2571.71424 5634.33987 -2571.67466 5634.49275 -2571.67408 Z M 5567.06356 -2738.95919 L 5567.69373 -2739.02239 5568.31258 -2739.15702 5568.91206 -2739.36131 5569.48434 -2739.63261 5570.02197 -2739.96737 5570.51793 -2740.36123 5570.96577 -2740.80907 5571.35963 -2741.30503 5571.69439 -2741.84266 5571.96569 -2742.41494 5572.16998 -2743.01442 5572.30461 -2743.63327 5572.36781 -2744.26344 5572.35876 -2744.89671 5572.27759 -2745.52482 5572.12535 -2746.13958 5571.90402 -2746.73298 5571.6165 -2747.29728 5571.26652 -2747.82513 5570.85865 -2748.30964 5570.39821 -2748.74451 5569.89121 -2749.12405 5569.34424 -2749.44332 5568.76444 -2749.69816 5568.15937 -2749.88525 5567.53692 -2750.00215 5566.90521 -2750.04733 5566.27246 -2750.02021 5565.64692 -2749.92113 5565.03676 -2749.7514 5564.44992 -2749.51322 5563.89406 -2749.20969 5563.37642 -2748.84478 5562.90375 -2748.42325 5562.48222 -2747.95058 5562.11731 -2747.43294 5561.81378 -2746.87708 5561.5756 -2746.29024 5561.40587 -2745.68008 5561.30679 -2745.05454 5561.27967 -2744.42179 5561.32485 -2743.79008 5561.44175 -2743.16763 5561.62884 -2742.56256 5561.88368 -2741.98276 5562.20295 -2741.43579 5562.58249 -2740.92879 5563.01736 -2740.46835 5563.50187 -2740.06048 5564.02972 -2739.7105 5564.59402 -2739.42298 5565.18742 -2739.20165 5565.80218 -2739.04941 5566.43029 -2738.96824 5567.06356 -2738.95919 Z M 5612.35656 -2644.94719 L 5612.98673 -2645.01039 5613.60558 -2645.14502 5614.20506 -2645.34931 5614.77734 -2645.62061 5615.31497 -2645.95537 5615.81093 -2646.34923 5616.25877 -2646.79707 5616.65263 -2647.29303 5616.98739 -2647.83066 5617.25869 -2648.40294 5617.46298 -2649.00242 5617.59761 -2649.62127 5617.66081 -2650.25144 5617.65176 -2650.88471 5617.57059 -2651.51282 5617.41835 -2652.12758 5617.19702 -2652.72098 5616.9095 -2653.28528 5616.55952 -2653.81313 5616.15165 -2654.29764 5615.69121 -2654.73251 5615.18421 -2655.11205 5614.63724 -2655.43132 5614.05744 -2655.68616 5613.45237 -2655.87325 5612.82992 -2655.99015 5612.19821 -2656.03533 5611.56546 -2656.00821 5610.93992 -2655.90913 5610.32976 -2655.7394 5609.74292 -2655.50122 5609.18706 -2655.19769 5608.66942 -2654.83278 5608.19675 -2654.41125 5607.77522 -2653.93858 5607.41031 -2653.42094 5607.10678 -2652.86508 5606.8686 -2652.27824 5606.69887 -2651.66808 5606.59979 -2651.04254 5606.57267 -2650.40979 5606.61785 -2649.77808 5606.73475 -2649.15563 5606.92184 -2648.55056 5607.17668 -2647.97076 5607.49595 -2647.42379 5607.87549 -2646.91679 5608.31036 -2646.45635 5608.79487 -2646.04848 5609.32272 -2645.6985 5609.88702 -2645.41098 5610.48042 -2645.18965 5611.09518 -2645.03741 5611.72329 -2644.95624 5612.35656 -2644.94719 Z M 5578.64356 -2701.15419 L 5579.27373 -2701.21739 5579.89258 -2701.35202 5580.49206 -2701.55631 5581.06434 -2701.82761 5581.60197 -2702.16237 5582.09793 -2702.55623 5582.54577 -2703.00407 5582.93963 -2703.50003 5583.27439 -2704.03766 5583.54569 -2704.60994 5583.74998 -2705.20942 5583.88461 -2705.82827 5583.94781 -2706.45844 5583.93876 -2707.09171 5583.85759 -2707.71982 5583.70535 -2708.33458 5583.48402 -2708.92798 5583.1965 -2709.49228 5582.84652 -2710.02013 5582.43865 -2710.50464 5581.97821 -2710.93951 5581.47121 -2711.31905 5580.92424 -2711.63832 5580.34444 -2711.89316 5579.73937 -2712.08025 5579.11692 -2712.19715 5578.48521 -2712.24233 5577.85246 -2712.21521 5577.22692 -2712.11613 5576.61676 -2711.9464 5576.02992 -2711.70822 5575.47406 -2711.40469 5574.95642 -2711.03978 5574.48375 -2710.61825 5574.06222 -2710.14558 5573.69731 -2709.62794 5573.39378 -2709.07208 5573.1556 -2708.48524 5572.98587 -2707.87508 5572.88679 -2707.24954 5572.85967 -2706.61679 5572.90485 -2705.98508 5573.02175 -2705.36263 5573.20884 -2704.75756 5573.46368 -2704.17776 5573.78295 -2703.63079 5574.16249 -2703.12379 5574.59736 -2702.66335 5575.08187 -2702.25548 5575.60972 -2701.9055 5576.17402 -2701.61798 5576.76742 -2701.39665 5577.38218 -2701.24441 5578.01029 -2701.16324 5578.64356 -2701.15419 Z M 5615.981 -2797.00943 L 5616.36295 -2797.04284 5616.7333 -2797.14208 5617.08079 -2797.30411 5617.39486 -2797.52403 5617.66597 -2797.79514 5617.88589 -2798.10921 5618.04792 -2798.4567 5618.14716 -2798.82705 5618.18057 -2799.209 5618.14716 -2799.59095 5618.04792 -2799.9613 5617.88589 -2800.30879 5617.66597 -2800.62286 5617.39486 -2800.89397 5617.08079 -2801.11389 5616.7333 -2801.27592 5616.63176 -2801.30313 5616.47817 -2801.38308 5616.37276 -2801.52045 5616.33528 -2801.6895 5616.37276 -2801.85855 5616.47817 -2801.99592 5616.63176 -2802.07587 5616.7333 -2802.10308 5617.08079 -2802.26511 5617.39486 -2802.48503 5617.66597 -2802.75614 5617.88589 -2803.07021 5618.04792 -2803.4177 5618.14716 -2803.78805 5618.18057 -2804.17 5618.14716 -2804.55195 5618.04792 -2804.9223 5617.88589 -2805.26979 5617.66597 -2805.58386 5617.39486 -2805.85497 5617.08079 -2806.07489 5616.7333 -2806.23692 5616.36295 -2806.33616 5615.981 -2806.36957 5615.59905 -2806.33616 5615.2287 -2806.23692 5614.88121 -2806.07489 5614.56714 -2805.85497 5614.29603 -2805.58386 5614.07611 -2805.26979 5613.90637 -2804.89353 5613.82642 -2804.73994 5613.68905 -2804.63454 5613.52 -2804.59706 5613.35095 -2804.63454 5613.21358 -2804.73994 5612.96389 -2805.26979 5612.74397 -2805.58386 5612.47286 -2805.85497 5612.15879 -2806.07489 5611.8113 -2806.23692 5611.44095 -2806.33616 5611.059 -2806.36957 5610.67705 -2806.33616 5610.3067 -2806.23692 5609.95921 -2806.07489 5609.64514 -2805.85497 5609.37403 -2805.58386 5609.15411 -2805.26979 5608.99208 -2804.9223 5608.89284 -2804.55195 5608.85943 -2804.17 5608.89284 -2803.78805 5608.99208 -2803.4177 5609.15411 -2803.07021 5609.37403 -2802.75614 5609.64514 -2802.48503 5609.95921 -2802.26511 5610.33842 -2802.08829 5610.46032 -2802.00026 5610.54111 -2801.87345 5610.56937 -2801.69323 5610.54111 -2801.54555 5610.46032 -2801.41874 5610.33842 -2801.33071 5609.95921 -2801.15389 5609.64514 -2800.93397 5609.37403 -2800.66286 5609.15411 -2800.34879 5608.99208 -2800.0013 5608.89284 -2799.63095 5608.85943 -2799.249 5608.89284 -2798.86705 5608.99208 -2798.4967 5609.15411 -2798.14921 5609.37403 -2797.83514 5609.64514 -2797.56403 5609.95921 -2797.34411 5610.3067 -2797.18208 5610.67705 -2797.08284 5611.059 -2797.04943 5611.44095 -2797.08284 5611.8113 -2797.18208 5612.15879 -2797.34411 5612.47286 -2797.56403 5612.74397 -2797.83514 5612.96389 -2798.14921 5613.14071 -2798.52842 5613.23561 -2798.65666 5613.37308 -2798.7376 5613.53125 -2798.75839 5613.68497 -2798.7157 5613.84331 -2798.57634 5613.89929 -2798.48842 5614.07611 -2798.10921 5614.29603 -2797.79514 5614.56714 -2797.52403 5614.88121 -2797.30411 5615.2287 -2797.14208 5615.59905 -2797.04284 5615.981 -2797.00943 Z M 5753.448 -2548.28343 L 5753.82995 -2548.31684 5754.2003 -2548.41608 5754.54779 -2548.57811 5754.86186 -2548.79803 5755.13297 -2549.06914 5755.35289 -2549.38321 5755.51492 -2549.7307 5755.61416 -2550.10105 5755.64757 -2550.483 5755.61416 -2550.86495 5755.51492 -2551.2353 5755.35289 -2551.58279 5755.13297 -2551.89686 5755.00944 -2552.03431 5754.92316 -2552.17097 5754.87715 -2552.27335 5754.8614 -2552.38449 5754.8613 -2561.06195 5754.89114 -2561.21354 5754.99216 -2561.39494 5755.12799 -2561.54303 5755.35289 -2561.86421 5755.51492 -2562.2117 5755.61416 -2562.58205 5755.64757 -2562.964 5755.61416 -2563.34595 5755.51492 -2563.7163 5755.35289 -2564.06379 5755.13297 -2564.37786 5754.86186 -2564.64897 5754.54779 -2564.86889 5754.2003 -2565.03092 5753.82995 -2565.13016 5753.448 -2565.16357 5753.06605 -2565.13016 5752.6957 -2565.03092 5752.34821 -2564.86889 5752.03414 -2564.64897 5751.76303 -2564.37786 5751.54311 -2564.06379 5751.38108 -2563.7163 5751.28184 -2563.34595 5751.24843 -2562.964 5751.28184 -2562.58205 5751.38108 -2562.2117 5751.54311 -2561.86421 5751.76303 -2561.55014 5751.88428 -2561.41516 5751.97183 -2561.27692 5752.01807 -2561.17432 5752.0339 -2561.0629 5752.0339 -2552.3845 5752.00345 -2552.23143 5751.90408 -2552.05348 5751.76841 -2551.90454 5751.54311 -2551.58279 5751.38108 -2551.2353 5751.28184 -2550.86495 5751.24843 -2550.483 5751.28184 -2550.10105 5751.38108 -2549.7307 5751.54311 -2549.38321 5751.76303 -2549.06914 5752.03414 -2548.79803 5752.34821 -2548.57811 5752.6957 -2548.41608 5753.06605 -2548.31684 5753.448 -2548.28343 Z M 5572.41586 -2654.14987 L 5574.12799 -2655.862 5572.41218 -2657.57781 5572.26287 -2657.04108 5572.16379 -2656.41554 5572.13667 -2655.78279 5572.18185 -2655.15108 5572.29875 -2654.52863 5572.41586 -2654.14987 Z M 5577.683 -2659.41701 L 5579.39513 -2661.12914 5579.01637 -2661.24625 5578.39392 -2661.36315 5577.76221 -2661.40833 5577.12946 -2661.38121 5576.50392 -2661.28213 5575.96719 -2661.13282 5577.683 -2659.41701 Z M 5577.92056 -2650.32019 L 5578.55073 -2650.38339 5579.16958 -2650.51802 5579.39511 -2650.59487 5577.683 -2652.30699 5575.96739 -2650.59138 5576.04442 -2650.56265 5576.65918 -2650.41041 5577.28729 -2650.32924 5577.92056 -2650.32019 Z M 5581.23801 -2655.862 L 5582.95013 -2654.14989 5583.02698 -2654.37542 5583.16161 -2654.99427 5583.22481 -2655.62444 5583.21576 -2656.25771 5583.13459 -2656.88582 5582.98235 -2657.50058 5582.95362 -2657.57761 5581.23801 -2655.862 Z M 5538.12329 -2596.908 L 5537.99528 -2597.16757 5537.69593 -2597.61557 5537.34067 -2598.02067 5536.93557 -2598.37593 5536.48757 -2598.67528 5536.228 -2598.80329 5536.228 -2596.908 5538.12329 -2596.908 Z \",\"M 5483.12352 -2533.97097 L 5482.13075 -2533.98478 5481.18597 -2534.07108 5480.25064 -2534.22993 5479.33033 -2534.46037 5478.43052 -2534.76103 5477.55654 -2535.13013 5476.71361 -2535.56548 5475.90672 -2536.06448 5475.14068 -2536.62417 5474.42004 -2537.24121 5473.74909 -2537.91195 5473.13181 -2538.63239 5472.57188 -2539.39825 5472.07262 -2540.20498 5471.63701 -2541.04778 5471.26762 -2541.92164 5470.96667 -2542.82135 5470.73594 -2543.74159 5470.5768 -2544.67686 5470.4912 -2545.61643 5470.4912 -2729.17301 5470.52868 -2729.34206 5470.63408 -2729.47943 5470.78767 -2729.55939 5470.96066 -2729.56694 5471.12063 -2729.50068 5471.37421 -2729.32311 5471.7217 -2729.16108 5472.09205 -2729.06184 5472.474 -2729.02843 5472.85595 -2729.06184 5473.2263 -2729.16108 5473.57379 -2729.32311 5473.88786 -2729.54303 5473.93547 -2729.59064 5474.06524 -2729.67735 5474.21831 -2729.7078 5474.39035 -2729.7078 5474.70616 -2729.7389 5474.99094 -2729.82529 5475.25339 -2729.96558 5475.4987 -2730.16689 5483.16716 -2737.83535 5483.29693 -2737.92206 5483.45 -2737.95251 5483.60307 -2737.92206 5483.73284 -2737.83535 5483.81955 -2737.70558 5483.85 -2737.55251 5483.85 -2732.41736 5483.88305 -2732.10293 5483.97423 -2731.82229 5484.12442 -2731.56216 5484.27518 -2731.38565 5486.41454 -2729.24629 5486.51872 -2729.15911 5500.67427 -2715.00355 5500.76486 -2714.86406 5500.79088 -2714.69978 5500.74783 -2714.53911 5500.64316 -2714.40985 5500.49496 -2714.33434 5500.3777 -2714.30292 5500.03021 -2714.14089 5499.71614 -2713.92097 5499.58071 -2713.79932 5499.44276 -2713.712 5499.3402 -2713.66581 5499.22884 -2713.65 5498.52811 -2713.65 5498.37503 -2713.68045 5498.24526 -2713.76716 5488.3399 -2723.67252 5488.14409 -2723.82868 5487.93881 -2723.92753 5487.71668 -2723.97823 5487.48884 -2723.97823 5487.26671 -2723.92753 5487.06144 -2723.82868 5486.86563 -2723.67252 5480.49448 -2717.30137 5480.33832 -2717.10556 5480.23947 -2716.90029 5480.18877 -2716.67816 5480.18877 -2716.45032 5480.23947 -2716.22819 5480.33832 -2716.02291 5480.49448 -2715.8271 5494.3821 -2701.93948 5494.57791 -2701.78332 5494.78319 -2701.68447 5495.00532 -2701.63377 5495.23316 -2701.63377 5495.45529 -2701.68447 5495.66056 -2701.78332 5495.85637 -2701.93948 5502.22752 -2708.31063 5502.38368 -2708.50644 5502.48253 -2708.71171 5502.53323 -2708.93384 5502.53323 -2709.16168 5502.48253 -2709.38381 5502.38368 -2709.58909 5502.21427 -2709.80152 5502.14095 -2709.94618 5502.1311 -2710.10807 5502.18634 -2710.26055 5502.29757 -2710.37858 5502.54386 -2710.55103 5502.81497 -2710.82214 5503.03489 -2711.13621 5503.19692 -2711.4837 5503.22834 -2711.60096 5503.30385 -2711.74916 5503.43311 -2711.85383 5503.59378 -2711.89688 5503.75806 -2711.87086 5503.89755 -2711.78027 5504.80137 -2710.87646 5504.87916 -2710.80152 5505.14872 -2710.57818 5505.22765 -2710.52218 5505.52748 -2710.34151 5505.61389 -2710.29789 5505.9373 -2710.16393 5506.02923 -2710.13368 5506.369 -2710.04941 5506.46442 -2710.0332 5506.81294 -2710.00052 5506.92094 -2709.9985 5520.45668 -2709.9985 5520.56815 -2710.00063 5520.91283 -2710.03315 5521.02354 -2710.05215 5521.34737 -2710.13336 5521.46567 -2710.1727 5521.76214 -2710.29712 5521.88415 -2710.35941 5522.14791 -2710.52076 5522.26915 -2710.60791 5522.49609 -2710.7993 5522.61163 -2710.91234 5522.79895 -2711.12655 5522.90352 -2711.26553 5523.04973 -2711.4952 5523.13799 -2711.6592 5523.24287 -2711.89706 5523.30951 -2712.08407 5523.37407 -2712.32318 5523.41406 -2712.53017 5523.44041 -2712.76407 5523.44919 -2712.987 5523.44041 -2713.20993 5523.41406 -2713.44383 5523.37407 -2713.65082 5523.30951 -2713.88993 5523.24287 -2714.07694 5523.13799 -2714.3148 5523.04973 -2714.4788 5522.90352 -2714.70847 5522.79895 -2714.84745 5522.61163 -2715.06166 5522.49609 -2715.1747 5522.26915 -2715.36609 5522.14791 -2715.45324 5521.88415 -2715.61459 5521.76214 -2715.67688 5521.46567 -2715.8013 5521.34737 -2715.84064 5521.02354 -2715.92185 5520.91283 -2715.94085 5520.56815 -2715.97337 5520.45668 -2715.9755 5515.31331 -2715.9755 5515.14938 -2716.01063 5515.01425 -2716.10986 5514.93165 -2716.25575 5514.9161 -2716.42268 5514.97033 -2716.58132 5515.0848 -2716.70381 5515.34881 -2716.88756 5515.91133 -2717.37047 5516.42211 -2717.90781 5516.87591 -2718.49407 5517.26807 -2719.12323 5517.59456 -2719.78883 5517.85205 -2720.48406 5518.03787 -2721.20176 5518.15014 -2721.93458 5518.18769 -2722.675 5518.15014 -2723.41542 5518.03787 -2724.14824 5517.85205 -2724.86594 5517.59456 -2725.56117 5517.26807 -2726.22677 5516.87591 -2726.85593 5516.42211 -2727.44219 5515.91133 -2727.97953 5515.34881 -2728.46244 5514.74032 -2728.88596 5514.09211 -2729.24575 5513.41082 -2729.53811 5512.70345 -2729.76005 5511.97725 -2729.90929 5511.23969 -2729.98429 5510.49831 -2729.98429 5509.76075 -2729.90929 5509.03455 -2729.76005 5508.32718 -2729.53811 5507.64589 -2729.24575 5506.99768 -2728.88596 5506.38919 -2728.46244 5505.82667 -2727.97953 5505.31589 -2727.44219 5504.86209 -2726.85593 5504.46993 -2726.22677 5504.14344 -2725.56117 5503.88595 -2724.86594 5503.70013 -2724.14824 5503.58786 -2723.41542 5503.55031 -2722.675 5503.58786 -2721.93458 5503.65484 -2721.49738 5503.64538 -2721.33165 5503.56946 -2721.18403 5503.44015 -2721.07995 5503.27971 -2721.03732 5503.11579 -2721.0635 5502.97661 -2721.15397 5491.63706 -2732.49352 5491.55035 -2732.62329 5491.5199 -2732.77636 5491.5199 -2742.07824 5491.55035 -2742.23131 5491.63706 -2742.36108 5495.62769 -2746.35172 5495.75727 -2746.43835 5495.93707 -2746.49294 5496.35377 -2746.5298 5496.7243 -2746.62908 5497.07179 -2746.79111 5497.38586 -2747.01103 5497.65697 -2747.28214 5497.87689 -2747.59621 5498.03892 -2747.9437 5498.13816 -2748.31405 5498.17157 -2748.696 5498.13816 -2749.07795 5498.03892 -2749.4483 5497.87689 -2749.79579 5497.83618 -2749.85392 5497.76992 -2750.01389 5497.77747 -2750.18688 5497.85742 -2750.34047 5497.99479 -2750.44587 5498.16384 -2750.48335 5528.90667 -2750.48335 5529.05975 -2750.4529 5529.18952 -2750.36619 5533.85089 -2745.70476 5533.9376 -2745.57499 5533.96805 -2745.42191 5533.96805 -2701.182 5533.9376 -2701.02892 5533.85089 -2700.89915 5519.12736 -2686.17563 5518.91479 -2685.9166 5518.76613 -2685.63849 5518.67459 -2685.33673 5518.64175 -2685.00325 5518.64175 -2596.7614 5518.6113 -2596.60832 5518.52459 -2596.47855 5510.19666 -2588.15063 5509.98409 -2587.8916 5509.83543 -2587.61349 5509.74389 -2587.31173 5509.71105 -2586.97825 5509.71105 -2561.76305 5509.74389 -2561.42957 5509.77157 -2561.33834 5509.78446 -2561.16354 5509.72138 -2561 5509.59443 -2560.87914 5509.428 -2560.82416 5509.25404 -2560.84561 5509.10595 -2560.93939 5508.98791 -2561.05743 5508.9012 -2561.1872 5508.87075 -2561.34027 5508.87075 -2599.66637 5508.86274 -2599.84976 5508.83993 -2600.02307 5508.80209 -2600.19375 5508.74952 -2600.36046 5508.68262 -2600.52198 5508.6019 -2600.67703 5508.50797 -2600.82448 5508.40155 -2600.96316 5508.27754 -2601.0985 5501.33014 -2608.04581 5501.2652 -2608.13104 5501.22522 -2608.23046 5501.18073 -2608.40617 5501.02173 -2608.76865 5500.80524 -2609.10001 5500.53716 -2609.39122 5500.2248 -2609.63434 5499.87669 -2609.82272 5499.50233 -2609.95124 5499.11191 -2610.01639 5498.71609 -2610.01639 5498.32567 -2609.95124 5497.95131 -2609.82272 5497.6032 -2609.63434 5497.29084 -2609.39122 5497.02276 -2609.10001 5496.80627 -2608.76865 5496.64727 -2608.40617 5496.55011 -2608.02246 5496.51742 -2607.628 5496.55011 -2607.23354 5496.64727 -2606.84983 5496.80627 -2606.48735 5497.02276 -2606.15599 5497.29084 -2605.86478 5497.6032 -2605.62166 5497.95131 -2605.43328 5498.35486 -2605.29474 5498.50782 -2605.19925 5504.74509 -2598.96206 5504.8318 -2598.83229 5504.86225 -2598.67922 5504.86225 -2560.35313 5504.87026 -2560.16975 5504.89307 -2559.99643 5504.93091 -2559.82576 5504.98348 -2559.65904 5505.05038 -2559.49753 5505.1311 -2559.34247 5505.22503 -2559.19503 5505.33145 -2559.05634 5505.45545 -2558.92101 5525.71871 -2538.65775 5525.85404 -2538.53375 5525.99273 -2538.42733 5526.14017 -2538.3334 5526.29523 -2538.25268 5526.45674 -2538.18578 5526.62346 -2538.13321 5526.79413 -2538.09537 5526.96745 -2538.07256 5527.15083 -2538.06455 5789.45617 -2538.06455 5789.63954 -2538.07256 5789.81287 -2538.09537 5789.98353 -2538.13321 5790.15026 -2538.18578 5790.31177 -2538.25268 5790.46683 -2538.3334 5790.61427 -2538.42732 5790.75296 -2538.53375 5790.88829 -2538.65775 5804.5087 -2552.27809 5804.63847 -2552.3648 5804.79155 -2552.39525 5834.29624 -2552.39525 5834.41524 -2552.37714 5834.52346 -2552.32444 5834.70525 -2552.19896 5835.08233 -2552.02004 5835.48323 -2551.90391 5835.89757 -2551.8536 5836.31461 -2551.87041 5836.72356 -2551.9539 5837.1124 -2552.10137 5837.51893 -2552.34015 5837.61654 -2552.38123 5837.72152 -2552.39525 5879.41923 -2552.39525 5879.53824 -2552.37714 5879.64646 -2552.32444 5879.94125 -2552.12096 5880.31833 -2551.94204 5880.71923 -2551.82591 5881.13357 -2551.7756 5881.55061 -2551.79241 5881.95956 -2551.8759 5882.34981 -2552.0239 5882.71128 -2552.23259 5883.03458 -2552.49656 5883.31135 -2552.80898 5883.53443 -2553.16174 5883.69803 -2553.54572 5883.79791 -2553.95097 5883.8315 -2554.367 5883.79791 -2554.78303 5883.69803 -2555.18828 5883.53443 -2555.57226 5883.31135 -2555.92502 5883.03458 -2556.23744 5882.71128 -2556.50141 5882.34981 -2556.7101 5881.95956 -2556.8581 5881.55061 -2556.94159 5881.13357 -2556.9584 5880.71923 -2556.90809 5880.31833 -2556.79196 5879.94125 -2556.61304 5879.74063 -2556.47456 5879.6324 -2556.42186 5879.5134 -2556.40375 5878.3778 -2556.40375 5878.22846 -2556.43268 5878.10071 -2556.51527 5878.01304 -2556.63958 5877.97812 -2556.78764 5878.00101 -2556.93803 5878.0784 -2557.069 5878.35035 -2557.37598 5878.57343 -2557.72874 5878.73703 -2558.11272 5878.83691 -2558.51797 5878.8705 -2558.934 5878.83691 -2559.35003 5878.73703 -2559.75528 5878.57343 -2560.13926 5878.35035 -2560.49202 5878.07358 -2560.80444 5877.75028 -2561.06841 5877.38881 -2561.2771 5876.99856 -2561.4251 5876.58961 -2561.50859 5876.17257 -2561.5254 5875.75823 -2561.47509 5875.35733 -2561.35896 5874.98025 -2561.18004 5874.73211 -2561.00876 5874.62389 -2560.95606 5874.50488 -2560.93795 5843.01361 -2560.93795 5842.87933 -2560.96116 5842.71128 -2561.06841 5842.34981 -2561.2771 5841.95956 -2561.4251 5841.60137 -2561.49823 5841.49194 -2561.53785 5841.39854 -2561.6073 5801.35367 -2601.65226 5801.28978 -2601.73567 5801.24981 -2601.83282 5801.14977 -2602.21106 5801.07122 -2602.3795 5801.03399 -2602.53459 5801.06031 -2602.6919 5801.14601 -2602.82641 5801.27745 -2602.91675 5801.43375 -2602.94855 5811.01963 -2602.94855 5811.60405 -2602.79084 5811.986 -2602.75743 5812.36795 -2602.79084 5812.7383 -2602.89008 5813.08579 -2603.05211 5813.39986 -2603.27203 5813.67097 -2603.54314 5813.89089 -2603.85721 5814.05292 -2604.2047 5814.15216 -2604.57505 5814.18557 -2604.957 5814.15216 -2605.33895 5814.05292 -2605.7093 5814.02753 -2605.76376 5813.99005 -2605.9328 5813.99005 -2646.20342 5814.02753 -2646.37247 5814.17592 -2646.6907 5814.27516 -2647.06105 5814.30857 -2647.443 5814.27516 -2647.82495 5814.17592 -2648.1953 5814.02753 -2648.51353 5813.99005 -2648.68258 5813.99005 -2710.08917 5814.02753 -2710.25822 5814.06692 -2710.3427 5814.16616 -2710.71305 5814.19957 -2711.095 5814.16616 -2711.47695 5814.06692 -2711.8473 5813.99854 -2712.01887 5813.99016 -2712.11027 5813.9955 -2712.33638 5813.9955 -2712.76115 5813.93488 -2713.10494 5813.81548 -2713.43299 5813.64093 -2713.73531 5813.40527 -2714.01617 5798.39412 -2729.02732 5798.31444 -2729.14111 5798.19289 -2729.40179 5797.97297 -2729.71586 5797.70186 -2729.98697 5797.38779 -2730.20689 5797.12701 -2730.32849 5797.01322 -2730.40817 5760.77546 -2766.64588 5760.71052 -2766.73111 5760.63873 -2766.95617 5760.47973 -2767.31865 5760.3357 -2767.53909 5760.27564 -2767.69436 5760.284 -2767.86064 5760.35932 -2768.00911 5760.48855 -2768.11406 5760.64932 -2768.1573 5760.81377 -2768.13136 5760.95341 -2768.04071 5819.58764 -2709.40648 5819.67435 -2709.27671 5819.7048 -2709.12364 5819.7048 -2603.15565 5819.65052 -2602.94435 5819.5753 -2602.82569 5819.44009 -2602.67808 5819.21511 -2602.35679 5819.05308 -2602.0093 5818.95384 -2601.63895 5818.92043 -2601.257 5818.95384 -2600.87505 5819.05308 -2600.5047 5819.21511 -2600.15721 5819.43503 -2599.84314 5819.70614 -2599.57203 5820.02021 -2599.35211 5820.68323 -2599.04779 5820.96926 -2598.987 5821.32064 -2598.99002 5821.4767 -2598.95977 5821.60866 -2598.87113 5821.69567 -2598.73809 5821.72399 -2598.58166 5821.68915 -2598.42656 5821.58984 -2598.05595 5821.55643 -2597.674 5821.58984 -2597.29205 5821.68908 -2596.9217 5821.85111 -2596.57421 5822.07103 -2596.26014 5822.34214 -2595.98903 5822.65621 -2595.76911 5823.0037 -2595.60708 5823.37405 -2595.50784 5823.756 -2595.47443 5824.13795 -2595.50784 5824.5083 -2595.60708 5824.85579 -2595.76911 5825.16986 -2595.98903 5825.44097 -2596.26014 5825.66089 -2596.57421 5825.82292 -2596.9217 5825.92216 -2597.29205 5825.95557 -2597.674 5825.92216 -2598.05595 5825.82292 -2598.4263 5825.66089 -2598.77379 5825.44097 -2599.08786 5825.31773 -2599.22506 5825.23169 -2599.36144 5825.18573 -2599.46378 5825.17 -2599.57486 5825.17 -2713.48934 5825.13695 -2713.80377 5825.04577 -2714.08441 5824.89558 -2714.34454 5824.74482 -2714.52105 5742.93219 -2796.33369 5742.85251 -2796.44748 5742.81655 -2796.58167 5742.78416 -2796.95195 5742.68492 -2797.3223 5742.52289 -2797.66979 5742.30297 -2797.98386 5742.03186 -2798.25497 5741.71779 -2798.47489 5741.3703 -2798.63692 5740.99995 -2798.73616 5740.62967 -2798.76855 5740.49548 -2798.80451 5740.38169 -2798.88419 5732.56716 -2806.69871 5732.32146 -2806.89768 5732.05854 -2807.03165 5731.7684 -2807.10939 5731.53698 -2807.1276 5721.15741 -2807.1276 5720.86244 -2807.1564 5700.74019 -2807.1564 5700.58367 -2807.1883 5700.45211 -2807.2789 5700.36649 -2807.41375 5700.34047 -2807.57136 5700.37819 -2807.72658 5700.47365 -2807.85466 5700.61161 -2807.93517 5701.02231 -2808.07458 5701.51137 -2808.31576 5701.96477 -2808.61871 5702.37475 -2808.97825 5702.73429 -2809.38823 5703.03724 -2809.84163 5703.27842 -2810.33069 5703.4537 -2810.84705 5703.56008 -2811.38187 5703.59574 -2811.926 5703.56008 -2812.47013 5703.4537 -2813.00495 5703.27842 -2813.52131 5703.03724 -2814.01037 5702.73429 -2814.46377 5702.37475 -2814.87375 5701.96477 -2815.23329 5701.51137 -2815.53624 5701.02231 -2815.77742 5700.50595 -2815.9527 5699.97113 -2816.05908 5699.427 -2816.09474 5698.88287 -2816.05908 5698.34805 -2815.9527 5697.83169 -2815.77742 5697.34263 -2815.53624 5696.88923 -2815.23329 5696.47925 -2814.87375 5696.11971 -2814.46377 5695.81676 -2814.01037 5695.57558 -2813.52131 5695.4003 -2813.00495 5695.29392 -2812.47013 5695.25826 -2811.926 5695.29392 -2811.38187 5695.4003 -2810.84705 5695.57558 -2810.33069 5695.81676 -2809.84163 5696.11971 -2809.38823 5696.47925 -2808.97825 5696.88923 -2808.61871 5697.34263 -2808.31576 5697.83169 -2808.07458 5698.24239 -2807.93517 5698.38035 -2807.85466 5698.47581 -2807.72658 5698.51353 -2807.57136 5698.48751 -2807.41375 5698.40189 -2807.2789 5698.27033 -2807.1883 5698.11381 -2807.1564 5691.30712 -2807.1564 5691.15531 -2807.18632 5691.02622 -2807.27162 5690.93916 -2807.39953 5690.90715 -2807.5509 5690.93499 -2807.7031 5691.0185 -2807.83335 5691.1452 -2807.92217 5691.44627 -2808.05544 5691.92465 -2808.34543 5692.36201 -2808.69422 5692.75119 -2809.09608 5693.08578 -2809.5444 5693.36029 -2810.03183 5693.57022 -2810.55036 5693.71212 -2811.09147 5693.78366 -2811.64629 5693.78366 -2812.20571 5693.71212 -2812.76053 5693.57022 -2813.30164 5693.36029 -2813.82017 5693.08578 -2814.3076 5692.75119 -2814.75592 5692.36201 -2815.15778 5691.92465 -2815.50657 5691.44627 -2815.79656 5690.93473 -2816.023 5690.39844 -2816.18217 5689.8462 -2816.27145 5689.28707 -2816.28938 5688.73025 -2816.23567 5688.18486 -2816.11119 5687.65987 -2815.91798 5687.16389 -2815.65923 5686.70508 -2815.33918 5686.29096 -2814.96309 5685.92833 -2814.53713 5685.62315 -2814.06829 5685.38043 -2813.56428 5685.20415 -2813.03336 5685.09722 -2812.48426 5685.06137 -2811.926 5685.09722 -2811.36774 5685.20415 -2810.81864 5685.38043 -2810.28772 5685.62315 -2809.78371 5685.92833 -2809.31487 5686.29096 -2808.88891 5686.70508 -2808.51282 5687.16389 -2808.19277 5687.66592 -2807.93179 5687.80074 -2807.84879 5687.8928 -2807.71999 5687.92767 -2807.56556 5687.8999 -2807.4097 5687.81384 -2807.27681 5687.68296 -2807.18773 5687.52778 -2807.1564 5680.74019 -2807.1564 5680.58367 -2807.1883 5680.45211 -2807.2789 5680.36649 -2807.41375 5680.34047 -2807.57136 5680.37819 -2807.72658 5680.47365 -2807.85466 5680.61161 -2807.93517 5681.02231 -2808.07458 5681.51137 -2808.31576 5681.96477 -2808.61871 5682.37475 -2808.97825 5682.73429 -2809.38823 5683.03724 -2809.84163 5683.27842 -2810.33069 5683.4537 -2810.84705 5683.56008 -2811.38187 5683.59574 -2811.926 5683.56008 -2812.47013 5683.4537 -2813.00495 5683.27842 -2813.52131 5683.03724 -2814.01037 5682.73429 -2814.46377 5682.37475 -2814.87375 5681.96477 -2815.23329 5681.51137 -2815.53624 5681.02231 -2815.77742 5680.50595 -2815.9527 5679.97113 -2816.05908 5679.427 -2816.09474 5678.88287 -2816.05908 5678.34805 -2815.9527 5677.83169 -2815.77742 5677.34263 -2815.53624 5676.88923 -2815.23329 5676.47925 -2814.87375 5676.11971 -2814.46377 5675.81676 -2814.01037 5675.57558 -2813.52131 5675.4003 -2813.00495 5675.29392 -2812.47013 5675.25826 -2811.926 5675.29392 -2811.38187 5675.4003 -2810.84705 5675.57558 -2810.33069 5675.81676 -2809.84163 5676.11971 -2809.38823 5676.47925 -2808.97825 5676.88923 -2808.61871 5677.34263 -2808.31576 5677.83169 -2808.07458 5678.24239 -2807.93517 5678.38035 -2807.85466 5678.47581 -2807.72658 5678.51353 -2807.57136 5678.48751 -2807.41375 5678.40189 -2807.2789 5678.27033 -2807.1883 5678.11381 -2807.1564 5674.86515 -2807.1564 5674.71208 -2807.18685 5674.58231 -2807.27356 5668.31623 -2813.53956 5668.22952 -2813.66932 5668.19907 -2813.8224 5668.22952 -2813.97547 5668.31622 -2814.10524 5668.44599 -2814.19195 5668.59907 -2814.2224 5670.16032 -2814.2224 5670.31027 -2814.19323 5670.43835 -2814.10997 5670.52936 -2814.02198 5670.84621 -2813.80011 5671.1937 -2813.63808 5671.56405 -2813.53884 5671.946 -2813.50543 5672.32795 -2813.53884 5672.6983 -2813.63808 5673.04579 -2813.80011 5673.35986 -2814.02003 5673.63097 -2814.29114 5673.85089 -2814.60521 5674.01292 -2814.9527 5674.11216 -2815.32305 5674.14557 -2815.705 5674.11216 -2816.08695 5674.01292 -2816.4573 5673.85089 -2816.80479 5673.63097 -2817.11886 5673.35986 -2817.38997 5673.04579 -2817.60989 5672.6983 -2817.77192 5672.32795 -2817.87116 5671.946 -2817.90457 5671.56405 -2817.87116 5671.1937 -2817.77192 5670.84621 -2817.60989 5670.39196 -2817.29285 5670.23889 -2817.2624 5626.33624 -2817.2624 5626.1929 -2817.28897 5626.06859 -2817.36514 5625.97984 -2817.4808 5625.93843 -2817.62059 5625.94987 -2817.76593 5626.00216 -2817.96105 5626.03557 -2818.343 5626.00216 -2818.72495 5625.91876 -2819.03617 5625.90733 -2819.18151 5625.94873 -2819.3213 5626.03748 -2819.43696 5626.16179 -2819.51313 5626.30513 -2819.5397 5651.38479 -2819.5397 5651.53786 -2819.50925 5651.66763 -2819.42254 5651.71514 -2819.37503 5652.02921 -2819.15511 5652.3767 -2818.99308 5652.74705 -2818.89384 5653.129 -2818.86043 5653.51095 -2818.89384 5653.8813 -2818.99308 5654.22879 -2819.15511 5654.54286 -2819.37503 5654.81397 -2819.64614 5655.03389 -2819.96021 5655.19592 -2820.3077 5655.29516 -2820.67805 5655.32857 -2821.06 5655.29516 -2821.44195 5655.19592 -2821.8123 5655.03389 -2822.15979 5654.81397 -2822.47386 5654.54286 -2822.74497 5654.22879 -2822.96489 5653.8813 -2823.12692 5653.51095 -2823.22616 5653.129 -2823.25957 5652.74705 -2823.22616 5652.3767 -2823.12692 5652.02921 -2822.96489 5651.71514 -2822.74497 5651.66703 -2822.69686 5651.53726 -2822.61015 5651.38419 -2822.5797 5552.83225 -2822.5797 5552.51644 -2822.5486 5552.23166 -2822.46221 5551.96921 -2822.32193 5551.7239 -2822.12061 5521.15949 -2791.55629 5521.04569 -2791.47661 5520.91151 -2791.44066 5520.62005 -2791.41516 5520.2497 -2791.31592 5519.90221 -2791.15389 5519.58814 -2790.93397 5519.31703 -2790.66286 5519.09711 -2790.34879 5518.93508 -2790.0013 5518.83584 -2789.63095 5518.80243 -2789.249 5518.83584 -2788.86705 5518.93508 -2788.4967 5519.09711 -2788.14921 5519.31703 -2787.83514 5519.58814 -2787.56403 5519.90221 -2787.34411 5520.2497 -2787.18208 5520.62005 -2787.08284 5521.002 -2787.04943 5521.38395 -2787.08284 5521.7543 -2787.18208 5522.10179 -2787.34411 5522.41586 -2787.56403 5522.68697 -2787.83514 5522.90689 -2788.14921 5523.06892 -2788.4967 5523.16816 -2788.86705 5523.19369 -2789.15894 5523.22965 -2789.29312 5523.30933 -2789.40692 5553.32505 -2819.42254 5553.45482 -2819.50925 5553.60789 -2819.5397 5554.63391 -2819.5397 5554.78698 -2819.50925 5554.91675 -2819.42254 5555.00346 -2819.29277 5555.03391 -2819.1397 5555.00346 -2818.98663 5554.91675 -2818.85686 5519.74379 -2783.6838 5519.54248 -2783.43849 5519.40219 -2783.17604 5519.3158 -2782.89126 5519.2847 -2782.57545 5519.2847 -2770.36321 5519.25425 -2770.21014 5519.16754 -2770.08037 5519.12003 -2770.03286 5518.90011 -2769.71879 5518.73808 -2769.3713 5518.63884 -2769.00095 5518.60543 -2768.619 5518.63884 -2768.23705 5518.73808 -2767.8667 5518.90011 -2767.51921 5519.12003 -2767.20514 5519.39114 -2766.93403 5519.70521 -2766.71411 5520.0527 -2766.55208 5520.42305 -2766.45284 5520.805 -2766.41943 5521.18695 -2766.45284 5521.5573 -2766.55208 5521.90479 -2766.71411 5522.21886 -2766.93403 5522.46006 -2767.17523 5522.58983 -2767.26194 5522.7429 -2767.29239 5522.89597 -2767.26194 5523.02574 -2767.17523 5523.11245 -2767.04546 5523.1429 -2766.89239 5523.1429 -2763.38518 5523.11245 -2763.23211 5523.02575 -2763.10234 5519.63979 -2759.71632 5519.52599 -2759.63664 5519.39181 -2759.60068 5519.10005 -2759.57516 5518.7297 -2759.47592 5518.38221 -2759.31389 5518.06814 -2759.09397 5517.79703 -2758.82286 5517.57711 -2758.50879 5517.41508 -2758.1613 5517.31584 -2757.79095 5517.28243 -2757.409 5517.31584 -2757.02705 5517.41508 -2756.6567 5517.57711 -2756.30921 5517.79703 -2755.99514 5518.06814 -2755.72403 5518.38221 -2755.50411 5518.7297 -2755.34208 5519.10005 -2755.24284 5519.482 -2755.20943 5519.86395 -2755.24284 5520.2343 -2755.34208 5520.58179 -2755.50411 5520.89586 -2755.72403 5521.16697 -2755.99514 5521.38689 -2756.30921 5521.54892 -2756.6567 5521.64816 -2757.02705 5521.67367 -2757.31864 5521.70962 -2757.45282 5521.7893 -2757.56662 5525.72381 -2761.5012 5525.92512 -2761.74651 5526.06541 -2762.00896 5526.1518 -2762.29374 5526.1829 -2762.60955 5526.1829 -2780.65811 5526.21335 -2780.81118 5526.30006 -2780.94095 5545.33285 -2799.97374 5545.46262 -2800.06045 5545.61569 -2800.0909 5572.59851 -2800.0909 5572.74829 -2800.0618 5572.87628 -2799.97873 5572.97021 -2799.88808 5573.28721 -2799.66611 5573.6347 -2799.50408 5574.00505 -2799.40484 5574.387 -2799.37143 5574.76895 -2799.40484 5575.15907 -2799.50938 5575.30441 -2799.52082 5575.4442 -2799.47941 5575.55986 -2799.39066 5575.63603 -2799.26635 5575.6626 -2799.12301 5575.6626 -2775.28019 5575.63215 -2775.12712 5575.54544 -2774.99735 5554.09019 -2753.5421 5553.88888 -2753.29679 5553.74859 -2753.03434 5553.6622 -2752.74956 5553.6311 -2752.43375 5553.6311 -2679.78922 5553.59535 -2679.62392 5553.49448 -2679.48817 5553.34653 -2679.40624 5553.17795 -2679.39277 5553.01886 -2679.45017 5552.89772 -2679.56818 5552.69752 -2679.87013 5552.28965 -2680.35464 5551.82921 -2680.78951 5551.32221 -2681.16905 5550.77524 -2681.48832 5550.19544 -2681.74316 5549.59037 -2681.93025 5548.96792 -2682.04715 5548.33621 -2682.09233 5547.70346 -2682.06521 5547.07792 -2681.96613 5546.46776 -2681.7964 5545.88092 -2681.55822 5545.32506 -2681.25469 5544.80742 -2680.88978 5544.33475 -2680.46825 5543.91322 -2679.99558 5543.54831 -2679.47794 5543.24478 -2678.92208 5543.0066 -2678.33524 5542.83687 -2677.72508 5542.73779 -2677.09954 5542.71067 -2676.46679 5542.75585 -2675.83508 5542.87275 -2675.21263 5543.05984 -2674.60756 5543.31468 -2674.02776 5543.63395 -2673.48079 5544.01349 -2672.97379 5544.44836 -2672.51335 5544.93287 -2672.10548 5545.46072 -2671.7555 5546.02502 -2671.46798 5546.61842 -2671.24665 5547.23318 -2671.09441 5547.86129 -2671.01324 5548.49456 -2671.00419 5549.12473 -2671.06739 5549.74358 -2671.20202 5550.34306 -2671.40631 5550.91534 -2671.67761 5551.45297 -2672.01237 5551.94893 -2672.40623 5552.39677 -2672.85407 5552.79063 -2673.35003 5552.89154 -2673.51209 5553.01085 -2673.63457 5553.17041 -2673.69603 5553.34105 -2673.68526 5553.4916 -2673.60421 5553.59456 -2673.4677 5553.6311 -2673.30066 5553.6311 -2624.25319 5553.60065 -2624.10012 5553.51394 -2623.97035 5544.1037 -2614.56013 5543.97129 -2614.47234 5543.81514 -2614.44301 5543.6599 -2614.47678 5543.53005 -2614.56832 5543.44608 -2614.70319 5543.42122 -2614.8601 5543.45941 -2615.01432 5543.56969 -2615.24694 5543.77398 -2615.84642 5543.90861 -2616.46527 5543.97181 -2617.09544 5543.96276 -2617.72871 5543.88159 -2618.35682 5543.72935 -2618.97158 5543.50802 -2619.56498 5543.2205 -2620.12928 5542.87052 -2620.65713 5542.46265 -2621.14164 5542.00221 -2621.57651 5541.49521 -2621.95605 5540.94824 -2622.27532 5540.36844 -2622.53016 5539.76337 -2622.71725 5539.14092 -2622.83415 5538.50921 -2622.87933 5537.87646 -2622.85221 5537.25092 -2622.75313 5536.64076 -2622.5834 5536.05392 -2622.34522 5535.49806 -2622.04169 5534.98042 -2621.67678 5534.50775 -2621.25525 5534.08622 -2620.78258 5533.72131 -2620.26494 5533.41778 -2619.70908 5533.1796 -2619.12224 5533.00987 -2618.51208 5532.91079 -2617.88654 5532.88367 -2617.25379 5532.92885 -2616.62208 5533.04575 -2615.99963 5533.23284 -2615.39456 5533.48768 -2614.81476 5533.80695 -2614.26779 5534.18649 -2613.76079 5534.62136 -2613.30035 5535.10587 -2612.89248 5535.63372 -2612.5425 5536.19802 -2612.25498 5536.79142 -2612.03365 5537.40618 -2611.88141 5538.03429 -2611.80024 5538.66756 -2611.79119 5539.29773 -2611.85439 5539.91658 -2611.98902 5540.51606 -2612.19331 5540.74867 -2612.30358 5540.90288 -2612.34177 5541.0598 -2612.31692 5541.19467 -2612.23294 5541.2862 -2612.10309 5541.31997 -2611.94785 5541.29065 -2611.79171 5541.20286 -2611.65929 5514.42468 -2584.88118 5514.33039 -2584.81125 5514.2074 -2584.74551 5513.96364 -2584.54546 5513.76359 -2584.3017 5513.68492 -2584.15452 5513.57043 -2584.0218 5513.41019 -2583.95077 5513.23496 -2583.95507 5513.07839 -2584.03388 5512.97055 -2584.17206 5512.93215 -2584.34308 5512.93215 -2586.1651 5512.9626 -2586.31818 5513.04931 -2586.44795 5521.37724 -2594.77587 5521.58981 -2595.0349 5521.73847 -2595.31301 5521.83001 -2595.61477 5521.86285 -2595.94825 5521.86285 -2684.1901 5521.8933 -2684.34318 5521.98001 -2684.47295 5536.70354 -2699.19647 5536.91611 -2699.4555 5537.06477 -2699.73361 5537.15631 -2700.03537 5537.18915 -2700.36885 5537.18915 -2746.23505 5537.15631 -2746.56851 5537.06477 -2746.87028 5536.91612 -2747.14839 5536.70355 -2747.40741 5530.89205 -2753.21892 5530.6331 -2753.43141 5530.35499 -2753.58007 5530.03124 -2753.67828 5529.9338 -2753.69929 5529.62122 -2753.73006 5529.34163 -2753.70445 5479.934 -2753.70445 5479.78092 -2753.7349 5479.65115 -2753.82161 5478.08361 -2755.38915 5477.9969 -2755.51892 5477.96645 -2755.672 5477.96645 -2760.0826 5477.98496 -2760.20288 5478.03879 -2760.31203 5478.26089 -2760.62921 5478.42292 -2760.9767 5478.52216 -2761.34705 5478.55557 -2761.729 5478.52216 -2762.11095 5478.42292 -2762.4813 5478.26089 -2762.82879 5478.04097 -2763.14286 5477.75556 -2763.42827 5477.66786 -2763.56044 5477.63843 -2763.71629 5477.67189 -2763.87134 5477.76297 -2764.00119 5477.89737 -2764.08543 5478.05393 -2764.11081 5478.23716 -2764.10369 5478.78083 -2764.13812 5479.28996 -2764.2394 5479.78195 -2764.4064 5480.24792 -2764.6362 5480.67991 -2764.92485 5481.07054 -2765.26741 5481.4131 -2765.65804 5481.70175 -2766.09003 5481.93155 -2766.556 5482.09855 -2767.04799 5482.19991 -2767.55756 5482.23389 -2768.076 5482.19991 -2768.59444 5482.09855 -2769.10401 5481.93155 -2769.596 5481.70175 -2770.06197 5481.4131 -2770.49396 5481.07054 -2770.88459 5480.67991 -2771.22715 5480.24792 -2771.5158 5479.78195 -2771.7456 5479.28378 -2771.9147 5478.7741 -2772.01539 5478.65798 -2772.02789 5478.25486 -2772.04864 5478.12511 -2772.04656 5477.7191 -2772.01394 5477.59801 -2771.99449 5477.21092 -2771.91225 5477.08177 -2771.87248 5476.72406 -2771.74659 5476.25608 -2771.5158 5475.82409 -2771.22715 5475.43346 -2770.88459 5475.0909 -2770.49396 5474.80225 -2770.06197 5474.57245 -2769.596 5474.40545 -2769.10401 5474.30409 -2768.59444 5474.27011 -2768.076 5474.30409 -2767.55756 5474.40545 -2767.04799 5474.57245 -2766.556 5474.80225 -2766.09003 5475.0909 -2765.65804 5475.43346 -2765.26741 5475.82409 -2764.92485 5476.25832 -2764.6347 5476.37267 -2764.51826 5476.43098 -2764.36583 5476.42357 -2764.2028 5476.35166 -2764.05631 5476.22721 -2763.95072 5476.07096 -2763.90363 5475.97405 -2763.89516 5475.6037 -2763.79592 5475.25621 -2763.63389 5474.94214 -2763.41397 5474.67103 -2763.14286 5474.45111 -2762.82879 5474.28908 -2762.4813 5474.18984 -2762.11095 5474.15643 -2761.729 5474.18984 -2761.34705 5474.28908 -2760.9767 5474.45111 -2760.62921 5474.67301 -2760.31231 5474.72684 -2760.20317 5474.74535 -2760.08288 5474.74535 -2754.85885 5474.77819 -2754.52537 5474.86973 -2754.22361 5475.01839 -2753.9455 5475.23096 -2753.68647 5477.94847 -2750.96896 5478.2075 -2750.75639 5478.48561 -2750.60773 5478.78737 -2750.51619 5479.12085 -2750.48335 5493.78016 -2750.48335 5493.94921 -2750.44587 5494.08658 -2750.34047 5494.16653 -2750.18688 5494.17408 -2750.01389 5494.10782 -2749.85392 5494.06711 -2749.79579 5493.90508 -2749.4483 5493.80584 -2749.07795 5493.76938 -2748.66114 5493.71617 -2748.48321 5493.62849 -2748.35109 5489.11876 -2743.84133 5488.99837 -2743.69818 5488.87352 -2743.59907 5488.71987 -2743.55658 5488.56184 -2743.57748 5488.42452 -2743.65843 5488.32971 -2743.78658 5488.15289 -2744.16579 5488.00064 -2744.38322 5487.93656 -2744.53176 5487.93656 -2744.69354 5488.00064 -2744.84208 5488.19189 -2745.11521 5488.35392 -2745.4627 5488.45316 -2745.83305 5488.48657 -2746.215 5488.45316 -2746.59695 5488.35392 -2746.9673 5488.19189 -2747.31479 5487.97197 -2747.62886 5487.70086 -2747.89997 5487.38679 -2748.11989 5487.0393 -2748.28192 5486.66895 -2748.38116 5486.287 -2748.41457 5485.90505 -2748.38116 5485.5347 -2748.28192 5485.18721 -2748.11989 5484.87314 -2747.89997 5484.58048 -2747.60731 5484.4862 -2747.53738 5484.37421 -2747.47753 5484.12891 -2747.27621 5473.37993 -2736.52733 5473.26614 -2736.44765 5473.13195 -2736.41169 5472.84005 -2736.38616 5472.4697 -2736.28692 5472.12221 -2736.12489 5471.80814 -2735.90497 5471.53703 -2735.63386 5471.31711 -2735.31979 5471.25372 -2735.18384 5471.16327 -2735.05967 5471.03268 -2734.97875 5470.88123 -2734.95301 5470.73124 -2734.98626 5470.60485 -2735.07359 5470.5207 -2735.20212 5470.4912 -2735.35289 5470.4912 -2815.89219 5470.4836 -2816.87529 5470.54977 -2817.78802 5470.6887 -2818.69257 5470.89947 -2819.58312 5471.18076 -2820.45398 5471.53075 -2821.29957 5471.94721 -2822.11448 5472.42747 -2822.89349 5472.96846 -2823.63163 5473.56671 -2824.32416 5474.21841 -2824.96666 5474.91938 -2825.55502 5475.66513 -2826.08546 5476.45089 -2826.5546 5477.27163 -2826.95944 5478.12211 -2827.29738 5478.99688 -2827.56626 5479.89034 -2827.76436 5480.79677 -2827.89041 5481.71028 -2827.94361 5482.67502 -2827.9242 5928.39803 -2827.9242 5929.34721 -2827.94308 5930.20947 -2827.88874 5931.06436 -2827.76315 5931.9059 -2827.56719 5932.72832 -2827.30221 5933.52597 -2826.97002 5934.29336 -2826.5729 5935.02523 -2826.1136 5935.71655 -2825.59525 5936.36255 -2825.02144 5936.95882 -2824.39608 5937.50124 -2823.72349 5937.98609 -2823.00829 5938.41004 -2822.25539 5938.77017 -2821.46996 5939.06402 -2820.65741 5939.28955 -2819.8233 5939.44524 -2818.97339 5939.52999 -2818.1135 5939.54323 -2817.24952 5939.48484 -2816.36487 5939.4823 -2816.28781 5939.48229 -2742.26769 5939.43424 -2741.66416 5939.33024 -2741.1197 5939.16872 -2740.58946 5938.95152 -2740.07949 5938.68112 -2739.59562 5938.36061 -2739.14337 5937.99366 -2738.72793 5937.58445 -2738.35403 5937.13768 -2738.02594 5936.65843 -2737.74743 5936.15219 -2737.52166 5935.62474 -2737.35122 5935.08211 -2737.23807 5934.53049 -2737.1833 5848.7083 -2737.1833 5847.97163 -2737.16121 5847.84307 -2737.15012 5847.15891 -2737.05276 5847.03204 -2737.02749 5846.36282 -2736.85519 5846.23952 -2736.81606 5845.59342 -2736.57094 5845.47519 -2736.51843 5844.8601 -2736.20346 5844.74839 -2736.13823 5844.17184 -2735.75727 5844.06802 -2735.6801 5843.53705 -2735.23782 5843.44239 -2735.14966 5842.9635 -2734.65145 5842.87915 -2734.55338 5842.4582 -2734.00535 5842.38519 -2733.89856 5842.02732 -2733.3074 5841.96654 -2733.1932 5841.67613 -2732.56615 5841.62834 -2732.44594 5841.40894 -2731.79065 5841.37471 -2731.6659 5841.22901 -2730.99042 5841.20874 -2730.86238 5841.13833 -2730.17167 5841.1323 -2730.05304 5841.1323 -2629.58875 5841.14193 -2629.43895 5841.22102 -2628.82639 5841.24644 -2628.692 5841.39592 -2628.09512 5841.43665 -2627.96512 5841.65453 -2627.38963 5841.71011 -2627.26524 5841.99341 -2626.71898 5842.06307 -2626.6019 5842.40797 -2626.09229 5842.49077 -2625.9841 5842.89258 -2625.51804 5842.9874 -2625.42021 5843.44066 -2625.00403 5843.54621 -2624.91788 5844.04479 -2624.55722 5844.15964 -2624.48394 5844.69677 -2624.18369 5844.81936 -2624.12425 5845.38776 -2623.88849 5845.51643 -2623.84371 5846.10838 -2623.67563 5846.24139 -2623.64611 5846.84886 -2623.54799 5846.98405 -2623.53418 5847.66146 -2623.5059 5935.30742 -2623.5059 5935.88391 -2623.46636 5936.39434 -2623.37137 5936.89079 -2623.21918 5937.36681 -2623.01176 5937.81629 -2622.75178 5938.23345 -2622.44258 5938.61291 -2622.08814 5938.9498 -2621.69302 5939.23979 -2621.26229 5939.47915 -2620.8015 5939.6648 -2620.31657 5939.79435 -2619.81374 5939.86613 -2619.29951 5939.8823 -2618.75532 5939.8823 -2545.9715 5939.78782 -2545.02357 5939.62612 -2544.10466 5939.39808 -2543.19993 5939.10491 -2542.31415 5938.74816 -2541.45202 5938.32971 -2540.61808 5937.85179 -2539.81675 5937.3169 -2539.05226 5936.72789 -2538.32865 5936.08786 -2537.64974 5935.4002 -2537.01913 5934.66854 -2536.44015 5933.89675 -2535.91586 5933.08891 -2535.44902 5932.24928 -2535.04211 5931.38231 -2534.69728 5930.49258 -2534.41635 5929.58479 -2534.2008 5928.66373 -2534.05178 5927.73895 -2533.971 5483.12352 -2533.97097 Z M 5793.244 -2751.77143 L 5793.62595 -2751.80484 5793.9963 -2751.90408 5794.34379 -2752.06611 5794.65786 -2752.28603 5794.92897 -2752.55714 5795.14889 -2752.87121 5795.31092 -2753.2187 5795.41016 -2753.58905 5795.44357 -2753.971 5795.41016 -2754.35295 5795.31092 -2754.7233 5795.14889 -2755.07079 5794.92688 -2755.38784 5794.83839 -2755.47959 5794.75538 -2755.60755 5794.7263 -2755.75727 5794.7263 -2794.79301 5794.7551 -2794.94205 5794.83735 -2795.06962 5794.96122 -2795.15736 5795.10885 -2795.19263 5795.259 -2795.17036 5795.39004 -2795.09375 5795.50143 -2794.99607 5795.94943 -2794.69672 5796.209 -2794.56871 5796.209 -2796.464 5795.1263 -2796.464 5794.97323 -2796.49445 5794.84346 -2796.58116 5794.75675 -2796.71093 5794.7263 -2796.864 5794.7263 -2799.664 5794.75675 -2799.81707 5794.84346 -2799.94684 5794.97323 -2800.03355 5795.1263 -2800.064 5796.209 -2800.064 5796.209 -2801.95929 5795.94943 -2801.83128 5795.50143 -2801.53193 5795.39004 -2801.43425 5795.259 -2801.35764 5795.10885 -2801.33537 5794.96122 -2801.37064 5794.83735 -2801.45838 5794.7551 -2801.58595 5794.7263 -2801.73499 5794.7263 -2803.04795 5794.6952 -2803.36376 5794.61507 -2803.62789 5794.59908 -2803.77538 5794.63795 -2803.91856 5794.72633 -2804.03773 5794.85206 -2804.11649 5794.99785 -2804.144 5798.0155 -2804.144 5798.60426 -2804.10627 5799.2151 -2803.98825 5799.80531 -2803.79152 5800.36479 -2803.51943 5800.88398 -2803.17664 5801.37308 -2802.75112 5804.20684 -2799.91735 5804.29355 -2799.78758 5804.324 -2799.63451 5804.324 -2758.98551 5804.29355 -2758.83244 5804.20684 -2758.70267 5804.15903 -2758.65486 5803.93911 -2758.34079 5803.77708 -2757.9933 5803.67784 -2757.62295 5803.64443 -2757.241 5803.67784 -2756.85905 5803.77708 -2756.4887 5803.93911 -2756.14121 5804.15903 -2755.82714 5804.43014 -2755.55603 5804.74421 -2755.33611 5805.0917 -2755.17408 5805.46205 -2755.07484 5805.844 -2755.04143 5806.22595 -2755.07484 5806.5963 -2755.17408 5806.94379 -2755.33611 5807.25786 -2755.55603 5807.52897 -2755.82714 5807.74889 -2756.14121 5807.91092 -2756.4887 5808.01016 -2756.85905 5808.04357 -2757.241 5808.01016 -2757.62295 5807.91092 -2757.9933 5807.74889 -2758.34079 5807.52897 -2758.65486 5807.48116 -2758.70267 5807.39445 -2758.83244 5807.364 -2758.98551 5807.364 -2800.41015 5807.3329 -2800.72596 5807.24651 -2801.01074 5807.10622 -2801.27319 5806.90491 -2801.5185 5803.52268 -2804.90072 5803.12902 -2805.34831 5802.78053 -2805.86369 5802.50231 -2806.42015 5802.29909 -2807.00816 5802.17436 -2807.61767 5802.1294 -2808.26435 5802.129 -2811.34151 5802.10096 -2811.59041 5802.02571 -2811.80546 5801.90449 -2811.99838 5801.74338 -2812.15949 5801.55046 -2812.28071 5801.33541 -2812.35596 5801.08654 -2812.384 5794.93146 -2812.384 5794.68259 -2812.35596 5794.46754 -2812.28071 5794.27462 -2812.15949 5794.11351 -2811.99838 5793.99229 -2811.80546 5793.91704 -2811.59041 5793.889 -2811.34154 5793.889 -2805.54467 5793.85686 -2805.38758 5793.76561 -2805.25573 5793.6299 -2805.17031 5793.47155 -2805.14505 5793.31601 -2805.18401 5793.18827 -2805.28093 5793.09778 -2805.3893 5792.75491 -2805.90858 5792.48276 -2806.46818 5792.28598 -2807.0585 5792.16794 -2807.66932 5792.09331 -2808.80164 5791.98817 -2809.33022 5791.81496 -2809.84048 5791.57663 -2810.32377 5791.27725 -2810.77182 5790.92196 -2811.17696 5790.51682 -2811.53225 5790.06877 -2811.83163 5789.58548 -2812.06996 5789.07522 -2812.24317 5788.54671 -2812.3483 5788.009 -2812.38354 5787.47129 -2812.3483 5786.94278 -2812.24317 5786.43252 -2812.06996 5785.94923 -2811.83163 5785.50118 -2811.53225 5785.09604 -2811.17696 5784.74075 -2810.77182 5784.44137 -2810.32377 5784.20304 -2809.84048 5784.02983 -2809.33022 5783.9247 -2808.80171 5783.88946 -2808.264 5783.9247 -2807.72629 5784.02983 -2807.19778 5784.20304 -2806.68752 5784.44137 -2806.20423 5784.74075 -2805.75618 5785.09604 -2805.35104 5785.50118 -2804.99575 5785.94923 -2804.69637 5786.43252 -2804.45804 5786.94278 -2804.28483 5787.47122 -2804.17972 5788.60428 -2804.10589 5789.21539 -2803.98784 5789.80572 -2803.79107 5790.36531 -2803.51893 5790.8846 -2803.17608 5791.37376 -2802.75052 5791.56914 -2802.55514 5791.65585 -2802.42537 5791.6863 -2802.2723 5791.6863 -2801.36756 5791.65416 -2801.21046 5791.56291 -2801.07861 5791.4272 -2800.9932 5791.26885 -2800.96794 5791.11331 -2801.0069 5790.98556 -2801.10382 5790.92167 -2801.17667 5790.51657 -2801.53193 5790.06857 -2801.83128 5789.58533 -2802.06959 5789.07511 -2802.24279 5788.54666 -2802.3479 5788.009 -2802.38314 5787.47134 -2802.3479 5786.94289 -2802.24279 5786.43267 -2802.06959 5785.94943 -2801.83128 5785.50143 -2801.53193 5785.08324 -2801.16175 5784.95549 -2801.06483 5784.79995 -2801.02586 5784.6416 -2801.05112 5784.50589 -2801.13654 5784.41464 -2801.26839 5784.3825 -2801.42548 5784.3825 -2803.39175 5784.3514 -2803.70756 5784.26501 -2803.99234 5784.12472 -2804.25479 5783.92341 -2804.5001 5783.50487 -2804.91984 5783.09719 -2805.38987 5782.75439 -2805.90905 5782.4823 -2806.46853 5782.28556 -2807.05874 5782.16755 -2807.66944 5782.09292 -2808.80158 5781.98779 -2809.33011 5781.81459 -2809.84033 5781.57628 -2810.32357 5781.27693 -2810.77157 5780.92167 -2811.17667 5780.51657 -2811.53193 5780.06857 -2811.83128 5779.58533 -2812.06959 5779.07511 -2812.24279 5778.54666 -2812.3479 5778.009 -2812.38314 5777.47134 -2812.3479 5776.94289 -2812.24279 5776.43267 -2812.06959 5775.94943 -2811.83128 5775.50143 -2811.53193 5775.09633 -2811.17667 5774.74107 -2810.77157 5774.44172 -2810.32357 5774.20341 -2809.84033 5774.03021 -2809.33011 5773.9251 -2808.80166 5773.88986 -2808.264 5773.9251 -2807.72634 5774.03021 -2807.19789 5774.20341 -2806.68767 5774.44172 -2806.20443 5774.74107 -2805.75643 5775.09633 -2805.35133 5775.50143 -2804.99607 5775.94943 -2804.69672 5776.43267 -2804.45841 5776.94289 -2804.28521 5777.47127 -2804.18011 5778.60416 -2804.10629 5779.21515 -2803.98827 5779.80536 -2803.79154 5780.36485 -2803.51945 5780.88403 -2803.17667 5781.20624 -2802.89866 5781.30684 -2802.76301 5781.3425 -2802.59792 5781.3425 -2801.69044 5781.3137 -2801.5414 5781.23145 -2801.41383 5781.10758 -2801.32609 5780.95995 -2801.29082 5780.8098 -2801.31309 5780.67876 -2801.3897 5780.51657 -2801.53193 5780.06857 -2801.83128 5779.58533 -2802.06959 5779.07511 -2802.24279 5778.54666 -2802.3479 5778.009 -2802.38314 5777.47134 -2802.3479 5776.94289 -2802.24279 5776.43267 -2802.06959 5775.94943 -2801.83128 5775.50143 -2801.53193 5775.09633 -2801.17667 5774.74107 -2800.77157 5774.44172 -2800.32357 5774.20341 -2799.84033 5774.03021 -2799.33011 5773.9251 -2798.80166 5773.88986 -2798.264 5773.9251 -2797.72634 5774.03021 -2797.19789 5774.20341 -2796.68767 5774.44172 -2796.20443 5774.74107 -2795.75643 5775.09633 -2795.35133 5775.50143 -2794.99607 5775.94943 -2794.69672 5776.43267 -2794.45841 5776.94289 -2794.28521 5777.47134 -2794.1801 5778.009 -2794.14486 5778.54666 -2794.1801 5779.07511 -2794.28521 5779.58533 -2794.45841 5780.06857 -2794.69672 5780.51657 -2794.99607 5780.67876 -2795.1383 5780.8098 -2795.21491 5780.95995 -2795.23718 5781.10758 -2795.20191 5781.23145 -2795.11417 5781.3137 -2794.9866 5781.3425 -2794.83756 5781.3425 -2763.94301 5781.31205 -2763.78994 5781.22534 -2763.66017 5781.17803 -2763.61286 5780.95811 -2763.29879 5780.79608 -2762.9513 5780.69684 -2762.58095 5780.66343 -2762.199 5780.69684 -2761.81705 5780.79608 -2761.4467 5780.95811 -2761.09921 5781.17803 -2760.78514 5781.44914 -2760.51403 5781.76321 -2760.29411 5782.1107 -2760.13208 5782.48105 -2760.03284 5782.863 -2759.99943 5783.24495 -2760.03284 5783.6153 -2760.13208 5783.96279 -2760.29411 5784.27686 -2760.51403 5784.54797 -2760.78514 5784.76789 -2761.09921 5784.92992 -2761.4467 5785.02916 -2761.81705 5785.06257 -2762.199 5785.02916 -2762.58095 5784.92992 -2762.9513 5784.76789 -2763.29879 5784.54797 -2763.61286 5784.49966 -2763.66117 5784.41295 -2763.79094 5784.3825 -2763.94401 5784.3825 -2795.10252 5784.41464 -2795.25961 5784.50589 -2795.39146 5784.6416 -2795.47688 5784.79995 -2795.50214 5784.95549 -2795.46317 5785.09633 -2795.35133 5785.50143 -2794.99607 5785.94943 -2794.69672 5786.43267 -2794.45841 5786.94289 -2794.28521 5787.47134 -2794.1801 5788.009 -2794.14486 5788.54666 -2794.1801 5789.07511 -2794.28521 5789.58533 -2794.45841 5790.06857 -2794.69672 5790.51657 -2794.99607 5790.92167 -2795.35133 5790.98556 -2795.42418 5791.11331 -2795.5211 5791.26885 -2795.56006 5791.4272 -2795.5348 5791.56291 -2795.44939 5791.65416 -2795.31754 5791.6863 -2795.16044 5791.6863 -2755.7053 5791.67337 -2755.60444 5791.5791 -2755.41352 5791.33911 -2755.07079 5791.17708 -2754.7233 5791.07784 -2754.35295 5791.04443 -2753.971 5791.07784 -2753.58905 5791.17708 -2753.2187 5791.33911 -2752.87121 5791.55903 -2752.55714 5791.83014 -2752.28603 5792.14421 -2752.06611 5792.4917 -2751.90408 5792.86205 -2751.80484 5793.244 -2751.77143 Z M 5541.18257 -2711.7346 L 5541.59961 -2711.75141 5542.00856 -2711.8349 5542.39881 -2711.9829 5542.76028 -2712.19159 5543.08358 -2712.45556 5543.36035 -2712.76798 5543.58343 -2713.12074 5543.74703 -2713.50472 5543.84691 -2713.90997 5543.8805 -2714.326 5543.84691 -2714.74203 5543.74703 -2715.14728 5543.58343 -2715.53126 5543.47157 -2715.70814 5543.42544 -2715.81064 5543.40965 -2715.92193 5543.40965 -2783.46047 5543.42544 -2783.57175 5543.47157 -2783.67425 5543.70143 -2784.03774 5543.86503 -2784.42172 5543.96491 -2784.82697 5543.9985 -2785.243 5543.96491 -2785.65903 5543.86503 -2786.06428 5543.70143 -2786.44826 5543.47835 -2786.80102 5543.20158 -2787.11344 5542.87828 -2787.37741 5542.51681 -2787.5861 5542.12656 -2787.7341 5541.71761 -2787.81759 5541.30057 -2787.8344 5540.88623 -2787.78409 5540.48533 -2787.66796 5540.10825 -2787.48904 5539.76475 -2787.25194 5539.46374 -2786.96281 5539.213 -2786.62914 5539.01903 -2786.25956 5538.88686 -2785.86366 5538.81991 -2785.45169 5538.81991 -2785.03431 5538.88686 -2784.62234 5539.01903 -2784.22644 5539.213 -2783.85686 5539.32093 -2783.71324 5539.38056 -2783.59961 5539.40115 -2783.47294 5539.40115 -2716.25309 5539.38056 -2716.12642 5539.32093 -2716.01279 5539.095 -2715.71214 5538.90103 -2715.34256 5538.76886 -2714.94666 5538.70191 -2714.53469 5538.70191 -2714.11731 5538.76886 -2713.70534 5538.90103 -2713.30944 5539.095 -2712.93986 5539.34574 -2712.60619 5539.64675 -2712.31706 5539.99025 -2712.07996 5540.36733 -2711.90104 5540.76823 -2711.78491 5541.18257 -2711.7346 Z M 5845.357 -2768.17643 L 5845.73895 -2768.20984 5846.1093 -2768.30908 5846.45679 -2768.47111 5846.77086 -2768.69103 5846.90969 -2768.81576 5847.04477 -2768.90076 5847.14694 -2768.94653 5847.2578 -2768.9622 5867.9634 -2768.9622 5868.11647 -2768.93175 5868.29549 -2768.83139 5868.44306 -2768.69599 5868.76421 -2768.47111 5869.1117 -2768.30908 5869.48205 -2768.20984 5869.864 -2768.17643 5870.24595 -2768.20984 5870.6163 -2768.30908 5870.96379 -2768.47111 5871.27786 -2768.69103 5871.54897 -2768.96214 5871.76889 -2769.27621 5871.93092 -2769.6237 5872.03016 -2769.99405 5872.06357 -2770.376 5872.03016 -2770.75795 5871.93092 -2771.1283 5871.76889 -2771.47579 5871.54897 -2771.78986 5871.27786 -2772.06097 5871.04132 -2772.22659 5870.93528 -2772.3364 5870.8781 -2772.47793 5870.8781 -2772.63058 5870.93528 -2772.77211 5871.04132 -2772.88192 5871.23286 -2773.01603 5871.50397 -2773.28714 5871.72389 -2773.60121 5871.88592 -2773.9487 5871.98516 -2774.31905 5872.01857 -2774.701 5871.98516 -2775.08295 5871.88592 -2775.4533 5871.72389 -2775.80079 5871.50397 -2776.11486 5871.23286 -2776.38597 5871.06752 -2776.50174 5870.96149 -2776.61154 5870.9043 -2776.75307 5870.9043 -2776.90572 5870.96149 -2777.04725 5871.06752 -2777.15706 5871.24886 -2777.28403 5871.51997 -2777.55514 5871.73989 -2777.86921 5871.90192 -2778.2167 5872.00116 -2778.58705 5872.03457 -2778.969 5872.00116 -2779.35095 5871.90192 -2779.7213 5871.73989 -2780.06879 5871.51997 -2780.38286 5871.24886 -2780.65397 5870.93479 -2780.87389 5870.5873 -2781.03592 5870.21695 -2781.13516 5869.835 -2781.16857 5869.45305 -2781.13516 5869.0827 -2781.03592 5868.73521 -2780.87389 5868.42114 -2780.65397 5868.28001 -2780.52714 5868.14651 -2780.44342 5868.04456 -2780.39788 5867.934 -2780.3823 5847.05096 -2780.3823 5846.89788 -2780.41275 5846.71865 -2780.51329 5846.57084 -2780.64908 5846.24979 -2780.87389 5845.9023 -2781.03592 5845.53195 -2781.13516 5845.15 -2781.16857 5844.76805 -2781.13516 5844.3977 -2781.03592 5844.05021 -2780.87389 5843.73614 -2780.65397 5843.46503 -2780.38286 5843.24511 -2780.06879 5843.08308 -2779.7213 5842.98384 -2779.35095 5842.95043 -2778.969 5842.98384 -2778.58705 5843.08308 -2778.2167 5843.24511 -2777.86921 5843.46503 -2777.55514 5843.73614 -2777.28403 5843.95446 -2777.13116 5844.0605 -2777.02136 5844.11768 -2776.87982 5844.11768 -2776.72718 5844.0605 -2776.58564 5843.95446 -2776.47584 5843.73614 -2776.32297 5843.46503 -2776.05186 5843.24511 -2775.73779 5843.08308 -2775.3903 5842.98384 -2775.01995 5842.95043 -2774.638 5842.98384 -2774.25605 5843.08308 -2773.8857 5843.24511 -2773.53821 5843.46503 -2773.22414 5843.73614 -2772.95303 5844.00869 -2772.76219 5844.11473 -2772.65238 5844.17191 -2772.51085 5844.17191 -2772.3582 5844.11473 -2772.21667 5844.00869 -2772.10687 5843.94314 -2772.06097 5843.67203 -2771.78986 5843.45211 -2771.47579 5843.29008 -2771.1283 5843.19084 -2770.75795 5843.15743 -2770.376 5843.19084 -2769.99405 5843.29008 -2769.6237 5843.45211 -2769.27621 5843.67203 -2768.96214 5843.94314 -2768.69103 5844.25721 -2768.47111 5844.6047 -2768.30908 5844.97505 -2768.20984 5845.357 -2768.17643 Z M 5861.238 -2572.91543 L 5861.61995 -2572.94884 5861.9903 -2573.04808 5862.33779 -2573.21011 5862.65186 -2573.43003 5862.92297 -2573.70114 5863.14289 -2574.01521 5863.30492 -2574.3627 5863.40416 -2574.73305 5863.43757 -2575.115 5863.40416 -2575.49695 5863.30492 -2575.8673 5863.14289 -2576.21479 5862.92059 -2576.53226 5862.86676 -2576.64141 5862.84825 -2576.76169 5862.84825 -2584.30775 5862.81541 -2584.64122 5862.72387 -2584.94298 5862.57522 -2585.22109 5862.36264 -2585.48012 5853.33601 -2594.50684 5853.25633 -2594.62063 5853.22038 -2594.75482 5853.20716 -2594.90595 5853.10792 -2595.2763 5852.94589 -2595.62379 5852.72597 -2595.93786 5852.45486 -2596.20897 5852.14079 -2596.42889 5851.7933 -2596.59092 5851.42295 -2596.69016 5851.041 -2596.72357 5850.65905 -2596.69016 5850.2887 -2596.59092 5849.94121 -2596.42889 5849.62714 -2596.20897 5849.35603 -2595.93786 5849.13611 -2595.62379 5848.97408 -2595.2763 5848.87484 -2594.90595 5848.84143 -2594.524 5848.87484 -2594.14205 5848.97408 -2593.7717 5849.13611 -2593.42421 5849.35603 -2593.11014 5849.62714 -2592.83903 5849.94121 -2592.61911 5850.2887 -2592.45708 5850.65905 -2592.35784 5850.8106 -2592.34459 5850.94478 -2592.30863 5851.05858 -2592.22895 5859.50999 -2583.77745 5859.5967 -2583.64768 5859.62715 -2583.49461 5859.62715 -2576.76083 5859.60864 -2576.64055 5859.55481 -2576.5314 5859.33311 -2576.21479 5859.17108 -2575.8673 5859.07184 -2575.49695 5859.03843 -2575.115 5859.07184 -2574.73305 5859.17108 -2574.3627 5859.33311 -2574.01521 5859.55303 -2573.70114 5859.82414 -2573.43003 5860.13821 -2573.21011 5860.4857 -2573.04808 5860.85605 -2572.94884 5861.238 -2572.91543 Z M 5931.02815 -2778.05198 L 5931.59917 -2778.08717 5931.75083 -2778.10653 5932.31238 -2778.21589 5932.46021 -2778.25486 5933.0027 -2778.43653 5933.1442 -2778.49445 5933.65836 -2778.74531 5933.79109 -2778.82119 5934.26815 -2779.13697 5934.38985 -2779.22951 5934.82165 -2779.60481 5934.93024 -2779.71243 5935.3094 -2780.14083 5935.40303 -2780.2617 5935.72309 -2780.7359 5935.80016 -2780.86794 5936.05563 -2781.37983 5936.11482 -2781.5208 5936.30135 -2782.06163 5936.34165 -2782.20911 5936.45601 -2782.7694 5936.47694 -2782.92393 5936.51736 -2783.51805 5936.51755 -2783.67399 5936.48013 -2784.24461 5936.46018 -2784.39619 5936.34861 -2784.9573 5936.30906 -2785.10499 5936.12526 -2785.64676 5936.06679 -2785.78802 5935.8139 -2786.3012 5935.73751 -2786.43363 5935.41986 -2786.90944 5935.32684 -2787.03078 5934.94985 -2787.4611 5934.8418 -2787.56927 5934.41191 -2787.94675 5934.29068 -2788.0399 5933.81523 -2788.35809 5933.68288 -2788.43464 5933.16999 -2788.6881 5933.0288 -2788.74674 5932.48723 -2788.93115 5932.33959 -2788.97086 5931.7786 -2789.08307 5931.62705 -2789.10319 5931.05622 -2789.14128 5930.90333 -2789.14146 5930.33241 -2789.10477 5930.1808 -2789.08502 5929.61954 -2788.97419 5929.4718 -2788.93483 5928.92979 -2788.75174 5928.78845 -2788.69345 5928.27494 -2788.44124 5928.14241 -2788.36502 5927.66619 -2788.04799 5927.54473 -2787.95513 5927.11391 -2787.57871 5927.0056 -2787.4708 5926.62756 -2787.0414 5926.53425 -2786.92029 5926.21544 -2786.44526 5926.13872 -2786.31302 5925.88458 -2785.80046 5925.82576 -2785.65934 5925.64064 -2785.11802 5925.60073 -2784.97043 5925.48779 -2784.40959 5925.46747 -2784.25806 5925.42864 -2783.68728 5925.42825 -2783.53439 5925.46419 -2782.96342 5925.48375 -2782.81179 5925.59385 -2782.25038 5925.63301 -2782.10259 5925.81539 -2781.56034 5925.87349 -2781.41893 5926.12503 -2780.90509 5926.20108 -2780.77246 5926.51748 -2780.29582 5926.61018 -2780.17424 5926.98605 -2779.74293 5927.09381 -2779.63448 5927.52271 -2779.25588 5927.6437 -2779.16241 5928.11832 -2778.84297 5928.25046 -2778.76608 5928.76268 -2778.51127 5928.90373 -2778.45227 5929.44481 -2778.26644 5929.59234 -2778.22634 5930.15303 -2778.11266 5930.30454 -2778.09214 5930.87527 -2778.05256 5931.02815 -2778.05198 Z M 5931.01964 -2571.63536 L 5931.57957 -2571.66987 5931.73123 -2571.68923 5932.29278 -2571.79859 5932.44061 -2571.83756 5932.9831 -2572.01923 5933.1246 -2572.07715 5933.63876 -2572.32801 5933.77149 -2572.40389 5934.24855 -2572.71967 5934.37025 -2572.81221 5934.80205 -2573.18751 5934.91064 -2573.29513 5935.2898 -2573.72353 5935.38343 -2573.8444 5935.70349 -2574.3186 5935.78056 -2574.45064 5936.03603 -2574.96253 5936.09522 -2575.1035 5936.28175 -2575.64433 5936.32205 -2575.79181 5936.43641 -2576.3521 5936.45734 -2576.50663 5936.49776 -2577.10075 5936.49795 -2577.25669 5936.46053 -2577.82731 5936.44058 -2577.97889 5936.32901 -2578.54 5936.28946 -2578.68769 5936.10566 -2579.22946 5936.04719 -2579.37072 5935.7943 -2579.8839 5935.71791 -2580.01633 5935.40026 -2580.49214 5935.30724 -2580.61348 5934.93025 -2581.0438 5934.8222 -2581.15197 5934.39231 -2581.52945 5934.27108 -2581.6226 5933.79563 -2581.94079 5933.66328 -2582.01734 5933.15039 -2582.2708 5933.0092 -2582.32944 5932.46763 -2582.51385 5932.31999 -2582.55356 5931.759 -2582.66577 5931.60745 -2582.68589 5931.03662 -2582.72398 5930.88373 -2582.72416 5930.31281 -2582.68747 5930.1612 -2582.66772 5929.59994 -2582.55689 5929.4522 -2582.51753 5928.91019 -2582.33444 5928.76885 -2582.27615 5928.25534 -2582.02394 5928.12281 -2581.94772 5927.64659 -2581.63069 5927.52513 -2581.53783 5927.09431 -2581.16141 5926.986 -2581.0535 5926.60796 -2580.6241 5926.51465 -2580.50299 5926.19584 -2580.02796 5926.11912 -2579.89572 5925.86498 -2579.38316 5925.80616 -2579.24204 5925.62104 -2578.70072 5925.58113 -2578.55313 5925.46819 -2577.99229 5925.44787 -2577.84076 5925.40904 -2577.26998 5925.40865 -2577.11709 5925.44459 -2576.54612 5925.46415 -2576.39449 5925.57425 -2575.83308 5925.61341 -2575.68529 5925.79579 -2575.14304 5925.85389 -2575.00163 5926.10543 -2574.48779 5926.18148 -2574.35516 5926.49788 -2573.87852 5926.59058 -2573.75694 5926.96645 -2573.32563 5927.07421 -2573.21718 5927.50311 -2572.83858 5927.6241 -2572.74511 5928.09872 -2572.42567 5928.23086 -2572.34878 5928.74308 -2572.09397 5928.88413 -2572.03497 5929.42521 -2571.84914 5929.57274 -2571.80904 5930.13343 -2571.69536 5930.28494 -2571.67484 5930.84458 -2571.63603 5931.01964 -2571.63536 Z M 5527.81056 -2700.43019 L 5528.44073 -2700.49339 5529.05958 -2700.62802 5529.65906 -2700.83231 5530.23134 -2701.10361 5530.76897 -2701.43837 5531.26493 -2701.83223 5531.71277 -2702.28007 5532.10663 -2702.77603 5532.44139 -2703.31366 5532.71269 -2703.88594 5532.91698 -2704.48542 5533.05161 -2705.10427 5533.11481 -2705.73444 5533.10576 -2706.36771 5533.02459 -2706.99582 5532.87235 -2707.61058 5532.65102 -2708.20398 5532.3635 -2708.76828 5532.01352 -2709.29613 5531.60565 -2709.78064 5531.14521 -2710.21551 5530.63821 -2710.59505 5530.09124 -2710.91432 5529.51144 -2711.16916 5528.90637 -2711.35625 5528.28392 -2711.47315 5527.65221 -2711.51833 5527.01946 -2711.49121 5526.39392 -2711.39213 5525.78376 -2711.2224 5525.19692 -2710.98422 5524.64106 -2710.68069 5524.12342 -2710.31578 5523.65075 -2709.89425 5523.22922 -2709.42158 5522.86431 -2708.90394 5522.56078 -2708.34808 5522.3226 -2707.76124 5522.15287 -2707.15108 5522.05379 -2706.52554 5522.02667 -2705.89279 5522.07185 -2705.26108 5522.18875 -2704.63863 5522.37584 -2704.03356 5522.63068 -2703.45376 5522.94995 -2702.90679 5523.32949 -2702.39979 5523.76436 -2701.93935 5524.24887 -2701.53148 5524.77672 -2701.1815 5525.34102 -2700.89398 5525.93442 -2700.67265 5526.54918 -2700.52041 5527.17729 -2700.43924 5527.81056 -2700.43019 Z M 5822.59167 -2763.85476 L 5822.98209 -2763.78961 5823.37791 -2763.78961 5823.76833 -2763.85476 5824.14269 -2763.98328 5824.40539 -2764.12544 5824.49757 -2764.16141 5824.59577 -2764.17365 5840.91184 -2764.17365 5841.08089 -2764.13617 5841.1347 -2764.11108 5841.50505 -2764.01184 5841.887 -2763.97843 5842.26895 -2764.01184 5842.6393 -2764.11108 5842.98679 -2764.27311 5843.30086 -2764.49303 5843.57197 -2764.76414 5843.79189 -2765.07821 5843.95392 -2765.4257 5844.05316 -2765.79605 5844.08657 -2766.178 5844.05316 -2766.55995 5843.95392 -2766.9303 5843.79189 -2767.27779 5843.57197 -2767.59186 5843.30086 -2767.86297 5842.98679 -2768.08289 5842.6393 -2768.24492 5842.26895 -2768.34416 5841.887 -2768.37757 5841.50505 -2768.34416 5841.1347 -2768.24492 5841.08046 -2768.21963 5840.91141 -2768.18215 5824.59614 -2768.18215 5824.49794 -2768.19439 5824.40576 -2768.23036 5824.14269 -2768.37272 5823.76833 -2768.50124 5823.37791 -2768.56639 5822.98209 -2768.56639 5822.59167 -2768.50124 5822.21731 -2768.37272 5821.8692 -2768.18434 5821.55684 -2767.94122 5821.28876 -2767.65001 5821.07227 -2767.31865 5820.91327 -2766.95617 5820.81611 -2766.57246 5820.78342 -2766.178 5820.81611 -2765.78354 5820.91327 -2765.39983 5821.07227 -2765.03735 5821.28876 -2764.70599 5821.55684 -2764.41478 5821.8692 -2764.17166 5822.21731 -2763.98328 5822.59167 -2763.85476 Z M 5540.1 -2689.27626 L 5540.64413 -2689.31192 5541.17895 -2689.4183 5541.69531 -2689.59358 5542.18437 -2689.83476 5542.63777 -2690.13771 5543.04775 -2690.49725 5543.40729 -2690.90723 5543.71024 -2691.36063 5543.95142 -2691.84969 5544.1267 -2692.36605 5544.23308 -2692.90087 5544.26874 -2693.445 5544.23308 -2693.98913 5544.1267 -2694.52395 5543.95142 -2695.04031 5543.71024 -2695.52937 5543.40729 -2695.98277 5543.04775 -2696.39275 5542.63777 -2696.75229 5542.18437 -2697.05524 5541.69531 -2697.29642 5541.17895 -2697.4717 5540.64413 -2697.57808 5540.1 -2697.61374 5539.55587 -2697.57808 5539.02105 -2697.4717 5538.50469 -2697.29642 5538.01563 -2697.05524 5537.56223 -2696.75229 5537.15225 -2696.39275 5536.79271 -2695.98277 5536.48976 -2695.52937 5536.24858 -2695.04031 5536.0733 -2694.52395 5535.96692 -2693.98913 5535.93126 -2693.445 5535.96692 -2692.90087 5536.0733 -2692.36605 5536.24858 -2691.84969 5536.48976 -2691.36063 5536.79271 -2690.90723 5537.15225 -2690.49725 5537.56223 -2690.13771 5538.01563 -2689.83476 5538.50469 -2689.59358 5539.02105 -2689.4183 5539.55587 -2689.31192 5540.1 -2689.27626 Z M 5841.238 -2591.53743 L 5841.61995 -2591.57084 5841.9903 -2591.67008 5842.33779 -2591.83211 5842.65186 -2592.05203 5842.92297 -2592.32314 5843.14289 -2592.63721 5843.30492 -2592.9847 5843.40416 -2593.35505 5843.43757 -2593.737 5843.40416 -2594.11895 5843.30492 -2594.4893 5843.27943 -2594.54397 5843.24195 -2594.71302 5843.24195 -2603.98098 5843.27943 -2604.15003 5843.30492 -2604.2047 5843.40416 -2604.57505 5843.43757 -2604.957 5843.40416 -2605.33895 5843.30492 -2605.7093 5843.14289 -2606.05679 5842.92297 -2606.37086 5842.65186 -2606.64197 5842.33779 -2606.86189 5841.9903 -2607.02392 5841.61995 -2607.12316 5841.238 -2607.15657 5840.85605 -2607.12316 5840.4857 -2607.02392 5840.13821 -2606.86189 5839.82414 -2606.64197 5839.55303 -2606.37086 5839.33311 -2606.05679 5839.17108 -2605.7093 5839.07184 -2605.33895 5839.03843 -2604.957 5839.07184 -2604.57505 5839.17108 -2604.2047 5839.19597 -2604.15132 5839.23345 -2603.98227 5839.23345 -2594.71173 5839.19597 -2594.54268 5839.17108 -2594.4893 5839.07184 -2594.11895 5839.03843 -2593.737 5839.07184 -2593.35505 5839.17108 -2592.9847 5839.33311 -2592.63721 5839.55303 -2592.32314 5839.82414 -2592.05203 5840.13821 -2591.83211 5840.4857 -2591.67008 5840.85605 -2591.57084 5841.238 -2591.53743 Z M 5758.009 -2804.14446 L 5758.54671 -2804.1797 5759.07522 -2804.28483 5759.58548 -2804.45804 5760.06877 -2804.69637 5760.51682 -2804.99575 5760.92196 -2805.35104 5761.27725 -2805.75618 5761.57663 -2806.20423 5761.81496 -2806.68752 5761.98817 -2807.19778 5762.0933 -2807.72629 5762.12854 -2808.264 5762.0933 -2808.80171 5761.98817 -2809.33022 5761.81496 -2809.84048 5761.57663 -2810.32377 5761.27725 -2810.77182 5760.92196 -2811.17696 5760.51682 -2811.53225 5760.06877 -2811.83163 5759.58548 -2812.06996 5759.07522 -2812.24317 5758.54671 -2812.3483 5758.009 -2812.38354 5757.47129 -2812.3483 5756.94278 -2812.24317 5756.43252 -2812.06996 5755.94923 -2811.83163 5755.50118 -2811.53225 5755.09604 -2811.17696 5754.74075 -2810.77182 5754.44137 -2810.32377 5754.20304 -2809.84048 5754.02983 -2809.33022 5753.9247 -2808.80171 5753.88946 -2808.264 5753.9247 -2807.72629 5754.02983 -2807.19778 5754.20304 -2806.68752 5754.44137 -2806.20423 5754.74075 -2805.75618 5755.09604 -2805.35104 5755.50118 -2804.99575 5755.94923 -2804.69637 5756.43252 -2804.45804 5756.94278 -2804.28483 5757.47129 -2804.1797 5758.009 -2804.14446 Z M 5768.009 -2794.14486 L 5768.54666 -2794.1801 5769.07511 -2794.28521 5769.58533 -2794.45841 5770.06857 -2794.69672 5770.51657 -2794.99607 5770.92167 -2795.35133 5771.27693 -2795.75643 5771.57628 -2796.20443 5771.81459 -2796.68767 5771.98779 -2797.19789 5772.0929 -2797.72634 5772.12814 -2798.264 5772.0929 -2798.80166 5771.98779 -2799.33011 5771.81459 -2799.84033 5771.57628 -2800.32357 5771.27693 -2800.77157 5770.92167 -2801.17667 5770.51657 -2801.53193 5770.06857 -2801.83128 5769.58533 -2802.06959 5769.07511 -2802.24279 5768.54666 -2802.3479 5768.009 -2802.38314 5767.47134 -2802.3479 5766.94289 -2802.24279 5766.43267 -2802.06959 5765.94943 -2801.83128 5765.50143 -2801.53193 5765.09633 -2801.17667 5764.74107 -2800.77157 5764.44172 -2800.32357 5764.20341 -2799.84033 5764.03021 -2799.33011 5763.9251 -2798.80166 5763.88986 -2798.264 5763.9251 -2797.72634 5764.03021 -2797.19789 5764.20341 -2796.68767 5764.44172 -2796.20443 5764.74107 -2795.75643 5765.09633 -2795.35133 5765.50143 -2794.99607 5765.94943 -2794.69672 5766.43267 -2794.45841 5766.94289 -2794.28521 5767.47134 -2794.1801 5768.009 -2794.14486 Z M 5768.009 -2804.14486 L 5768.54666 -2804.1801 5769.07511 -2804.28521 5769.58533 -2804.45841 5770.06857 -2804.69672 5770.51657 -2804.99607 5770.92167 -2805.35133 5771.27693 -2805.75643 5771.57628 -2806.20443 5771.81459 -2806.68767 5771.98779 -2807.19789 5772.0929 -2807.72634 5772.12814 -2808.264 5772.0929 -2808.80166 5771.98779 -2809.33011 5771.81459 -2809.84033 5771.57628 -2810.32357 5771.27693 -2810.77157 5770.92167 -2811.17667 5770.51657 -2811.53193 5770.06857 -2811.83128 5769.58533 -2812.06959 5769.07511 -2812.24279 5768.54666 -2812.3479 5768.009 -2812.38314 5767.47134 -2812.3479 5766.94289 -2812.24279 5766.43267 -2812.06959 5765.94943 -2811.83128 5765.50143 -2811.53193 5765.09633 -2811.17667 5764.74107 -2810.77157 5764.44172 -2810.32357 5764.20341 -2809.84033 5764.03021 -2809.33011 5763.9251 -2808.80166 5763.88986 -2808.264 5763.9251 -2807.72634 5764.03021 -2807.19789 5764.20341 -2806.68767 5764.44172 -2806.20443 5764.74107 -2805.75643 5765.09633 -2805.35133 5765.50143 -2804.99607 5765.94943 -2804.69672 5766.43267 -2804.45841 5766.94289 -2804.28521 5767.47134 -2804.1801 5768.009 -2804.14486 Z M 5506.23305 -2764.10343 L 5506.78083 -2764.13812 5507.28996 -2764.2394 5507.78195 -2764.4064 5508.24792 -2764.6362 5508.67991 -2764.92485 5509.07054 -2765.26741 5509.4131 -2765.65804 5509.70175 -2766.09003 5509.93155 -2766.556 5510.09855 -2767.04799 5510.19991 -2767.55756 5510.23389 -2768.076 5510.19991 -2768.59444 5510.09855 -2769.10401 5509.93155 -2769.596 5509.70175 -2770.06197 5509.4131 -2770.49396 5509.07054 -2770.88459 5508.67991 -2771.22715 5508.24792 -2771.5158 5507.78195 -2771.7456 5507.28378 -2771.9147 5506.7741 -2772.01539 5506.65798 -2772.02789 5506.25486 -2772.04864 5506.12511 -2772.04656 5505.7191 -2772.01394 5505.59801 -2771.99449 5505.21092 -2771.91225 5505.08177 -2771.87248 5504.72406 -2771.74659 5504.25608 -2771.5158 5503.82409 -2771.22715 5503.43346 -2770.88459 5503.0909 -2770.49396 5502.80225 -2770.06197 5502.57245 -2769.596 5502.40545 -2769.10401 5502.30409 -2768.59444 5502.27011 -2768.076 5502.30409 -2767.55756 5502.40545 -2767.04799 5502.57245 -2766.556 5502.80225 -2766.09003 5503.0909 -2765.65804 5503.43346 -2765.26741 5503.82409 -2764.92485 5504.25608 -2764.6362 5504.72205 -2764.4064 5505.21404 -2764.2394 5505.72651 -2764.13746 5506.12558 -2764.1054 5506.23305 -2764.10343 Z M 5918.37041 -2747.25915 L 5918.56284 -2747.27429 5918.98724 -2747.34327 5919.17456 -2747.38985 5919.58184 -2747.52769 5919.75894 -2747.60444 5920.138 -2747.80738 5920.30007 -2747.91221 5920.6406 -2748.17474 5920.78322 -2748.30479 5921.07594 -2748.61974 5921.19523 -2748.77149 5921.43217 -2749.13029 5921.52488 -2749.29958 5921.69958 -2749.69246 5921.76319 -2749.8747 5921.87083 -2750.29071 5921.90387 -2750.48398 5921.94173 -2750.92645 5921.94202 -2751.12251 5921.90663 -2751.55077 5921.87492 -2751.74116 5921.76952 -2752.15801 5921.70692 -2752.3406 5921.5344 -2752.73445 5921.44263 -2752.90425 5921.20769 -2753.26436 5921.08924 -2753.41676 5920.79827 -2753.73333 5920.65637 -2753.86418 5920.3173 -2754.12858 5920.15582 -2754.23431 5919.77788 -2754.43935 5919.60121 -2754.51708 5919.1947 -2754.65718 5919.00765 -2754.7048 5918.58363 -2754.77613 5918.3913 -2754.79234 5917.96132 -2754.79297 5917.76894 -2754.77732 5917.34472 -2754.70723 5917.15753 -2754.66016 5916.75061 -2754.52125 5916.57371 -2754.44404 5916.19518 -2754.24011 5916.03338 -2754.13485 5915.69354 -2753.87144 5915.55126 -2753.74101 5915.25937 -2753.42529 5915.14048 -2753.27324 5914.90448 -2752.91382 5914.81221 -2752.74428 5914.63854 -2752.35094 5914.57541 -2752.16854 5914.46879 -2751.752 5914.43652 -2751.56169 5914.39985 -2751.13329 5914.39932 -2750.94027 5914.43361 -2750.51167 5914.46482 -2750.32119 5914.56913 -2749.90406 5914.63125 -2749.72131 5914.80274 -2749.32702 5914.89407 -2749.15697 5915.12807 -2748.79625 5915.24611 -2748.64353 5915.53625 -2748.32621 5915.67781 -2748.19499 5916.01618 -2747.9297 5916.17739 -2747.82355 5916.55479 -2747.61752 5916.73126 -2747.53932 5917.1374 -2747.39816 5917.32432 -2747.35005 5917.74815 -2747.27761 5917.94045 -2747.2609 5918.37041 -2747.25915 Z M 5918.47041 -2778.85915 L 5918.66284 -2778.87429 5919.08724 -2778.94327 5919.27456 -2778.98985 5919.68184 -2779.12769 5919.85894 -2779.20444 5920.238 -2779.40738 5920.40007 -2779.51221 5920.7406 -2779.77474 5920.88322 -2779.90479 5921.17594 -2780.21974 5921.29523 -2780.37149 5921.53217 -2780.73029 5921.62488 -2780.89958 5921.79958 -2781.29246 5921.86319 -2781.4747 5921.97083 -2781.89071 5922.00387 -2782.08398 5922.04173 -2782.52645 5922.04202 -2782.72251 5922.00663 -2783.15077 5921.97492 -2783.34116 5921.86952 -2783.75801 5921.80692 -2783.9406 5921.6344 -2784.33445 5921.54263 -2784.50425 5921.30769 -2784.86436 5921.18924 -2785.01676 5920.89827 -2785.33333 5920.75637 -2785.46418 5920.4173 -2785.72858 5920.25582 -2785.83431 5919.87788 -2786.03935 5919.70121 -2786.11708 5919.2947 -2786.25718 5919.10765 -2786.3048 5918.68363 -2786.37613 5918.4913 -2786.39234 5918.06132 -2786.39297 5917.86894 -2786.37732 5917.44472 -2786.30723 5917.25753 -2786.26016 5916.85061 -2786.12125 5916.67371 -2786.04404 5916.29518 -2785.84011 5916.13338 -2785.73485 5915.79354 -2785.47144 5915.65126 -2785.34101 5915.35937 -2785.02529 5915.24048 -2784.87324 5915.00448 -2784.51382 5914.91221 -2784.34428 5914.73854 -2783.95094 5914.67541 -2783.76854 5914.56879 -2783.352 5914.53652 -2783.16169 5914.49985 -2782.73329 5914.49932 -2782.54027 5914.53361 -2782.11167 5914.56482 -2781.92119 5914.66913 -2781.50406 5914.73125 -2781.32131 5914.90274 -2780.92702 5914.99407 -2780.75697 5915.22807 -2780.39625 5915.34611 -2780.24353 5915.63625 -2779.92621 5915.77781 -2779.79499 5916.11618 -2779.5297 5916.27739 -2779.42355 5916.65479 -2779.21752 5916.83126 -2779.13932 5917.2374 -2778.99816 5917.42432 -2778.95005 5917.84815 -2778.87761 5918.04045 -2778.8609 5918.47041 -2778.85915 Z M 5490.71853 -2538.31762 L 5490.84294 -2538.3807 5491.63905 -2538.86967 5492.39265 -2539.42191 5493.09873 -2540.03373 5493.7526 -2540.70107 5494.34989 -2541.41948 5494.88664 -2542.18419 5495.31198 -2542.90947 5493.78191 -2542.90947 5493.63277 -2542.93832 5493.50513 -2543.02069 5493.41742 -2543.14471 5493.25828 -2543.49677 5493.04001 -2543.81971 5492.7703 -2544.10112 5492.45691 -2544.3329 5492.10886 -2544.50839 5491.73616 -2544.62252 5491.34953 -2544.67203 5490.9601 -2544.65549 5490.57906 -2544.57337 5490.21739 -2544.42804 5489.88547 -2544.22367 5489.59287 -2543.96615 5489.348 -2543.66288 5489.1579 -2543.32259 5489.02805 -2542.95507 5488.96218 -2542.57089 5488.96218 -2542.18111 5489.02805 -2541.79693 5489.1579 -2541.42941 5489.348 -2541.08912 5489.59287 -2540.78585 5489.88547 -2540.52833 5490.21739 -2540.32396 5490.46767 -2540.22339 5490.59936 -2540.13707 5490.68753 -2540.00662 5490.71853 -2539.85224 5490.71853 -2538.31762 Z M 5490.16853 -2801.86762 L 5490.29294 -2801.9307 5491.08905 -2802.41967 5491.84265 -2802.97191 5492.54873 -2803.58373 5493.2026 -2804.25107 5493.79989 -2804.96948 5494.33664 -2805.73419 5494.76198 -2806.45947 5493.23191 -2806.45947 5493.08277 -2806.48832 5492.95513 -2806.57069 5492.86742 -2806.69471 5492.70828 -2807.04677 5492.49001 -2807.36971 5492.2203 -2807.65112 5491.90691 -2807.8829 5491.55886 -2808.05839 5491.18616 -2808.17252 5490.79953 -2808.22203 5490.4101 -2808.20549 5490.02906 -2808.12337 5489.66739 -2807.97804 5489.33547 -2807.77367 5489.04287 -2807.51615 5488.798 -2807.21288 5488.6079 -2806.87259 5488.47805 -2806.50507 5488.41218 -2806.12089 5488.41218 -2805.73111 5488.47805 -2805.34693 5488.6079 -2804.97941 5488.798 -2804.63912 5489.04287 -2804.33585 5489.33547 -2804.07833 5489.66739 -2803.87396 5489.91767 -2803.77339 5490.04936 -2803.68707 5490.13753 -2803.55662 5490.16853 -2803.40224 5490.16853 -2801.86762 Z M 5931.61852 -2538.56762 L 5931.74294 -2538.6307 5932.53905 -2539.11967 5933.29265 -2539.67191 5933.99873 -2540.28373 5934.6526 -2540.95107 5935.24989 -2541.66948 5935.78664 -2542.43419 5936.21198 -2543.15947 5934.68191 -2543.15947 5934.53277 -2543.18832 5934.40513 -2543.27069 5934.31742 -2543.39471 5934.15828 -2543.74677 5933.94001 -2544.06971 5933.6703 -2544.35112 5933.35691 -2544.5829 5933.00886 -2544.75839 5932.63616 -2544.87252 5932.24953 -2544.92203 5931.8601 -2544.90549 5931.47906 -2544.82337 5931.11739 -2544.67804 5930.78547 -2544.47367 5930.49287 -2544.21615 5930.248 -2543.91288 5930.0579 -2543.57259 5929.92805 -2543.20507 5929.86218 -2542.82089 5929.86218 -2542.43111 5929.92805 -2542.04693 5930.0579 -2541.67941 5930.248 -2541.33912 5930.49287 -2541.03585 5930.78547 -2540.77833 5931.11739 -2540.57396 5931.36767 -2540.47339 5931.49936 -2540.38707 5931.58753 -2540.25662 5931.61852 -2540.10224 5931.61852 -2538.56762 Z M 5931.46853 -2802.76762 L 5931.59294 -2802.8307 5932.38905 -2803.31967 5933.14265 -2803.87191 5933.84873 -2804.48373 5934.5026 -2805.15107 5935.09989 -2805.86948 5935.63664 -2806.63419 5936.06198 -2807.35947 5934.53191 -2807.35947 5934.38277 -2807.38832 5934.25513 -2807.47069 5934.16742 -2807.59471 5934.00828 -2807.94677 5933.79001 -2808.26971 5933.5203 -2808.55112 5933.20691 -2808.7829 5932.85886 -2808.95839 5932.48616 -2809.07252 5932.09953 -2809.12203 5931.7101 -2809.10549 5931.32906 -2809.02337 5930.96739 -2808.87804 5930.63547 -2808.67367 5930.34287 -2808.41615 5930.098 -2808.11288 5929.9079 -2807.77259 5929.77805 -2807.40507 5929.71218 -2807.02089 5929.71218 -2806.63111 5929.77805 -2806.24693 5929.9079 -2805.87941 5930.098 -2805.53912 5930.34287 -2805.23585 5930.63547 -2804.97833 5930.96739 -2804.77396 5931.21767 -2804.67339 5931.34936 -2804.58707 5931.43753 -2804.45662 5931.46853 -2804.30224 5931.46853 -2802.76762 Z M 5479.23548 -2801.87202 L 5479.23548 -2803.56032 5479.26225 -2803.7042 5479.33898 -2803.82882 5479.45539 -2803.91749 5479.65691 -2804.0191 5479.9703 -2804.25088 5480.24001 -2804.53229 5480.45828 -2804.85523 5480.61883 -2805.21041 5480.71705 -2805.58762 5480.7501 -2805.976 5480.71705 -2806.36438 5480.61883 -2806.74159 5480.45828 -2807.09677 5480.24001 -2807.41971 5479.9703 -2807.70112 5479.65691 -2807.9329 5479.30886 -2808.10839 5478.93616 -2808.22252 5478.54953 -2808.27203 5478.1601 -2808.25549 5477.77906 -2808.17337 5477.41739 -2808.02804 5477.08547 -2807.82367 5476.79287 -2807.56615 5476.548 -2807.26288 5476.3579 -2806.92259 5476.28852 -2806.72622 5476.20404 -2806.58681 5476.07095 -2806.49269 5475.91137 -2806.45947 5474.6485 -2806.45947 5474.82282 -2806.13233 5475.32793 -2805.34636 5475.89543 -2804.60418 5476.52153 -2803.91073 5477.20207 -2803.27061 5477.93252 -2802.6881 5478.70801 -2802.16706 5479.23548 -2801.87202 Z M 5920.53548 -2802.77202 L 5920.53548 -2804.46032 5920.56225 -2804.6042 5920.63898 -2804.72882 5920.75539 -2804.81749 5920.95691 -2804.9191 5921.2703 -2805.15088 5921.54001 -2805.43229 5921.75828 -2805.75523 5921.91883 -2806.11041 5922.01705 -2806.48762 5922.0501 -2806.876 5922.01705 -2807.26438 5921.91883 -2807.64159 5921.75828 -2807.99677 5921.54001 -2808.31971 5921.2703 -2808.60112 5920.95691 -2808.8329 5920.60886 -2809.00839 5920.23616 -2809.12252 5919.84953 -2809.17203 5919.4601 -2809.15549 5919.07906 -2809.07337 5918.71739 -2808.92804 5918.38547 -2808.72367 5918.09287 -2808.46615 5917.848 -2808.16288 5917.6579 -2807.82259 5917.58852 -2807.62622 5917.50404 -2807.48681 5917.37095 -2807.39269 5917.21137 -2807.35947 5915.9485 -2807.35947 5916.12282 -2807.03233 5916.62793 -2806.24636 5917.19543 -2805.50418 5917.82153 -2804.81073 5918.50207 -2804.17061 5919.23252 -2803.5881 5920.00801 -2803.06706 5920.53548 -2802.77202 Z M 5479.78548 -2538.32202 L 5479.78548 -2540.01032 5479.81225 -2540.1542 5479.88898 -2540.27882 5480.00539 -2540.36749 5480.20691 -2540.4691 5480.5203 -2540.70088 5480.79001 -2540.98229 5481.00828 -2541.30523 5481.16883 -2541.66041 5481.26705 -2542.03762 5481.3001 -2542.426 5481.26705 -2542.81438 5481.16883 -2543.19159 5481.00828 -2543.54677 5480.79001 -2543.86971 5480.5203 -2544.15112 5480.20691 -2544.3829 5479.85886 -2544.55839 5479.48616 -2544.67252 5479.09953 -2544.72203 5478.7101 -2544.70549 5478.32906 -2544.62337 5477.96739 -2544.47804 5477.63547 -2544.27367 5477.34287 -2544.01615 5477.098 -2543.71288 5476.9079 -2543.37259 5476.83852 -2543.17622 5476.75404 -2543.03681 5476.62095 -2542.94269 5476.46137 -2542.90947 5475.1985 -2542.90947 5475.37282 -2542.58233 5475.87793 -2541.79636 5476.44543 -2541.05418 5477.07153 -2540.36073 5477.75207 -2539.72061 5478.48252 -2539.1381 5479.25801 -2538.61706 5479.78548 -2538.32202 Z M 5920.68548 -2538.57202 L 5920.68548 -2540.26032 5920.71225 -2540.4042 5920.78898 -2540.52882 5920.90539 -2540.61749 5921.10691 -2540.7191 5921.4203 -2540.95088 5921.69001 -2541.23229 5921.90828 -2541.55523 5922.06883 -2541.91041 5922.16705 -2542.28762 5922.2001 -2542.676 5922.16705 -2543.06438 5922.06883 -2543.44159 5921.90828 -2543.79677 5921.69001 -2544.11971 5921.4203 -2544.40112 5921.10691 -2544.6329 5920.75886 -2544.80839 5920.38616 -2544.92252 5919.99953 -2544.97203 5919.6101 -2544.95549 5919.22906 -2544.87337 5918.86739 -2544.72804 5918.53547 -2544.52367 5918.24287 -2544.26615 5917.998 -2543.96288 5917.8079 -2543.62259 5917.73852 -2543.42622 5917.65404 -2543.28681 5917.52095 -2543.19269 5917.36137 -2543.15947 5916.0985 -2543.15947 5916.27282 -2542.83233 5916.77793 -2542.04636 5917.34543 -2541.30418 5917.97153 -2540.61073 5918.65207 -2539.97061 5919.38252 -2539.3881 5920.15801 -2538.86706 5920.68548 -2538.57202 Z M 5491.39953 -2552.27997 L 5491.78616 -2552.32948 5492.15886 -2552.44361 5492.50691 -2552.6191 5492.8203 -2552.85088 5493.09001 -2553.13229 5493.30828 -2553.45523 5493.37701 -2553.60729 5493.46473 -2553.73131 5493.59236 -2553.81368 5493.7415 -2553.84253 5495.31198 -2553.84253 5494.88664 -2554.56781 5494.34989 -2555.33252 5493.7526 -2556.05093 5493.09873 -2556.71827 5492.39265 -2557.33009 5491.63905 -2557.88233 5490.84294 -2558.3713 5490.71853 -2558.43438 5490.71853 -2557.07967 5490.68753 -2556.92529 5490.59936 -2556.79484 5490.46767 -2556.70852 5490.26739 -2556.62804 5489.93547 -2556.42367 5489.64287 -2556.16615 5489.398 -2555.86288 5489.2079 -2555.52259 5489.07805 -2555.15507 5489.01218 -2554.77089 5489.01218 -2554.38111 5489.07805 -2553.99693 5489.2079 -2553.62941 5489.398 -2553.28912 5489.64287 -2552.98585 5489.93547 -2552.72833 5490.26739 -2552.52396 5490.62906 -2552.37863 5491.0101 -2552.29651 5491.39953 -2552.27997 Z M 5932.14953 -2816.72997 L 5932.53616 -2816.77948 5932.90886 -2816.89361 5933.25691 -2817.0691 5933.5703 -2817.30088 5933.84001 -2817.58229 5934.05828 -2817.90523 5934.12701 -2818.05729 5934.21473 -2818.18131 5934.34236 -2818.26368 5934.4915 -2818.29253 5936.06198 -2818.29253 5935.63664 -2819.01781 5935.09989 -2819.78252 5934.5026 -2820.50093 5933.84873 -2821.16827 5933.14265 -2821.78009 5932.38905 -2822.33233 5931.59294 -2822.8213 5931.46853 -2822.88438 5931.46853 -2821.52967 5931.43753 -2821.37529 5931.34936 -2821.24484 5931.21767 -2821.15852 5931.01739 -2821.07804 5930.68547 -2820.87367 5930.39287 -2820.61615 5930.148 -2820.31288 5929.9579 -2819.97259 5929.82805 -2819.60507 5929.76218 -2819.22089 5929.76218 -2818.83111 5929.82805 -2818.44693 5929.9579 -2818.07941 5930.148 -2817.73912 5930.39287 -2817.43585 5930.68547 -2817.17833 5931.01739 -2816.97396 5931.37906 -2816.82863 5931.7601 -2816.74651 5932.14953 -2816.72997 Z M 5932.29953 -2552.52997 L 5932.68616 -2552.57948 5933.05886 -2552.69361 5933.40691 -2552.8691 5933.7203 -2553.10088 5933.99001 -2553.38229 5934.20828 -2553.70523 5934.27701 -2553.85729 5934.36473 -2553.98131 5934.49236 -2554.06368 5934.6415 -2554.09253 5936.21198 -2554.09253 5935.78664 -2554.81781 5935.24989 -2555.58252 5934.6526 -2556.30093 5933.99873 -2556.96827 5933.29265 -2557.58009 5932.53905 -2558.13233 5931.74294 -2558.6213 5931.61852 -2558.68438 5931.61852 -2557.32967 5931.58753 -2557.17529 5931.49936 -2557.04484 5931.36767 -2556.95852 5931.16739 -2556.87804 5930.83547 -2556.67367 5930.54287 -2556.41615 5930.298 -2556.11288 5930.1079 -2555.77259 5929.97805 -2555.40507 5929.91218 -2555.02089 5929.91218 -2554.63111 5929.97805 -2554.24693 5930.1079 -2553.87941 5930.298 -2553.53912 5930.54287 -2553.23585 5930.83547 -2552.97833 5931.16739 -2552.77396 5931.52906 -2552.62863 5931.9101 -2552.54651 5932.29953 -2552.52997 Z M 5490.4601 -2815.84651 L 5490.84953 -2815.82997 5491.23616 -2815.87948 5491.60886 -2815.99361 5491.95691 -2816.1691 5492.2703 -2816.40088 5492.54001 -2816.68229 5492.75828 -2817.00523 5492.82701 -2817.15729 5492.91473 -2817.28131 5493.04236 -2817.36368 5493.1915 -2817.39253 5494.76198 -2817.39253 5494.33664 -2818.11781 5493.79989 -2818.88252 5493.2026 -2819.60093 5492.54873 -2820.26827 5491.84265 -2820.88009 5491.08905 -2821.43233 5490.29294 -2821.9213 5490.16853 -2821.98438 5490.16853 -2820.62967 5490.13753 -2820.47529 5490.04936 -2820.34484 5489.91767 -2820.25852 5489.71739 -2820.17804 5489.38547 -2819.97367 5489.09287 -2819.71615 5488.848 -2819.41288 5488.6579 -2819.07259 5488.52805 -2818.70507 5488.46218 -2818.32089 5488.46218 -2817.93111 5488.52805 -2817.54693 5488.6579 -2817.17941 5488.848 -2816.83912 5489.09287 -2816.53585 5489.38547 -2816.27833 5489.71739 -2816.07396 5490.07906 -2815.92863 5490.4601 -2815.84651 Z M 5919.99953 -2552.57997 L 5920.38616 -2552.62948 5920.75886 -2552.74361 5921.10691 -2552.9191 5921.4203 -2553.15088 5921.69001 -2553.43229 5921.90828 -2553.75523 5922.06883 -2554.11041 5922.16705 -2554.48762 5922.2001 -2554.876 5922.16705 -2555.26438 5922.06883 -2555.64159 5921.90828 -2555.99677 5921.69001 -2556.31971 5921.4203 -2556.60112 5921.10691 -2556.8329 5920.90539 -2556.93451 5920.78898 -2557.02318 5920.71225 -2557.1478 5920.68548 -2557.29168 5920.68548 -2558.67998 5920.15801 -2558.38494 5919.38252 -2557.8639 5918.65207 -2557.28139 5917.97153 -2556.64127 5917.34543 -2555.94782 5916.77793 -2555.20564 5916.27282 -2554.41967 5916.0985 -2554.09253 5917.48205 -2554.09253 5917.62063 -2554.06775 5917.74204 -2553.9965 5917.83126 -2553.8876 5917.998 -2553.58912 5918.24287 -2553.28585 5918.53547 -2553.02833 5918.86739 -2552.82396 5919.22906 -2552.67863 5919.6101 -2552.59651 5919.99953 -2552.57997 Z M 5919.84953 -2816.77997 L 5920.23616 -2816.82948 5920.60886 -2816.94361 5920.95691 -2817.1191 5921.2703 -2817.35088 5921.54001 -2817.63229 5921.75828 -2817.95523 5921.91883 -2818.31041 5922.01705 -2818.68762 5922.0501 -2819.076 5922.01705 -2819.46438 5921.91883 -2819.84159 5921.75828 -2820.19677 5921.54001 -2820.51971 5921.2703 -2820.80112 5920.95691 -2821.0329 5920.75539 -2821.13451 5920.63898 -2821.22318 5920.56225 -2821.3478 5920.53548 -2821.49168 5920.53548 -2822.87998 5920.00801 -2822.58494 5919.23252 -2822.0639 5918.50207 -2821.48139 5917.82153 -2820.84127 5917.19543 -2820.14782 5916.62793 -2819.40564 5916.12282 -2818.61967 5915.9485 -2818.29253 5917.33205 -2818.29253 5917.47063 -2818.26775 5917.59204 -2818.1965 5917.68126 -2818.0876 5917.848 -2817.78912 5918.09287 -2817.48585 5918.38547 -2817.22833 5918.71739 -2817.02396 5919.07906 -2816.87863 5919.4601 -2816.79651 5919.84953 -2816.77997 Z M 5479.09953 -2552.32997 L 5479.48616 -2552.37948 5479.85886 -2552.49361 5480.20691 -2552.6691 5480.5203 -2552.90088 5480.79001 -2553.18229 5481.00828 -2553.50523 5481.16883 -2553.86041 5481.26705 -2554.23762 5481.3001 -2554.626 5481.26705 -2555.01438 5481.16883 -2555.39159 5481.00828 -2555.74677 5480.79001 -2556.06971 5480.5203 -2556.35112 5480.20691 -2556.5829 5480.00539 -2556.68451 5479.88898 -2556.77318 5479.81225 -2556.8978 5479.78548 -2557.04168 5479.78548 -2558.42998 5479.25801 -2558.13494 5478.48252 -2557.6139 5477.75207 -2557.03139 5477.07153 -2556.39127 5476.44543 -2555.69782 5475.87793 -2554.95564 5475.37282 -2554.16967 5475.1985 -2553.84253 5476.58205 -2553.84253 5476.72063 -2553.81775 5476.84204 -2553.7465 5476.93126 -2553.6376 5477.098 -2553.33912 5477.34287 -2553.03585 5477.63547 -2552.77833 5477.96739 -2552.57396 5478.32906 -2552.42863 5478.7101 -2552.34651 5479.09953 -2552.32997 Z M 5478.54953 -2815.87997 L 5478.93616 -2815.92948 5479.30886 -2816.04361 5479.65691 -2816.2191 5479.9703 -2816.45088 5480.24001 -2816.73229 5480.45828 -2817.05523 5480.61883 -2817.41041 5480.71705 -2817.78762 5480.7501 -2818.176 5480.71705 -2818.56438 5480.61883 -2818.94159 5480.45828 -2819.29677 5480.24001 -2819.61971 5479.9703 -2819.90112 5479.65691 -2820.1329 5479.45539 -2820.23451 5479.33898 -2820.32318 5479.26225 -2820.4478 5479.23548 -2820.59168 5479.23548 -2821.97998 5478.70801 -2821.68494 5477.93252 -2821.1639 5477.20207 -2820.58139 5476.52153 -2819.94127 5475.89543 -2819.24782 5475.32793 -2818.50564 5474.82282 -2817.71967 5474.6485 -2817.39253 5476.03205 -2817.39253 5476.17063 -2817.36775 5476.29204 -2817.2965 5476.38126 -2817.1876 5476.548 -2816.88912 5476.79287 -2816.58585 5477.08547 -2816.32833 5477.41739 -2816.12396 5477.77906 -2815.97863 5478.1601 -2815.89651 5478.54953 -2815.87997 Z M 5478.33699 -2663.91071 L 5478.8638 -2666.89839 5473.25901 -2667.88667 5472.91323 -2665.92561 5472.89762 -2665.67565 5472.93439 -2665.45079 5473.02027 -2665.23976 5473.15095 -2665.05312 5473.31989 -2664.90024 5473.51861 -2664.78879 5473.75883 -2664.71796 5478.33699 -2663.91071 Z M 5495.52699 -2669.06533 L 5495.87277 -2671.02639 5495.88838 -2671.27635 5495.85161 -2671.50121 5495.76573 -2671.71224 5495.63505 -2671.89888 5495.46611 -2672.05176 5495.26739 -2672.16321 5495.02717 -2672.23404 5490.44901 -2673.04129 5489.9222 -2670.05361 5495.52699 -2669.06533 Z M 5493.10053 -2661.3075 L 5493.35049 -2661.2919 5493.57534 -2661.32866 5493.78638 -2661.41454 5493.97301 -2661.54522 5494.12589 -2661.71416 5494.23734 -2661.91288 5494.30817 -2662.1531 5494.65396 -2664.11416 5489.04917 -2665.10244 5488.52237 -2662.11475 5493.10053 -2661.3075 Z M 5479.73683 -2671.84956 L 5480.26363 -2674.83725 5475.68547 -2675.6445 5475.43551 -2675.6601 5475.21066 -2675.62334 5474.99962 -2675.53746 5474.81299 -2675.40678 5474.66011 -2675.23784 5474.54866 -2675.03912 5474.47783 -2674.7989 5474.13204 -2672.83784 5479.73683 -2671.84956 Z M 5926.09953 -2555.07997 L 5926.48616 -2555.12948 5926.85886 -2555.24361 5927.20691 -2555.4191 5927.5203 -2555.65088 5927.79001 -2555.93229 5928.00828 -2556.25523 5928.16883 -2556.61041 5928.26705 -2556.98762 5928.3001 -2557.376 5928.26705 -2557.76438 5928.16883 -2558.14159 5928.00828 -2558.49677 5927.79001 -2558.81971 5927.5203 -2559.10112 5927.20691 -2559.3329 5926.85886 -2559.50839 5926.48616 -2559.62252 5926.09953 -2559.67203 5925.7101 -2559.65549 5925.32906 -2559.57337 5924.96739 -2559.42804 5924.63547 -2559.22367 5924.34287 -2558.96615 5924.098 -2558.66288 5923.9079 -2558.32259 5923.77805 -2557.95507 5923.71218 -2557.57089 5923.71218 -2557.18111 5923.77805 -2556.79693 5923.9079 -2556.42941 5924.098 -2556.08912 5924.34287 -2555.78585 5924.63547 -2555.52833 5924.96739 -2555.32396 5925.32906 -2555.17863 5925.7101 -2555.09651 5926.09953 -2555.07997 Z M 5917.04953 -2810.37997 L 5917.43616 -2810.42948 5917.80886 -2810.54361 5918.15691 -2810.7191 5918.4703 -2810.95088 5918.74001 -2811.23229 5918.95828 -2811.55523 5919.11883 -2811.91041 5919.21705 -2812.28762 5919.2501 -2812.676 5919.21705 -2813.06438 5919.11883 -2813.44159 5918.95828 -2813.79677 5918.74001 -2814.11971 5918.4703 -2814.40112 5918.15691 -2814.6329 5917.80886 -2814.80839 5917.43616 -2814.92252 5917.04953 -2814.97203 5916.6601 -2814.95549 5916.27906 -2814.87337 5915.91739 -2814.72804 5915.58547 -2814.52367 5915.29287 -2814.26615 5915.048 -2813.96288 5914.8579 -2813.62259 5914.72805 -2813.25507 5914.66218 -2812.87089 5914.66218 -2812.48111 5914.72805 -2812.09693 5914.8579 -2811.72941 5915.048 -2811.38912 5915.29287 -2811.08585 5915.58547 -2810.82833 5915.91739 -2810.62396 5916.27906 -2810.47863 5916.6601 -2810.39651 5917.04953 -2810.37997 Z M 5476.29953 -2545.92997 L 5476.68616 -2545.97948 5477.05886 -2546.09361 5477.40691 -2546.2691 5477.7203 -2546.50088 5477.99001 -2546.78229 5478.20828 -2547.10523 5478.36883 -2547.46041 5478.46705 -2547.83762 5478.5001 -2548.226 5478.46705 -2548.61438 5478.36883 -2548.99159 5478.20828 -2549.34677 5477.99001 -2549.66971 5477.7203 -2549.95112 5477.40691 -2550.1829 5477.05886 -2550.35839 5476.68616 -2550.47252 5476.29953 -2550.52203 5475.9101 -2550.50549 5475.52906 -2550.42337 5475.16739 -2550.27804 5474.83547 -2550.07367 5474.54287 -2549.81615 5474.298 -2549.51288 5474.1079 -2549.17259 5473.97805 -2548.80507 5473.91218 -2548.42089 5473.91218 -2548.03111 5473.97805 -2547.64693 5474.1079 -2547.27941 5474.298 -2546.93912 5474.54287 -2546.63585 5474.83547 -2546.37833 5475.16739 -2546.17396 5475.52906 -2546.02863 5475.9101 -2545.94651 5476.29953 -2545.92997 Z M 5934.59953 -2810.57997 L 5934.98616 -2810.62948 5935.35886 -2810.74361 5935.70691 -2810.9191 5936.0203 -2811.15088 5936.29001 -2811.43229 5936.50828 -2811.75523 5936.66883 -2812.11041 5936.76705 -2812.48762 5936.8001 -2812.876 5936.76705 -2813.26438 5936.66883 -2813.64159 5936.50828 -2813.99677 5936.29001 -2814.31971 5936.0203 -2814.60112 5935.70691 -2814.8329 5935.35886 -2815.00839 5934.98616 -2815.12252 5934.59953 -2815.17203 5934.2101 -2815.15549 5933.82906 -2815.07337 5933.46739 -2814.92804 5933.13547 -2814.72367 5932.84287 -2814.46615 5932.598 -2814.16288 5932.4079 -2813.82259 5932.27805 -2813.45507 5932.21218 -2813.07089 5932.21218 -2812.68111 5932.27805 -2812.29693 5932.4079 -2811.92941 5932.598 -2811.58912 5932.84287 -2811.28585 5933.13547 -2811.02833 5933.46739 -2810.82396 5933.82906 -2810.67863 5934.2101 -2810.59651 5934.59953 -2810.57997 Z M 5493.84953 -2546.12997 L 5494.23616 -2546.17948 5494.60886 -2546.29361 5494.95691 -2546.4691 5495.2703 -2546.70088 5495.54001 -2546.98229 5495.75828 -2547.30523 5495.91883 -2547.66041 5496.01705 -2548.03762 5496.0501 -2548.426 5496.01705 -2548.81438 5495.91883 -2549.19159 5495.75828 -2549.54677 5495.54001 -2549.86971 5495.2703 -2550.15112 5494.95691 -2550.3829 5494.60886 -2550.55839 5494.23616 -2550.67252 5493.84953 -2550.72203 5493.4601 -2550.70549 5493.07906 -2550.62337 5492.71739 -2550.47804 5492.38547 -2550.27367 5492.09287 -2550.01615 5491.848 -2549.71288 5491.6579 -2549.37259 5491.52805 -2549.00507 5491.46218 -2548.62089 5491.46218 -2548.23111 5491.52805 -2547.84693 5491.6579 -2547.47941 5491.848 -2547.13912 5492.09287 -2546.83585 5492.38547 -2546.57833 5492.71739 -2546.37396 5493.07906 -2546.22863 5493.4601 -2546.14651 5493.84953 -2546.12997 Z M 5475.74953 -2809.47997 L 5476.13616 -2809.52948 5476.50886 -2809.64361 5476.85691 -2809.8191 5477.1703 -2810.05088 5477.44001 -2810.33229 5477.65828 -2810.65523 5477.81883 -2811.01041 5477.91705 -2811.38762 5477.9501 -2811.776 5477.91705 -2812.16438 5477.81883 -2812.54159 5477.65828 -2812.89677 5477.44001 -2813.21971 5477.1703 -2813.50112 5476.85691 -2813.7329 5476.50886 -2813.90839 5476.13616 -2814.02252 5475.74953 -2814.07203 5475.3601 -2814.05549 5474.97906 -2813.97337 5474.61739 -2813.82804 5474.28547 -2813.62367 5473.99287 -2813.36615 5473.748 -2813.06288 5473.5579 -2812.72259 5473.42805 -2812.35507 5473.36218 -2811.97089 5473.36218 -2811.58111 5473.42805 -2811.19693 5473.5579 -2810.82941 5473.748 -2810.48912 5473.99287 -2810.18585 5474.28547 -2809.92833 5474.61739 -2809.72396 5474.97906 -2809.57863 5475.3601 -2809.49651 5475.74953 -2809.47997 Z M 5485.19953 -2554.82997 L 5485.58616 -2554.87948 5485.95886 -2554.99361 5486.30691 -2555.1691 5486.6203 -2555.40088 5486.89001 -2555.68229 5487.10828 -2556.00523 5487.26883 -2556.36041 5487.36705 -2556.73762 5487.4001 -2557.126 5487.36705 -2557.51438 5487.26883 -2557.89159 5487.10828 -2558.24677 5486.89001 -2558.56971 5486.6203 -2558.85112 5486.30691 -2559.0829 5485.95886 -2559.25839 5485.58616 -2559.37252 5485.19953 -2559.42203 5484.8101 -2559.40549 5484.42906 -2559.32337 5484.06739 -2559.17804 5483.73547 -2558.97367 5483.44287 -2558.71615 5483.198 -2558.41288 5483.0079 -2558.07259 5482.87805 -2557.70507 5482.81218 -2557.32089 5482.81218 -2556.93111 5482.87805 -2556.54693 5483.0079 -2556.17941 5483.198 -2555.83912 5483.44287 -2555.53585 5483.73547 -2555.27833 5484.06739 -2555.07396 5484.42906 -2554.92863 5484.8101 -2554.84651 5485.19953 -2554.82997 Z M 5493.29953 -2809.67997 L 5493.68616 -2809.72948 5494.05886 -2809.84361 5494.40691 -2810.0191 5494.7203 -2810.25088 5494.99001 -2810.53229 5495.20828 -2810.85523 5495.36883 -2811.21041 5495.46705 -2811.58762 5495.5001 -2811.976 5495.46705 -2812.36438 5495.36883 -2812.74159 5495.20828 -2813.09677 5494.99001 -2813.41971 5494.7203 -2813.70112 5494.40691 -2813.9329 5494.05886 -2814.10839 5493.68616 -2814.22252 5493.29953 -2814.27203 5492.9101 -2814.25549 5492.52906 -2814.17337 5492.16739 -2814.02804 5491.83547 -2813.82367 5491.54287 -2813.56615 5491.298 -2813.26288 5491.1079 -2812.92259 5490.97805 -2812.55507 5490.91218 -2812.17089 5490.91218 -2811.78111 5490.97805 -2811.39693 5491.1079 -2811.02941 5491.298 -2810.68912 5491.54287 -2810.38585 5491.83547 -2810.12833 5492.16739 -2809.92396 5492.52906 -2809.77863 5492.9101 -2809.69651 5493.29953 -2809.67997 Z M 5934.74953 -2546.37997 L 5935.13616 -2546.42948 5935.50886 -2546.54361 5935.85691 -2546.7191 5936.1703 -2546.95088 5936.44001 -2547.23229 5936.65828 -2547.55523 5936.81883 -2547.91041 5936.91705 -2548.28762 5936.9501 -2548.676 5936.91705 -2549.06438 5936.81883 -2549.44159 5936.65828 -2549.79677 5936.44001 -2550.11971 5936.1703 -2550.40112 5935.85691 -2550.6329 5935.50886 -2550.80839 5935.13616 -2550.92252 5934.74953 -2550.97203 5934.3601 -2550.95549 5933.97906 -2550.87337 5933.61739 -2550.72804 5933.28547 -2550.52367 5932.99287 -2550.26615 5932.748 -2549.96288 5932.5579 -2549.62259 5932.42805 -2549.25507 5932.36218 -2548.87089 5932.36218 -2548.48111 5932.42805 -2548.09693 5932.5579 -2547.72941 5932.748 -2547.38912 5932.99287 -2547.08585 5933.28547 -2546.82833 5933.61739 -2546.62396 5933.97906 -2546.47863 5934.3601 -2546.39651 5934.74953 -2546.37997 Z M 5925.94953 -2801.97997 L 5926.33616 -2802.02948 5926.70886 -2802.14361 5927.05691 -2802.3191 5927.3703 -2802.55088 5927.64001 -2802.83229 5927.85828 -2803.15523 5928.01883 -2803.51041 5928.11705 -2803.88762 5928.1501 -2804.276 5928.11705 -2804.66438 5928.01883 -2805.04159 5927.85828 -2805.39677 5927.64001 -2805.71971 5927.3703 -2806.00112 5927.05691 -2806.2329 5926.70886 -2806.40839 5926.33616 -2806.52252 5925.94953 -2806.57203 5925.5601 -2806.55549 5925.17906 -2806.47337 5924.81739 -2806.32804 5924.48547 -2806.12367 5924.19287 -2805.86615 5923.948 -2805.56288 5923.7579 -2805.22259 5923.62805 -2804.85507 5923.56218 -2804.47089 5923.56218 -2804.08111 5923.62805 -2803.69693 5923.7579 -2803.32941 5923.948 -2802.98912 5924.19287 -2802.68585 5924.48547 -2802.42833 5924.81739 -2802.22396 5925.17906 -2802.07863 5925.5601 -2801.99651 5925.94953 -2801.97997 Z M 5917.19953 -2546.17997 L 5917.58616 -2546.22948 5917.95886 -2546.34361 5918.30691 -2546.5191 5918.6203 -2546.75088 5918.89001 -2547.03229 5919.10828 -2547.35523 5919.26883 -2547.71041 5919.36705 -2548.08762 5919.4001 -2548.476 5919.36705 -2548.86438 5919.26883 -2549.24159 5919.10828 -2549.59677 5918.89001 -2549.91971 5918.6203 -2550.20112 5918.30691 -2550.4329 5917.95886 -2550.60839 5917.58616 -2550.72252 5917.19953 -2550.77203 5916.8101 -2550.75549 5916.42906 -2550.67337 5916.06739 -2550.52804 5915.73547 -2550.32367 5915.44287 -2550.06615 5915.198 -2549.76288 5915.0079 -2549.42259 5914.87805 -2549.05507 5914.81218 -2548.67089 5914.81218 -2548.28111 5914.87805 -2547.89693 5915.0079 -2547.52941 5915.198 -2547.18912 5915.44287 -2546.88585 5915.73547 -2546.62833 5916.06739 -2546.42396 5916.42906 -2546.27863 5916.8101 -2546.19651 5917.19953 -2546.17997 Z M 5484.64953 -2801.07997 L 5485.03616 -2801.12948 5485.40886 -2801.24361 5485.75691 -2801.4191 5486.0703 -2801.65088 5486.34001 -2801.93229 5486.55828 -2802.25523 5486.71883 -2802.61041 5486.81705 -2802.98762 5486.8501 -2803.376 5486.81705 -2803.76438 5486.71883 -2804.14159 5486.55828 -2804.49677 5486.34001 -2804.81971 5486.0703 -2805.10112 5485.75691 -2805.3329 5485.40886 -2805.50839 5485.03616 -2805.62252 5484.64953 -2805.67203 5484.2601 -2805.65549 5483.87906 -2805.57337 5483.51739 -2805.42804 5483.18547 -2805.22367 5482.89287 -2804.96615 5482.648 -2804.66288 5482.4579 -2804.32259 5482.32805 -2803.95507 5482.26218 -2803.57089 5482.26218 -2803.18111 5482.32805 -2802.79693 5482.4579 -2802.42941 5482.648 -2802.08912 5482.89287 -2801.78585 5483.18547 -2801.52833 5483.51739 -2801.32396 5483.87906 -2801.17863 5484.2601 -2801.09651 5484.64953 -2801.07997 Z M 5926.09953 -2537.77997 L 5926.48616 -2537.82948 5926.85886 -2537.94361 5927.20691 -2538.1191 5927.5203 -2538.35088 5927.79001 -2538.63229 5928.00828 -2538.95523 5928.16883 -2539.31041 5928.26705 -2539.68762 5928.3001 -2540.076 5928.26705 -2540.46438 5928.16883 -2540.84159 5928.00828 -2541.19677 5927.79001 -2541.51971 5927.5203 -2541.80112 5927.20691 -2542.0329 5926.85886 -2542.20839 5926.48616 -2542.32252 5926.09953 -2542.37203 5925.7101 -2542.35549 5925.32906 -2542.27337 5924.96739 -2542.12804 5924.63547 -2541.92367 5924.34287 -2541.66615 5924.098 -2541.36288 5923.9079 -2541.02259 5923.77805 -2540.65507 5923.71218 -2540.27089 5923.71218 -2539.88111 5923.77805 -2539.49693 5923.9079 -2539.12941 5924.098 -2538.78912 5924.34287 -2538.48585 5924.63547 -2538.22833 5924.96739 -2538.02396 5925.32906 -2537.87863 5925.7101 -2537.79651 5926.09953 -2537.77997 Z M 5484.64953 -2818.37997 L 5485.03616 -2818.42948 5485.40886 -2818.54361 5485.75691 -2818.7191 5486.0703 -2818.95088 5486.34001 -2819.23229 5486.55828 -2819.55523 5486.71883 -2819.91041 5486.81705 -2820.28762 5486.8501 -2820.676 5486.81705 -2821.06438 5486.71883 -2821.44159 5486.55828 -2821.79677 5486.34001 -2822.11971 5486.0703 -2822.40112 5485.75691 -2822.6329 5485.40886 -2822.80839 5485.03616 -2822.92252 5484.64953 -2822.97203 5484.2601 -2822.95549 5483.87906 -2822.87337 5483.51739 -2822.72804 5483.18547 -2822.52367 5482.89287 -2822.26615 5482.648 -2821.96288 5482.4579 -2821.62259 5482.32805 -2821.25507 5482.26218 -2820.87089 5482.26218 -2820.48111 5482.32805 -2820.09693 5482.4579 -2819.72941 5482.648 -2819.38912 5482.89287 -2819.08585 5483.18547 -2818.82833 5483.51739 -2818.62396 5483.87906 -2818.47863 5484.2601 -2818.39651 5484.64953 -2818.37997 Z M 5485.19953 -2537.52997 L 5485.58616 -2537.57948 5485.95886 -2537.69361 5486.30691 -2537.8691 5486.6203 -2538.10088 5486.89001 -2538.38229 5487.10828 -2538.70523 5487.26883 -2539.06041 5487.36705 -2539.43762 5487.4001 -2539.826 5487.36705 -2540.21438 5487.26883 -2540.59159 5487.10828 -2540.94677 5486.89001 -2541.26971 5486.6203 -2541.55112 5486.30691 -2541.7829 5485.95886 -2541.95839 5485.58616 -2542.07252 5485.19953 -2542.12203 5484.8101 -2542.10549 5484.42906 -2542.02337 5484.06739 -2541.87804 5483.73547 -2541.67367 5483.44287 -2541.41615 5483.198 -2541.11288 5483.0079 -2540.77259 5482.87805 -2540.40507 5482.81218 -2540.02089 5482.81218 -2539.63111 5482.87805 -2539.24693 5483.0079 -2538.87941 5483.198 -2538.53912 5483.44287 -2538.23585 5483.73547 -2537.97833 5484.06739 -2537.77396 5484.42906 -2537.62863 5484.8101 -2537.54651 5485.19953 -2537.52997 Z M 5925.94953 -2819.27997 L 5926.33616 -2819.32948 5926.70886 -2819.44361 5927.05691 -2819.6191 5927.3703 -2819.85088 5927.64001 -2820.13229 5927.85828 -2820.45523 5928.01883 -2820.81041 5928.11705 -2821.18762 5928.1501 -2821.576 5928.11705 -2821.96438 5928.01883 -2822.34159 5927.85828 -2822.69677 5927.64001 -2823.01971 5927.3703 -2823.30112 5927.05691 -2823.5329 5926.70886 -2823.70839 5926.33616 -2823.82252 5925.94953 -2823.87203 5925.5601 -2823.85549 5925.17906 -2823.77337 5924.81739 -2823.62804 5924.48547 -2823.42367 5924.19287 -2823.16615 5923.948 -2822.86288 5923.7579 -2822.52259 5923.62805 -2822.15507 5923.56218 -2821.77089 5923.56218 -2821.38111 5923.62805 -2820.99693 5923.7579 -2820.62941 5923.948 -2820.28912 5924.19287 -2819.98585 5924.48547 -2819.72833 5924.81739 -2819.52396 5925.17906 -2819.37863 5925.5601 -2819.29651 5925.94953 -2819.27997 Z M 5756.2088 -2800.0642 L 5756.2088 -2801.95963 5755.94923 -2801.83163 5755.50118 -2801.53225 5755.09604 -2801.17696 5754.74075 -2800.77182 5754.44137 -2800.32377 5754.31337 -2800.0642 5756.2088 -2800.0642 Z M 5761.70463 -2800.0642 L 5761.57663 -2800.32377 5761.27725 -2800.77182 5760.92196 -2801.17696 5760.51682 -2801.53225 5760.06877 -2801.83163 5759.8092 -2801.95963 5759.8092 -2800.0642 5761.70463 -2800.0642 Z M 5759.8092 -2796.4638 L 5759.8092 -2794.56837 5760.06877 -2794.69637 5760.51682 -2794.99575 5760.92196 -2795.35104 5761.27725 -2795.75618 5761.57663 -2796.20423 5761.70463 -2796.4638 5759.8092 -2796.4638 Z M 5756.2088 -2794.56837 L 5756.2088 -2796.4638 5754.31337 -2796.4638 5754.44137 -2796.20423 5754.74075 -2795.75618 5755.09604 -2795.35104 5755.50118 -2794.99575 5755.94923 -2794.69637 5756.2088 -2794.56837 Z M 5799.809 -2801.95929 L 5799.809 -2800.064 5801.70429 -2800.064 5801.57628 -2800.32357 5801.27693 -2800.77157 5800.92167 -2801.17667 5800.51657 -2801.53193 5800.06857 -2801.83128 5799.809 -2801.95929 Z M 5799.809 -2796.464 L 5799.809 -2794.56871 5800.06857 -2794.69672 5800.51657 -2794.99607 5800.92167 -2795.35133 5801.27693 -2795.75643 5801.57628 -2796.20443 5801.70429 -2796.464 5799.809 -2796.464 Z \"]]~0~gge9825~2~1~2~1~yes~0","TRACK~1.1811~4~~5649.775 -2581.9923 5934.6568 -2581.9923~gge10896~0","TRACK~1.1811~4~~5649.8141 -2581.9923 5649.8141 -2778.7247 5930.9557 -2778.7247~gge10893~0","TRACK~1.1811~4~~5933.7906 -2788.8429 5629.4596 -2788.8429 5629.4596 -2571.8744 5934.6568 -2571.8744 5934.6568 -2623.8429~gge10890~0","TRACK~1.1811~4~~5934.6568 -2736.8744 5934.6568 -2788.8429~gge10887~0","TRACK~1.1811~4~~5930.8097 -2778.7513 5933.7906 -2778.7513~gge10884~0","ARC~1.1811~4~~M 5552.2621 -2595.0294 A 12.7952 12.7952 0 1 0 5552.26206 -2594.99814~~rep4~0","TRACK~1.1811~4~~5649.7747 -2581.9924 5934.6565 -2581.9924~rep2395~0","TRACK~1.1811~4~~5649.8141 -2581.9924 5649.8141 -2778.7247 5930.9558 -2778.7247~rep2396~0","TRACK~1.1811~4~~5933.7904 -2788.8428 5629.4597 -2788.8428 5629.4597 -2571.8743 5934.6565 -2571.8743 5934.6565 -2623.8428~rep2397~0","TRACK~1.1811~4~~5934.6565 -2736.8743 5934.6565 -2788.8428~rep2398~0","TRACK~1.1811~4~~5930.8098 -2778.7512 5933.7904 -2778.7512~rep2411~0","TEXT~L~5552.813~-2599.754~0.4724~180~1~4~~3.937~+~M5554.4239 -2596.3179L5554.4239 -2599.5391M5552.8133 -2597.9285L5556.0345 -2597.9285~~rep3440~~0~","ARC~1.1811~4~~M 5552.262 -2595.0294 A 12.7952 12.7952 0 1 0 5552.262 -2594.9981~~rep2437~0","TEXT~L~5552.813~-2599.754~0.4724~180~1~4~~3.937~+~M 5554.4238 -2596.3179 L 5554.4238 -2599.5391 M 5552.8132 -2597.9285 L 5556.0344 -2597.9285~~rep2441~~0~","TEXT~L~5552.814~-2599.937~0.4724~180~1~4~~2.57374~+~M 5553.8661 -2597.6907 L 5553.8661 -2599.7965 M 5552.8132 -2598.7436 L 5554.9189 -2598.7436~~rep2447~~0~","ARC~1.1811~4~~M 5552.262 -2595.0294 A 12.7952 12.7952 0 1 0 5552.262 -2594.9982~~rep2448~0","SVGNODE~{\"gId\":\"gge10869\",\"nodeName\":\"path\",\"nodeType\":1,\"layerid\":\"4\",\"attrs\":{\"d\":\"M 5705.4513 -2555.7571 C 5707.4359 -2555.7571 5709.0448 -2557.366 5709.0448 -2559.3506 C 5709.0448 -2561.3352 5707.4359 -2562.9441 5705.4513 -2562.9441 L 5673.6713 -2562.9441 C 5671.6867 -2562.9441 5670.0778 -2561.3352 5670.0778 -2559.3506 C 5670.0778 -2557.366 5671.6867 -2555.7571 5673.6713 -2555.7571 L 5705.4513 -2555.7571 M 5674.7603 -2559.1431 L 5675.4303 -2561.4131 C 5675.4903 -2561.5998 5675.5603 -2561.7298 5675.6403 -2561.8031 C 5675.727 -2561.8764 5675.847 -2561.9131 5676.0003 -2561.9131 C 5676.1603 -2561.9131 5676.2803 -2561.8764 5676.3603 -2561.8031 C 5676.447 -2561.7364 5676.517 -2561.6064 5676.5703 -2561.4131 L 5677.2503 -2559.1431 L 5677.3003 -2558.9431 L 5677.3103 -2559.1431 L 5677.3103 -2561.3131 C 5677.3103 -2561.7131 5677.4803 -2561.9131 5677.8203 -2561.9131 C 5678.1603 -2561.9131 5678.3303 -2561.7164 5678.3303 -2561.3231 L 5678.3303 -2557.6331 C 5678.3303 -2557.4198 5678.3136 -2557.2598 5678.2803 -2557.1531 C 5678.2403 -2557.0398 5678.1703 -2556.9531 5678.0703 -2556.8931 C 5677.9303 -2556.7731 5677.7603 -2556.7131 5677.5603 -2556.7131 C 5677.347 -2556.7131 5677.177 -2556.7698 5677.0503 -2556.8831 C 5676.9236 -2557.0031 5676.8236 -2557.1931 5676.7503 -2557.4531 L 5676.0503 -2559.8931 L 5676.0003 -2560.0431 L 5675.9703 -2559.8931 L 5675.2503 -2557.4531 C 5675.177 -2557.1931 5675.0803 -2557.0031 5674.9603 -2556.8831 C 5674.8336 -2556.7698 5674.6636 -2556.7131 5674.4503 -2556.7131 C 5674.2436 -2556.7131 5674.0703 -2556.7731 5673.9303 -2556.8931 C 5673.8303 -2556.9664 5673.7636 -2557.0564 5673.7303 -2557.1631 C 5673.6903 -2557.2698 5673.6703 -2557.4264 5673.6703 -2557.6331 L 5673.6703 -2561.3231 C 5673.6703 -2561.7164 5673.847 -2561.9131 5674.2003 -2561.9131 C 5674.527 -2561.9131 5674.6903 -2561.7131 5674.6903 -2561.3131 L 5674.6903 -2559.1431 L 5674.7003 -2558.9431 L 5674.7603 -2559.1431 M 5680.0103 -2557.2931 C 5680.0103 -2556.9131 5679.8236 -2556.7231 5679.4503 -2556.7231 C 5679.1103 -2556.7231 5678.9403 -2556.9298 5678.9403 -2557.3431 L 5678.9403 -2561.3131 C 5678.9403 -2561.7198 5679.117 -2561.9231 5679.4703 -2561.9231 C 5679.6436 -2561.9231 5679.777 -2561.8698 5679.8703 -2561.7631 C 5679.9636 -2561.6498 5680.0103 -2561.4964 5680.0103 -2561.3031 L 5680.0103 -2557.2931 M 5683.3103 -2558.2231 C 5683.4303 -2558.4164 5683.5903 -2558.5131 5683.7903 -2558.5131 C 5683.9436 -2558.5131 5684.067 -2558.4664 5684.1603 -2558.3731 C 5684.2536 -2558.2731 5684.3003 -2558.1498 5684.3003 -2558.0031 C 5684.3003 -2557.8698 5684.257 -2557.7264 5684.1703 -2557.5731 C 5684.0836 -2557.4198 5683.967 -2557.2831 5683.8203 -2557.1631 C 5683.4936 -2556.8898 5683.087 -2556.7531 5682.6003 -2556.7531 C 5681.787 -2556.7531 5681.2103 -2557.0298 5680.8703 -2557.5831 C 5680.7236 -2557.8164 5680.6236 -2558.0664 5680.5703 -2558.3331 C 5680.5103 -2558.5998 5680.4803 -2558.9531 5680.4803 -2559.3931 C 5680.4803 -2559.8731 5680.507 -2560.2331 5680.5603 -2560.4731 C 5680.6136 -2560.7131 5680.7103 -2560.9364 5680.8503 -2561.1431 C 5681.2103 -2561.6564 5681.7703 -2561.9131 5682.5303 -2561.9131 C 5683.3703 -2561.9131 5683.9436 -2561.5864 5684.2503 -2560.9331 C 5684.3436 -2560.7464 5684.3903 -2560.5798 5684.3903 -2560.4331 C 5684.3903 -2560.2664 5684.3403 -2560.1364 5684.2403 -2560.0431 C 5684.147 -2559.9498 5684.0236 -2559.9031 5683.8703 -2559.9031 C 5683.6703 -2559.9031 5683.527 -2559.9864 5683.4403 -2560.1531 L 5683.3503 -2560.3731 C 5683.2036 -2560.7931 5682.9303 -2561.0031 5682.5303 -2561.0031 C 5682.377 -2561.0031 5682.2303 -2560.9631 5682.0903 -2560.8831 C 5681.9503 -2560.8098 5681.8436 -2560.7164 5681.7703 -2560.6031 C 5681.697 -2560.4698 5681.647 -2560.3231 5681.6203 -2560.1631 C 5681.587 -2560.0031 5681.5703 -2559.7831 5681.5703 -2559.5031 C 5681.5703 -2558.8098 5681.6403 -2558.3431 5681.7803 -2558.1031 C 5681.847 -2557.9831 5681.9503 -2557.8831 5682.0903 -2557.8031 C 5682.2303 -2557.7298 5682.3803 -2557.6931 5682.5403 -2557.6931 C 5682.8136 -2557.6931 5683.0136 -2557.7864 5683.1403 -2557.9731 L 5683.3103 -2558.2231 M 5689.7703 -2556.8131 L 5688.7603 -2556.8131 L 5688.7603 -2561.8531 L 5689.7703 -2561.8531 L 5689.7703 -2556.8131 M 5697.4703 -2561.8531 C 5697.8236 -2561.8531 5698.0003 -2561.6998 5698.0003 -2561.3931 C 5698.0003 -2561.2264 5697.957 -2561.1098 5697.8703 -2561.0431 C 5697.777 -2560.9764 5697.617 -2560.9431 5697.3903 -2560.9431 L 5695.6303 -2560.9431 C 5695.5636 -2560.9431 5695.5303 -2560.8998 5695.5303 -2560.8131 L 5695.5303 -2559.8731 C 5695.5303 -2559.7864 5695.577 -2559.7431 5695.6703 -2559.7431 L 5697.2103 -2559.7431 C 5697.5636 -2559.7431 5697.7403 -2559.5931 5697.7403 -2559.2931 C 5697.7403 -2558.9731 5697.5436 -2558.8131 5697.1503 -2558.8131 L 5695.6603 -2558.8131 C 5695.6003 -2558.8131 5695.5636 -2558.8031 5695.5503 -2558.7831 C 5695.537 -2558.7698 5695.5303 -2558.7398 5695.5303 -2558.6931 L 5695.5303 -2557.8231 C 5695.5303 -2557.7498 5695.577 -2557.7131 5695.6703 -2557.7131 L 5697.3403 -2557.7131 C 5697.5536 -2557.7131 5697.707 -2557.6798 5697.8003 -2557.6131 C 5697.887 -2557.5398 5697.9303 -2557.4231 5697.9303 -2557.2631 C 5697.9303 -2556.9564 5697.727 -2556.8031 5697.3203 -2556.8031 L 5694.9703 -2556.8031 C 5694.8303 -2556.8031 5694.7336 -2556.8098 5694.6803 -2556.8231 C 5694.6336 -2556.8431 5694.5903 -2556.8731 5694.5503 -2556.9131 C 5694.4836 -2556.9931 5694.4503 -2557.1231 5694.4503 -2557.3031 L 5694.4503 -2561.3531 C 5694.4503 -2561.4731 5694.457 -2561.5598 5694.4703 -2561.6131 C 5694.4836 -2561.6598 5694.517 -2561.7064 5694.5703 -2561.7531 C 5694.617 -2561.7931 5694.6703 -2561.8198 5694.7303 -2561.8331 C 5694.7836 -2561.8464 5694.8703 -2561.8531 5694.9903 -2561.8531 L 5697.4703 -2561.8531 M 5699.9903 -2560.1631 L 5700.0603 -2560.2531 L 5700.9303 -2561.6531 C 5701.057 -2561.8464 5701.207 -2561.9431 5701.3803 -2561.9431 C 5701.5336 -2561.9431 5701.6636 -2561.8964 5701.7703 -2561.8031 C 5701.877 -2561.7098 5701.9303 -2561.5964 5701.9303 -2561.4631 C 5701.9303 -2561.3831 5701.8803 -2561.2631 5701.7803 -2561.1031 L 5700.6403 -2559.2931 L 5700.6103 -2559.2031 C 5700.6103 -2559.2031 5700.6103 -2559.1964 5700.6103 -2559.1831 C 5700.617 -2559.1698 5700.6336 -2559.1364 5700.6603 -2559.0831 L 5701.6303 -2557.5831 C 5701.6703 -2557.5231 5701.7003 -2557.4631 5701.7203 -2557.4031 C 5701.7268 -2557.3857 5701.7323 -2557.3684 5701.7366 -2557.351 C 5701.7516 -2557.4486 5701.7928 -2557.526 5701.8603 -2557.5831 C 5701.947 -2557.6564 5702.0736 -2557.6931 5702.2403 -2557.6931 L 5702.9003 -2557.6931 C 5702.9536 -2557.6931 5702.987 -2557.7031 5703.0003 -2557.7231 C 5703.0203 -2557.7364 5703.0303 -2557.7731 5703.0303 -2557.8331 L 5703.0303 -2561.4231 C 5703.0303 -2561.5964 5703.0803 -2561.7331 5703.1803 -2561.8331 C 5703.2736 -2561.9331 5703.4036 -2561.9831 5703.5703 -2561.9831 C 5703.7236 -2561.9831 5703.8503 -2561.9364 5703.9503 -2561.8431 C 5704.057 -2561.7498 5704.1103 -2561.6331 5704.1103 -2561.4931 L 5704.1103 -2557.8531 C 5704.1103 -2557.7931 5704.117 -2557.7564 5704.1303 -2557.7431 C 5704.1503 -2557.7231 5704.187 -2557.7131 5704.2403 -2557.7131 L 5704.9703 -2557.7131 C 5705.2903 -2557.7131 5705.4503 -2557.5598 5705.4503 -2557.2531 C 5705.4503 -2556.9531 5705.277 -2556.8031 5704.9303 -2556.8031 L 5702.3003 -2556.8031 C 5701.973 -2556.8031 5701.7867 -2556.9168 5701.7413 -2557.1443 C 5701.7228 -2557.0473 5701.6758 -2556.9635 5701.6003 -2556.8931 C 5701.5003 -2556.7998 5701.3736 -2556.7531 5701.2203 -2556.7531 C 5701.0403 -2556.7531 5700.9036 -2556.8331 5700.8103 -2556.9931 L 5700.0703 -2558.1731 L 5699.9903 -2558.2831 L 5699.9103 -2558.1731 L 5699.1703 -2556.9931 C 5699.0703 -2556.8331 5698.9336 -2556.7531 5698.7603 -2556.7531 C 5698.6136 -2556.7531 5698.487 -2556.7998 5698.3803 -2556.8931 C 5698.2803 -2556.9864 5698.2303 -2557.1031 5698.2303 -2557.2431 C 5698.2303 -2557.3364 5698.2703 -2557.4498 5698.3503 -2557.5831 L 5699.3103 -2559.0831 L 5699.3803 -2559.2031 C 5699.3803 -2559.2098 5699.377 -2559.2231 5699.3703 -2559.2431 C 5699.3636 -2559.2564 5699.3503 -2559.2731 5699.3303 -2559.2931 L 5698.2003 -2561.1031 C 5698.1603 -2561.1764 5698.1303 -2561.2298 5698.1103 -2561.2631 C 5698.0703 -2561.3431 5698.0503 -2561.4098 5698.0503 -2561.4631 C 5698.0503 -2561.5898 5698.1036 -2561.7031 5698.2103 -2561.8031 C 5698.317 -2561.8964 5698.4436 -2561.9431 5698.5903 -2561.9431 C 5698.7703 -2561.9431 5698.9236 -2561.8464 5699.0503 -2561.6531 L 5699.9103 -2560.2531 L 5699.9903 -2560.1631\",\"stroke\":\"none\",\"layerid\":\"4\",\"id\":\"gge10869\"}}","SVGNODE~{\"gId\":\"gge10872\",\"nodeName\":\"path\",\"nodeType\":1,\"layerid\":\"4\",\"attrs\":{\"d\":\"M 5700.6705 -2797.9445 C 5702.6551 -2797.9445 5704.264 -2799.5534 5704.264 -2801.538 C 5704.264 -2803.5226 5702.6551 -2805.1315 5700.6705 -2805.1315 L 5678.7815 -2805.1315 C 5676.7969 -2805.1315 5675.188 -2803.5226 5675.188 -2801.538 C 5675.188 -2799.5534 5676.7969 -2797.9445 5678.7815 -2797.9445 L 5700.6705 -2797.9445 M 5679.8705 -2802.3905 C 5679.8705 -2802.3172 5679.8772 -2802.2705 5679.8905 -2802.2505 C 5679.9105 -2802.2372 5679.9572 -2802.2305 5680.0305 -2802.2305 L 5681.0805 -2802.2305 C 5681.5005 -2802.2305 5681.8372 -2802.0805 5682.0905 -2801.7805 C 5682.3438 -2801.4872 5682.4705 -2801.0938 5682.4705 -2800.6005 C 5682.4705 -2800.0272 5682.2972 -2799.5972 5681.9505 -2799.3105 C 5681.8172 -2799.1905 5681.6772 -2799.1072 5681.5305 -2799.0605 C 5681.3838 -2799.0138 5681.1938 -2798.9905 5680.9605 -2798.9905 L 5679.4705 -2798.9905 C 5679.2972 -2798.9905 5679.1738 -2798.9972 5679.1005 -2799.0105 C 5679.0272 -2799.0305 5678.9638 -2799.0605 5678.9105 -2799.1005 C 5678.8572 -2799.1472 5678.8238 -2799.2005 5678.8105 -2799.2605 C 5678.7905 -2799.3138 5678.7805 -2799.4172 5678.7805 -2799.5705 L 5678.7805 -2803.5605 C 5678.7805 -2803.9272 5678.9638 -2804.1105 5679.3305 -2804.1105 C 5679.6905 -2804.1105 5679.8705 -2803.9372 5679.8705 -2803.5905 L 5679.8705 -2802.3905 M 5679.8705 -2801.2605 C 5679.8705 -2801.2405 5679.8705 -2800.0705 5679.8705 -2800.0505 C 5679.8705 -2799.9972 5679.8805 -2799.9572 5679.9005 -2799.9305 C 5679.9205 -2799.9105 5679.9572 -2799.9005 5680.0105 -2799.9005 L 5680.6905 -2799.9005 C 5680.9372 -2799.9005 5681.1138 -2799.9572 5681.2205 -2800.0705 C 5681.3338 -2800.1772 5681.3905 -2800.3572 5681.3905 -2800.6105 C 5681.3905 -2801.0838 5681.1672 -2801.3205 5680.7205 -2801.3205 L 5680.0005 -2801.3205 L 5679.8905 -2801.3005 C 5679.8772 -2801.2872 5679.8705 -2801.2738 5679.8705 -2801.2605 L 5679.8705 -2801.2605 M 5682.6805 -2802.6405 C 5682.7338 -2802.8938 5682.8372 -2803.1238 5682.9905 -2803.3305 C 5683.3505 -2803.8572 5683.9172 -2804.1205 5684.6905 -2804.1205 C 5685.0705 -2804.1205 5685.4072 -2804.0505 5685.7005 -2803.9105 C 5686.0005 -2803.7772 5686.2338 -2803.5838 5686.4005 -2803.3305 C 5686.5472 -2803.1105 5686.6472 -2802.8805 5686.7005 -2802.6405 C 5686.7538 -2802.4005 5686.7805 -2802.0538 5686.7805 -2801.6005 C 5686.7805 -2801.0872 5686.7538 -2800.6938 5686.7005 -2800.4205 C 5686.6472 -2800.1472 5686.5472 -2799.9105 5686.4005 -2799.7105 C 5686.0338 -2799.1838 5685.4638 -2798.9205 5684.6905 -2798.9205 C 5683.9105 -2798.9205 5683.3438 -2799.1838 5682.9905 -2799.7105 C 5682.8305 -2799.9438 5682.7238 -2800.1805 5682.6705 -2800.4205 C 5682.6238 -2800.6672 5682.6005 -2801.0338 5682.6005 -2801.5205 C 5682.6005 -2802.0138 5682.6272 -2802.3872 5682.6805 -2802.6405 L 5682.6805 -2802.6405 M 5684.1805 -2799.9805 C 5684.3338 -2799.8938 5684.5038 -2799.8505 5684.6905 -2799.8505 C 5685.0905 -2799.8505 5685.3738 -2800.0072 5685.5405 -2800.3205 C 5685.6138 -2800.4605 5685.6572 -2800.5905 5685.6705 -2800.7105 C 5685.6838 -2800.8372 5685.6905 -2801.1072 5685.6905 -2801.5205 C 5685.6905 -2801.9005 5685.6805 -2802.1638 5685.6605 -2802.3105 C 5685.6405 -2802.4505 5685.5972 -2802.5905 5685.5305 -2802.7305 C 5685.4572 -2802.8772 5685.3472 -2802.9905 5685.2005 -2803.0705 C 5685.0538 -2803.1505 5684.8838 -2803.1905 5684.6905 -2803.1905 C 5684.2905 -2803.1905 5684.0072 -2803.0338 5683.8405 -2802.7205 C 5683.7738 -2802.5805 5683.7338 -2802.4505 5683.7205 -2802.3305 C 5683.7005 -2802.2038 5683.6905 -2801.9338 5683.6905 -2801.5205 C 5683.6905 -2801.1405 5683.7005 -2800.8805 5683.7205 -2800.7405 C 5683.7405 -2800.5938 5683.7805 -2800.4538 5683.8405 -2800.3205 C 5683.9138 -2800.1805 5684.0272 -2800.0672 5684.1805 -2799.9805 L 5684.1805 -2799.9805 M 5691.0405 -2801.9805 L 5690.5605 -2799.5505 C 5690.4805 -2799.1305 5690.2438 -2798.9205 5689.8505 -2798.9205 C 5689.4505 -2798.9205 5689.2105 -2799.1305 5689.1305 -2799.5505 L 5688.6505 -2801.9805 L 5688.6005 -2802.3505 L 5688.5505 -2801.9805 L 5688.0205 -2799.3905 C 5687.9672 -2799.0905 5687.7905 -2798.9405 5687.4905 -2798.9405 C 5687.3305 -2798.9405 5687.2005 -2798.9905 5687.1005 -2799.0905 C 5687.0005 -2799.1838 5686.9505 -2799.3072 5686.9505 -2799.4605 C 5686.9505 -2799.5272 5686.9538 -2799.5738 5686.9605 -2799.6005 L 5687.8905 -2803.4705 C 5687.9372 -2803.6372 5687.9872 -2803.7638 5688.0405 -2803.8505 C 5688.0938 -2803.9305 5688.1705 -2803.9938 5688.2705 -2804.0405 C 5688.3705 -2804.0938 5688.4872 -2804.1205 5688.6205 -2804.1205 C 5688.7672 -2804.1205 5688.8938 -2804.0905 5689.0005 -2804.0305 C 5689.1072 -2803.9772 5689.1838 -2803.9005 5689.2305 -2803.8005 C 5689.2705 -2803.7205 5689.3038 -2803.6138 5689.3305 -2803.4805 L 5689.7805 -2801.2205 L 5689.8505 -2800.9705 L 5689.9005 -2801.2205 L 5690.3505 -2803.4805 C 5690.3838 -2803.6538 5690.4272 -2803.7805 5690.4805 -2803.8605 C 5690.5338 -2803.9405 5690.6138 -2804.0038 5690.7205 -2804.0505 C 5690.8205 -2804.0972 5690.9338 -2804.1205 5691.0605 -2804.1205 C 5691.3605 -2804.1205 5691.5672 -2804.0138 5691.6805 -2803.8005 C 5691.7005 -2803.7672 5691.7205 -2803.7205 5691.7405 -2803.6605 C 5691.7605 -2803.5938 5691.7772 -2803.5305 5691.7905 -2803.4705 L 5692.7305 -2799.6005 C 5692.7372 -2799.5738 5692.7405 -2799.5272 5692.7405 -2799.4605 C 5692.7405 -2799.3138 5692.6905 -2799.1905 5692.5905 -2799.0905 C 5692.4838 -2798.9905 5692.3538 -2798.9405 5692.2005 -2798.9405 C 5691.9072 -2798.9405 5691.7272 -2799.0905 5691.6605 -2799.3905 L 5691.1405 -2801.9805 L 5691.0905 -2802.3505 L 5691.0405 -2801.9805 M 5696.0505 -2804.0405 C 5696.4038 -2804.0405 5696.5805 -2803.8872 5696.5805 -2803.5805 C 5696.5805 -2803.4138 5696.5372 -2803.2972 5696.4505 -2803.2305 C 5696.3572 -2803.1638 5696.1972 -2803.1305 5695.9705 -2803.1305 L 5694.2105 -2803.1305 C 5694.1372 -2803.1305 5694.1005 -2803.0872 5694.1005 -2803.0005 L 5694.1005 -2802.0605 C 5694.1005 -2801.9738 5694.1505 -2801.9305 5694.2505 -2801.9305 L 5695.7905 -2801.9305 C 5696.1438 -2801.9305 5696.3205 -2801.7805 5696.3205 -2801.4805 C 5696.3205 -2801.1605 5696.1238 -2801.0005 5695.7305 -2801.0005 L 5694.2405 -2801.0005 C 5694.1805 -2801.0005 5694.1438 -2800.9905 5694.1305 -2800.9705 C 5694.1172 -2800.9572 5694.1105 -2800.9272 5694.1105 -2800.8805 L 5694.1105 -2800.0105 C 5694.1105 -2799.9372 5694.1538 -2799.9005 5694.2405 -2799.9005 L 5695.9205 -2799.9005 C 5696.1338 -2799.9005 5696.2872 -2799.8672 5696.3805 -2799.8005 C 5696.4672 -2799.7272 5696.5105 -2799.6105 5696.5105 -2799.4505 C 5696.5105 -2799.1438 5696.3072 -2798.9905 5695.9005 -2798.9905 L 5693.5505 -2798.9905 C 5693.4038 -2798.9905 5693.3072 -2798.9972 5693.2605 -2799.0105 C 5693.2138 -2799.0305 5693.1672 -2799.0605 5693.1205 -2799.1005 C 5693.0605 -2799.1805 5693.0305 -2799.3105 5693.0305 -2799.4905 L 5693.0305 -2803.5405 C 5693.0305 -2803.6605 5693.0372 -2803.7472 5693.0505 -2803.8005 C 5693.0638 -2803.8472 5693.0972 -2803.8938 5693.1505 -2803.9405 C 5693.1972 -2803.9805 5693.2505 -2804.0072 5693.3105 -2804.0205 C 5693.3638 -2804.0338 5693.4505 -2804.0405 5693.5705 -2804.0405 L 5696.0505 -2804.0405 M 5699.7905 -2801.9505 L 5699.7805 -2801.9205 L 5699.8105 -2801.8805 L 5699.8905 -2801.8605 C 5700.1305 -2801.7472 5700.3205 -2801.5772 5700.4605 -2801.3505 C 5700.6005 -2801.1238 5700.6705 -2800.8605 5700.6705 -2800.5605 C 5700.6705 -2800.0405 5700.5038 -2799.6272 5700.1705 -2799.3205 C 5700.0305 -2799.1938 5699.8905 -2799.1072 5699.7505 -2799.0605 C 5699.6105 -2799.0138 5699.4205 -2798.9905 5699.1805 -2798.9905 L 5697.5505 -2798.9905 C 5697.4105 -2798.9905 5697.3105 -2798.9972 5697.2505 -2799.0105 C 5697.1905 -2799.0305 5697.1405 -2799.0605 5697.1005 -2799.1005 C 5697.0538 -2799.1405 5697.0238 -2799.1872 5697.0105 -2799.2405 C 5696.9972 -2799.2938 5696.9905 -2799.3738 5696.9905 -2799.4805 L 5696.9905 -2803.5805 C 5696.9905 -2803.9538 5697.1738 -2804.1405 5697.5405 -2804.1405 C 5697.8872 -2804.1405 5698.0605 -2803.9638 5698.0605 -2803.6105 L 5698.0605 -2802.2305 C 5698.0605 -2802.1372 5698.1038 -2802.0905 5698.1905 -2802.0905 L 5698.6105 -2802.0905 C 5698.6638 -2802.0905 5698.7005 -2802.0972 5698.7205 -2802.1105 C 5698.7405 -2802.1238 5698.7605 -2802.1538 5698.7805 -2802.2005 L 5699.6105 -2803.8205 C 5699.7172 -2804.0338 5699.8738 -2804.1405 5700.0805 -2804.1405 C 5700.2338 -2804.1405 5700.3638 -2804.0905 5700.4705 -2803.9905 C 5700.5772 -2803.8905 5700.6305 -2803.7772 5700.6305 -2803.6505 C 5700.6305 -2803.5638 5700.6005 -2803.4672 5700.5405 -2803.3605 L 5699.8505 -2802.0605 L 5699.8205 -2802.0005 L 5699.7905 -2801.9505 M 5698.0605 -2800.0805 C 5698.0605 -2799.9605 5698.1038 -2799.9005 5698.1905 -2799.9005 L 5698.8605 -2799.9005 C 5699.3338 -2799.9005 5699.5705 -2800.1172 5699.5705 -2800.5505 C 5699.5705 -2800.9572 5699.3305 -2801.1605 5698.8505 -2801.1605 L 5698.1805 -2801.1605 C 5698.1205 -2801.1605 5698.0838 -2801.1538 5698.0705 -2801.1405 C 5698.0638 -2801.1338 5698.0605 -2801.1072 5698.0605 -2801.0605 L 5698.0605 -2800.0805\",\"stroke\":\"none\",\"layerid\":\"4\",\"id\":\"gge10872\"}}","LIB~5689.4267~-2811.9259~package`BSI-10G`value`~~~gged91709de6bf1ccd8~2~~~0~~yes~~#@$TEXT~P~5715.687~-2812.359~0.433~0~1~4~~2.7559~K3~M5715.6866 -2815.1399L5715.6866 -2812.5093M5713.9328 -2815.1399L5715.6866 -2813.3861M5715.0603 -2814.0125L5713.9328 -2812.5093M5712.8555 -2815.1399L5711.4776 -2815.1399 5712.2292 -2814.1378 5711.8534 -2814.1378 5711.6029 -2814.0125 5711.4776 -2813.8872 5711.3523 -2813.5114 5711.3523 -2813.2609 5711.4776 -2812.8851 5711.7281 -2812.63454 5712.1039 -2812.5093 5712.4797 -2812.5093 5712.8555 -2812.63454 5712.9808 -2812.7598 5713.1061 -2813.0103~none~rep3541~~0~#@$ARC~1.1811~4~~M 5667.3794 -2811.557 A 2.0094 2.0094 0 1 0 5667.37928 -2811.53526~~rep3542~0#@$TRACK~1~4~~5709.1118 -2816.8471 5709.1118 -2807.0045 5669.7417 -2807.0045 5669.7417 -2816.8471 5709.1118 -2816.8471~rep3546~0#@$TEXT~N~5715.687~-2820.359~0.433~0~1~4~~2.7559~BSI-10G~M5715.687 -2823.14L5715.687 -2820.5093M5715.687 -2823.14L5714.5596 -2823.14 5714.1838 -2823.0147 5714.0585 -2822.8894 5713.9332 -2822.6389 5713.9332 -2822.3883 5714.0585 -2822.1378 5714.1838 -2822.0125 5714.5596 -2821.8873M5715.687 -2821.8873L5714.5596 -2821.8873 5714.1838 -2821.762 5714.0585 -2821.6367 5713.9332 -2821.3862 5713.9332 -2821.0104 5714.0585 -2820.7599 5714.1838 -2820.63459 5714.5596 -2820.5093 5715.687 -2820.5093M5711.3527 -2822.7641L5711.6033 -2823.0147 5711.9791 -2823.14 5712.4801 -2823.14 5712.8559 -2823.0147 5713.1065 -2822.7641 5713.1065 -2822.5136 5712.9812 -2822.2631 5712.8559 -2822.1378 5712.6054 -2822.0125 5711.8538 -2821.762 5711.6033 -2821.6367 5711.478 -2821.5115 5711.3527 -2821.2609 5711.3527 -2820.8851 5711.6033 -2820.63459 5711.9791 -2820.5093 5712.4801 -2820.5093 5712.8559 -2820.63459 5713.1065 -2820.8851M5710.526 -2823.14L5710.526 -2820.5093M5709.6992 -2821.6367L5707.4444 -2821.6367M5706.6176 -2822.6389L5706.367 -2822.7641 5705.9912 -2823.14 5705.9912 -2820.5093M5704.4129 -2823.14L5704.7887 -2823.0147 5705.0392 -2822.6389 5705.1645 -2822.0125 5705.1645 -2821.6367 5705.0392 -2821.0104 5704.7887 -2820.63459 5704.4129 -2820.5093 5704.1623 -2820.5093 5703.7865 -2820.63459 5703.536 -2821.0104 5703.4107 -2821.6367 5703.4107 -2822.0125 5703.536 -2822.6389 5703.7865 -2823.0147 5704.1623 -2823.14 5704.4129 -2823.14M5700.7049 -2822.5136L5700.8302 -2822.7641 5701.08073 -2823.0147 5701.3313 -2823.14 5701.8323 -2823.14 5702.0829 -2823.0147 5702.3334 -2822.7641 5702.45868 -2822.5136 5702.5839 -2822.1378 5702.5839 -2821.5115 5702.45868 -2821.1357 5702.3334 -2820.8851 5702.0829 -2820.63459 5701.8323 -2820.5093 5701.3313 -2820.5093 5701.08073 -2820.63459 5700.8302 -2820.8851 5700.7049 -2821.1357 5700.7049 -2821.5115M5701.3313 -2821.5115L5700.7049 -2821.5115~none~rep3550~~0~#@$PAD~ELLIPSE~5689.427~-2811.926~6.6929~6.6929~11~VBAT+~1~1.5748~~180~rep3543~3.3071~5689.5057 -2811.926 5689.3483 -2811.926~Y~0~0~0.2~5689.427,-2811.926#@$PAD~ELLIPSE~5699.427~-2811.926~6.2992~6.2992~11~~2~1.5748~~180~rep3544~3.3071~5699.5057 -2811.926 5699.3483 -2811.926~Y~0~0~0.2~5699.427,-2811.926#@$PAD~ELLIPSE~5679.427~-2811.926~6.2992~6.2992~11~BAT+~3~1.5748~~180~rep3545~3.3071~5679.5057 -2811.926 5679.3483 -2811.926~Y~0~0~0.2~5679.427,-2811.926","LIB~5539.4275~-2595.1081~package`ARAD0.1 - DUPLICATE`value`MICROPHONE2~180~~gge20f64733a18c5380~2~~~0~~yes~~#@$TEXT~P~5552.144~-2608.1~0.433~0~1~4~~2.7559~M1~M5552.1441 -2610.8812L5552.1441 -2608.2506M5552.1441 -2610.8812L5551.142 -2608.2506M5550.1398 -2610.8812L5551.142 -2608.2506M5550.1398 -2610.8812L5550.1398 -2608.2506M5549.313 -2610.3801L5549.0625 -2610.5054 5548.6867 -2610.8812 5548.6867 -2608.2506~none~rep3552~~0~#@$TEXT~N~5525.539~-2582.751~0.4724~0~1~4~~3.1496~MICROPHONE2~M5525.5393 -2585.929L5525.5393 -2582.9226M5525.5393 -2585.929L5524.394 -2582.9226M5523.2487 -2585.929L5524.394 -2582.9226M5523.2487 -2585.929L5523.2487 -2582.9226M5522.3038 -2585.929L5522.3038 -2582.9226M5519.2115 -2585.2132L5519.3546 -2585.4995 5519.641 -2585.7859 5519.9273 -2585.929 5520.4999 -2585.929 5520.7863 -2585.7859 5521.0726 -2585.4995 5521.2158 -2585.2132 5521.3589 -2584.7837 5521.3589 -2584.0679 5521.2158 -2583.6384 5521.0726 -2583.3521 5520.7863 -2583.06576 5520.4999 -2582.9226 5519.9273 -2582.9226 5519.641 -2583.06576 5519.3546 -2583.3521 5519.2115 -2583.6384M5518.2666 -2585.929L5518.2666 -2582.9226M5518.2666 -2585.929L5516.9781 -2585.929 5516.5486 -2585.7859 5516.40546 -2585.6427 5516.2623 -2585.3564 5516.2623 -2585.0701 5516.40546 -2584.7837 5516.5486 -2584.64056 5516.9781 -2584.4974 5518.2666 -2584.4974M5517.2644 -2584.4974L5516.2623 -2582.9226M5514.4584 -2585.929L5514.7448 -2585.7859 5515.0311 -2585.4995 5515.1743 -2585.2132 5515.3174 -2584.7837 5515.3174 -2584.0679 5515.1743 -2583.6384 5515.0311 -2583.3521 5514.7448 -2583.06576 5514.4584 -2582.9226 5513.8858 -2582.9226 5513.5995 -2583.06576 5513.3131 -2583.3521 5513.17 -2583.6384 5513.0268 -2584.0679 5513.0268 -2584.7837 5513.17 -2585.2132 5513.3131 -2585.4995 5513.5995 -2585.7859 5513.8858 -2585.929 5514.4584 -2585.929M5512.0819 -2585.929L5512.0819 -2582.9226M5512.0819 -2585.929L5510.7934 -2585.929 5510.364 -2585.7859 5510.2208 -2585.6427 5510.0776 -2585.3564 5510.0776 -2584.9269 5510.2208 -2584.64056 5510.364 -2584.4974 5510.7934 -2584.3542 5512.0819 -2584.3542M5509.1327 -2585.929L5509.1327 -2582.9226M5507.1285 -2585.929L5507.1285 -2582.9226M5509.1327 -2584.4974L5507.1285 -2584.4974M5505.3246 -2585.929L5505.6109 -2585.7859 5505.8972 -2585.4995 5506.0404 -2585.2132 5506.1836 -2584.7837 5506.1836 -2584.0679 5506.0404 -2583.6384 5505.8972 -2583.3521 5505.6109 -2583.06576 5505.3246 -2582.9226 5504.7519 -2582.9226 5504.4656 -2583.06576 5504.1793 -2583.3521 5504.0361 -2583.6384 5503.893 -2584.0679 5503.893 -2584.7837 5504.0361 -2585.2132 5504.1793 -2585.4995 5504.4656 -2585.7859 5504.7519 -2585.929 5505.3246 -2585.929M5502.9481 -2585.929L5502.9481 -2582.9226M5502.9481 -2585.929L5500.9438 -2582.9226M5500.9438 -2585.929L5500.9438 -2582.9226M5499.9989 -2585.929L5499.9989 -2582.9226M5499.9989 -2585.929L5498.1378 -2585.929M5499.9989 -2584.4974L5498.8536 -2584.4974M5499.9989 -2582.9226L5498.1378 -2582.9226M5497.0497 -2585.2132L5497.0497 -2585.3564 5496.9066 -2585.6427 5496.7634 -2585.7859 5496.4771 -2585.929 5495.9044 -2585.929 5495.6181 -2585.7859 5495.4749 -2585.6427 5495.3318 -2585.3564 5495.3318 -2585.0701 5495.4749 -2584.7837 5495.7613 -2584.3542 5497.1929 -2582.9226 5495.1886 -2582.9226~none~rep3553~~0~#@$TRACK~1.2~4~~5549.4276 -2600.1081 5529.4275 -2600.1081 5529.4275 -2590.1081 5549.4275 -2590.1081 5549.4276 -2600.1081~rep3556~0#@$PAD~ELLIPSE~5534.428~-2595.108~6.2~6.2~11~GND~1~1.4~~0~rep3554~2.82~5534.418 -2595.108 5534.438 -2595.108~Y~0~0~0.2~5534.428,-2595.108#@$PAD~ELLIPSE~5544.428~-2595.108~6.2~6.2~11~NETM1_2~2~1.4~~0~rep3555~2.82~5544.418 -2595.108 5544.438 -2595.108~Y~0~0~0.2~5544.428,-2595.108","LIB~5689.5043~-2548.3758~package`BSI-10G`value`~~~ggec367b9aa41be0627~2~~~0~~yes~~#@$TEXT~P~5713.364~-2552.123~0.433~0~1~4~~2.7559~K2~M5713.3637 -2554.9037L5713.3637 -2552.2731M5711.6099 -2554.9037L5713.3637 -2553.1499M5712.7374 -2553.77629L5711.6099 -2552.2731M5710.6579 -2554.2774L5710.6579 -2554.4026 5710.5326 -2554.6532 5710.4074 -2554.7784 5710.1568 -2554.9037 5709.6558 -2554.9037 5709.4052 -2554.7784 5709.28 -2554.6532 5709.1547 -2554.4026 5709.1547 -2554.1521 5709.28 -2553.9016 5709.5305 -2553.5258 5710.7832 -2552.2731 5709.0294 -2552.2731~none~rep3561~~0~#@$ARC~1.1811~4~~M 5667.457 -2548.007 A 2.0094 2.0094 0 1 0 5667.45688 -2547.98526~~rep3562~0#@$TRACK~1~4~~5709.1894 -2553.2971 5709.1894 -2543.4545 5669.8193 -2543.4545 5669.8193 -2553.2971 5709.1894 -2553.2971~rep3566~0#@$TEXT~N~5713.364~-2560.123~0.433~0~1~4~~2.7559~BSI-10G~M5713.364 -2562.904L5713.364 -2560.2733M5713.364 -2562.904L5712.2366 -2562.904 5711.8608 -2562.7787 5711.7355 -2562.6534 5711.6102 -2562.4029 5711.6102 -2562.1523 5711.7355 -2561.9018 5711.8608 -2561.77654 5712.2366 -2561.6513M5713.364 -2561.6513L5712.2366 -2561.6513 5711.8608 -2561.526 5711.7355 -2561.4007 5711.6102 -2561.1502 5711.6102 -2560.7744 5711.7355 -2560.5239 5711.8608 -2560.3986 5712.2366 -2560.2733 5713.364 -2560.2733M5709.0297 -2562.5281L5709.2803 -2562.7787 5709.6561 -2562.904 5710.1571 -2562.904 5710.5329 -2562.7787 5710.7835 -2562.5281 5710.7835 -2562.2776 5710.6582 -2562.0271 5710.5329 -2561.9018 5710.2824 -2561.77654 5709.5308 -2561.526 5709.2803 -2561.4007 5709.155 -2561.2755 5709.0297 -2561.0249 5709.0297 -2560.6491 5709.2803 -2560.3986 5709.6561 -2560.2733 5710.1571 -2560.2733 5710.5329 -2560.3986 5710.7835 -2560.6491M5708.203 -2562.904L5708.203 -2560.2733M5707.3762 -2561.4007L5705.1214 -2561.4007M5704.2946 -2562.4029L5704.044 -2562.5281 5703.6682 -2562.904 5703.6682 -2560.2733M5702.0899 -2562.904L5702.4657 -2562.7787 5702.7162 -2562.4029 5702.8415 -2561.77654 5702.8415 -2561.4007 5702.7162 -2560.7744 5702.4657 -2560.3986 5702.0899 -2560.2733 5701.8393 -2560.2733 5701.4635 -2560.3986 5701.213 -2560.7744 5701.0877 -2561.4007 5701.0877 -2561.77654 5701.213 -2562.4029 5701.4635 -2562.7787 5701.8393 -2562.904 5702.0899 -2562.904M5698.3819 -2562.2776L5698.5072 -2562.5281 5698.7577 -2562.7787 5699.0083 -2562.904 5699.5093 -2562.904 5699.7599 -2562.7787 5700.0104 -2562.5281 5700.1357 -2562.2776 5700.2609 -2561.9018 5700.2609 -2561.2755 5700.1357 -2560.8997 5700.0104 -2560.6491 5699.7599 -2560.3986 5699.5093 -2560.2733 5699.0083 -2560.2733 5698.7577 -2560.3986 5698.5072 -2560.6491 5698.3819 -2560.8997 5698.3819 -2561.2755M5699.0083 -2561.2755L5698.3819 -2561.2755~none~rep3570~~0~#@$PAD~ELLIPSE~5689.504~-2548.376~6.6929~6.6929~11~NETK2_1~1~1.5748~~180~rep3563~3.3071~5689.5827 -2548.376 5689.4253 -2548.376~Y~0~0~0.2~5689.504,-2548.376#@$PAD~ELLIPSE~5699.504~-2548.376~6.2992~6.2992~11~NETM1_2~2~1.5748~~180~rep3564~3.3071~5699.5827 -2548.376 5699.4253 -2548.376~Y~0~0~0.2~5699.504,-2548.376#@$PAD~ELLIPSE~5679.504~-2548.376~6.2992~6.2992~11~NETK2_3~3~1.5748~~180~rep3565~3.3071~5679.5827 -2548.376 5679.4253 -2548.376~Y~0~0~0.2~5679.504,-2548.376","LIB~5552.6277~-2680.9172~package`TSWB3NCB222LFS`value`TSWB3NCB222LFS~315~~ggec39dab7994ba8bcb~2~~~0~~yes~~#@$TEXT~P~5586.002~-2689.164~0.433~0~1~4~~2.7559~SW1~M5584.2477 -2691.5689L5584.4983 -2691.8194 5584.8741 -2691.9447 5585.3752 -2691.9447 5585.751 -2691.8194 5586.0015 -2691.5689 5586.0015 -2691.3184 5585.8762 -2691.0678 5585.751 -2690.9426 5585.5004 -2690.81729 5584.7488 -2690.5668 5584.4983 -2690.4415 5584.373 -2690.3162 5584.2477 -2690.0657 5584.2477 -2689.6899 5584.4983 -2689.4393 5584.8741 -2689.3141 5585.3752 -2689.3141 5585.751 -2689.4393 5586.0015 -2689.6899M5583.421 -2691.9447L5582.7946 -2689.3141M5582.1683 -2691.9447L5582.7946 -2689.3141M5582.1683 -2691.9447L5581.542 -2689.3141M5580.9156 -2691.9447L5581.542 -2689.3141M5580.0888 -2691.4436L5579.8383 -2691.5689 5579.4625 -2691.9447 5579.4625 -2689.3141~none~rep3572~~0~#@$TEXT~N~5608.413~-2688.026~0.4724~0~1~4~~3.1496~TSWB3NCB222LFS~M5607.4112 -2691.2046L5607.4112 -2688.1982M5608.4133 -2691.2046L5606.409 -2691.2046M5603.4598 -2690.7751L5603.7462 -2691.0615 5604.1757 -2691.2046 5604.7483 -2691.2046 5605.1778 -2691.0615 5605.4641 -2690.7751 5605.4641 -2690.4888 5605.321 -2690.2025 5605.1778 -2690.0593 5604.8915 -2689.91616 5604.0325 -2689.6298 5603.7462 -2689.4867 5603.603 -2689.3435 5603.4598 -2689.0572 5603.4598 -2688.6277 5603.7462 -2688.3414 5604.1757 -2688.1982 5604.7483 -2688.1982 5605.1778 -2688.3414 5605.4641 -2688.6277M5602.515 -2691.2046L5601.79914 -2688.1982M5601.0833 -2691.2046L5601.79914 -2688.1982M5601.0833 -2691.2046L5600.3675 -2688.1982M5599.6517 -2691.2046L5600.3675 -2688.1982M5598.7068 -2691.2046L5598.7068 -2688.1982M5598.7068 -2691.2046L5597.4183 -2691.2046 5596.9888 -2691.0615 5596.8457 -2690.9183 5596.7025 -2690.632 5596.7025 -2690.3457 5596.8457 -2690.0593 5596.9888 -2689.91616 5597.4183 -2689.773M5598.7068 -2689.773L5597.4183 -2689.773 5596.9888 -2689.6298 5596.8457 -2689.4867 5596.7025 -2689.2003 5596.7025 -2688.7709 5596.8457 -2688.4845 5596.9888 -2688.3414 5597.4183 -2688.1982 5598.7068 -2688.1982M5595.4713 -2691.2046L5593.8965 -2691.2046 5594.7555 -2690.0593 5594.326 -2690.0593 5594.0397 -2689.91616 5593.8965 -2689.773 5593.7533 -2689.3435 5593.7533 -2689.0572 5593.8965 -2688.6277 5594.1828 -2688.3414 5594.6123 -2688.1982 5595.0418 -2688.1982 5595.4713 -2688.3414 5595.6145 -2688.4845 5595.7576 -2688.7709M5592.8085 -2691.2046L5592.8085 -2688.1982M5592.8085 -2691.2046L5590.8042 -2688.1982M5590.8042 -2691.2046L5590.8042 -2688.1982M5587.7118 -2690.4888L5587.855 -2690.7751 5588.1413 -2691.0615 5588.4277 -2691.2046 5589.0003 -2691.2046 5589.2866 -2691.0615 5589.573 -2690.7751 5589.7161 -2690.4888 5589.8593 -2690.0593 5589.8593 -2689.3435 5589.7161 -2688.914 5589.573 -2688.6277 5589.2866 -2688.3414 5589.0003 -2688.1982 5588.4277 -2688.1982 5588.1413 -2688.3414 5587.855 -2688.6277 5587.7118 -2688.914M5586.767 -2691.2046L5586.767 -2688.1982M5586.767 -2691.2046L5585.4785 -2691.2046 5585.049 -2691.0615 5584.9058 -2690.9183 5584.7627 -2690.632 5584.7627 -2690.3457 5584.9058 -2690.0593 5585.049 -2689.91616 5585.4785 -2689.773M5586.767 -2689.773L5585.4785 -2689.773 5585.049 -2689.6298 5584.9058 -2689.4867 5584.7627 -2689.2003 5584.7627 -2688.7709 5584.9058 -2688.4845 5585.049 -2688.3414 5585.4785 -2688.1982 5586.767 -2688.1982M5583.6746 -2690.4888L5583.6746 -2690.632 5583.5315 -2690.9183 5583.3883 -2691.0615 5583.102 -2691.2046 5582.5293 -2691.2046 5582.243 -2691.0615 5582.0998 -2690.9183 5581.9567 -2690.632 5581.9567 -2690.3457 5582.0998 -2690.0593 5582.3862 -2689.6298 5583.8178 -2688.1982 5581.8135 -2688.1982M5580.7255 -2690.4888L5580.7255 -2690.632 5580.5823 -2690.9183 5580.4391 -2691.0615 5580.1528 -2691.2046 5579.5801 -2691.2046 5579.2938 -2691.0615 5579.1507 -2690.9183 5579.0075 -2690.632 5579.0075 -2690.3457 5579.1507 -2690.0593 5579.437 -2689.6298 5580.8686 -2688.1982 5578.8643 -2688.1982M5577.7763 -2690.4888L5577.7763 -2690.632 5577.6331 -2690.9183 5577.49 -2691.0615 5577.2036 -2691.2046 5576.631 -2691.2046 5576.3446 -2691.0615 5576.2015 -2690.9183 5576.0583 -2690.632 5576.0583 -2690.3457 5576.2015 -2690.0593 5576.4878 -2689.6298 5577.9194 -2688.1982 5575.9152 -2688.1982M5574.9703 -2691.2046L5574.9703 -2688.1982M5574.9703 -2688.1982L5573.2523 -2688.1982M5572.3074 -2691.2046L5572.3074 -2688.1982M5572.3074 -2691.2046L5570.4463 -2691.2046M5572.3074 -2689.773L5571.1621 -2689.773M5567.4971 -2690.7751L5567.7835 -2691.0615 5568.213 -2691.2046 5568.7856 -2691.2046 5569.2151 -2691.0615 5569.5014 -2690.7751 5569.5014 -2690.4888 5569.3583 -2690.2025 5569.2151 -2690.0593 5568.9288 -2689.91616 5568.0698 -2689.6298 5567.7835 -2689.4867 5567.6403 -2689.3435 5567.4971 -2689.0572 5567.4971 -2688.6277 5567.7835 -2688.3414 5568.213 -2688.1982 5568.7856 -2688.1982 5569.2151 -2688.3414 5569.5014 -2688.6277~none~rep3573~~0~#@$ARC~1.1811~4~~M 5615.6198 -2680.9172 A 62.9921 62.9921 0 1 0 5615.6198 -2680.89521~~rep3574~0#@$ARC~1.1811~4~~M 5615.99259 -2653.86494 A 68.898 68.898 0 0 0 5571.26343 -2747.24701~~rep3575~0#@$ARC~1.1811~4~~M 5541.18419 -2612.98512 A 68.8892 68.8892 0 0 0 5611.55181 -2645.22868~~rep3576~0#@$ARC~1.1811~4~~M 5485.73664 -2664.3844 A 68.9039 68.9039 0 0 0 5534.09576 -2614.55219~~rep3577~0#@$ARC~1.1811~4~~M 5563.94602 -2748.8807 A 68.8995 68.8995 0 0 0 5493.59099 -2716.43914~~rep3578~0#@$ARC~1.1811~4~~M 5489.20073 -2707.83512 A 68.9025 68.9025 0 0 0 5484.56076 -2670.21925~~rep3579~0#@$ARC~1.1811~4~~M 5538.32592 -2688.38414 A 16.1337 16.1337 0 0 0 5560.09714 -2666.61672~~rep3580~0#@$ARC~1.1811~4~~M 5566.94577 -2673.4694 A 16.1393 16.1393 0 0 0 5545.30689 -2695.30062~~rep3581~0#@$PAD~RECT~5491.361~-2712.806~19.685~9.0551~2~SW_D~S2~0~5495.1192 -2702.6448 5481.1998 -2716.5642 5487.6028 -2722.9672 5501.5222 -2709.0478~135~rep3589~0~~Y~0~0~0.2~5491.361,-2712.806#@$PAD~RECT~5484.393~-2668.476~19.685~9.0551~2~GND~CB~0~5475.4862 -2674.6439 5494.8722 -2671.2256 5493.2998 -2662.3081 5473.9138 -2665.7264~350~rep3590~0~~Y~0~0~0.2~5484.393,-2668.476#@$TEXT~L~5605.577~-2651.798~0.7086~315~1~4~~3.937~S4~M5606.2351 -2655.999L5606.7413 -2655.999 5607.2475 -2655.7459 5607.7536 -2655.2397 5608.0067 -2654.7336 5608.0067 -2654.2274 5607.7536 -2653.9743 5607.374 -2653.8478 5607.1209 -2653.8478 5606.7413 -2653.9743 5605.729 -2654.4805 5605.3494 -2654.607 5605.0963 -2654.607 5604.7167 -2654.4805 5604.337 -2654.1009 5604.337 -2653.5947 5604.5901 -2653.0885 5605.0963 -2652.5824 5605.6024 -2652.3293 5606.1086 -2652.3293M5604.5142 -2658.4792L5604.008 -2655.4422 5602.1099 -2657.3403M5604.5142 -2658.4792L5601.8569 -2655.8218~~rep3593~~0~#@$TEXT~L~5570.946~-2708.088~0.7086~315~1~4~~3.937~B~M5573.7548 -2710.8971L5571.0975 -2708.2398M5573.7548 -2710.8971L5572.616 -2712.036 5572.1098 -2712.2891 5571.8567 -2712.2891 5571.4771 -2712.1625 5571.224 -2711.9094 5571.0975 -2711.5298 5571.0975 -2711.2767 5571.3506 -2710.7706M5572.4894 -2709.6317L5571.3506 -2710.7706 5570.8444 -2711.0237 5570.5913 -2711.0237 5570.2117 -2710.8971 5569.8321 -2710.5175 5569.7055 -2710.1379 5569.7055 -2709.8848 5569.9586 -2709.3786 5571.0975 -2708.2398~~rep3594~~0~#@$TEXT~L~5563.68~-2735.008~0.7086~315~1~4~~3.937~S3~M5564.3376 -2739.2093L5564.8438 -2739.2093 5565.35 -2738.9562 5565.8561 -2738.45 5566.1092 -2737.9439 5566.1092 -2737.4377 5565.8561 -2737.1846 5565.4765 -2737.0581 5565.2234 -2737.0581 5564.8438 -2737.1846 5563.8315 -2737.6908 5563.4519 -2737.8173 5563.1988 -2737.8173 5562.8192 -2737.6908 5562.4395 -2737.3112 5562.4395 -2736.805 5562.6926 -2736.2988 5563.1988 -2735.7927 5563.7049 -2735.5396 5564.2111 -2735.5396M5563.629 -2740.6771L5562.2371 -2742.0691 5561.984 -2740.2975 5561.6044 -2740.6771 5561.2248 -2740.8037 5560.9717 -2740.8037 5560.4655 -2740.5506 5560.2124 -2740.2975 5559.9594 -2739.7914 5559.9594 -2739.2852 5560.2124 -2738.779 5560.5921 -2738.3994 5561.0982 -2738.1463 5561.3513 -2738.1463 5561.7309 -2738.2729~~rep3595~~0~#@$TEXT~L~5576.374~-2645.534~0.7086~315~1~4~~3.937~COM.A~M5576.6526 -2649.6086L5577.0322 -2649.7352 5577.5384 -2649.7352 5577.918 -2649.6086 5578.4242 -2649.1025 5578.5507 -2648.7229 5578.5507 -2648.2167 5578.4242 -2647.8371 5578.1711 -2647.3309 5577.5384 -2646.6982 5577.0322 -2646.4451 5576.6526 -2646.3186 5576.1465 -2646.3186 5575.7668 -2646.4451 5575.2607 -2646.9513 5575.1341 -2647.3309 5575.1341 -2647.8371 5575.2607 -2648.2167M5575.6909 -2651.8357L5575.8175 -2651.4561 5575.8175 -2650.95 5575.6909 -2650.5703 5575.4378 -2650.0642 5574.8051 -2649.4315 5574.299 -2649.1784 5573.9194 -2649.0519 5573.4132 -2649.0519 5573.0336 -2649.1784 5572.5274 -2649.6846 5572.4009 -2650.0642 5572.4009 -2650.5703 5572.5274 -2650.95 5572.7805 -2651.4561 5573.4132 -2652.0888 5573.9194 -2652.3419 5574.299 -2652.4684 5574.8051 -2652.4684 5575.1848 -2652.3419 5575.6909 -2651.8357M5573.5904 -2653.9363L5570.933 -2651.279M5573.5904 -2653.9363L5569.9207 -2652.2913M5571.5657 -2655.9609L5569.9207 -2652.2913M5571.5657 -2655.9609L5568.9084 -2653.3036M5568.5794 -2654.898L5568.5794 -2654.6449 5568.3263 -2654.6449 5568.3263 -2654.898 5568.5794 -2654.898M5568.63 -2658.8967L5566.985 -2655.227M5568.63 -2658.8967L5564.9603 -2657.2517M5567.4911 -2656.4924L5566.2257 -2657.7578~~rep3596~~0~#@$TEXT~L~5555.439~-2679.442~0.7086~315~1~4~~3.937~S1~M5556.0974 -2683.6429L5556.6036 -2683.6429 5557.1098 -2683.3898 5557.6159 -2682.8836 5557.869 -2682.3775 5557.869 -2681.8713 5557.6159 -2681.6182 5557.2363 -2681.4917 5556.9832 -2681.4917 5556.6036 -2681.6182 5555.5913 -2682.1244 5555.2117 -2682.2509 5554.9586 -2682.2509 5554.579 -2682.1244 5554.1993 -2681.7448 5554.1993 -2681.2386 5554.4524 -2680.7324 5554.9586 -2680.2263 5555.4647 -2679.9732 5555.9709 -2679.9732M5555.1357 -2684.3515L5555.0092 -2684.7311 5555.0092 -2685.4904 5552.3519 -2682.833~~rep3597~~0~#@$TEXT~L~5522.812~-2699.597~0.7086~315~1~4~~3.937~A~M5524.6091 -2703.4186L5522.9641 -2699.749M5524.6091 -2703.4186L5520.9395 -2701.7736M5523.4703 -2701.0144L5522.2049 -2702.2798~~rep3598~~0~#@$TEXT~L~5504.299~-2702.799~0.7086~315~1~4~~3.937~S2~M5504.9574 -2706.9997L5505.4636 -2706.9997 5505.9698 -2706.7466 5506.4759 -2706.2404 5506.729 -2705.7343 5506.729 -2705.2281 5506.4759 -2704.975 5506.0963 -2704.8485 5505.8432 -2704.8485 5505.4636 -2704.975 5504.4513 -2705.4812 5504.0717 -2705.6077 5503.8186 -2705.6077 5503.439 -2705.4812 5503.0593 -2705.1016 5503.0593 -2704.5954 5503.3124 -2704.0892 5503.8186 -2703.5831 5504.3247 -2703.33 5504.8309 -2703.33M5503.7427 -2707.7083L5503.8692 -2707.8348 5503.9957 -2708.2144 5503.9957 -2708.4675 5503.8692 -2708.8471 5503.363 -2709.3533 5502.9834 -2709.4798 5502.7303 -2709.4798 5502.3507 -2709.3533 5502.0976 -2709.1002 5501.9711 -2708.7206 5501.8446 -2708.0879 5501.8446 -2705.5571 5500.073 -2707.3287~~rep3599~~0~#@$TEXT~L~5545.139~-2620.925~0.7086~315~1~4~~3.937~S5~M5545.797 -2625.1257L5546.3032 -2625.1257 5546.8094 -2624.8726 5547.3155 -2624.3664 5547.5686 -2623.8603 5547.5686 -2623.3541 5547.3155 -2623.101 5546.9359 -2622.9745 5546.6828 -2622.9745 5546.3032 -2623.101 5545.2909 -2623.6072 5544.9113 -2623.7337 5544.6582 -2623.7337 5544.2786 -2623.6072 5543.8989 -2623.2276 5543.8989 -2622.7214 5544.152 -2622.2152 5544.6582 -2621.7091 5545.1643 -2621.456 5545.6705 -2621.456M5543.823 -2627.8589L5545.0884 -2626.5935 5544.0761 -2625.3281 5544.0761 -2625.5812 5543.823 -2626.0874 5543.4434 -2626.467 5542.9372 -2626.7201 5542.4311 -2626.7201 5541.9249 -2626.467 5541.6718 -2626.2139 5541.4188 -2625.7078 5541.4188 -2625.2016 5541.6718 -2624.6954 5542.0515 -2624.3158 5542.5576 -2624.0627 5542.8107 -2624.0627 5543.1903 -2624.1893~~rep3600~~0~#@$TEXT~L~5505.385~-2662.182~0.7086~315~1~4~~3.937~COM.B~M5505.6635 -2666.2563L5506.0431 -2666.3829 5506.5493 -2666.3829 5506.9289 -2666.2563 5507.4351 -2665.7502 5507.5616 -2665.3705 5507.5616 -2664.8644 5507.4351 -2664.4848 5507.182 -2663.9786 5506.5493 -2663.3459 5506.0431 -2663.0928 5505.6635 -2662.9663 5505.1574 -2662.9663 5504.7777 -2663.0928 5504.2716 -2663.599 5504.145 -2663.9786 5504.145 -2664.4848 5504.2716 -2664.8644M5504.7018 -2668.4834L5504.8284 -2668.1038 5504.8284 -2667.5976 5504.7018 -2667.218 5504.4487 -2666.7119 5503.816 -2666.0792 5503.3099 -2665.8261 5502.9303 -2665.6995 5502.4241 -2665.6995 5502.0445 -2665.8261 5501.5383 -2666.3322 5501.4118 -2666.7119 5501.4118 -2667.218 5501.5383 -2667.5976 5501.7914 -2668.1038 5502.4241 -2668.7365 5502.9303 -2668.9896 5503.3099 -2669.1161 5503.816 -2669.1161 5504.1957 -2668.9896 5504.7018 -2668.4834M5502.6013 -2670.584L5499.9439 -2667.9266M5502.6013 -2670.584L5498.9316 -2668.939M5500.5766 -2672.6086L5498.9316 -2668.939M5500.5766 -2672.6086L5497.9193 -2669.9513M5497.5903 -2671.5457L5497.5903 -2671.2926 5497.3372 -2671.2926 5497.3372 -2671.5457 5497.5903 -2671.5457M5498.6532 -2674.532L5495.9959 -2671.8747M5498.6532 -2674.532L5497.5144 -2675.6709 5497.0082 -2675.924 5496.7551 -2675.924 5496.3755 -2675.7974 5496.1224 -2675.5444 5495.9959 -2675.1647 5495.9959 -2674.9117 5496.249 -2674.4055M5497.3878 -2673.2666L5496.249 -2674.4055 5495.7428 -2674.6586 5495.4897 -2674.6586 5495.1101 -2674.532 5494.7305 -2674.1524 5494.6039 -2673.7728 5494.6039 -2673.5197 5494.857 -2673.0136 5495.9959 -2671.8747~~rep3601~~0~#@$PAD~ELLIPSE~5527.573~-2705.972~9.0551~9.0551~11~SW_ROT_A~A~2.8543~~135~rep3582~5.7287~5527.5801 -2705.9649 5527.5659 -2705.9791~Y~0~0~0.2~5527.573,-2705.972#@$PAD~ELLIPSE~5566.826~-2744.501~9.0551~9.0551~11~SW_R~S3~2.8543~~135~rep3583~5.7287~5566.8331 -2744.4939 5566.8189 -2744.5081~Y~0~0~0.2~5566.826,-2744.501#@$PAD~ELLIPSE~5578.406~-2706.696~9.0551~9.0551~11~SW_ROT_B~B~2.8543~~135~rep3584~5.7287~5578.4131 -2706.6889 5578.3989 -2706.7031~Y~0~0~0.2~5578.406,-2706.696#@$PAD~ELLIPSE~5538.43~-2617.333~9.0551~9.0551~11~SW_L~S5~2.8543~~135~rep3585~5.7287~5538.4371 -2617.3259 5538.4229 -2617.3401~Y~0~0~0.2~5538.43,-2617.333#@$PAD~ELLIPSE~5548.257~-2676.546~9.0551~9.0551~11~SW_SEL~S1~2.8543~~135~rep3586~5.7287~5548.2641 -2676.5389 5548.2499 -2676.5531~Y~0~0~0.2~5548.257,-2676.546#@$PAD~ELLIPSE~5577.683~-2655.862~9.0551~9.0551~11~GND~CA~2.8543~~135~rep3587~5.7287~5577.6901 -2655.8549 5577.6759 -2655.8691~Y~0~0~0.2~5577.683,-2655.862#@$PAD~ELLIPSE~5612.119~-2650.489~9.0551~9.0551~11~SW_U~S4~2.8543~~135~rep3588~5.7287~5612.1261 -2650.4819 5612.1119 -2650.4961~Y~0~0~0.2~5612.119,-2650.489#@$VIA~5540.1~-2693.445~6.2992~~3.1496~rep3591~0#@$VIA~5565.155~-2668.39~6.2992~~3.1496~rep3592~0","LIB~5629.7377~-2817.6345~package`A0603`value`22uF~90~~ggea26eb100929f0697~1~~~0~~yes~~#@$TEXT~P~5628.596~-2811.453~0.433~0~0~3~~2.7559~C27~M 5630.48 -2813.61L5630.35 -2813.86 L5630.1 -2814.11 L5629.85 -2814.23 L5629.35 -2814.23 L5629.1 -2814.11 L5628.85 -2813.86 L5628.72 -2813.61 L5628.6 -2813.23 L5628.6 -2812.61 L5628.72 -2812.23 L5628.85 -2811.98 L5629.1 -2811.73 L5629.35 -2811.6 L5629.85 -2811.6 L5630.1 -2811.73 L5630.35 -2811.98 L5630.48 -2812.23 M 5631.43 -2813.61L5631.43 -2813.73 L5631.55 -2813.98 L5631.68 -2814.11 L5631.93 -2814.23 L5632.43 -2814.23 L5632.68 -2814.11 L5632.81 -2813.98 L5632.93 -2813.73 L5632.93 -2813.48 L5632.81 -2813.23 L5632.55 -2812.86 L5631.3 -2811.6 L5633.06 -2811.6 M 5635.64 -2814.23L5634.38 -2811.6 M 5633.88 -2814.23L5635.64 -2814.23 ~none~rep3530~~0~#@$TEXT~N~5632.651~-2827.164~0.4724~0~0~3~~3.1496~22uF~M 5632.79 -2829.63L5632.79 -2829.77 L5632.94 -2830.06 L5633.08 -2830.2 L5633.37 -2830.34 L5633.94 -2830.34 L5634.23 -2830.2 L5634.37 -2830.06 L5634.51 -2829.77 L5634.51 -2829.48 L5634.37 -2829.2 L5634.08 -2828.77 L5632.65 -2827.34 L5634.66 -2827.34 M 5635.74 -2829.63L5635.74 -2829.77 L5635.89 -2830.06 L5636.03 -2830.2 L5636.32 -2830.34 L5636.89 -2830.34 L5637.18 -2830.2 L5637.32 -2830.06 L5637.46 -2829.77 L5637.46 -2829.48 L5637.32 -2829.2 L5637.03 -2828.77 L5635.6 -2827.34 L5637.6 -2827.34 M 5638.55 -2829.34L5638.55 -2827.91 L5638.69 -2827.48 L5638.98 -2827.34 L5639.41 -2827.34 L5639.69 -2827.48 L5640.12 -2827.91 M 5640.12 -2829.34L5640.12 -2827.34 M 5641.07 -2830.34L5641.07 -2827.34 M 5641.07 -2830.34L5642.93 -2830.34 M 5641.07 -2828.91L5642.21 -2828.91 ~none~rep3531~~0~#@$TRACK~1.2~3~~5626.2377 -2818.8786 5626.2377 -2823.8786 5633.2377 -2823.8786 5633.2377 -2818.8786~rep3534~0#@$TRACK~1.2~3~~5626.2377 -2815.8786 5626.2377 -2811.3786 5633.2377 -2811.3786 5633.2377 -2815.8786~rep3535~0#@$PAD~RECT~5629.738~-2821.099~4.3307~3.5433~1~RHPOUT~2~0~5627.9664 -2818.9336 5627.9664 -2823.2644 5631.5097 -2823.2644 5631.5097 -2818.9336~90~rep3532~0~~Y~0~0~0.2~5629.738,-2821.099#@$PAD~RECT~5629.738~-2814.17~4.3307~3.5433~1~U1-10~1~0~5627.9664 -2812.0046 5627.9664 -2816.3354 5631.5097 -2816.3354 5631.5097 -2812.0046~90~rep3533~0~~Y~0~0~0.2~5629.738,-2814.17","LIB~5856.2377~-2576.1778~package`IDC12-WS`value`PM254-2-6-WS-8.5~180~~gge9ed71a516f516319~1~~~0~~yes~~#@$TEXT~P~5825.8~-2595.4~1~0~0~3~~6~U?~M 5825.8 -2601.45L5825.8 -2597.36 L5826.07 -2596.55 L5826.62 -2596 L5827.44 -2595.73 L5827.98 -2595.73 L5828.8 -2596 L5829.35 -2596.55 L5829.62 -2597.36 L5829.62 -2601.45 M 5831.42 -2600.09L5831.42 -2600.36 L5831.69 -2600.91 L5831.96 -2601.18 L5832.51 -2601.45 L5833.6 -2601.45 L5834.15 -2601.18 L5834.42 -2600.91 L5834.69 -2600.36 L5834.69 -2599.82 L5834.42 -2599.27 L5834.15 -2599 L5833.05 -2598.45 L5833.05 -2597.64 M 5833.05 -2596.27L5832.78 -2596 L5833.05 -2595.73 L5833.33 -2596 L5833.05 -2596.27 ~none~rep3603~~0~#@$TEXT~N~5826.8~-2526.8~1~0~0~3~~6~PM254-2-6-WS-8.5~M 5826.8 -2532.85L5826.8 -2527.13 M 5826.8 -2532.85L5829.25 -2532.85 L5830.07 -2532.58 L5830.35 -2532.31 L5830.62 -2531.76 L5830.62 -2530.95 L5830.35 -2530.4 L5830.07 -2530.13 L5829.25 -2529.85 L5826.8 -2529.85 M 5832.42 -2532.85L5832.42 -2527.13 M 5832.42 -2532.85L5834.6 -2527.13 M 5836.78 -2532.85L5834.6 -2527.13 M 5836.78 -2532.85L5836.78 -2527.13 M 5838.85 -2531.49L5838.85 -2531.76 L5839.13 -2532.31 L5839.4 -2532.58 L5839.95 -2532.85 L5841.04 -2532.85 L5841.58 -2532.58 L5841.85 -2532.31 L5842.13 -2531.76 L5842.13 -2531.22 L5841.85 -2530.67 L5841.31 -2529.85 L5838.58 -2527.13 L5842.4 -2527.13 M 5847.47 -2532.85L5844.75 -2532.85 L5844.47 -2530.4 L5844.75 -2530.67 L5845.56 -2530.95 L5846.38 -2530.95 L5847.2 -2530.67 L5847.75 -2530.13 L5848.02 -2529.31 L5848.02 -2528.76 L5847.75 -2527.95 L5847.2 -2527.4 L5846.38 -2527.13 L5845.56 -2527.13 L5844.75 -2527.4 L5844.47 -2527.67 L5844.2 -2528.22 M 5852.55 -2532.85L5849.82 -2529.04 L5853.91 -2529.04 M 5852.55 -2532.85L5852.55 -2527.13 M 5855.71 -2529.58L5860.62 -2529.58 M 5862.69 -2531.49L5862.69 -2531.76 L5862.96 -2532.31 L5863.24 -2532.58 L5863.78 -2532.85 L5864.87 -2532.85 L5865.42 -2532.58 L5865.69 -2532.31 L5865.96 -2531.76 L5865.96 -2531.22 L5865.69 -2530.67 L5865.15 -2529.85 L5862.42 -2527.13 L5866.24 -2527.13 M 5868.04 -2529.58L5872.95 -2529.58 M 5878.02 -2532.04L5877.75 -2532.58 L5876.93 -2532.85 L5876.38 -2532.85 L5875.56 -2532.58 L5875.02 -2531.76 L5874.75 -2530.4 L5874.75 -2529.04 L5875.02 -2527.95 L5875.56 -2527.4 L5876.38 -2527.13 L5876.65 -2527.13 L5877.47 -2527.4 L5878.02 -2527.95 L5878.29 -2528.76 L5878.29 -2529.04 L5878.02 -2529.85 L5877.47 -2530.4 L5876.65 -2530.67 L5876.38 -2530.67 L5875.56 -2530.4 L5875.02 -2529.85 L5874.75 -2529.04 M 5880.09 -2529.58L5885 -2529.58 M 5886.8 -2532.85L5888.16 -2527.13 M 5889.53 -2532.85L5888.16 -2527.13 M 5889.53 -2532.85L5890.89 -2527.13 M 5892.25 -2532.85L5890.89 -2527.13 M 5897.87 -2532.04L5897.33 -2532.58 L5896.51 -2532.85 L5895.42 -2532.85 L5894.6 -2532.58 L5894.05 -2532.04 L5894.05 -2531.49 L5894.33 -2530.95 L5894.6 -2530.67 L5895.15 -2530.4 L5896.78 -2529.85 L5897.33 -2529.58 L5897.6 -2529.31 L5897.87 -2528.76 L5897.87 -2527.95 L5897.33 -2527.4 L5896.51 -2527.13 L5895.42 -2527.13 L5894.6 -2527.4 L5894.05 -2527.95 M 5899.67 -2529.58L5904.58 -2529.58 M 5907.75 -2532.85L5906.93 -2532.58 L5906.65 -2532.04 L5906.65 -2531.49 L5906.93 -2530.95 L5907.47 -2530.67 L5908.56 -2530.4 L5909.38 -2530.13 L5909.93 -2529.58 L5910.2 -2529.04 L5910.2 -2528.22 L5909.93 -2527.67 L5909.65 -2527.4 L5908.84 -2527.13 L5907.75 -2527.13 L5906.93 -2527.4 L5906.65 -2527.67 L5906.38 -2528.22 L5906.38 -2529.04 L5906.65 -2529.58 L5907.2 -2530.13 L5908.02 -2530.4 L5909.11 -2530.67 L5909.65 -2530.95 L5909.93 -2531.49 L5909.93 -2532.04 L5909.65 -2532.58 L5908.84 -2532.85 L5907.75 -2532.85 M 5912.27 -2528.49L5912 -2528.22 L5912.27 -2527.95 L5912.55 -2528.22 L5912.27 -2528.49 M 5917.62 -2532.85L5914.89 -2532.85 L5914.62 -2530.4 L5914.89 -2530.67 L5915.71 -2530.95 L5916.53 -2530.95 L5917.35 -2530.67 L5917.89 -2530.13 L5918.16 -2529.31 L5918.16 -2528.76 L5917.89 -2527.95 L5917.35 -2527.4 L5916.53 -2527.13 L5915.71 -2527.13 L5914.89 -2527.4 L5914.62 -2527.67 L5914.35 -2528.22 ~none~rep3604~~0~#@$TRACK~0.7874~3~~5887.0251 -2562.3196 5825.4503 -2562.3196 5825.4503 -2590.0361 5887.0251 -2590.0361 5887.0251 -2562.3196~rep3617~0#@$PAD~RECT~5881.238~-2585.036~2.7559~7.874~1~GND~13~0~5879.8601 -2588.973 5882.616 -2588.973 5882.616 -2581.099 5879.8601 -2581.099~0~rep3605~0~~Y~0~0~0.2~5881.238,-2585.036#@$PAD~RECT~5881.238~-2567.32~2.7559~7.874~1~VBAT~12~0~5879.8601 -2571.257 5882.616 -2571.257 5882.616 -2563.383 5879.8601 -2563.383~0~rep3606~0~~Y~0~0~0.2~5881.238,-2567.32#@$PAD~RECT~5871.238~-2585.036~2.7559~7.874~1~BAT+~11~0~5869.8601 -2588.973 5872.616 -2588.973 5872.616 -2581.099 5869.8601 -2581.099~0~rep3607~0~~Y~0~0~0.2~5871.238,-2585.036#@$PAD~RECT~5871.238~-2567.32~2.7559~7.874~1~+3V3~10~0~5869.8601 -2571.257 5872.616 -2571.257 5872.616 -2563.383 5869.8601 -2563.383~0~rep3608~0~~Y~0~0~0.2~5871.238,-2567.32#@$PAD~RECT~5861.238~-2585.036~2.7559~7.874~1~SCL~9~0~5859.8601 -2588.973 5862.616 -2588.973 5862.616 -2581.099 5859.8601 -2581.099~0~rep3609~0~~Y~0~0~0.2~5861.238,-2585.036#@$PAD~RECT~5861.238~-2567.32~2.7559~7.874~1~SDA~8~0~5859.8601 -2571.257 5862.616 -2571.257 5862.616 -2563.383 5859.8601 -2563.383~0~rep3610~0~~Y~0~0~0.2~5861.238,-2567.32#@$PAD~RECT~5851.238~-2585.036~2.7559~7.874~1~SDA~7~0~5849.8601 -2588.973 5852.616 -2588.973 5852.616 -2581.099 5849.8601 -2581.099~0~rep3611~0~~Y~0~0~0.2~5851.238,-2585.036#@$PAD~RECT~5851.238~-2567.32~2.7559~7.874~1~SCL~6~0~5849.8601 -2571.257 5852.616 -2571.257 5852.616 -2563.383 5849.8601 -2563.383~0~rep3612~0~~Y~0~0~0.2~5851.238,-2567.32#@$PAD~RECT~5841.238~-2585.036~2.7559~7.874~1~+3V3~5~0~5839.8601 -2588.973 5842.616 -2588.973 5842.616 -2581.099 5839.8601 -2581.099~0~rep3613~0~~Y~0~0~0.2~5841.238,-2585.036#@$PAD~RECT~5841.238~-2567.32~2.7559~7.874~1~BAT+~4~0~5839.8601 -2571.257 5842.616 -2571.257 5842.616 -2563.383 5839.8601 -2563.383~0~rep3614~0~~Y~0~0~0.2~5841.238,-2567.32#@$PAD~RECT~5831.238~-2585.036~2.7559~7.874~1~VBAT~3~0~5829.8601 -2588.973 5832.616 -2588.973 5832.616 -2581.099 5829.8601 -2581.099~0~rep3615~0~~Y~0~0~0.2~5831.238,-2585.036#@$PAD~RECT~5831.238~-2567.32~2.7559~7.874~1~GND~2~0~5829.8601 -2571.257 5832.616 -2571.257 5832.616 -2563.383 5829.8601 -2563.383~0~rep3616~0~~Y~0~0~0.2~5831.238,-2567.32","LIB~5724.8306~-2794.9555~package`TDFN-10`value`MAX17055ETB+~90~~gge2dbbb3175ebf36d7~1~~~0~~yes~~#@$TEXT~P~5733.216~-2788.853~0.4724~0~0~3~~3.1496~U9~M 5733.22 -2792.03L5733.22 -2789.88 L5733.36 -2789.45 L5733.65 -2789.17 L5734.08 -2789.02 L5734.36 -2789.02 L5734.79 -2789.17 L5735.08 -2789.45 L5735.22 -2789.88 L5735.22 -2792.03 M 5738.03 -2791.03L5737.88 -2790.6 L5737.6 -2790.31 L5737.17 -2790.17 L5737.02 -2790.17 L5736.6 -2790.31 L5736.31 -2790.6 L5736.17 -2791.03 L5736.17 -2791.17 L5736.31 -2791.6 L5736.6 -2791.89 L5737.02 -2792.03 L5737.17 -2792.03 L5737.6 -2791.89 L5737.88 -2791.6 L5738.03 -2791.03 L5738.03 -2790.31 L5737.88 -2789.6 L5737.6 -2789.17 L5737.17 -2789.02 L5736.88 -2789.02 L5736.45 -2789.17 L5736.31 -2789.45 ~none~rep3622~~0~#@$TEXT~N~5713.02~-2785.152~0.4724~0~0~3~~3.1496~MAX17055ETB+~M 5713.02 -2788.33L5713.02 -2785.32 M 5713.02 -2788.33L5714.16 -2785.32 M 5715.31 -2788.33L5714.16 -2785.32 M 5715.31 -2788.33L5715.31 -2785.32 M 5717.4 -2788.33L5716.26 -2785.32 M 5717.4 -2788.33L5718.55 -2785.32 M 5716.68 -2786.33L5718.12 -2786.33 M 5719.49 -2788.33L5721.49 -2785.32 M 5721.49 -2788.33L5719.49 -2785.32 M 5722.44 -2787.76L5722.73 -2787.9 L5723.16 -2788.33 L5723.16 -2785.32 M 5726.1 -2788.33L5724.67 -2785.32 M 5724.1 -2788.33L5726.1 -2788.33 M 5727.91 -2788.33L5727.48 -2788.19 L5727.19 -2787.76 L5727.05 -2787.04 L5727.05 -2786.61 L5727.19 -2785.9 L5727.48 -2785.47 L5727.91 -2785.32 L5728.19 -2785.32 L5728.62 -2785.47 L5728.91 -2785.9 L5729.05 -2786.61 L5729.05 -2787.04 L5728.91 -2787.76 L5728.62 -2788.19 L5728.19 -2788.33 L5727.91 -2788.33 M 5731.72 -2788.33L5730.29 -2788.33 L5730.14 -2787.04 L5730.29 -2787.19 L5730.71 -2787.33 L5731.14 -2787.33 L5731.57 -2787.19 L5731.86 -2786.9 L5732 -2786.47 L5732 -2786.18 L5731.86 -2785.75 L5731.57 -2785.47 L5731.14 -2785.32 L5730.71 -2785.32 L5730.29 -2785.47 L5730.14 -2785.61 L5730 -2785.9 M 5734.67 -2788.33L5733.23 -2788.33 L5733.09 -2787.04 L5733.23 -2787.19 L5733.66 -2787.33 L5734.09 -2787.33 L5734.52 -2787.19 L5734.81 -2786.9 L5734.95 -2786.47 L5734.95 -2786.18 L5734.81 -2785.75 L5734.52 -2785.47 L5734.09 -2785.32 L5733.66 -2785.32 L5733.23 -2785.47 L5733.09 -2785.61 L5732.95 -2785.9 M 5735.9 -2788.33L5735.9 -2785.32 M 5735.9 -2788.33L5737.76 -2788.33 M 5735.9 -2786.9L5737.04 -2786.9 M 5735.9 -2785.32L5737.76 -2785.32 M 5739.71 -2788.33L5739.71 -2785.32 M 5738.7 -2788.33L5740.71 -2788.33 M 5741.65 -2788.33L5741.65 -2785.32 M 5741.65 -2788.33L5742.94 -2788.33 L5743.37 -2788.19 L5743.51 -2788.04 L5743.66 -2787.76 L5743.66 -2787.47 L5743.51 -2787.19 L5743.37 -2787.04 L5742.94 -2786.9 M 5741.65 -2786.9L5742.94 -2786.9 L5743.37 -2786.76 L5743.51 -2786.61 L5743.66 -2786.33 L5743.66 -2785.9 L5743.51 -2785.61 L5743.37 -2785.47 L5742.94 -2785.32 L5741.65 -2785.32 M 5745.89 -2787.9L5745.89 -2785.32 M 5744.6 -2786.61L5747.18 -2786.61 ~none~rep3623~~0~#@$ARC~0.7874~3~~M 5729.9884 -2789.1678 A 0.394 0.394 0 1 0 5729.98801 -2789.15034~~rep3624~0#@$TRACK~0.6~3~~5719.6094 -2790.7185 5727.4786 -2790.7185~rep3636~0#@$TRACK~0.6~3~~5719.6094 -2799.1925 5727.4786 -2799.1925~rep3637~0#@$TRACK~0.6~3~~5722.1826 -2790.7185 5730.0519 -2790.7185~rep3638~0#@$TRACK~0.6~3~~5722.1826 -2799.1925 5730.0519 -2799.1925~rep3639~0#@$PAD~RECT~5729.624~-2791.805~0.7874~2.6968~1~~1~0~5728.2756 -2791.4113 5728.2756 -2792.1987 5730.9724 -2792.1987 5730.9724 -2791.4113~90~rep3625~0~~Y~0~0~0.2~5729.624,-2791.805#@$PAD~RECT~5729.624~-2793.38~0.7874~2.6968~1~~2~0~5728.2756 -2792.9863 5728.2756 -2793.7737 5730.9724 -2793.7737 5730.9724 -2792.9863~90~rep3626~0~~Y~0~0~0.2~5729.624,-2793.38#@$PAD~RECT~5729.624~-2794.955~0.7874~2.6968~1~SCL~3~0~5728.2756 -2794.5613 5728.2756 -2795.3487 5730.9724 -2795.3487 5730.9724 -2794.5613~90~rep3627~0~~Y~0~0~0.2~5729.624,-2794.955#@$PAD~RECT~5729.624~-2796.53~0.7874~2.6968~1~SDA~4~0~5728.2756 -2796.1363 5728.2756 -2796.9237 5730.9724 -2796.9237 5730.9724 -2796.1363~90~rep3628~0~~Y~0~0~0.2~5729.624,-2796.53#@$PAD~RECT~5729.624~-2798.105~0.7874~2.6968~1~GND~5~0~5728.2756 -2797.7113 5728.2756 -2798.4987 5730.9724 -2798.4987 5730.9724 -2797.7113~90~rep3629~0~~Y~0~0~0.2~5729.624,-2798.105#@$PAD~RECT~5720.038~-2798.105~0.7874~2.6968~1~AGND~6~0~5718.6896 -2797.7113 5718.6896 -2798.4987 5721.3864 -2798.4987 5721.3864 -2797.7113~90~rep3630~0~~Y~0~0~0.2~5720.038,-2798.105#@$PAD~RECT~5720.038~-2796.53~0.7874~2.6968~1~U9-7~7~0~5718.6896 -2796.1363 5718.6896 -2796.9237 5721.3864 -2796.9237 5721.3864 -2796.1363~90~rep3631~0~~Y~0~0~0.2~5720.038,-2796.53#@$PAD~RECT~5720.038~-2794.955~0.7874~2.6968~1~~8~0~5718.6896 -2794.5613 5718.6896 -2795.3487 5721.3864 -2795.3487 5721.3864 -2794.5613~90~rep3632~0~~Y~0~0~0.2~5720.038,-2794.955#@$PAD~RECT~5720.038~-2793.38~0.7874~2.6968~1~~9~0~5718.6896 -2792.9863 5718.6896 -2793.7737 5721.3864 -2793.7737 5721.3864 -2792.9863~90~rep3633~0~~Y~0~0~0.2~5720.038,-2793.38#@$PAD~RECT~5720.038~-2791.805~0.7874~2.6968~1~VBAT+~10~0~5718.6896 -2791.4113 5718.6896 -2792.1987 5721.3864 -2792.1987 5721.3864 -2791.4113~90~rep3634~0~~Y~0~0~0.2~5720.038,-2791.805#@$PAD~RECT~5724.831~-2794.955~5.5118~5.1181~1~AGND~11~0~5722.272 -2792.1991 5722.272 -2797.7109 5727.3901 -2797.7109 5727.3901 -2792.1991~90~rep3635~0~~Y~0~0~0.2~5724.831,-2794.955","LIB~5778.0094~-2803.2644~package`IDC10`value`~270~~gge4fe8deccf3ecd12b~1~~~0~~yes~~#@$TEXT~P~5814.191~-2808.816~0.4724~0~0~3~~3.937~JP1~M 5815.98 -2812.79L5815.98 -2809.93 L5815.8 -2809.39 L5815.62 -2809.21 L5815.26 -2809.03 L5814.91 -2809.03 L5814.55 -2809.21 L5814.37 -2809.39 L5814.19 -2809.93 L5814.19 -2810.28 M 5817.16 -2812.79L5817.16 -2809.03 M 5817.16 -2812.79L5818.77 -2812.79 L5819.31 -2812.61 L5819.49 -2812.43 L5819.67 -2812.07 L5819.67 -2811.54 L5819.49 -2811.18 L5819.31 -2811 L5818.77 -2810.82 L5817.16 -2810.82 M 5820.85 -2812.07L5821.21 -2812.25 L5821.74 -2812.79 L5821.74 -2809.03 ~none~rep3641~~0~#@$TRACK~1.1811~3~~5752.7732 -2793.3432 5752.7732 -2813.2644 5762.6748 -2813.2644 5803.0094 -2813.2644~rep3652~0#@$TRACK~1.1811~3~~5752.8519 -2793.2644 5762.6748 -2793.2644 5803.0094 -2793.2644~rep3653~0#@$TRACK~1.2~3~~5803.0094 -2803.2644 5793.0094 -2803.2644 5793.0094 -2813.2644~rep3655~0#@$TRACK~1.2~3~~5803.0094 -2793.2644 5803.0094 -2813.2644~rep3657~0#@$TEXT~N~5814.191~-2816.816~0.4724~0~1~3~~3.937~IDC10~M 5814.19 -2820.79L5814.19 -2817.03 M 5815.37 -2820.79L5815.37 -2817.03 M 5815.37 -2820.79L5816.62 -2820.79 L5817.16 -2820.61 L5817.52 -2820.25 L5817.7 -2819.89 L5817.88 -2819.36 L5817.88 -2818.46 L5817.7 -2817.93 L5817.52 -2817.57 L5817.16 -2817.21 L5816.62 -2817.03 L5815.37 -2817.03 M 5821.74 -2819.89L5821.56 -2820.25 L5821.21 -2820.61 L5820.85 -2820.79 L5820.13 -2820.79 L5819.77 -2820.61 L5819.42 -2820.25 L5819.24 -2819.89 L5819.06 -2819.36 L5819.06 -2818.46 L5819.24 -2817.93 L5819.42 -2817.57 L5819.77 -2817.21 L5820.13 -2817.03 L5820.85 -2817.03 L5821.21 -2817.21 L5821.56 -2817.57 L5821.74 -2817.93 M 5822.92 -2820.07L5823.28 -2820.25 L5823.82 -2820.79 L5823.82 -2817.03 M 5826.07 -2820.79L5825.54 -2820.61 L5825.18 -2820.07 L5825 -2819.18 L5825 -2818.64 L5825.18 -2817.75 L5825.54 -2817.21 L5826.07 -2817.03 L5826.43 -2817.03 L5826.97 -2817.21 L5827.33 -2817.75 L5827.51 -2818.64 L5827.51 -2819.18 L5827.33 -2820.07 L5826.97 -2820.61 L5826.43 -2820.79 L5826.07 -2820.79 ~none~rep3660~~0~#@$PAD~ELLIPSE~5758.009~-2808.264~6.2008~6.2008~11~H1_CPLD_TDI~9~1.9685~~270~rep3642~3.937~5758.009 -2808.264 5758.009 -2808.264~Y~0~0~0.2~5758.009,-2808.264#@$PAD~ELLIPSE~5758.009~-2798.264~6.2008~6.2008~11~GND~10~1.9685~~270~rep3643~3.937~5758.009 -2798.264 5758.009 -2798.264~Y~0~0~0.2~5758.009,-2798.264#@$PAD~ELLIPSE~5788.009~-2808.264~6.2008~6.2008~11~PP_CPLD_TDO~3~1.9685~~180~rep3644~3.937~5788.009 -2808.264 5788.009 -2808.264~Y~0~0~0.2~5788.009,-2808.264#@$PAD~ELLIPSE~5798.009~-2798.264~6.2~6.2~11~GND~2~1.9685~~180~rep3645~3.937~5798.009 -2798.264 5798.009 -2798.264~Y~0~0~0.2~5798.009,-2798.264#@$PAD~ELLIPSE~5788.009~-2798.264~6.2~6.2~11~+3V3~4~1.9685~~180~rep3646~3.937~5788.009 -2798.264 5788.009 -2798.264~Y~0~0~0.2~5788.009,-2798.264#@$PAD~ELLIPSE~5778.009~-2798.264~6.2~6.2~11~~6~1.9685~~180~rep3647~3.937~5778.009 -2798.264 5778.009 -2798.264~Y~0~0~0.2~5778.009,-2798.264#@$PAD~RECT~5798.009~-2808.264~6.2~6.2~11~H1_CPLD_TCK~1~1.9685~5801.109 -2805.164 5794.909 -2805.164 5794.909 -2811.364 5801.109 -2811.364~180~rep3648~3.937~5798.009 -2808.264 5798.009 -2808.264~Y~0~0~0.2~5798.009,-2808.264#@$PAD~ELLIPSE~5778.009~-2808.264~6.2~6.2~11~PP_CPLD_TMS~5~1.9685~~180~rep3649~3.937~5778.009 -2808.264 5778.009 -2808.264~Y~0~0~0.2~5778.009,-2808.264#@$PAD~ELLIPSE~5768.009~-2798.264~6.2~6.2~11~~8~1.9685~~180~rep3650~3.937~5768.009 -2798.264 5768.009 -2798.264~Y~0~0~0.2~5768.009,-2798.264#@$PAD~ELLIPSE~5768.009~-2808.264~6.2~6.2~11~~7~1.9685~~180~rep3651~3.937~5768.009 -2808.264 5768.009 -2808.264~Y~0~0~0.2~5768.009,-2808.264","LIB~5613.6578~-2801.6896~package`QFN-28`value`WM8731C~90~~gge1bdc0ab44f99f92d~1~ebb41fbe02434a1ba2ed369aca1e6d20~1541737920~0~~yes~7b22e035251048dfbb73ff4ba6551755~#@$TEXT~P~5596.996~-2789.444~0.433~0~0~3~~2.7559~U1~M 5597 -2792.22L5597 -2790.35 L5597.12 -2789.97 L5597.37 -2789.72 L5597.75 -2789.59 L5598 -2789.59 L5598.37 -2789.72 L5598.62 -2789.97 L5598.75 -2790.35 L5598.75 -2792.22 M 5599.58 -2791.72L5599.83 -2791.85 L5600.2 -2792.22 L5600.2 -2789.59 ~none~rep3662~~0~#@$TEXT~N~5625.106~-2792.278~0.4724~0~0~3~~3.1496~WM8731C~M 5625.11 -2795.46L5625.82 -2792.45 M 5626.54 -2795.46L5625.82 -2792.45 M 5626.54 -2795.46L5627.25 -2792.45 M 5627.97 -2795.46L5627.25 -2792.45 M 5628.91 -2795.46L5628.91 -2792.45 M 5628.91 -2795.46L5630.06 -2792.45 M 5631.2 -2795.46L5630.06 -2792.45 M 5631.2 -2795.46L5631.2 -2792.45 M 5632.87 -2795.46L5632.44 -2795.31 L5632.29 -2795.03 L5632.29 -2794.74 L5632.44 -2794.45 L5632.72 -2794.31 L5633.3 -2794.17 L5633.72 -2794.02 L5634.01 -2793.74 L5634.15 -2793.45 L5634.15 -2793.02 L5634.01 -2792.74 L5633.87 -2792.59 L5633.44 -2792.45 L5632.87 -2792.45 L5632.44 -2792.59 L5632.29 -2792.74 L5632.15 -2793.02 L5632.15 -2793.45 L5632.29 -2793.74 L5632.58 -2794.02 L5633.01 -2794.17 L5633.58 -2794.31 L5633.87 -2794.45 L5634.01 -2794.74 L5634.01 -2795.03 L5633.87 -2795.31 L5633.44 -2795.46 L5632.87 -2795.46 M 5637.1 -2795.46L5635.67 -2792.45 M 5635.1 -2795.46L5637.1 -2795.46 M 5638.33 -2795.46L5639.91 -2795.46 L5639.05 -2794.31 L5639.48 -2794.31 L5639.77 -2794.17 L5639.91 -2794.02 L5640.05 -2793.6 L5640.05 -2793.31 L5639.91 -2792.88 L5639.62 -2792.59 L5639.19 -2792.45 L5638.76 -2792.45 L5638.33 -2792.59 L5638.19 -2792.74 L5638.05 -2793.02 M 5641 -2794.88L5641.28 -2795.03 L5641.71 -2795.46 L5641.71 -2792.45 M 5644.81 -2794.74L5644.66 -2795.03 L5644.38 -2795.31 L5644.09 -2795.46 L5643.52 -2795.46 L5643.23 -2795.31 L5642.94 -2795.03 L5642.8 -2794.74 L5642.66 -2794.31 L5642.66 -2793.6 L5642.8 -2793.17 L5642.94 -2792.88 L5643.23 -2792.59 L5643.52 -2792.45 L5644.09 -2792.45 L5644.38 -2792.59 L5644.66 -2792.88 L5644.81 -2793.17 ~none~rep3663~~0~#@$ARC~0.7874~3~~M 5606.1422 -2788.654 A 0.7521 0.7521 0 1 0 5606.14202 -2788.63746~~rep3664~0#@$PAD~RECT~5613.658~-2801.69~11.811~11.811~1~~29~0~5607.7525 -2795.7845 5607.7525 -2807.5955 5619.5635 -2807.5955 5619.5635 -2795.7845~90~rep3665~0~~Y~0~0~0.2~5613.658,-2801.69#@$PAD~RECT~5603.815~-2795.784~3.937~1.1023~1~SCL~28~0~5605.7835 -2795.2329 5601.8465 -2795.2329 5601.8465 -2796.3351 5605.7835 -2796.3351~180~rep3666~0~~Y~0~0~0.2~5603.815,-2795.784#@$PAD~RECT~5603.815~-2797.753~3.937~1.1023~1~SDA~27~0~5605.7835 -2797.2019 5601.8465 -2797.2019 5601.8465 -2798.3041 5605.7835 -2798.3041~180~rep3667~0~~Y~0~0~0.2~5603.815,-2797.753#@$PAD~RECT~5603.815~-2799.721~3.937~1.1023~1~GND~26~0~5605.7835 -2799.1699 5601.8465 -2799.1699 5601.8465 -2800.2721 5605.7835 -2800.2721~180~rep3668~0~~Y~0~0~0.2~5603.815,-2799.721#@$PAD~RECT~5603.815~-2807.595~3.937~1.1023~1~MICIN~22~0~5605.7835 -2807.0438 5601.8465 -2807.0438 5601.8465 -2808.1461 5605.7835 -2808.1461~180~rep3669~0~~Y~0~0~0.2~5603.815,-2807.595#@$PAD~RECT~5603.815~-2805.627~3.937~1.1023~1~~23~0~5605.7835 -2805.0758 5601.8465 -2805.0758 5601.8465 -2806.1781 5605.7835 -2806.1781~180~rep3670~0~~Y~0~0~0.2~5603.815,-2805.627#@$PAD~RECT~5603.815~-2803.658~3.937~1.1023~1~~24~0~5605.7835 -2803.1068 5601.8465 -2803.1068 5601.8465 -2804.2091 5605.7835 -2804.2091~180~rep3671~0~~Y~0~0~0.2~5603.815,-2803.658#@$PAD~RECT~5603.815~-2801.69~3.937~1.1023~1~NETU1_21~25~0~5605.7835 -2801.1389 5601.8465 -2801.1389 5601.8465 -2802.2411 5605.7835 -2802.2411~180~rep3672~0~~Y~0~0~0.2~5603.815,-2801.69#@$PAD~RECT~5623.5~-2795.784~3.937~1.1023~1~NETR19_1~8~0~5625.4685 -2795.2329 5621.5315 -2795.2329 5621.5315 -2796.3351 5625.4685 -2796.3351~180~rep3673~0~~Y~0~0~0.2~5623.5,-2795.784#@$PAD~RECT~5623.5~-2797.753~3.937~1.1023~1~NETR20_1~9~0~5625.4685 -2797.2019 5621.5315 -2797.2019 5621.5315 -2798.3041 5625.4685 -2798.3041~180~rep3674~0~~Y~0~0~0.2~5623.5,-2797.753#@$PAD~RECT~5623.5~-2799.721~3.937~1.1023~1~I2S0_RX_SDA~10~0~5625.4685 -2799.1699 5621.5315 -2799.1699 5621.5315 -2800.2721 5625.4685 -2800.2721~180~rep3675~0~~Y~0~0~0.2~5623.5,-2799.721#@$PAD~RECT~5623.5~-2807.595~3.937~1.1023~1~U1-10~14~0~5625.4685 -2807.0438 5621.5315 -2807.0438 5621.5315 -2808.1461 5625.4685 -2808.1461~180~rep3676~0~~Y~0~0~0.2~5623.5,-2807.595#@$PAD~RECT~5623.5~-2805.627~3.937~1.1023~1~NETC9_1~13~0~5625.4685 -2805.0758 5621.5315 -2805.0758 5621.5315 -2806.1781 5625.4685 -2806.1781~180~rep3677~0~~Y~0~0~0.2~5623.5,-2805.627#@$PAD~RECT~5623.5~-2803.658~3.937~1.1023~1~+3V3~12~0~5625.4685 -2803.1068 5621.5315 -2803.1068 5621.5315 -2804.2091 5625.4685 -2804.2091~180~rep3678~0~~Y~0~0~0.2~5623.5,-2803.658#@$PAD~RECT~5623.5~-2801.69~3.937~1.1023~1~NETR20_1~11~0~5625.4685 -2801.1389 5621.5315 -2801.1389 5621.5315 -2802.2411 5625.4685 -2802.2411~180~rep3679~0~~Y~0~0~0.2~5623.5,-2801.69#@$PAD~RECT~5607.752~-2811.532~3.937~1.1023~1~MICBIAS~21~0~5607.2009 -2809.5635 5607.2009 -2813.5005 5608.3032 -2813.5005 5608.3032 -2809.5635~90~rep3680~0~~Y~0~0~0.2~5607.752,-2811.532#@$PAD~RECT~5609.721~-2811.532~3.937~1.1023~1~NETU1_16~20~0~5609.1699 -2809.5635 5609.1699 -2813.5005 5610.2721 -2813.5005 5610.2721 -2809.5635~90~rep3681~0~~Y~0~0~0.2~5609.721,-2811.532#@$PAD~RECT~5611.689~-2811.532~3.937~1.1023~1~GND~19~0~5611.1379 -2809.5635 5611.1379 -2813.5005 5612.2402 -2813.5005 5612.2402 -2809.5635~90~rep3682~0~~Y~0~0~0.2~5611.689,-2811.532#@$PAD~RECT~5619.563~-2811.532~3.937~1.1023~1~GND~15~0~5619.0119 -2809.5635 5619.0119 -2813.5005 5620.1141 -2813.5005 5620.1141 -2809.5635~90~rep3683~0~~Y~0~0~0.2~5619.563,-2811.532#@$PAD~RECT~5617.595~-2811.532~3.937~1.1023~1~~16~0~5617.0439 -2809.5635 5617.0439 -2813.5005 5618.1462 -2813.5005 5618.1462 -2809.5635~90~rep3684~0~~Y~0~0~0.2~5617.595,-2811.532#@$PAD~RECT~5615.626~-2811.532~3.937~1.1023~1~~17~0~5615.0749 -2809.5635 5615.0749 -2813.5005 5616.1771 -2813.5005 5616.1771 -2809.5635~90~rep3685~0~~Y~0~0~0.2~5615.626,-2811.532#@$PAD~RECT~5613.658~-2811.532~3.937~1.1023~1~+3V3~18~0~5613.1069 -2809.5635 5613.1069 -2813.5005 5614.2092 -2813.5005 5614.2092 -2809.5635~90~rep3686~0~~Y~0~0~0.2~5613.658,-2811.532#@$PAD~RECT~5607.752~-2791.847~3.937~1.1023~1~I2S0_MCLK_R~1~0~5607.2009 -2789.8785 5607.2009 -2793.8155 5608.3032 -2793.8155 5608.3032 -2789.8785~90~rep3687~0~~Y~0~0~0.2~5607.752,-2791.847#@$PAD~RECT~5609.721~-2791.847~3.937~1.1023~1~~2~0~5609.1699 -2789.8785 5609.1699 -2793.8155 5610.2721 -2793.8155 5610.2721 -2789.8785~90~rep3688~0~~Y~0~0~0.2~5609.721,-2791.847#@$PAD~RECT~5611.689~-2791.847~3.937~1.1023~1~+3V3~3~0~5611.1379 -2789.8785 5611.1379 -2793.8155 5612.2402 -2793.8155 5612.2402 -2789.8785~90~rep3689~0~~Y~0~0~0.2~5611.689,-2791.847#@$PAD~RECT~5619.563~-2791.847~3.937~1.1023~1~NETR18_1~7~0~5619.0119 -2789.8785 5619.0119 -2793.8155 5620.1141 -2793.8155 5620.1141 -2789.8785~90~rep3690~0~~Y~0~0~0.2~5619.563,-2791.847#@$PAD~RECT~5617.595~-2791.847~3.937~1.1023~1~~6~0~5617.0439 -2789.8785 5617.0439 -2793.8155 5618.1462 -2793.8155 5618.1462 -2789.8785~90~rep3691~0~~Y~0~0~0.2~5617.595,-2791.847#@$PAD~RECT~5615.626~-2791.847~3.937~1.1023~1~+3V3~5~0~5615.0749 -2789.8785 5615.0749 -2793.8155 5616.1771 -2793.8155 5616.1771 -2789.8785~90~rep3692~0~~Y~0~0~0.2~5615.626,-2791.847#@$PAD~RECT~5613.658~-2791.847~3.937~1.1023~1~GND~4~0~5613.1069 -2789.8785 5613.1069 -2793.8155 5614.2092 -2793.8155 5614.2092 -2789.8785~90~rep3693~0~~Y~0~0~0.2~5613.658,-2791.847#@$VIA~5615.981~-2804.17~2.3622~~0.7874~rep3694~0#@$VIA~5615.981~-2799.209~2.3622~~0.7874~rep3695~0#@$VIA~5611.059~-2804.17~2.3622~~0.7874~rep3696~0#@$VIA~5611.059~-2799.249~2.3622~~0.7874~rep3697~0#@$TRACK~0.5~3~~5606.9649 -2791.8471 5603.8153 -2791.8471 5603.8153 -2794.9967~rep3698~0#@$TRACK~0.5~3~~5603.8153 -2808.3825 5603.8153 -2811.5322 5606.9649 -2811.5322~rep3700~0#@$TRACK~0.5~3~~5620.3507 -2811.5322 5623.5003 -2811.5322 5623.5003 -2808.3825~rep3702~0#@$TRACK~0.5~3~~5620.3507 -2791.8471 5623.5003 -2791.8471 5623.5003 -2794.9967~rep3704~0","LIB~5487.7103~-2731.3853~package`A0402`value`1.5K~270~~ggeb304d0fb6138316f~1~~~0~~yes~~#@$TEXT~P~5485.664~-2724.502~0.433~0~0~3~~2.7559~R31~M 5485.66 -2727.28L5485.66 -2724.65 M 5485.66 -2727.28L5486.79 -2727.28 L5487.17 -2727.16 L5487.29 -2727.03 L5487.42 -2726.78 L5487.42 -2726.53 L5487.29 -2726.28 L5487.17 -2726.16 L5486.79 -2726.03 L5485.66 -2726.03 M 5486.54 -2726.03L5487.42 -2724.65 M 5488.5 -2727.28L5489.87 -2727.28 L5489.12 -2726.28 L5489.5 -2726.28 L5489.75 -2726.16 L5489.87 -2726.03 L5490 -2725.65 L5490 -2725.4 L5489.87 -2725.03 L5489.62 -2724.78 L5489.25 -2724.65 L5488.87 -2724.65 L5488.5 -2724.78 L5488.37 -2724.9 L5488.24 -2725.15 M 5490.83 -2726.78L5491.08 -2726.91 L5491.45 -2727.28 L5491.45 -2724.65 ~none~rep3707~~0~#@$TEXT~N~5489.347~-2737.241~0.4724~0~0~3~~3.1496~1.5K~M 5489.35 -2739.85L5489.63 -2739.99 L5490.06 -2740.42 L5490.06 -2737.41 M 5491.15 -2738.13L5491.01 -2737.99 L5491.15 -2737.84 L5491.29 -2737.99 L5491.15 -2738.13 M 5493.96 -2740.42L5492.53 -2740.42 L5492.38 -2739.13 L5492.53 -2739.27 L5492.96 -2739.42 L5493.38 -2739.42 L5493.81 -2739.27 L5494.1 -2738.99 L5494.24 -2738.56 L5494.24 -2738.27 L5494.1 -2737.84 L5493.81 -2737.56 L5493.38 -2737.41 L5492.96 -2737.41 L5492.53 -2737.56 L5492.38 -2737.7 L5492.24 -2737.99 M 5495.19 -2740.42L5495.19 -2737.41 M 5497.19 -2740.42L5495.19 -2738.41 M 5495.9 -2739.13L5497.19 -2737.41 ~none~rep3708~~0~#@$TRACK~0.7874~3~~5489.8603 -2734.9852 5489.8603 -2727.5352 5485.7603 -2727.5352 5485.7603 -2734.9852 5489.8603 -2734.9852~rep3711~0#@$PAD~RECT~5487.71~-2733.185~1.9685~2.3622~1~VIN~2~0~5488.8911 -2734.1693 5488.8911 -2732.2007 5486.5289 -2732.2007 5486.5289 -2734.1693~270~rep3709~0~~Y~0~0~0.2~5487.71,-2733.185#@$PAD~RECT~5487.71~-2729.585~1.9685~2.3622~1~LED1-1~1~0~5488.8911 -2730.5693 5488.8911 -2728.6007 5486.5289 -2728.6007 5486.5289 -2730.5693~270~rep3710~0~~Y~0~0~0.2~5487.71,-2729.585","LIB~5876.8208~-2779.0259~package`MICRO SD`value`MICROSD_DETSW~~~gge1fb9863844ab5169~1~~~0~~yes~~#@$TEXT~P~5869.476~-2791.136~0.433~0~0~3~~2.7559~J2~M 5870.73 -2793.92L5870.73 -2791.91 L5870.6 -2791.54 L5870.48 -2791.41 L5870.23 -2791.29 L5869.98 -2791.29 L5869.73 -2791.41 L5869.6 -2791.54 L5869.48 -2791.91 L5869.48 -2792.16 M 5871.68 -2793.29L5871.68 -2793.42 L5871.81 -2793.67 L5871.93 -2793.79 L5872.18 -2793.92 L5872.68 -2793.92 L5872.93 -2793.79 L5873.06 -2793.67 L5873.18 -2793.42 L5873.18 -2793.17 L5873.06 -2792.91 L5872.81 -2792.54 L5871.56 -2791.29 L5873.31 -2791.29 ~none~rep3716~~0~#@$TEXT~N~5896.685~-2809.203~0.4724~0~0~3~~3.1496~MICROSD_DETSW~M 5896.69 -2812.38L5896.69 -2809.37 M 5896.69 -2812.38L5897.83 -2809.37 M 5898.98 -2812.38L5897.83 -2809.37 M 5898.98 -2812.38L5898.98 -2809.37 M 5899.92 -2812.38L5899.92 -2809.37 M 5903.01 -2811.67L5902.87 -2811.95 L5902.58 -2812.24 L5902.3 -2812.38 L5901.72 -2812.38 L5901.44 -2812.24 L5901.15 -2811.95 L5901.01 -2811.67 L5900.87 -2811.24 L5900.87 -2810.52 L5901.01 -2810.09 L5901.15 -2809.8 L5901.44 -2809.52 L5901.72 -2809.37 L5902.3 -2809.37 L5902.58 -2809.52 L5902.87 -2809.8 L5903.01 -2810.09 M 5903.96 -2812.38L5903.96 -2809.37 M 5903.96 -2812.38L5905.25 -2812.38 L5905.68 -2812.24 L5905.82 -2812.09 L5905.96 -2811.81 L5905.96 -2811.52 L5905.82 -2811.24 L5905.68 -2811.09 L5905.25 -2810.95 L5903.96 -2810.95 M 5904.96 -2810.95L5905.96 -2809.37 M 5907.77 -2812.38L5907.48 -2812.24 L5907.19 -2811.95 L5907.05 -2811.67 L5906.91 -2811.24 L5906.91 -2810.52 L5907.05 -2810.09 L5907.19 -2809.8 L5907.48 -2809.52 L5907.77 -2809.37 L5908.34 -2809.37 L5908.63 -2809.52 L5908.91 -2809.8 L5909.05 -2810.09 L5909.2 -2810.52 L5909.2 -2811.24 L5909.05 -2811.67 L5908.91 -2811.95 L5908.63 -2812.24 L5908.34 -2812.38 L5907.77 -2812.38 M 5912.15 -2811.95L5911.86 -2812.24 L5911.43 -2812.38 L5910.86 -2812.38 L5910.43 -2812.24 L5910.14 -2811.95 L5910.14 -2811.67 L5910.29 -2811.38 L5910.43 -2811.24 L5910.72 -2811.09 L5911.57 -2810.81 L5911.86 -2810.66 L5912 -2810.52 L5912.15 -2810.23 L5912.15 -2809.8 L5911.86 -2809.52 L5911.43 -2809.37 L5910.86 -2809.37 L5910.43 -2809.52 L5910.14 -2809.8 M 5913.09 -2812.38L5913.09 -2809.37 M 5913.09 -2812.38L5914.09 -2812.38 L5914.52 -2812.24 L5914.81 -2811.95 L5914.95 -2811.67 L5915.1 -2811.24 L5915.1 -2810.52 L5914.95 -2810.09 L5914.81 -2809.8 L5914.52 -2809.52 L5914.09 -2809.37 L5913.09 -2809.37 M 5916.04 -2808.37L5918.62 -2808.37 M 5919.56 -2812.38L5919.56 -2809.37 M 5919.56 -2812.38L5920.57 -2812.38 L5920.99 -2812.24 L5921.28 -2811.95 L5921.42 -2811.67 L5921.57 -2811.24 L5921.57 -2810.52 L5921.42 -2810.09 L5921.28 -2809.8 L5920.99 -2809.52 L5920.57 -2809.37 L5919.56 -2809.37 M 5922.51 -2812.38L5922.51 -2809.37 M 5922.51 -2812.38L5924.37 -2812.38 M 5922.51 -2810.95L5923.66 -2810.95 M 5922.51 -2809.37L5924.37 -2809.37 M 5926.32 -2812.38L5926.32 -2809.37 M 5925.32 -2812.38L5927.32 -2812.38 M 5930.27 -2811.95L5929.99 -2812.24 L5929.56 -2812.38 L5928.98 -2812.38 L5928.55 -2812.24 L5928.27 -2811.95 L5928.27 -2811.67 L5928.41 -2811.38 L5928.55 -2811.24 L5928.84 -2811.09 L5929.7 -2810.81 L5929.99 -2810.66 L5930.13 -2810.52 L5930.27 -2810.23 L5930.27 -2809.8 L5929.99 -2809.52 L5929.56 -2809.37 L5928.98 -2809.37 L5928.55 -2809.52 L5928.27 -2809.8 M 5931.22 -2812.38L5931.93 -2809.37 M 5932.65 -2812.38L5931.93 -2809.37 M 5932.65 -2812.38L5933.36 -2809.37 M 5934.08 -2812.38L5933.36 -2809.37 ~none~rep3717~~0~#@$ARC~1~3~~M 5936.97076 -2745.02589 A 3.0235 3.0235 0 0 0 5939.22078 -2747.7759~~rep3718~0#@$ARC~1~3~~M 5939.22079 -2784.82592 A 3.3159 3.3159 0 0 0 5935.27083 -2788.37587~~rep3719~0#@$ARC~1~3~~M 5934.07081 -2786.62589 A 6.1182 6.1182 0 0 0 5931.32077 -2781.32583~~rep3720~0#@$TRACK~1~3~~5877.0208 -2781.4259 5877.0208 -2793.3759~rep3734~0#@$TRACK~1~3~~5882.8708 -2799.4259 5934.0708 -2799.4259 5934.0708 -2786.6259 5935.2708 -2788.3759 5935.3708 -2788.4759~rep3735~0#@$TRACK~1~3~~5882.5708 -2741.1259 5931.3208 -2741.1259 5931.3208 -2781.3259~rep3737~0#@$TRACK~1~3~~5939.2208 -2747.7759 5939.2208 -2784.8259~rep3739~0#@$PAD~RECT~5879.221~-2739.676~4.7244~5.9055~1~GND~10~0~5876.2682 -2737.3138 5876.2682 -2742.0382 5882.1738 -2742.0382 5882.1738 -2737.3138~90~rep3721~0~~Y~0~0~0.2~5879.221,-2739.676#@$PAD~RECT~5876.821~-2766.051~2.7559~5.9055~1~NETR23_1~4~0~5873.8682 -2764.673 5873.8682 -2767.4289 5879.7738 -2767.4289 5879.7738 -2764.673~90~rep3722~0~~Y~0~0~0.2~5876.821,-2766.051#@$PAD~RECT~5876.821~-2761.726~2.7559~5.9055~1~NETJ2_5~5~0~5873.8682 -2760.348 5873.8682 -2763.1039 5879.7738 -2763.1039 5879.7738 -2760.348~90~rep3723~0~~Y~0~0~0.2~5876.821,-2761.726#@$PAD~RECT~5876.821~-2757.401~2.7559~5.9055~1~GND~6~0~5873.8682 -2756.023 5873.8682 -2758.7789 5879.7738 -2758.7789 5879.7738 -2756.023~90~rep3724~0~~Y~0~0~0.2~5876.821,-2757.401#@$PAD~RECT~5876.821~-2753.076~2.7559~5.9055~1~SD_DAT0~7~0~5873.8682 -2751.698 5873.8682 -2754.4539 5879.7738 -2754.4539 5879.7738 -2751.698~90~rep3725~0~~Y~0~0~0.2~5876.821,-2753.076#@$PAD~RECT~5876.821~-2748.751~2.7559~5.9055~1~SD_DAT1~8~0~5873.8682 -2747.373 5873.8682 -2750.129 5879.7738 -2750.129 5879.7738 -2747.373~90~rep3726~0~~Y~0~0~0.2~5876.821,-2748.751#@$PAD~RECT~5876.821~-2744.426~2.7559~5.9055~1~SD_CD~9~0~5873.8682 -2743.048 5873.8682 -2745.8039 5879.7738 -2745.8039 5879.7738 -2743.048~90~rep3727~0~~Y~0~0~0.2~5876.821,-2744.426#@$PAD~RECT~5876.821~-2779.026~2.7559~5.9055~1~SD_DAT2~1~0~5873.8682 -2777.648 5873.8682 -2780.4039 5879.7738 -2780.4039 5879.7738 -2777.648~90~rep3728~0~~Y~0~0~0.2~5876.821,-2779.026#@$PAD~RECT~5876.821~-2774.701~2.7559~5.9055~1~SD_DAT3~2~0~5873.8682 -2773.323 5873.8682 -2776.0789 5879.7738 -2776.0789 5879.7738 -2773.323~90~rep3729~0~~Y~0~0~0.2~5876.821,-2774.701#@$PAD~RECT~5876.821~-2770.376~2.7559~5.9055~1~SD_CMD~3~0~5873.8682 -2768.998 5873.8682 -2771.754 5879.7738 -2771.754 5879.7738 -2768.998~90~rep3730~0~~Y~0~0~0.2~5876.821,-2770.376#@$PAD~RECT~5879.121~-2797.526~5.7087~6.8898~1~GND~10~0~5881.9754 -2794.0811 5876.2667 -2794.0811 5876.2667 -2800.9709 5881.9754 -2800.9709~180~rep3731~0~~Y~0~0~0.2~5879.121,-2797.526#@$PAD~RECT~5916.921~-2801.076~5.1181~9.0551~1~GND~10~0~5921.4486 -2803.635 5921.4486 -2798.5169 5912.3935 -2798.5169 5912.3935 -2803.635~270~rep3732~0~~Y~0~0~0.2~5916.921,-2801.076#@$PAD~RECT~5917.121~-2739.726~5.1181~9.0551~1~GND~10~0~5921.6486 -2742.285 5921.6486 -2737.167 5912.5935 -2737.167 5912.5935 -2742.285~270~rep3733~0~~Y~0~0~0.2~5917.121,-2739.726","LIB~5771.0854~-2670.4442~package`TQFP-100`value`AG256SL100~270~~gge66797bcd97f4f6c2~1~b4499d9161784b3c8b41d350e28dbe09~1541682124~0~~yes~adb2b81a121a489788426df00969894d~#@$TEXT~P~5796.563~-2713.263~0.433~0~0~3~~2.7559~U3~M 5796.56 -2716.04L5796.56 -2714.16 L5796.69 -2713.79 L5796.94 -2713.54 L5797.31 -2713.41 L5797.57 -2713.41 L5797.94 -2713.54 L5798.19 -2713.79 L5798.32 -2714.16 L5798.32 -2716.04 M 5799.39 -2716.04L5800.77 -2716.04 L5800.02 -2715.04 L5800.4 -2715.04 L5800.65 -2714.92 L5800.77 -2714.79 L5800.9 -2714.42 L5800.9 -2714.16 L5800.77 -2713.79 L5800.52 -2713.54 L5800.15 -2713.41 L5799.77 -2713.41 L5799.39 -2713.54 L5799.27 -2713.66 L5799.14 -2713.91 ~none~rep3743~~0~#@$TEXT~N~5754.91~-2708.814~0.4724~0~0~3~~3.1496~AG256SL100~M 5756.05 -2711.99L5754.91 -2708.99 M 5756.05 -2711.99L5757.2 -2708.99 M 5755.34 -2709.99L5756.77 -2709.99 M 5760.29 -2711.28L5760.15 -2711.56 L5759.86 -2711.85 L5759.58 -2711.99 L5759 -2711.99 L5758.72 -2711.85 L5758.43 -2711.56 L5758.29 -2711.28 L5758.15 -2710.85 L5758.15 -2710.13 L5758.29 -2709.7 L5758.43 -2709.42 L5758.72 -2709.13 L5759 -2708.99 L5759.58 -2708.99 L5759.86 -2709.13 L5760.15 -2709.42 L5760.29 -2709.7 L5760.29 -2710.13 M 5759.58 -2710.13L5760.29 -2710.13 M 5761.38 -2711.28L5761.38 -2711.42 L5761.52 -2711.71 L5761.67 -2711.85 L5761.95 -2711.99 L5762.53 -2711.99 L5762.81 -2711.85 L5762.96 -2711.71 L5763.1 -2711.42 L5763.1 -2711.13 L5762.96 -2710.85 L5762.67 -2710.42 L5761.24 -2708.99 L5763.24 -2708.99 M 5765.9 -2711.99L5764.47 -2711.99 L5764.33 -2710.7 L5764.47 -2710.85 L5764.9 -2710.99 L5765.33 -2710.99 L5765.76 -2710.85 L5766.05 -2710.56 L5766.19 -2710.13 L5766.19 -2709.84 L5766.05 -2709.42 L5765.76 -2709.13 L5765.33 -2708.99 L5764.9 -2708.99 L5764.47 -2709.13 L5764.33 -2709.27 L5764.19 -2709.56 M 5768.85 -2711.56L5768.71 -2711.85 L5768.28 -2711.99 L5767.99 -2711.99 L5767.57 -2711.85 L5767.28 -2711.42 L5767.14 -2710.7 L5767.14 -2709.99 L5767.28 -2709.42 L5767.57 -2709.13 L5767.99 -2708.99 L5768.14 -2708.99 L5768.57 -2709.13 L5768.85 -2709.42 L5769 -2709.84 L5769 -2709.99 L5768.85 -2710.42 L5768.57 -2710.7 L5768.14 -2710.85 L5767.99 -2710.85 L5767.57 -2710.7 L5767.28 -2710.42 L5767.14 -2709.99 M 5771.95 -2711.56L5771.66 -2711.85 L5771.23 -2711.99 L5770.66 -2711.99 L5770.23 -2711.85 L5769.94 -2711.56 L5769.94 -2711.28 L5770.08 -2710.99 L5770.23 -2710.85 L5770.51 -2710.7 L5771.37 -2710.42 L5771.66 -2710.27 L5771.8 -2710.13 L5771.95 -2709.84 L5771.95 -2709.42 L5771.66 -2709.13 L5771.23 -2708.99 L5770.66 -2708.99 L5770.23 -2709.13 L5769.94 -2709.42 M 5772.89 -2711.99L5772.89 -2708.99 M 5772.89 -2708.99L5774.61 -2708.99 M 5775.55 -2711.42L5775.84 -2711.56 L5776.27 -2711.99 L5776.27 -2708.99 M 5778.07 -2711.99L5777.64 -2711.85 L5777.36 -2711.42 L5777.21 -2710.7 L5777.21 -2710.27 L5777.36 -2709.56 L5777.64 -2709.13 L5778.07 -2708.99 L5778.36 -2708.99 L5778.79 -2709.13 L5779.08 -2709.56 L5779.22 -2710.27 L5779.22 -2710.7 L5779.08 -2711.42 L5778.79 -2711.85 L5778.36 -2711.99 L5778.07 -2711.99 M 5781.02 -2711.99L5780.59 -2711.85 L5780.31 -2711.42 L5780.16 -2710.7 L5780.16 -2710.27 L5780.31 -2709.56 L5780.59 -2709.13 L5781.02 -2708.99 L5781.31 -2708.99 L5781.74 -2709.13 L5782.02 -2709.56 L5782.17 -2710.27 L5782.17 -2710.7 L5782.02 -2711.42 L5781.74 -2711.85 L5781.31 -2711.99 L5781.02 -2711.99 ~none~rep3744~~0~#@$ARC~1~3~~M 5792.31918 -2690.5466 A 2.1394 2.1394 0 1 0 5791.97124 -2690.54265~~rep3745~0#@$TRACK~0.3937~3~~5798.6641 -2694.0859 5798.6641 -2642.9048 5743.546 -2642.9048 5743.546 -2698.0229 5794.7271 -2698.0229 5798.6641 -2694.0859~rep3846~0#@$PAD~RECT~5739.176~-2664.558~1.0629~6.2992~1~MCU_IO_STBX~41~0~5742.3256 -2665.0895 5742.3256 -2664.0265 5736.0264 -2664.0265 5736.0264 -2665.0895~270~rep3746~0~~Y~0~0~0.2~5739.176,-2664.558#@$PAD~RECT~5739.176~-2666.527~1.0629~6.2992~1~MCU_LCD_TE~40~0~5742.3256 -2667.0585 5742.3256 -2665.9955 5736.0264 -2665.9955 5736.0264 -2667.0585~270~rep3747~0~~Y~0~0~0.2~5739.176,-2666.527#@$PAD~RECT~5739.176~-2668.495~1.0629~6.2992~1~MCU_LCD_RD~39~0~5742.3256 -2669.0265 5742.3256 -2667.9635 5736.0264 -2667.9635 5736.0264 -2669.0265~270~rep3748~0~~Y~0~0~0.2~5739.176,-2668.495#@$PAD~RECT~5739.176~-2670.464~1.0629~6.2992~1~RESET#~38~0~5742.3256 -2670.9955 5742.3256 -2669.9325 5736.0264 -2669.9325 5736.0264 -2670.9955~270~rep3749~0~~Y~0~0~0.2~5739.176,-2670.464#@$PAD~RECT~5739.176~-2672.432~1.0629~6.2992~1~SW_L~37~0~5742.3256 -2672.9635 5742.3256 -2671.9005 5736.0264 -2671.9005 5736.0264 -2672.9635~270~rep3750~0~~Y~0~0~0.2~5739.176,-2672.432#@$PAD~RECT~5739.176~-2674.401~1.0629~6.2992~1~MCU_D1~36~0~5742.3256 -2674.9325 5742.3256 -2673.8695 5736.0264 -2673.8695 5736.0264 -2674.9325~270~rep3751~0~~Y~0~0~0.2~5739.176,-2674.401#@$PAD~RECT~5739.176~-2676.369~1.0629~6.2992~1~MCU_D0~35~0~5742.3256 -2676.9005 5742.3256 -2675.8375 5736.0264 -2675.8375 5736.0264 -2676.9005~270~rep3752~0~~Y~0~0~0.2~5739.176,-2676.369#@$PAD~RECT~5739.176~-2678.338~1.0629~6.2992~1~SW_U~34~0~5742.3256 -2678.8695 5742.3256 -2677.8065 5736.0264 -2677.8065 5736.0264 -2678.8695~270~rep3753~0~~Y~0~0~0.2~5739.176,-2678.338#@$PAD~RECT~5739.176~-2680.306~1.0629~6.2992~1~MCU_D2~33~0~5742.3256 -2680.8375 5742.3256 -2679.7745 5736.0264 -2679.7745 5736.0264 -2680.8375~270~rep3754~0~~Y~0~0~0.2~5739.176,-2680.306#@$PAD~RECT~5739.176~-2682.275~1.0629~6.2992~1~GND~32~0~5742.3256 -2682.8065 5742.3256 -2681.7435 5736.0264 -2681.7435 5736.0264 -2682.8065~270~rep3755~0~~Y~0~0~0.2~5739.176,-2682.275#@$PAD~RECT~5739.176~-2684.243~1.0629~6.2992~1~+3V3~31~0~5742.3256 -2684.7745 5742.3256 -2683.7115 5736.0264 -2683.7115 5736.0264 -2684.7745~270~rep3756~0~~Y~0~0~0.2~5739.176,-2684.243#@$PAD~RECT~5739.176~-2686.212~1.0629~6.2992~1~MCU_D3~30~0~5742.3256 -2686.7435 5742.3256 -2685.6805 5736.0264 -2685.6805 5736.0264 -2686.7435~270~rep3757~0~~Y~0~0~0.2~5739.176,-2686.212#@$PAD~RECT~5739.176~-2688.18~1.0629~6.2992~1~MCU_D5~29~0~5742.3256 -2688.7115 5742.3256 -2687.6485 5736.0264 -2687.6485 5736.0264 -2688.7115~270~rep3758~0~~Y~0~0~0.2~5739.176,-2688.18#@$PAD~RECT~5739.176~-2690.149~1.0629~6.2992~1~MCU_D4~28~0~5742.3256 -2690.6805 5742.3256 -2689.6175 5736.0264 -2689.6175 5736.0264 -2690.6805~270~rep3759~0~~Y~0~0~0.2~5739.176,-2690.149#@$PAD~RECT~5739.176~-2692.117~1.0629~6.2992~1~MCU_D6~27~0~5742.3256 -2692.6485 5742.3256 -2691.5855 5736.0264 -2691.5855 5736.0264 -2692.6485~270~rep3760~0~~Y~0~0~0.2~5739.176,-2692.117#@$PAD~RECT~5739.176~-2694.086~1.0629~6.2992~1~MCU_D7~26~0~5742.3256 -2694.6175 5742.3256 -2693.5545 5736.0264 -2693.5545 5736.0264 -2694.6175~270~rep3761~0~~Y~0~0~0.2~5739.176,-2694.086#@$PAD~RECT~5778.979~-2702.314~1.0629~6.2992~1~+3V3~9~0~5778.4476 -2705.4636 5779.5105 -2705.4636 5779.5105 -2699.1644 5778.4476 -2699.1644~0~rep3762~0~~Y~0~0~0.2~5778.979,-2702.314#@$PAD~RECT~5777.011~-2702.314~1.0629~6.2992~1~GND~10~0~5776.4796 -2705.4636 5777.5425 -2705.4636 5777.5425 -2699.1644 5776.4796 -2699.1644~0~rep3763~0~~Y~0~0~0.2~5777.011,-2702.314#@$PAD~RECT~5775.042~-2702.314~1.0629~6.2992~1~GND~11~0~5774.5106 -2705.4636 5775.5735 -2705.4636 5775.5735 -2699.1644 5774.5106 -2699.1644~0~rep3764~0~~Y~0~0~0.2~5775.042,-2702.314#@$PAD~RECT~5773.074~-2702.314~1.0629~6.2992~1~SW_R~12~0~5772.5425 -2705.4636 5773.6055 -2705.4636 5773.6055 -2699.1644 5772.5425 -2699.1644~0~rep3765~0~~Y~0~0~0.2~5773.074,-2702.314#@$PAD~RECT~5771.105~-2702.314~1.0629~6.2992~1~+3V3~13~0~5770.5735 -2705.4636 5771.6365 -2705.4636 5771.6365 -2699.1644 5770.5735 -2699.1644~0~rep3766~0~~Y~0~0~0.2~5771.105,-2702.314#@$PAD~RECT~5769.137~-2702.314~1.0629~6.2992~1~SW_D~14~0~5768.6055 -2705.4636 5769.6685 -2705.4636 5769.6685 -2699.1644 5768.6055 -2699.1644~0~rep3767~0~~Y~0~0~0.2~5769.137,-2702.314#@$PAD~RECT~5767.168~-2702.314~1.0629~6.2992~1~SW_ROT_A~15~0~5766.6365 -2705.4636 5767.6995 -2705.4636 5767.6995 -2699.1644 5766.6365 -2699.1644~0~rep3768~0~~Y~0~0~0.2~5767.168,-2702.314#@$PAD~RECT~5765.2~-2702.314~1.0629~6.2992~1~SW_ROT_B~16~0~5764.6685 -2705.4636 5765.7315 -2705.4636 5765.7315 -2699.1644 5764.6685 -2699.1644~0~rep3769~0~~Y~0~0~0.2~5765.2,-2702.314#@$PAD~RECT~5763.231~-2702.314~1.0629~6.2992~1~SW_SEL~17~0~5762.6995 -2705.4636 5763.7625 -2705.4636 5763.7625 -2699.1644 5762.6995 -2699.1644~0~rep3770~0~~Y~0~0~0.2~5763.231,-2702.314#@$PAD~RECT~5761.263~-2702.314~1.0629~6.2992~1~~18~0~5760.7315 -2705.4636 5761.7945 -2705.4636 5761.7945 -2699.1644 5760.7315 -2699.1644~0~rep3771~0~~Y~0~0~0.2~5761.263,-2702.314#@$PAD~RECT~5759.294~-2702.314~1.0629~6.2992~1~~19~0~5758.7625 -2705.4636 5759.8255 -2705.4636 5759.8255 -2699.1644 5758.7625 -2699.1644~0~rep3772~0~~Y~0~0~0.2~5759.294,-2702.314#@$PAD~RECT~5757.326~-2702.314~1.0629~6.2992~1~~20~0~5756.7945 -2705.4636 5757.8575 -2705.4636 5757.8575 -2699.1644 5756.7945 -2699.1644~0~rep3773~0~~Y~0~0~0.2~5757.326,-2702.314#@$PAD~RECT~5755.357~-2702.314~1.0629~6.2992~1~~21~0~5754.8255 -2705.4636 5755.8885 -2705.4636 5755.8885 -2699.1644 5754.8255 -2699.1644~0~rep3774~0~~Y~0~0~0.2~5755.357,-2702.314#@$PAD~RECT~5753.389~-2702.314~1.0629~6.2992~1~PP_CPLD_TMS~22~0~5752.8576 -2705.4636 5753.9205 -2705.4636 5753.9205 -2699.1644 5752.8576 -2699.1644~0~rep3775~0~~Y~0~0~0.2~5753.389,-2702.314#@$PAD~RECT~5751.42~-2702.314~1.0629~6.2992~1~H1_CPLD_TDI~23~0~5750.8886 -2705.4636 5751.9515 -2705.4636 5751.9515 -2699.1644 5750.8886 -2699.1644~0~rep3776~0~~Y~0~0~0.2~5751.42,-2702.314#@$PAD~RECT~5749.452~-2702.314~1.0629~6.2992~1~H1_CPLD_TCK~24~0~5748.9206 -2705.4636 5749.9835 -2705.4636 5749.9835 -2699.1644 5748.9206 -2699.1644~0~rep3777~0~~Y~0~0~0.2~5749.452,-2702.314#@$PAD~RECT~5747.483~-2638.574~1.0629~6.2992~1~~51~0~5746.9516 -2641.7236 5748.0145 -2641.7236 5748.0145 -2635.4244 5746.9516 -2635.4244~0~rep3778~0~~Y~0~0~0.2~5747.483,-2638.574#@$PAD~RECT~5749.452~-2638.574~1.0629~6.2992~1~~52~0~5748.9206 -2641.7236 5749.9835 -2641.7236 5749.9835 -2635.4244 5748.9206 -2635.4244~0~rep3779~0~~Y~0~0~0.2~5749.452,-2638.574#@$PAD~RECT~5751.42~-2638.574~1.0629~6.2992~1~~53~0~5750.8886 -2641.7236 5751.9515 -2641.7236 5751.9515 -2635.4244 5750.8886 -2635.4244~0~rep3780~0~~Y~0~0~0.2~5751.42,-2638.574#@$PAD~RECT~5753.389~-2638.574~1.0629~6.2992~1~~54~0~5752.8576 -2641.7236 5753.9205 -2641.7236 5753.9205 -2635.4244 5752.8576 -2635.4244~0~rep3781~0~~Y~0~0~0.2~5753.389,-2638.574#@$PAD~RECT~5755.357~-2638.574~1.0629~6.2992~1~~55~0~5754.8255 -2641.7236 5755.8885 -2641.7236 5755.8885 -2635.4244 5754.8255 -2635.4244~0~rep3782~0~~Y~0~0~0.2~5755.357,-2638.574#@$PAD~RECT~5757.326~-2638.574~1.0629~6.2992~1~~56~0~5756.7945 -2641.7236 5757.8575 -2641.7236 5757.8575 -2635.4244 5756.7945 -2635.4244~0~rep3783~0~~Y~0~0~0.2~5757.326,-2638.574#@$PAD~RECT~5759.294~-2638.574~1.0629~6.2992~1~~57~0~5758.7625 -2641.7236 5759.8255 -2641.7236 5759.8255 -2635.4244 5758.7625 -2635.4244~0~rep3784~0~~Y~0~0~0.2~5759.294,-2638.574#@$PAD~RECT~5761.263~-2638.574~1.0629~6.2992~1~REF_EN~58~0~5760.7315 -2641.7236 5761.7945 -2641.7236 5761.7945 -2635.4244 5760.7315 -2635.4244~0~rep3785~0~~Y~0~0~0.2~5761.263,-2638.574#@$PAD~RECT~5763.231~-2638.574~1.0629~6.2992~1~+3V3~59~0~5762.6995 -2641.7236 5763.7625 -2641.7236 5763.7625 -2635.4244 5762.6995 -2635.4244~0~rep3786~0~~Y~0~0~0.2~5763.231,-2638.574#@$PAD~RECT~5765.2~-2638.574~1.0629~6.2992~1~GND~60~0~5764.6685 -2641.7236 5765.7315 -2641.7236 5765.7315 -2635.4244 5764.6685 -2635.4244~0~rep3787~0~~Y~0~0~0.2~5765.2,-2638.574#@$PAD~RECT~5767.168~-2638.574~1.0629~6.2992~1~~61~0~5766.6365 -2641.7236 5767.6995 -2641.7236 5767.6995 -2635.4244 5766.6365 -2635.4244~0~rep3788~0~~Y~0~0~0.2~5767.168,-2638.574#@$PAD~RECT~5769.137~-2638.574~1.0629~6.2992~1~~62~0~5768.6055 -2641.7236 5769.6685 -2641.7236 5769.6685 -2635.4244 5768.6055 -2635.4244~0~rep3789~0~~Y~0~0~0.2~5769.137,-2638.574#@$PAD~RECT~5771.105~-2638.574~1.0629~6.2992~1~+3V3~63~0~5770.5735 -2641.7236 5771.6365 -2641.7236 5771.6365 -2635.4244 5770.5735 -2635.4244~0~rep3790~0~~Y~0~0~0.2~5771.105,-2638.574#@$PAD~RECT~5773.074~-2638.574~1.0629~6.2992~1~~64~0~5772.5425 -2641.7236 5773.6055 -2641.7236 5773.6055 -2635.4244 5772.5425 -2635.4244~0~rep3791~0~~Y~0~0~0.2~5773.074,-2638.574#@$PAD~RECT~5775.042~-2638.574~1.0629~6.2992~1~GND~65~0~5774.5106 -2641.7236 5775.5735 -2641.7236 5775.5735 -2635.4244 5774.5106 -2635.4244~0~rep3792~0~~Y~0~0~0.2~5775.042,-2638.574#@$PAD~RECT~5777.011~-2638.574~1.0629~6.2992~1~~66~0~5776.4796 -2641.7236 5777.5425 -2641.7236 5777.5425 -2635.4244 5776.4796 -2635.4244~0~rep3793~0~~Y~0~0~0.2~5777.011,-2638.574#@$PAD~RECT~5739.176~-2646.842~1.0629~6.2992~1~~50~0~5736.0264 -2646.3105 5736.0264 -2647.3735 5742.3256 -2647.3735 5742.3256 -2646.3105~90~rep3794~0~~Y~0~0~0.2~5739.176,-2646.842#@$PAD~RECT~5780.948~-2702.314~1.0629~6.2992~1~TP_U~8~0~5780.4166 -2705.4636 5781.4795 -2705.4636 5781.4795 -2699.1644 5780.4166 -2699.1644~0~rep3795~0~~Y~0~0~0.2~5780.948,-2702.314#@$PAD~RECT~5782.916~-2702.314~1.0629~6.2992~1~TP_L~7~0~5782.3846 -2705.4636 5783.4475 -2705.4636 5783.4475 -2699.1644 5782.3846 -2699.1644~0~rep3796~0~~Y~0~0~0.2~5782.916,-2702.314#@$PAD~RECT~5784.885~-2702.314~1.0629~6.2992~1~TP_D~6~0~5784.3536 -2705.4636 5785.4165 -2705.4636 5785.4165 -2699.1644 5784.3536 -2699.1644~0~rep3797~0~~Y~0~0~0.2~5784.885,-2702.314#@$PAD~RECT~5786.853~-2702.314~1.0629~6.2992~1~TP_R~5~0~5786.3216 -2705.4636 5787.3845 -2705.4636 5787.3845 -2699.1644 5786.3216 -2699.1644~0~rep3798~0~~Y~0~0~0.2~5786.853,-2702.314#@$PAD~RECT~5788.822~-2702.314~1.0629~6.2992~1~LCD_TE~4~0~5788.2906 -2705.4636 5789.3535 -2705.4636 5789.3535 -2699.1644 5788.2906 -2699.1644~0~rep3799~0~~Y~0~0~0.2~5788.822,-2702.314#@$PAD~RECT~5790.79~-2702.314~1.0629~6.2992~1~LCD_RS~3~0~5790.2585 -2705.4636 5791.3215 -2705.4636 5791.3215 -2699.1644 5790.2585 -2699.1644~0~rep3800~0~~Y~0~0~0.2~5790.79,-2702.314#@$PAD~RECT~5792.759~-2702.314~1.0629~6.2992~1~LCD_WR#~2~0~5792.2275 -2705.4636 5793.2905 -2705.4636 5793.2905 -2699.1644 5792.2275 -2699.1644~0~rep3801~0~~Y~0~0~0.2~5792.759,-2702.314#@$PAD~RECT~5794.727~-2702.314~1.0629~6.2992~1~LCD_RD#~1~0~5794.1955 -2705.4636 5795.2585 -2705.4636 5795.2585 -2699.1644 5794.1955 -2699.1644~0~rep3802~0~~Y~0~0~0.2~5794.727,-2702.314#@$PAD~RECT~5747.483~-2702.314~1.0629~6.2992~1~PP_CPLD_TDO~25~0~5746.9516 -2705.4636 5748.0145 -2705.4636 5748.0145 -2699.1644 5746.9516 -2699.1644~0~rep3803~0~~Y~0~0~0.2~5747.483,-2702.314#@$PAD~RECT~5739.176~-2648.81~1.0629~6.2992~1~~49~0~5736.0264 -2648.2785 5736.0264 -2649.3415 5742.3256 -2649.3415 5742.3256 -2648.2785~90~rep3804~0~~Y~0~0~0.2~5739.176,-2648.81#@$PAD~RECT~5739.176~-2650.779~1.0629~6.2992~1~~48~0~5736.0264 -2650.2475 5736.0264 -2651.3105 5742.3256 -2651.3105 5742.3256 -2650.2475~90~rep3805~0~~Y~0~0~0.2~5739.176,-2650.779#@$PAD~RECT~5739.176~-2652.747~1.0629~6.2992~1~~47~0~5736.0264 -2652.2155 5736.0264 -2653.2785 5742.3256 -2653.2785 5742.3256 -2652.2155~90~rep3806~0~~Y~0~0~0.2~5739.176,-2652.747#@$PAD~RECT~5739.176~-2654.716~1.0629~6.2992~1~GND~46~0~5736.0264 -2654.1845 5736.0264 -2655.2475 5742.3256 -2655.2475 5742.3256 -2654.1845~90~rep3807~0~~Y~0~0~0.2~5739.176,-2654.716#@$PAD~RECT~5739.176~-2656.684~1.0629~6.2992~1~+3V3~45~0~5736.0264 -2656.1525 5736.0264 -2657.2155 5742.3256 -2657.2155 5742.3256 -2656.1525~90~rep3808~0~~Y~0~0~0.2~5739.176,-2656.684#@$PAD~RECT~5739.176~-2658.653~1.0629~6.2992~1~~44~0~5736.0264 -2658.1215 5736.0264 -2659.1845 5742.3256 -2659.1845 5742.3256 -2658.1215~90~rep3809~0~~Y~0~0~0.2~5739.176,-2658.653#@$PAD~RECT~5739.176~-2660.621~1.0629~6.2992~1~P2_8~43~0~5736.0264 -2660.0895 5736.0264 -2661.1525 5742.3256 -2661.1525 5742.3256 -2660.0895~90~rep3810~0~~Y~0~0~0.2~5739.176,-2660.621#@$PAD~RECT~5739.176~-2662.59~1.0629~6.2992~1~MCU_ADDR~42~0~5736.0264 -2662.0585 5736.0264 -2663.1215 5742.3256 -2663.1215 5742.3256 -2662.0585~90~rep3811~0~~Y~0~0~0.2~5739.176,-2662.59#@$PAD~RECT~5792.759~-2638.574~1.0629~6.2992~1~GPS_TIMEPULSE~74~0~5793.2905 -2635.4244 5792.2275 -2635.4244 5792.2275 -2641.7236 5793.2905 -2641.7236~180~rep3812~0~~Y~0~0~0.2~5792.759,-2638.574#@$PAD~RECT~5790.79~-2638.574~1.0629~6.2992~1~GPS_RESET#~73~0~5791.3215 -2635.4244 5790.2585 -2635.4244 5790.2585 -2641.7236 5791.3215 -2641.7236~180~rep3813~0~~Y~0~0~0.2~5790.79,-2638.574#@$PAD~RECT~5788.822~-2638.574~1.0629~6.2992~1~MCU_DIR~72~0~5789.3535 -2635.4244 5788.2906 -2635.4244 5788.2906 -2641.7236 5789.3535 -2641.7236~180~rep3814~0~~Y~0~0~0.2~5788.822,-2638.574#@$PAD~RECT~5786.853~-2638.574~1.0629~6.2992~1~MCU_LCD_WR~71~0~5787.3845 -2635.4244 5786.3216 -2635.4244 5786.3216 -2641.7236 5787.3845 -2641.7236~180~rep3815~0~~Y~0~0~0.2~5786.853,-2638.574#@$PAD~RECT~5784.885~-2638.574~1.0629~6.2992~1~~70~0~5785.4165 -2635.4244 5784.3536 -2635.4244 5784.3536 -2641.7236 5785.4165 -2641.7236~180~rep3816~0~~Y~0~0~0.2~5784.885,-2638.574#@$PAD~RECT~5782.916~-2638.574~1.0629~6.2992~1~~69~0~5783.4475 -2635.4244 5782.3846 -2635.4244 5782.3846 -2641.7236 5783.4475 -2641.7236~180~rep3817~0~~Y~0~0~0.2~5782.916,-2638.574#@$PAD~RECT~5780.948~-2638.574~1.0629~6.2992~1~~68~0~5781.4795 -2635.4244 5780.4166 -2635.4244 5780.4166 -2641.7236 5781.4795 -2641.7236~180~rep3818~0~~Y~0~0~0.2~5780.948,-2638.574#@$PAD~RECT~5778.979~-2638.574~1.0629~6.2992~1~~67~0~5779.5105 -2635.4244 5778.4476 -2635.4244 5778.4476 -2641.7236 5779.5105 -2641.7236~180~rep3819~0~~Y~0~0~0.2~5778.979,-2638.574#@$PAD~RECT~5794.727~-2638.574~1.0629~6.2992~1~GPS_TX_READY~75~0~5795.2585 -2635.4244 5794.1955 -2635.4244 5794.1955 -2641.7236 5795.2585 -2641.7236~180~rep3820~0~~Y~0~0~0.2~5794.727,-2638.574#@$PAD~RECT~5802.995~-2656.684~1.0629~6.2992~1~~81~0~5806.1446 -2657.2155 5806.1446 -2656.1525 5799.8454 -2656.1525 5799.8454 -2657.2155~270~rep3821~0~~Y~0~0~0.2~5802.995,-2656.684#@$PAD~RECT~5802.995~-2654.716~1.0629~6.2992~1~+3V3~80~0~5806.1446 -2655.2475 5806.1446 -2654.1845 5799.8454 -2654.1845 5799.8454 -2655.2475~270~rep3822~0~~Y~0~0~0.2~5802.995,-2654.716#@$PAD~RECT~5802.995~-2652.747~1.0629~6.2992~1~GND~79~0~5806.1446 -2653.2785 5806.1446 -2652.2155 5799.8454 -2652.2155 5799.8454 -2653.2785~270~rep3823~0~~Y~0~0~0.2~5802.995,-2652.747#@$PAD~RECT~5802.995~-2650.779~1.0629~6.2992~1~~78~0~5806.1446 -2651.3105 5806.1446 -2650.2475 5799.8454 -2650.2475 5799.8454 -2651.3105~270~rep3824~0~~Y~0~0~0.2~5802.995,-2650.779#@$PAD~RECT~5802.995~-2648.81~1.0629~6.2992~1~~77~0~5806.1446 -2649.3415 5806.1446 -2648.2785 5799.8454 -2648.2785 5799.8454 -2649.3415~270~rep3825~0~~Y~0~0~0.2~5802.995,-2648.81#@$PAD~RECT~5802.995~-2646.842~1.0629~6.2992~1~LCD_BACKLIGHT~76~0~5806.1446 -2647.3735 5806.1446 -2646.3105 5799.8454 -2646.3105 5799.8454 -2647.3735~270~rep3826~0~~Y~0~0~0.2~5802.995,-2646.842#@$PAD~RECT~5802.995~-2658.653~1.0629~6.2992~1~LCD_DB15~82~0~5806.1446 -2659.1845 5806.1446 -2658.1215 5799.8454 -2658.1215 5799.8454 -2659.1845~270~rep3827~0~~Y~0~0~0.2~5802.995,-2658.653#@$PAD~RECT~5802.995~-2670.464~1.0629~6.2992~1~LCD_DB9~88~0~5806.1446 -2670.9955 5806.1446 -2669.9325 5799.8454 -2669.9325 5799.8454 -2670.9955~270~rep3828~0~~Y~0~0~0.2~5802.995,-2670.464#@$PAD~RECT~5802.995~-2668.495~1.0629~6.2992~1~LCD_DB10~87~0~5806.1446 -2669.0265 5806.1446 -2667.9635 5799.8454 -2667.9635 5799.8454 -2669.0265~270~rep3829~0~~Y~0~0~0.2~5802.995,-2668.495#@$PAD~RECT~5802.995~-2666.527~1.0629~6.2992~1~LCD_DB11~86~0~5806.1446 -2667.0585 5806.1446 -2665.9955 5799.8454 -2665.9955 5799.8454 -2667.0585~270~rep3830~0~~Y~0~0~0.2~5802.995,-2666.527#@$PAD~RECT~5802.995~-2664.558~1.0629~6.2992~1~LCD_DB12~85~0~5806.1446 -2665.0895 5806.1446 -2664.0265 5799.8454 -2664.0265 5799.8454 -2665.0895~270~rep3831~0~~Y~0~0~0.2~5802.995,-2664.558#@$PAD~RECT~5802.995~-2662.59~1.0629~6.2992~1~LCD_DB13~84~0~5806.1446 -2663.1215 5806.1446 -2662.0585 5799.8454 -2662.0585 5799.8454 -2663.1215~270~rep3832~0~~Y~0~0~0.2~5802.995,-2662.59#@$PAD~RECT~5802.995~-2660.621~1.0629~6.2992~1~LCD_DB14~83~0~5806.1446 -2661.1525 5806.1446 -2660.0895 5799.8454 -2660.0895 5799.8454 -2661.1525~270~rep3833~0~~Y~0~0~0.2~5802.995,-2660.621#@$PAD~RECT~5802.995~-2672.432~1.0629~6.2992~1~LCD_DB8~89~0~5806.1446 -2672.9635 5806.1446 -2671.9005 5799.8454 -2671.9005 5799.8454 -2672.9635~270~rep3834~0~~Y~0~0~0.2~5802.995,-2672.432#@$PAD~RECT~5802.995~-2684.243~1.0629~6.2992~1~LCD_DB4~95~0~5806.1446 -2684.7745 5806.1446 -2683.7115 5799.8454 -2683.7115 5799.8454 -2684.7745~270~rep3835~0~~Y~0~0~0.2~5802.995,-2684.243#@$PAD~RECT~5802.995~-2682.275~1.0629~6.2992~1~+3V3~94~0~5806.1446 -2682.8065 5806.1446 -2681.7435 5799.8454 -2681.7435 5799.8454 -2682.8065~270~rep3836~0~~Y~0~0~0.2~5802.995,-2682.275#@$PAD~RECT~5802.995~-2680.306~1.0629~6.2992~1~GND~93~0~5806.1446 -2680.8375 5806.1446 -2679.7745 5799.8454 -2679.7745 5799.8454 -2680.8375~270~rep3837~0~~Y~0~0~0.2~5802.995,-2680.306#@$PAD~RECT~5802.995~-2678.338~1.0629~6.2992~1~LCD_DB5~92~0~5806.1446 -2678.8695 5806.1446 -2677.8065 5799.8454 -2677.8065 5799.8454 -2678.8695~270~rep3838~0~~Y~0~0~0.2~5802.995,-2678.338#@$PAD~RECT~5802.995~-2676.369~1.0629~6.2992~1~LCD_DB6~91~0~5806.1446 -2676.9005 5806.1446 -2675.8375 5799.8454 -2675.8375 5799.8454 -2676.9005~270~rep3839~0~~Y~0~0~0.2~5802.995,-2676.369#@$PAD~RECT~5802.995~-2674.401~1.0629~6.2992~1~LCD_DB7~90~0~5806.1446 -2674.9325 5806.1446 -2673.8695 5799.8454 -2673.8695 5799.8454 -2674.9325~270~rep3840~0~~Y~0~0~0.2~5802.995,-2674.401#@$PAD~RECT~5802.995~-2686.212~1.0629~6.2992~1~LCD_DB3~96~0~5806.1446 -2686.7435 5806.1446 -2685.6805 5799.8454 -2685.6805 5799.8454 -2686.7435~270~rep3841~0~~Y~0~0~0.2~5802.995,-2686.212#@$PAD~RECT~5802.995~-2694.086~1.0629~6.2992~1~LCD_RESET#~100~0~5806.1446 -2694.6175 5806.1446 -2693.5545 5799.8454 -2693.5545 5799.8454 -2694.6175~270~rep3842~0~~Y~0~0~0.2~5802.995,-2694.086#@$PAD~RECT~5802.995~-2692.117~1.0629~6.2992~1~LCD-DB0~99~0~5806.1446 -2692.6485 5806.1446 -2691.5855 5799.8454 -2691.5855 5799.8454 -2692.6485~270~rep3843~0~~Y~0~0~0.2~5802.995,-2692.117#@$PAD~RECT~5802.995~-2690.149~1.0629~6.2992~1~LCD_DB1~98~0~5806.1446 -2690.6805 5806.1446 -2689.6175 5799.8454 -2689.6175 5799.8454 -2690.6805~270~rep3844~0~~Y~0~0~0.2~5802.995,-2690.149#@$PAD~RECT~5802.995~-2688.18~1.0629~6.2992~1~LCD-DB2~97~0~5806.1446 -2688.7115 5806.1446 -2687.6485 5799.8454 -2687.6485 5799.8454 -2688.7115~270~rep3845~0~~Y~0~0~0.2~5802.995,-2688.18","LIB~5711.1312~-2798.735~package`A0402`value`0.47uF~270~~gge9dabde1b2911a551~1~~~0~~yes~~#@$TEXT~P~5708.003~-2792.386~0.433~0~0~3~~2.7559~C45~M 5709.88 -2794.54L5709.76 -2794.79 L5709.51 -2795.04 L5709.26 -2795.17 L5708.75 -2795.17 L5708.5 -2795.04 L5708.25 -2794.79 L5708.13 -2794.54 L5708 -2794.16 L5708 -2793.54 L5708.13 -2793.16 L5708.25 -2792.91 L5708.5 -2792.66 L5708.75 -2792.54 L5709.26 -2792.54 L5709.51 -2792.66 L5709.76 -2792.91 L5709.88 -2793.16 M 5711.96 -2795.17L5710.71 -2793.41 L5712.59 -2793.41 M 5711.96 -2795.17L5711.96 -2792.54 M 5714.92 -2795.17L5713.67 -2795.17 L5713.54 -2794.04 L5713.67 -2794.16 L5714.04 -2794.29 L5714.42 -2794.29 L5714.79 -2794.16 L5715.04 -2793.91 L5715.17 -2793.54 L5715.17 -2793.29 L5715.04 -2792.91 L5714.79 -2792.66 L5714.42 -2792.54 L5714.04 -2792.54 L5713.67 -2792.66 L5713.54 -2792.79 L5713.41 -2793.04 ~none~rep3852~~0~#@$TEXT~N~5699.972~-2804.945~0.4724~0~0~3~~3.1496~0.47uF~M 5700.83 -2808.12L5700.4 -2807.98 L5700.11 -2807.55 L5699.97 -2806.83 L5699.97 -2806.41 L5700.11 -2805.69 L5700.4 -2805.26 L5700.83 -2805.12 L5701.12 -2805.12 L5701.55 -2805.26 L5701.83 -2805.69 L5701.98 -2806.41 L5701.98 -2806.83 L5701.83 -2807.55 L5701.55 -2807.98 L5701.12 -2808.12 L5700.83 -2808.12 M 5703.06 -2805.83L5702.92 -2805.69 L5703.06 -2805.55 L5703.21 -2805.69 L5703.06 -2805.83 M 5705.58 -2808.12L5704.15 -2806.12 L5706.3 -2806.12 M 5705.58 -2808.12L5705.58 -2805.12 M 5709.25 -2808.12L5707.82 -2805.12 M 5707.24 -2808.12L5709.25 -2808.12 M 5710.19 -2807.12L5710.19 -2805.69 L5710.34 -2805.26 L5710.62 -2805.12 L5711.05 -2805.12 L5711.34 -2805.26 L5711.77 -2805.69 M 5711.77 -2807.12L5711.77 -2805.12 M 5712.71 -2808.12L5712.71 -2805.12 M 5712.71 -2808.12L5714.57 -2808.12 M 5712.71 -2806.69L5713.86 -2806.69 ~none~rep3853~~0~#@$TRACK~0.7874~3~~5713.2812 -2802.335 5713.2812 -2794.885 5709.1812 -2794.885 5709.1812 -2802.335 5713.2812 -2802.335~rep3856~0#@$PAD~RECT~5711.131~-2800.535~1.9685~2.3622~1~AGND~2~0~5712.3121 -2801.5193 5712.3121 -2799.5507 5709.9499 -2799.5507 5709.9499 -2801.5193~270~rep3854~0~~Y~0~0~0.2~5711.131,-2800.535#@$PAD~RECT~5711.131~-2796.935~1.9685~2.3622~1~U9-7~1~0~5712.3121 -2797.9193 5712.3121 -2795.9507 5709.9499 -2795.9507 5709.9499 -2797.9193~270~rep3855~0~~Y~0~0~0.2~5711.131,-2796.935","LIB~5502.7326~-2583.3365~package`JZ-10.0000M`value`10.MHZ~90~~gge220c9828e5ec91fa~1~~~0~~yes~~#@$TEXT~P~5502.025~-2573.422~0.433~0~0~3~~2.7559~X1~M 5502.03 -2576.2L5503.78 -2573.57 M 5503.78 -2576.2L5502.03 -2573.57 M 5504.61 -2575.7L5504.86 -2575.83 L5505.23 -2576.2 L5505.23 -2573.57 ~none~rep3861~~0~#@$TEXT~N~5495.618~-2570.31~0.4724~0~0~3~~3.1496~10.MHZ~M 5495.62 -2572.92L5495.9 -2573.06 L5496.33 -2573.49 L5496.33 -2570.48 M 5498.14 -2573.49L5497.71 -2573.34 L5497.42 -2572.92 L5497.28 -2572.2 L5497.28 -2571.77 L5497.42 -2571.05 L5497.71 -2570.62 L5498.14 -2570.48 L5498.42 -2570.48 L5498.85 -2570.62 L5499.14 -2571.05 L5499.28 -2571.77 L5499.28 -2572.2 L5499.14 -2572.92 L5498.85 -2573.34 L5498.42 -2573.49 L5498.14 -2573.49 M 5500.37 -2571.2L5500.23 -2571.05 L5500.37 -2570.91 L5500.51 -2571.05 L5500.37 -2571.2 M 5501.46 -2573.49L5501.46 -2570.48 M 5501.46 -2573.49L5502.6 -2570.48 M 5503.75 -2573.49L5502.6 -2570.48 M 5503.75 -2573.49L5503.75 -2570.48 M 5504.69 -2573.49L5504.69 -2570.48 M 5506.7 -2573.49L5506.7 -2570.48 M 5504.69 -2572.06L5506.7 -2572.06 M 5509.65 -2573.49L5507.64 -2570.48 M 5507.64 -2573.49L5509.65 -2573.49 M 5507.64 -2570.48L5509.65 -2570.48 ~none~rep3862~~0~#@$ARC~0.7874~3~~M 5496.0235 -2589.0615 A 0.7159 0.7159 0 1 0 5496.02333 -2589.04576~~rep3863~0#@$TRACK~0.7874~3~~5502.2076 -2589.5615 5503.6576 -2589.5615~rep3868~0#@$TRACK~0.7874~3~~5507.8576 -2581.7115 5507.8576 -2584.7615~rep3869~0#@$TRACK~0.7874~3~~5502.0076 -2576.8115 5503.6076 -2576.8115~rep3870~0#@$TRACK~0.7874~3~~5497.8576 -2581.6115 5497.8576 -2584.8615~rep3871~0#@$PAD~RECT~5499.008~-2588.111~4.2685~4.6622~1~NETX1_1~1~0~5496.8738 -2590.4421 5501.1423 -2590.4421 5501.1423 -2585.7799 5496.8738 -2585.7799~0~rep3864~0~~Y~0~0~0.2~5499.008,-2588.111#@$PAD~RECT~5506.458~-2578.561~4.2685~4.6622~1~NETR2_2~3~0~5504.3237 -2580.8921 5508.5923 -2580.8921 5508.5923 -2576.2299 5504.3237 -2576.2299~0~rep3865~0~~Y~0~0~0.2~5506.458,-2578.561#@$PAD~RECT~5506.458~-2588.111~4.2685~4.6622~1~NETC1_1~4~0~5504.3237 -2590.4421 5508.5923 -2590.4421 5508.5923 -2585.7799 5504.3237 -2585.7799~0~rep3866~0~~Y~0~0~0.2~5506.458,-2588.111#@$PAD~RECT~5499.008~-2578.561~4.2685~4.6622~1~GND~2~0~5496.8738 -2580.8921 5501.1423 -2580.8921 5501.1423 -2576.2299 5496.8738 -2576.2299~0~rep3867~0~~Y~0~0~0.2~5499.008,-2578.561","LIB~5561.3165~-2800.4298~package`ASO-8`value`NS8002~270~~ggeadf583383e4d69d4~1~~~0~~yes~~#@$TEXT~P~5543.324~-2800.627~0.433~0~0~3~~2.7559~U5~M 5543.32 -2803.41L5543.32 -2801.53 L5543.45 -2801.15 L5543.7 -2800.9 L5544.08 -2800.78 L5544.33 -2800.78 L5544.7 -2800.9 L5544.95 -2801.15 L5545.08 -2801.53 L5545.08 -2803.41 M 5547.41 -2803.41L5546.16 -2803.41 L5546.03 -2802.28 L5546.16 -2802.41 L5546.53 -2802.53 L5546.91 -2802.53 L5547.28 -2802.41 L5547.53 -2802.15 L5547.66 -2801.78 L5547.66 -2801.53 L5547.53 -2801.15 L5547.28 -2800.9 L5546.91 -2800.78 L5546.53 -2800.78 L5546.16 -2800.9 L5546.03 -2801.03 L5545.9 -2801.28 ~none~rep3873~~0~#@$TEXT~N~5557.417~-2822.044~0.4724~0~0~3~~3.1496~NS8002~M 5557.42 -2825.22L5557.42 -2822.22 M 5557.42 -2825.22L5559.42 -2822.22 M 5559.42 -2825.22L5559.42 -2822.22 M 5562.37 -2824.79L5562.08 -2825.08 L5561.65 -2825.22 L5561.08 -2825.22 L5560.65 -2825.08 L5560.37 -2824.79 L5560.37 -2824.51 L5560.51 -2824.22 L5560.65 -2824.08 L5560.94 -2823.93 L5561.8 -2823.65 L5562.08 -2823.5 L5562.23 -2823.36 L5562.37 -2823.07 L5562.37 -2822.65 L5562.08 -2822.36 L5561.65 -2822.22 L5561.08 -2822.22 L5560.65 -2822.36 L5560.37 -2822.65 M 5564.03 -2825.22L5563.6 -2825.08 L5563.46 -2824.79 L5563.46 -2824.51 L5563.6 -2824.22 L5563.89 -2824.08 L5564.46 -2823.93 L5564.89 -2823.79 L5565.18 -2823.5 L5565.32 -2823.22 L5565.32 -2822.79 L5565.18 -2822.5 L5565.03 -2822.36 L5564.6 -2822.22 L5564.03 -2822.22 L5563.6 -2822.36 L5563.46 -2822.5 L5563.32 -2822.79 L5563.32 -2823.22 L5563.46 -2823.5 L5563.74 -2823.79 L5564.17 -2823.93 L5564.75 -2824.08 L5565.03 -2824.22 L5565.18 -2824.51 L5565.18 -2824.79 L5565.03 -2825.08 L5564.6 -2825.22 L5564.03 -2825.22 M 5567.12 -2825.22L5566.69 -2825.08 L5566.41 -2824.65 L5566.26 -2823.93 L5566.26 -2823.5 L5566.41 -2822.79 L5566.69 -2822.36 L5567.12 -2822.22 L5567.41 -2822.22 L5567.84 -2822.36 L5568.13 -2822.79 L5568.27 -2823.5 L5568.27 -2823.93 L5568.13 -2824.65 L5567.84 -2825.08 L5567.41 -2825.22 L5567.12 -2825.22 M 5570.07 -2825.22L5569.64 -2825.08 L5569.36 -2824.65 L5569.21 -2823.93 L5569.21 -2823.5 L5569.36 -2822.79 L5569.64 -2822.36 L5570.07 -2822.22 L5570.36 -2822.22 L5570.79 -2822.36 L5571.07 -2822.79 L5571.22 -2823.5 L5571.22 -2823.93 L5571.07 -2824.65 L5570.79 -2825.08 L5570.36 -2825.22 L5570.07 -2825.22 M 5572.31 -2824.51L5572.31 -2824.65 L5572.45 -2824.94 L5572.59 -2825.08 L5572.88 -2825.22 L5573.45 -2825.22 L5573.74 -2825.08 L5573.88 -2824.94 L5574.02 -2824.65 L5574.02 -2824.36 L5573.88 -2824.08 L5573.59 -2823.65 L5572.16 -2822.22 L5574.17 -2822.22 ~none~rep3874~~0~#@$ARC~1~3~~M 5551.3165 -2797.9298 A 2.5 2.5 0 0 0 5551.3165 -2802.9298~~rep3875~0#@$TRACK~1~3~~5551.3165 -2797.9298 5551.3165 -2795.4298 5571.3165 -2795.4298 5571.3165 -2805.4298 5551.3165 -2805.4298 5551.3165 -2802.9298~rep3884~0#@$PAD~OVAL~5553.817~-2789.43~8~2.4~1~GND~1~0~5553.817 -2786.63 5553.817 -2792.23~90~rep3876~0~~Y~0~0~0.2~5553.817,-2789.43#@$PAD~OVAL~5558.817~-2811.43~8~2.4~1~GND~7~0~5558.817 -2808.63 5558.817 -2814.23~90~rep3877~0~~Y~0~0~0.2~5558.817,-2811.43#@$PAD~OVAL~5553.817~-2811.43~8~2.4~1~NETJ1_1~8~0~5553.817 -2808.63 5553.817 -2814.23~90~rep3878~0~~Y~0~0~0.2~5553.817,-2811.43#@$PAD~OVAL~5568.817~-2811.43~8~2.4~1~NETJ1_2~5~0~5568.817 -2808.63 5568.817 -2814.23~90~rep3879~0~~Y~0~0~0.2~5568.817,-2811.43#@$PAD~OVAL~5568.817~-2789.43~8~2.4~1~NETR12_2~4~0~5568.817 -2786.63 5568.817 -2792.23~90~rep3880~0~~Y~0~0~0.2~5568.817,-2789.43#@$PAD~OVAL~5558.817~-2789.43~8~2.4~1~NETU5_2~2~0~5558.817 -2786.63 5558.817 -2792.23~90~rep3881~0~~Y~0~0~0.2~5558.817,-2789.43#@$PAD~OVAL~5563.817~-2789.43~8~2.4~1~NETU5_2~3~0~5563.817 -2786.63 5563.817 -2792.23~90~rep3882~0~~Y~0~0~0.2~5563.817,-2789.43#@$PAD~OVAL~5563.817~-2811.43~8~2.4~1~VIN~6~0~5563.817 -2808.63 5563.817 -2814.23~90~rep3883~0~~Y~0~0~0.2~5563.817,-2811.43","LIB~5720.6967~-2809.5224~package`A0805`value`0.01R~180~~gged9f908b8ca857374~1~~~0~~yes~~#@$TEXT~P~5716.878~-2816.885~0.433~0~0~3~~2.7559~R28~M 5716.88 -2819.67L5716.88 -2817.03 M 5716.88 -2819.67L5718.01 -2819.67 L5718.38 -2819.54 L5718.51 -2819.42 L5718.63 -2819.16 L5718.63 -2818.91 L5718.51 -2818.66 L5718.38 -2818.54 L5718.01 -2818.41 L5716.88 -2818.41 M 5717.75 -2818.41L5718.63 -2817.03 M 5719.58 -2819.04L5719.58 -2819.16 L5719.71 -2819.42 L5719.83 -2819.54 L5720.08 -2819.67 L5720.59 -2819.67 L5720.84 -2819.54 L5720.96 -2819.42 L5721.09 -2819.16 L5721.09 -2818.91 L5720.96 -2818.66 L5720.71 -2818.29 L5719.46 -2817.03 L5721.21 -2817.03 M 5722.67 -2819.67L5722.29 -2819.54 L5722.16 -2819.29 L5722.16 -2819.04 L5722.29 -2818.79 L5722.54 -2818.66 L5723.04 -2818.54 L5723.42 -2818.41 L5723.67 -2818.16 L5723.79 -2817.91 L5723.79 -2817.54 L5723.67 -2817.29 L5723.54 -2817.16 L5723.17 -2817.03 L5722.67 -2817.03 L5722.29 -2817.16 L5722.16 -2817.29 L5722.04 -2817.54 L5722.04 -2817.91 L5722.16 -2818.16 L5722.41 -2818.41 L5722.79 -2818.54 L5723.29 -2818.66 L5723.54 -2818.79 L5723.67 -2819.04 L5723.67 -2819.29 L5723.54 -2819.54 L5723.17 -2819.67 L5722.67 -2819.67 ~none~rep3890~~0~#@$TEXT~N~5728.965~-2816.963~0.4724~0~0~3~~3.1496~0.01R~M 5729.82 -2820.14L5729.39 -2820 L5729.11 -2819.57 L5728.96 -2818.85 L5728.96 -2818.42 L5729.11 -2817.71 L5729.39 -2817.28 L5729.82 -2817.14 L5730.11 -2817.14 L5730.54 -2817.28 L5730.83 -2817.71 L5730.97 -2818.42 L5730.97 -2818.85 L5730.83 -2819.57 L5730.54 -2820 L5730.11 -2820.14 L5729.82 -2820.14 M 5732.06 -2817.85L5731.91 -2817.71 L5732.06 -2817.56 L5732.2 -2817.71 L5732.06 -2817.85 M 5734 -2820.14L5733.57 -2820 L5733.29 -2819.57 L5733.14 -2818.85 L5733.14 -2818.42 L5733.29 -2817.71 L5733.57 -2817.28 L5734 -2817.14 L5734.29 -2817.14 L5734.72 -2817.28 L5735.01 -2817.71 L5735.15 -2818.42 L5735.15 -2818.85 L5735.01 -2819.57 L5734.72 -2820 L5734.29 -2820.14 L5734 -2820.14 M 5736.09 -2819.57L5736.38 -2819.71 L5736.81 -2820.14 L5736.81 -2817.14 M 5737.75 -2820.14L5737.75 -2817.14 M 5737.75 -2820.14L5739.04 -2820.14 L5739.47 -2820 L5739.62 -2819.86 L5739.76 -2819.57 L5739.76 -2819.28 L5739.62 -2819 L5739.47 -2818.85 L5739.04 -2818.71 L5737.75 -2818.71 M 5738.76 -2818.71L5739.76 -2817.14 ~none~rep3891~~0~#@$TRACK~1.2~3~~5727.1967 -2805.0224 5734.6967 -2805.0224 5734.6967 -2814.0224 5727.1967 -2814.0224~rep3894~0#@$TRACK~1.2~3~~5723.1967 -2805.0224 5715.6967 -2805.0224 5715.6967 -2814.0224 5723.1967 -2814.0224~rep3895~0#@$PAD~RECT~5720.697~-2809.522~6~4.7244~1~AGND~1~0~5717.697 -2811.8842 5723.697 -2811.8842 5723.697 -2807.1598 5717.697 -2807.1598~0~rep3892~0~~Y~0~0~0.2~5720.697,-2809.522#@$PAD~RECT~5729.697~-2809.522~6~4.7244~1~GND~2~0~5726.697 -2811.8842 5732.697 -2811.8842 5732.697 -2807.1598 5726.697 -2807.1598~0~rep3893~0~~Y~0~0~0.2~5729.697,-2809.522","LIB~5505.0274~-2748.3807~package`A0402`value`10K~90~~gge28145adf450505d9~1~~~0~~yes~~#@$TEXT~P~5506.445~-2746.609~0.433~0~0~3~~2.7559~R27~M 5506.44 -2749.39L5506.44 -2746.76 M 5506.44 -2749.39L5507.57 -2749.39 L5507.95 -2749.26 L5508.07 -2749.14 L5508.2 -2748.89 L5508.2 -2748.64 L5508.07 -2748.39 L5507.95 -2748.26 L5507.57 -2748.14 L5506.44 -2748.14 M 5507.32 -2748.14L5508.2 -2746.76 M 5509.15 -2748.76L5509.15 -2748.89 L5509.28 -2749.14 L5509.4 -2749.26 L5509.65 -2749.39 L5510.15 -2749.39 L5510.4 -2749.26 L5510.53 -2749.14 L5510.65 -2748.89 L5510.65 -2748.64 L5510.53 -2748.39 L5510.28 -2748.01 L5509.03 -2746.76 L5510.78 -2746.76 M 5513.36 -2749.39L5512.11 -2746.76 M 5511.61 -2749.39L5513.36 -2749.39 ~none~rep3901~~0~#@$TEXT~N~5505.894~-2759.286~0.4724~0~0~3~~3.1496~10K~M 5505.89 -2761.89L5506.18 -2762.03 L5506.61 -2762.46 L5506.61 -2759.46 M 5508.41 -2762.46L5507.98 -2762.32 L5507.7 -2761.89 L5507.55 -2761.18 L5507.55 -2760.75 L5507.7 -2760.03 L5507.98 -2759.6 L5508.41 -2759.46 L5508.7 -2759.46 L5509.13 -2759.6 L5509.42 -2760.03 L5509.56 -2760.75 L5509.56 -2761.18 L5509.42 -2761.89 L5509.13 -2762.32 L5508.7 -2762.46 L5508.41 -2762.46 M 5510.5 -2762.46L5510.5 -2759.46 M 5512.51 -2762.46L5510.5 -2760.46 M 5511.22 -2761.18L5512.51 -2759.46 ~none~rep3902~~0~#@$TRACK~0.7874~3~~5506.9774 -2752.2307 5502.8774 -2752.2307 5502.8774 -2744.7807 5506.9774 -2744.7807 5506.9774 -2752.2307~rep3905~0#@$PAD~RECT~5505.028~-2750.181~1.9685~2.3622~1~VIN~1~0~5503.8469 -2749.1967 5503.8469 -2751.1653 5506.2091 -2751.1653 5506.2091 -2749.1967~90~rep3903~0~~Y~0~0~0.2~5505.028,-2750.181#@$PAD~RECT~5505.027~-2746.581~1.9685~2.3622~1~U6-5~2~0~5503.8459 -2745.5967 5503.8459 -2747.5653 5506.2081 -2747.5653 5506.2081 -2745.5967~90~rep3904~0~~Y~0~0~0.2~5505.027,-2746.581","LIB~5500.0274~-2748.6169~package`A0402`value`10K~270~~gge09b823a69019dbbf~1~~~0~~yes~~#@$TEXT~P~5493.768~-2754.089~0.433~0~0~3~~2.7559~R26~M 5493.77 -2756.87L5493.77 -2754.24 M 5493.77 -2756.87L5494.9 -2756.87 L5495.27 -2756.75 L5495.4 -2756.62 L5495.52 -2756.37 L5495.52 -2756.12 L5495.4 -2755.87 L5495.27 -2755.74 L5494.9 -2755.62 L5493.77 -2755.62 M 5494.64 -2755.62L5495.52 -2754.24 M 5496.47 -2756.24L5496.47 -2756.37 L5496.6 -2756.62 L5496.72 -2756.75 L5496.97 -2756.87 L5497.48 -2756.87 L5497.73 -2756.75 L5497.85 -2756.62 L5497.98 -2756.37 L5497.98 -2756.12 L5497.85 -2755.87 L5497.6 -2755.49 L5496.35 -2754.24 L5498.1 -2754.24 M 5500.43 -2756.49L5500.31 -2756.75 L5499.93 -2756.87 L5499.68 -2756.87 L5499.3 -2756.75 L5499.05 -2756.37 L5498.93 -2755.74 L5498.93 -2755.12 L5499.05 -2754.62 L5499.3 -2754.36 L5499.68 -2754.24 L5499.81 -2754.24 L5500.18 -2754.36 L5500.43 -2754.62 L5500.56 -2754.99 L5500.56 -2755.12 L5500.43 -2755.49 L5500.18 -2755.74 L5499.81 -2755.87 L5499.68 -2755.87 L5499.3 -2755.74 L5499.05 -2755.49 L5498.93 -2755.12 ~none~rep3910~~0~#@$TEXT~N~5498.057~-2742.79~0.4724~0~0~3~~3.1496~10K~M 5498.06 -2745.4L5498.34 -2745.54 L5498.77 -2745.97 L5498.77 -2742.96 M 5500.58 -2745.97L5500.15 -2745.83 L5499.86 -2745.4 L5499.72 -2744.68 L5499.72 -2744.25 L5499.86 -2743.53 L5500.15 -2743.11 L5500.58 -2742.96 L5500.86 -2742.96 L5501.29 -2743.11 L5501.58 -2743.53 L5501.72 -2744.25 L5501.72 -2744.68 L5501.58 -2745.4 L5501.29 -2745.83 L5500.86 -2745.97 L5500.58 -2745.97 M 5502.67 -2745.97L5502.67 -2742.96 M 5504.67 -2745.97L5502.67 -2743.96 M 5503.38 -2744.68L5504.67 -2742.96 ~none~rep3911~~0~#@$TRACK~0.7874~3~~5498.0775 -2752.2169 5502.1775 -2752.2169 5502.1775 -2744.7669 5498.0775 -2744.7669 5498.0775 -2752.2169~rep3914~0#@$PAD~RECT~5500.028~-2746.817~1.9685~2.3622~1~U6-6~1~0~5501.2091 -2747.8013 5501.2091 -2745.8327 5498.8469 -2745.8327 5498.8469 -2747.8013~270~rep3912~0~~Y~0~0~0.2~5500.028,-2746.817#@$PAD~RECT~5500.028~-2750.417~1.9685~2.3622~1~GND~2~0~5501.2091 -2751.4013 5501.2091 -2749.4327 5498.8469 -2749.4327 5498.8469 -2751.4013~270~rep3913~0~~Y~0~0~0.2~5500.028,-2750.417","LIB~5591.7102~-2818.9337~package`A0402`value`56K~270~~gge6f4c4beafd605d3e~1~~~0~~yes~~#@$TEXT~P~5590.45~-2815.351~0.433~0~0~3~~2.7559~R25~M 5590.45 -2818.13L5590.45 -2815.5 M 5590.45 -2818.13L5591.58 -2818.13 L5591.95 -2818.01 L5592.08 -2817.88 L5592.2 -2817.63 L5592.2 -2817.38 L5592.08 -2817.13 L5591.95 -2817 L5591.58 -2816.88 L5590.45 -2816.88 M 5591.33 -2816.88L5592.2 -2815.5 M 5593.16 -2817.51L5593.16 -2817.63 L5593.28 -2817.88 L5593.41 -2818.01 L5593.66 -2818.13 L5594.16 -2818.13 L5594.41 -2818.01 L5594.53 -2817.88 L5594.66 -2817.63 L5594.66 -2817.38 L5594.53 -2817.13 L5594.28 -2816.75 L5593.03 -2815.5 L5594.78 -2815.5 M 5597.11 -2818.13L5595.86 -2818.13 L5595.74 -2817 L5595.86 -2817.13 L5596.24 -2817.26 L5596.61 -2817.26 L5596.99 -2817.13 L5597.24 -2816.88 L5597.37 -2816.5 L5597.37 -2816.25 L5597.24 -2815.88 L5596.99 -2815.63 L5596.61 -2815.5 L5596.24 -2815.5 L5595.86 -2815.63 L5595.74 -2815.75 L5595.61 -2816 ~none~rep3919~~0~#@$TEXT~N~5593.363~-2825.043~0.4724~0~0~3~~3.1496~56K~M 5595.08 -2828.22L5593.65 -2828.22 L5593.51 -2826.93 L5593.65 -2827.08 L5594.08 -2827.22 L5594.51 -2827.22 L5594.94 -2827.08 L5595.22 -2826.79 L5595.37 -2826.36 L5595.37 -2826.07 L5595.22 -2825.64 L5594.94 -2825.36 L5594.51 -2825.21 L5594.08 -2825.21 L5593.65 -2825.36 L5593.51 -2825.5 L5593.36 -2825.79 M 5598.03 -2827.79L5597.89 -2828.08 L5597.46 -2828.22 L5597.17 -2828.22 L5596.74 -2828.08 L5596.46 -2827.65 L5596.31 -2826.93 L5596.31 -2826.22 L5596.46 -2825.64 L5596.74 -2825.36 L5597.17 -2825.21 L5597.31 -2825.21 L5597.74 -2825.36 L5598.03 -2825.64 L5598.17 -2826.07 L5598.17 -2826.22 L5598.03 -2826.65 L5597.74 -2826.93 L5597.31 -2827.08 L5597.17 -2827.08 L5596.74 -2826.93 L5596.46 -2826.65 L5596.31 -2826.22 M 5599.12 -2828.22L5599.12 -2825.21 M 5601.12 -2828.22L5599.12 -2826.22 M 5599.83 -2826.93L5601.12 -2825.21 ~none~rep3920~~0~#@$TRACK~0.7874~3~~5589.7602 -2822.5337 5593.8602 -2822.5337 5593.8602 -2815.0837 5589.7602 -2815.0837 5589.7602 -2822.5337~rep3923~0#@$PAD~RECT~5591.71~-2817.134~1.9685~2.3622~1~MICBIAS~1~0~5592.8911 -2818.1183 5592.8911 -2816.1497 5590.5289 -2816.1497 5590.5289 -2818.1183~270~rep3921~0~~Y~0~0~0.2~5591.71,-2817.134#@$PAD~RECT~5591.71~-2820.734~1.9685~2.3622~1~GND~2~0~5592.8911 -2821.7183 5592.8911 -2819.7497 5590.5289 -2819.7497 5590.5289 -2821.7183~270~rep3922~0~~Y~0~0~0.2~5591.71,-2820.734","LIB~5855.7791~-2761.1385~package`A0402`value`22R~~~ggef7952e9f9cd6773b~1~~~0~~yes~~#@$TEXT~P~5843.534~-2761.014~0.433~0~0~3~~2.7559~R24~M 5843.53 -2763.79L5843.53 -2761.16 M 5843.53 -2763.79L5844.66 -2763.79 L5845.04 -2763.67 L5845.16 -2763.54 L5845.29 -2763.29 L5845.29 -2763.04 L5845.16 -2762.79 L5845.04 -2762.67 L5844.66 -2762.54 L5843.53 -2762.54 M 5844.41 -2762.54L5845.29 -2761.16 M 5846.24 -2763.17L5846.24 -2763.29 L5846.36 -2763.54 L5846.49 -2763.67 L5846.74 -2763.79 L5847.24 -2763.79 L5847.49 -2763.67 L5847.62 -2763.54 L5847.74 -2763.29 L5847.74 -2763.04 L5847.62 -2762.79 L5847.37 -2762.42 L5846.11 -2761.16 L5847.87 -2761.16 M 5849.95 -2763.79L5848.69 -2762.04 L5850.57 -2762.04 M 5849.95 -2763.79L5849.95 -2761.16 ~none~rep3928~~0~#@$TEXT~N~5851.922~-2756.171~0.4724~0~0~3~~3.1496~22R~M 5852.06 -2758.63L5852.06 -2758.78 L5852.21 -2759.06 L5852.35 -2759.21 L5852.64 -2759.35 L5853.21 -2759.35 L5853.5 -2759.21 L5853.64 -2759.06 L5853.78 -2758.78 L5853.78 -2758.49 L5853.64 -2758.2 L5853.35 -2757.77 L5851.92 -2756.34 L5853.93 -2756.34 M 5855.01 -2758.63L5855.01 -2758.78 L5855.16 -2759.06 L5855.3 -2759.21 L5855.59 -2759.35 L5856.16 -2759.35 L5856.45 -2759.21 L5856.59 -2759.06 L5856.73 -2758.78 L5856.73 -2758.49 L5856.59 -2758.2 L5856.3 -2757.77 L5854.87 -2756.34 L5856.88 -2756.34 M 5857.82 -2759.35L5857.82 -2756.34 M 5857.82 -2759.35L5859.11 -2759.35 L5859.54 -2759.21 L5859.68 -2759.06 L5859.82 -2758.78 L5859.82 -2758.49 L5859.68 -2758.2 L5859.54 -2758.06 L5859.11 -2757.92 L5857.82 -2757.92 M 5858.82 -2757.92L5859.82 -2756.34 ~none~rep3929~~0~#@$TRACK~0.7874~3~~5859.6291 -2759.1885 5852.1791 -2759.1885 5852.1791 -2763.2885 5859.6291 -2763.2885 5859.6291 -2759.1885~rep3932~0#@$PAD~RECT~5853.979~-2761.138~1.9685~2.3622~1~SD_CLK~2~0~5852.9948 -2762.3191 5854.9633 -2762.3191 5854.9633 -2759.9569 5852.9948 -2759.9569~0~rep3930~0~~Y~0~0~0.2~5853.979,-2761.138#@$PAD~RECT~5857.579~-2761.138~1.9685~2.3622~1~NETJ2_5~1~0~5856.5947 -2762.3191 5858.5633 -2762.3191 5858.5633 -2759.9569 5856.5947 -2759.9569~0~rep3931~0~~Y~0~0~0.2~5857.579,-2761.138","LIB~5855.7397~-2766.1779~package`A0402`value`0.1R~~~gged92c635076b33213~1~~~0~~yes~~#@$TEXT~P~5842.904~-2766.722~0.433~0~0~3~~2.7559~R23~M 5842.9 -2769.5L5842.9 -2766.87 M 5842.9 -2769.5L5844.03 -2769.5 L5844.41 -2769.38 L5844.53 -2769.25 L5844.66 -2769 L5844.66 -2768.75 L5844.53 -2768.5 L5844.41 -2768.38 L5844.03 -2768.25 L5842.9 -2768.25 M 5843.78 -2768.25L5844.66 -2766.87 M 5845.61 -2768.88L5845.61 -2769 L5845.73 -2769.25 L5845.86 -2769.38 L5846.11 -2769.5 L5846.61 -2769.5 L5846.86 -2769.38 L5846.99 -2769.25 L5847.11 -2769 L5847.11 -2768.75 L5846.99 -2768.5 L5846.74 -2768.13 L5845.48 -2766.87 L5847.24 -2766.87 M 5848.32 -2769.5L5849.69 -2769.5 L5848.94 -2768.5 L5849.32 -2768.5 L5849.57 -2768.38 L5849.69 -2768.25 L5849.82 -2767.87 L5849.82 -2767.62 L5849.69 -2767.25 L5849.44 -2767 L5849.07 -2766.87 L5848.69 -2766.87 L5848.32 -2767 L5848.19 -2767.12 L5848.06 -2767.37 ~none~rep3937~~0~#@$TEXT~N~5860.819~-2766.565~0.4724~0~0~3~~3.1496~0.1R~M 5861.68 -2769.74L5861.25 -2769.6 L5860.96 -2769.17 L5860.82 -2768.45 L5860.82 -2768.03 L5860.96 -2767.31 L5861.25 -2766.88 L5861.68 -2766.74 L5861.96 -2766.74 L5862.39 -2766.88 L5862.68 -2767.31 L5862.82 -2768.03 L5862.82 -2768.45 L5862.68 -2769.17 L5862.39 -2769.6 L5861.96 -2769.74 L5861.68 -2769.74 M 5863.91 -2767.45L5863.77 -2767.31 L5863.91 -2767.17 L5864.05 -2767.31 L5863.91 -2767.45 M 5865 -2769.17L5865.29 -2769.31 L5865.72 -2769.74 L5865.72 -2766.74 M 5866.66 -2769.74L5866.66 -2766.74 M 5866.66 -2769.74L5867.95 -2769.74 L5868.38 -2769.6 L5868.52 -2769.46 L5868.66 -2769.17 L5868.66 -2768.88 L5868.52 -2768.6 L5868.38 -2768.45 L5867.95 -2768.31 L5866.66 -2768.31 M 5867.66 -2768.31L5868.66 -2766.74 ~none~rep3938~~0~#@$TRACK~0.7874~3~~5859.5897 -2764.2279 5852.1397 -2764.2279 5852.1397 -2768.3279 5859.5897 -2768.3279 5859.5897 -2764.2279~rep3941~0#@$PAD~RECT~5857.54~-2766.178~1.9685~2.3622~1~NETR23_1~1~0~5856.5557 -2767.3591 5858.5243 -2767.3591 5858.5243 -2764.9969 5856.5557 -2764.9969~0~rep3939~0~~Y~0~0~0.2~5857.54,-2766.178#@$PAD~RECT~5853.94~-2766.178~1.9685~2.3622~1~+3V3~2~0~5852.9557 -2767.3591 5854.9243 -2767.3591 5854.9243 -2764.9969 5852.9557 -2764.9969~0~rep3940~0~~Y~0~0~0.2~5853.94,-2766.178","LIB~5588.285~-2803.2251~package`A0402`value`0.1R~360~~ggefa394caafc8878d8~1~~~0~~yes~~#@$TEXT~P~5584.781~-2798.461~0.433~0~0~3~~2.7559~R22~M 5584.78 -2801.24L5584.78 -2798.61 M 5584.78 -2801.24L5585.91 -2801.24 L5586.28 -2801.12 L5586.41 -2800.99 L5586.53 -2800.74 L5586.53 -2800.49 L5586.41 -2800.24 L5586.28 -2800.11 L5585.91 -2799.99 L5584.78 -2799.99 M 5585.66 -2799.99L5586.53 -2798.61 M 5587.49 -2800.62L5587.49 -2800.74 L5587.61 -2800.99 L5587.74 -2801.12 L5587.99 -2801.24 L5588.49 -2801.24 L5588.74 -2801.12 L5588.86 -2800.99 L5588.99 -2800.74 L5588.99 -2800.49 L5588.86 -2800.24 L5588.61 -2799.86 L5587.36 -2798.61 L5589.12 -2798.61 M 5590.07 -2800.62L5590.07 -2800.74 L5590.19 -2800.99 L5590.32 -2801.12 L5590.57 -2801.24 L5591.07 -2801.24 L5591.32 -2801.12 L5591.45 -2800.99 L5591.57 -2800.74 L5591.57 -2800.49 L5591.45 -2800.24 L5591.19 -2799.86 L5589.94 -2798.61 L5591.7 -2798.61 ~none~rep3946~~0~#@$TEXT~N~5586.169~-2794.719~0.4724~0~0~3~~3.1496~0.1R~M 5587.03 -2797.9L5586.6 -2797.75 L5586.31 -2797.32 L5586.17 -2796.61 L5586.17 -2796.18 L5586.31 -2795.46 L5586.6 -2795.03 L5587.03 -2794.89 L5587.31 -2794.89 L5587.74 -2795.03 L5588.03 -2795.46 L5588.17 -2796.18 L5588.17 -2796.61 L5588.03 -2797.32 L5587.74 -2797.75 L5587.31 -2797.9 L5587.03 -2797.9 M 5589.26 -2795.61L5589.12 -2795.46 L5589.26 -2795.32 L5589.4 -2795.46 L5589.26 -2795.61 M 5590.35 -2797.32L5590.64 -2797.47 L5591.07 -2797.9 L5591.07 -2794.89 M 5592.01 -2797.9L5592.01 -2794.89 M 5592.01 -2797.9L5593.3 -2797.9 L5593.73 -2797.75 L5593.87 -2797.61 L5594.01 -2797.32 L5594.01 -2797.04 L5593.87 -2796.75 L5593.73 -2796.61 L5593.3 -2796.47 L5592.01 -2796.47 M 5593.01 -2796.47L5594.01 -2794.89 ~none~rep3947~~0~#@$TRACK~0.7874~3~~5592.135 -2801.2751 5584.685 -2801.2751 5584.685 -2805.3751 5592.135 -2805.3751 5592.135 -2801.2751~rep3950~0#@$PAD~RECT~5590.085~-2803.225~1.9685~2.3622~1~NETU1_21~1~0~5589.1007 -2804.4061 5591.0693 -2804.4061 5591.0693 -2802.0439 5589.1007 -2802.0439~0~rep3948~0~~Y~0~0~0.2~5590.085,-2803.225#@$PAD~RECT~5586.485~-2803.225~1.9685~2.3622~1~GND~2~0~5585.5007 -2804.4061 5587.4693 -2804.4061 5587.4693 -2802.0439 5585.5007 -2802.0439~0~rep3949~0~~Y~0~0~0.2~5586.485,-2803.225","LIB~5607.6944~-2782.9888~package`A0402`value`220R~90~~ggec77b08197b178948~1~~~0~~yes~~#@$TEXT~P~5604.387~-2776.375~0.433~0~0~3~~2.7559~R21~M 5604.39 -2779.16L5604.39 -2776.52 M 5604.39 -2779.16L5605.51 -2779.16 L5605.89 -2779.03 L5606.02 -2778.91 L5606.14 -2778.65 L5606.14 -2778.4 L5606.02 -2778.15 L5605.89 -2778.03 L5605.51 -2777.9 L5604.39 -2777.9 M 5605.26 -2777.9L5606.14 -2776.52 M 5607.09 -2778.53L5607.09 -2778.65 L5607.22 -2778.91 L5607.34 -2779.03 L5607.59 -2779.16 L5608.1 -2779.16 L5608.35 -2779.03 L5608.47 -2778.91 L5608.6 -2778.65 L5608.6 -2778.4 L5608.47 -2778.15 L5608.22 -2777.78 L5606.97 -2776.52 L5608.72 -2776.52 M 5609.55 -2778.65L5609.8 -2778.78 L5610.17 -2779.16 L5610.17 -2776.52 ~none~rep3955~~0~#@$TEXT~N~5601.366~-2771.609~0.4724~0~0~3~~3.1496~220R~M 5601.51 -2774.07L5601.51 -2774.21 L5601.65 -2774.5 L5601.8 -2774.64 L5602.08 -2774.79 L5602.65 -2774.79 L5602.94 -2774.64 L5603.08 -2774.5 L5603.23 -2774.21 L5603.23 -2773.93 L5603.08 -2773.64 L5602.8 -2773.21 L5601.37 -2771.78 L5603.37 -2771.78 M 5604.46 -2774.07L5604.46 -2774.21 L5604.6 -2774.5 L5604.74 -2774.64 L5605.03 -2774.79 L5605.6 -2774.79 L5605.89 -2774.64 L5606.03 -2774.5 L5606.18 -2774.21 L5606.18 -2773.93 L5606.03 -2773.64 L5605.75 -2773.21 L5604.32 -2771.78 L5606.32 -2771.78 M 5608.12 -2774.79L5607.69 -2774.64 L5607.41 -2774.21 L5607.26 -2773.5 L5607.26 -2773.07 L5607.41 -2772.35 L5607.69 -2771.92 L5608.12 -2771.78 L5608.41 -2771.78 L5608.84 -2771.92 L5609.13 -2772.35 L5609.27 -2773.07 L5609.27 -2773.5 L5609.13 -2774.21 L5608.84 -2774.64 L5608.41 -2774.79 L5608.12 -2774.79 M 5610.21 -2774.79L5610.21 -2771.78 M 5610.21 -2774.79L5611.5 -2774.79 L5611.93 -2774.64 L5612.07 -2774.5 L5612.22 -2774.21 L5612.22 -2773.93 L5612.07 -2773.64 L5611.93 -2773.5 L5611.5 -2773.36 L5610.21 -2773.36 M 5611.22 -2773.36L5612.22 -2771.78 ~none~rep3956~~0~#@$TRACK~0.7874~3~~5609.6444 -2786.8389 5605.5444 -2786.8389 5605.5444 -2779.3889 5609.6444 -2779.3889 5609.6444 -2786.8389~rep3959~0#@$PAD~RECT~5607.694~-2784.789~1.9685~2.3622~1~I2S0_MCLK_R~1~0~5606.5129 -2783.8047 5606.5129 -2785.7733 5608.8751 -2785.7733 5608.8751 -2783.8047~90~rep3957~0~~Y~0~0~0.2~5607.694,-2784.789#@$PAD~RECT~5607.694~-2781.189~1.9685~2.3622~1~I2S0_MCLK~2~0~5606.5129 -2780.2047 5606.5129 -2782.1733 5608.8751 -2782.1733 5608.8751 -2780.2047~90~rep3958~0~~Y~0~0~0.2~5607.694,-2781.189","LIB~5653.2456~-2807.9495~package`A0402`value`220R~180~~gge13e77c54ede4b306~1~~~0~~yes~~#@$TEXT~P~5659.506~-2807.674~0.433~0~0~3~~2.7559~R20~M 5659.51 -2810.45L5659.51 -2807.82 M 5659.51 -2810.45L5660.63 -2810.45 L5661.01 -2810.33 L5661.13 -2810.2 L5661.26 -2809.95 L5661.26 -2809.7 L5661.13 -2809.45 L5661.01 -2809.33 L5660.63 -2809.2 L5659.51 -2809.2 M 5660.38 -2809.2L5661.26 -2807.82 M 5662.21 -2809.83L5662.21 -2809.95 L5662.34 -2810.2 L5662.46 -2810.33 L5662.71 -2810.45 L5663.21 -2810.45 L5663.46 -2810.33 L5663.59 -2810.2 L5663.71 -2809.95 L5663.71 -2809.7 L5663.59 -2809.45 L5663.34 -2809.08 L5662.09 -2807.82 L5663.84 -2807.82 M 5665.42 -2810.45L5665.04 -2810.33 L5664.79 -2809.95 L5664.67 -2809.33 L5664.67 -2808.95 L5664.79 -2808.33 L5665.04 -2807.95 L5665.42 -2807.82 L5665.67 -2807.82 L5666.04 -2807.95 L5666.3 -2808.33 L5666.42 -2808.95 L5666.42 -2809.33 L5666.3 -2809.95 L5666.04 -2810.33 L5665.67 -2810.45 L5665.42 -2810.45 ~none~rep3964~~0~#@$TEXT~N~5650.264~-2812.633~0.4724~0~0~3~~3.1496~220R~M 5650.41 -2815.1L5650.41 -2815.24 L5650.55 -2815.52 L5650.69 -2815.67 L5650.98 -2815.81 L5651.55 -2815.81 L5651.84 -2815.67 L5651.98 -2815.52 L5652.12 -2815.24 L5652.12 -2814.95 L5651.98 -2814.67 L5651.7 -2814.24 L5650.26 -2812.8 L5652.27 -2812.8 M 5653.36 -2815.1L5653.36 -2815.24 L5653.5 -2815.52 L5653.64 -2815.67 L5653.93 -2815.81 L5654.5 -2815.81 L5654.79 -2815.67 L5654.93 -2815.52 L5655.07 -2815.24 L5655.07 -2814.95 L5654.93 -2814.67 L5654.64 -2814.24 L5653.21 -2812.8 L5655.22 -2812.8 M 5657.02 -2815.81L5656.59 -2815.67 L5656.31 -2815.24 L5656.16 -2814.52 L5656.16 -2814.09 L5656.31 -2813.38 L5656.59 -2812.95 L5657.02 -2812.8 L5657.31 -2812.8 L5657.74 -2812.95 L5658.02 -2813.38 L5658.17 -2814.09 L5658.17 -2814.52 L5658.02 -2815.24 L5657.74 -2815.67 L5657.31 -2815.81 L5657.02 -2815.81 M 5659.11 -2815.81L5659.11 -2812.8 M 5659.11 -2815.81L5660.4 -2815.81 L5660.83 -2815.67 L5660.97 -2815.52 L5661.12 -2815.24 L5661.12 -2814.95 L5660.97 -2814.67 L5660.83 -2814.52 L5660.4 -2814.38 L5659.11 -2814.38 M 5660.11 -2814.38L5661.12 -2812.8 ~none~rep3965~~0~#@$TRACK~0.7874~3~~5656.8456 -2809.8995 5649.3956 -2809.8995 5649.3956 -2805.7995 5656.8456 -2805.7995 5656.8456 -2809.8995~rep3968~0#@$PAD~RECT~5651.446~-2807.949~1.9685~2.3622~1~NETR20_1~1~0~5652.4303 -2806.7679 5650.4617 -2806.7679 5650.4617 -2809.1301 5652.4303 -2809.1301~180~rep3966~0~~Y~0~0~0.2~5651.446,-2807.949#@$PAD~RECT~5655.046~-2807.949~1.9685~2.3622~1~I2S0_WS~2~0~5656.0303 -2806.7679 5654.0618 -2806.7679 5654.0618 -2809.1301 5656.0303 -2809.1301~180~rep3967~0~~Y~0~0~0.2~5655.046,-2807.949","LIB~5653.2456~-2797.9495~package`A0402`value`220R~180~~ggea32210a39874d8f8~1~~~0~~yes~~#@$TEXT~P~5659.545~-2797.91~0.433~0~0~3~~2.7559~R19~M 5659.54 -2800.69L5659.54 -2798.06 M 5659.54 -2800.69L5660.67 -2800.69 L5661.05 -2800.57 L5661.17 -2800.44 L5661.3 -2800.19 L5661.3 -2799.94 L5661.17 -2799.69 L5661.05 -2799.56 L5660.67 -2799.44 L5659.54 -2799.44 M 5660.42 -2799.44L5661.3 -2798.06 M 5662.13 -2800.19L5662.38 -2800.32 L5662.75 -2800.69 L5662.75 -2798.06 M 5665.21 -2799.81L5665.08 -2799.44 L5664.83 -2799.19 L5664.46 -2799.06 L5664.33 -2799.06 L5663.95 -2799.19 L5663.7 -2799.44 L5663.58 -2799.81 L5663.58 -2799.94 L5663.7 -2800.32 L5663.95 -2800.57 L5664.33 -2800.69 L5664.46 -2800.69 L5664.83 -2800.57 L5665.08 -2800.32 L5665.21 -2799.81 L5665.21 -2799.19 L5665.08 -2798.56 L5664.83 -2798.19 L5664.46 -2798.06 L5664.2 -2798.06 L5663.83 -2798.19 L5663.7 -2798.44 ~none~rep3973~~0~#@$TEXT~N~5669.122~-2797.672~0.4724~0~0~3~~3.1496~220R~M 5669.27 -2800.13L5669.27 -2800.28 L5669.41 -2800.56 L5669.55 -2800.71 L5669.84 -2800.85 L5670.41 -2800.85 L5670.7 -2800.71 L5670.84 -2800.56 L5670.98 -2800.28 L5670.98 -2799.99 L5670.84 -2799.7 L5670.55 -2799.28 L5669.12 -2797.84 L5671.13 -2797.84 M 5672.21 -2800.13L5672.21 -2800.28 L5672.36 -2800.56 L5672.5 -2800.71 L5672.79 -2800.85 L5673.36 -2800.85 L5673.65 -2800.71 L5673.79 -2800.56 L5673.93 -2800.28 L5673.93 -2799.99 L5673.79 -2799.7 L5673.5 -2799.28 L5672.07 -2797.84 L5674.08 -2797.84 M 5675.88 -2800.85L5675.45 -2800.71 L5675.16 -2800.28 L5675.02 -2799.56 L5675.02 -2799.13 L5675.16 -2798.42 L5675.45 -2797.99 L5675.88 -2797.84 L5676.17 -2797.84 L5676.6 -2797.99 L5676.88 -2798.42 L5677.02 -2799.13 L5677.02 -2799.56 L5676.88 -2800.28 L5676.6 -2800.71 L5676.17 -2800.85 L5675.88 -2800.85 M 5677.97 -2800.85L5677.97 -2797.84 M 5677.97 -2800.85L5679.26 -2800.85 L5679.69 -2800.71 L5679.83 -2800.56 L5679.97 -2800.28 L5679.97 -2799.99 L5679.83 -2799.7 L5679.69 -2799.56 L5679.26 -2799.42 L5677.97 -2799.42 M 5678.97 -2799.42L5679.97 -2797.84 ~none~rep3974~~0~#@$TRACK~0.7874~3~~5656.8456 -2799.8995 5656.8456 -2795.7995 5649.3956 -2795.7995 5649.3956 -2799.8995 5656.8456 -2799.8995~rep3977~0#@$PAD~RECT~5655.046~-2797.949~1.9685~2.3622~1~I2S0_TX_SDA~2~0~5656.0303 -2796.7679 5654.0618 -2796.7679 5654.0618 -2799.1301 5656.0303 -2799.1301~180~rep3975~0~~Y~0~0~0.2~5655.046,-2797.949#@$PAD~RECT~5651.446~-2797.949~1.9685~2.3622~1~NETR19_1~1~0~5652.4303 -2796.7679 5650.4617 -2796.7679 5650.4617 -2799.1301 5652.4303 -2799.1301~180~rep3976~0~~Y~0~0~0.2~5651.446,-2797.949","LIB~5653.285~-2792.9101~package`A0402`value`220R~180~~gge5f673669f0d56d8f~1~~~0~~yes~~#@$TEXT~P~5658.807~-2792.633~0.433~0~0~3~~2.7559~R18~M 5658.81 -2795.41L5658.81 -2792.78 M 5658.81 -2795.41L5659.93 -2795.41 L5660.31 -2795.29 L5660.44 -2795.16 L5660.56 -2794.91 L5660.56 -2794.66 L5660.44 -2794.41 L5660.31 -2794.29 L5659.93 -2794.16 L5658.81 -2794.16 M 5659.68 -2794.16L5660.56 -2792.78 M 5661.39 -2794.91L5661.64 -2795.04 L5662.01 -2795.41 L5662.01 -2792.78 M 5663.47 -2795.41L5663.09 -2795.29 L5662.97 -2795.04 L5662.97 -2794.79 L5663.09 -2794.54 L5663.34 -2794.41 L5663.84 -2794.29 L5664.22 -2794.16 L5664.47 -2793.91 L5664.59 -2793.66 L5664.59 -2793.28 L5664.47 -2793.03 L5664.34 -2792.91 L5663.97 -2792.78 L5663.47 -2792.78 L5663.09 -2792.91 L5662.97 -2793.03 L5662.84 -2793.28 L5662.84 -2793.66 L5662.97 -2793.91 L5663.22 -2794.16 L5663.59 -2794.29 L5664.09 -2794.41 L5664.34 -2794.54 L5664.47 -2794.79 L5664.47 -2795.04 L5664.34 -2795.29 L5663.97 -2795.41 L5663.47 -2795.41 ~none~rep3982~~0~#@$TEXT~N~5668.925~-2792.908~0.4724~0~0~3~~3.1496~220R~M 5669.07 -2795.37L5669.07 -2795.51 L5669.21 -2795.8 L5669.35 -2795.94 L5669.64 -2796.09 L5670.21 -2796.09 L5670.5 -2795.94 L5670.64 -2795.8 L5670.79 -2795.51 L5670.79 -2795.23 L5670.64 -2794.94 L5670.36 -2794.51 L5668.93 -2793.08 L5670.93 -2793.08 M 5672.02 -2795.37L5672.02 -2795.51 L5672.16 -2795.8 L5672.3 -2795.94 L5672.59 -2796.09 L5673.16 -2796.09 L5673.45 -2795.94 L5673.59 -2795.8 L5673.74 -2795.51 L5673.74 -2795.23 L5673.59 -2794.94 L5673.31 -2794.51 L5671.87 -2793.08 L5673.88 -2793.08 M 5675.68 -2796.09L5675.25 -2795.94 L5674.97 -2795.51 L5674.82 -2794.8 L5674.82 -2794.37 L5674.97 -2793.65 L5675.25 -2793.22 L5675.68 -2793.08 L5675.97 -2793.08 L5676.4 -2793.22 L5676.68 -2793.65 L5676.83 -2794.37 L5676.83 -2794.8 L5676.68 -2795.51 L5676.4 -2795.94 L5675.97 -2796.09 L5675.68 -2796.09 M 5677.77 -2796.09L5677.77 -2793.08 M 5677.77 -2796.09L5679.06 -2796.09 L5679.49 -2795.94 L5679.63 -2795.8 L5679.78 -2795.51 L5679.78 -2795.23 L5679.63 -2794.94 L5679.49 -2794.8 L5679.06 -2794.65 L5677.77 -2794.65 M 5678.77 -2794.65L5679.78 -2793.08 ~none~rep3983~~0~#@$TRACK~0.7874~3~~5656.885 -2794.8601 5656.885 -2790.7601 5649.435 -2790.7601 5649.435 -2794.8601 5656.885 -2794.8601~rep3986~0#@$PAD~RECT~5655.085~-2792.91~1.9685~2.3622~1~I2S0_SCK~2~0~5656.0693 -2791.7289 5654.1007 -2791.7289 5654.1007 -2794.0911 5656.0693 -2794.0911~180~rep3984~0~~Y~0~0~0.2~5655.085,-2792.91#@$PAD~RECT~5651.485~-2792.91~1.9685~2.3622~1~NETR18_1~1~0~5652.4693 -2791.7289 5650.5007 -2791.7289 5650.5007 -2794.0911 5652.4693 -2794.0911~180~rep3985~0~~Y~0~0~0.2~5651.485,-2792.91","LIB~5523.9251~-2783.1051~package`A0402`value`56K~90~~gge6346d187b4e0bc9c~1~~~0~~yes~~#@$TEXT~P~5522.272~-2796.648~0.433~0~0~3~~2.7559~R17~M 5522.27 -2799.43L5522.27 -2796.8 M 5522.27 -2799.43L5523.4 -2799.43 L5523.77 -2799.3 L5523.9 -2799.18 L5524.03 -2798.93 L5524.03 -2798.68 L5523.9 -2798.43 L5523.77 -2798.3 L5523.4 -2798.18 L5522.27 -2798.18 M 5523.15 -2798.18L5524.03 -2796.8 M 5524.85 -2798.93L5525.1 -2799.05 L5525.48 -2799.43 L5525.48 -2796.8 M 5528.06 -2799.43L5526.81 -2796.8 M 5526.31 -2799.43L5528.06 -2799.43 ~none~rep3991~~0~#@$TEXT~N~5516.507~-2797.583~0.4724~0~0~3~~3.1496~56K~M 5518.22 -2800.76L5516.79 -2800.76 L5516.65 -2799.47 L5516.79 -2799.62 L5517.22 -2799.76 L5517.65 -2799.76 L5518.08 -2799.62 L5518.37 -2799.33 L5518.51 -2798.9 L5518.51 -2798.61 L5518.37 -2798.18 L5518.08 -2797.9 L5517.65 -2797.75 L5517.22 -2797.75 L5516.79 -2797.9 L5516.65 -2798.04 L5516.51 -2798.33 M 5521.17 -2800.33L5521.03 -2800.62 L5520.6 -2800.76 L5520.32 -2800.76 L5519.89 -2800.62 L5519.6 -2800.19 L5519.46 -2799.47 L5519.46 -2798.76 L5519.6 -2798.18 L5519.89 -2797.9 L5520.32 -2797.75 L5520.46 -2797.75 L5520.89 -2797.9 L5521.17 -2798.18 L5521.32 -2798.61 L5521.32 -2798.76 L5521.17 -2799.19 L5520.89 -2799.47 L5520.46 -2799.62 L5520.32 -2799.62 L5519.89 -2799.47 L5519.6 -2799.19 L5519.46 -2798.76 M 5522.26 -2800.76L5522.26 -2797.75 M 5524.27 -2800.76L5522.26 -2798.76 M 5522.98 -2799.47L5524.27 -2797.75 ~none~rep3992~~0~#@$TRACK~0.7874~3~~5525.8751 -2786.9551 5521.7751 -2786.9551 5521.7751 -2779.5051 5525.8751 -2779.5051 5525.8751 -2786.9551~rep3995~0#@$PAD~RECT~5523.925~-2784.905~1.9685~2.3622~1~LHPOUT~1~0~5522.7439 -2783.9207 5522.7439 -2785.8893 5525.1061 -2785.8893 5525.1061 -2783.9207~90~rep3993~0~~Y~0~0~0.2~5523.925,-2784.905#@$PAD~RECT~5523.925~-2781.305~1.9685~2.3622~1~GND~2~0~5522.7439 -2780.3207 5522.7439 -2782.2893 5525.1061 -2782.2893 5525.1061 -2780.3207~90~rep3994~0~~Y~0~0~0.2~5523.925,-2781.305","LIB~5523.9251~-2774.0893~package`A0402`value`56K~270~~gge3c543c7c58e1cc80~1~~~0~~yes~~#@$TEXT~P~5520.618~-2770.585~0.433~0~0~3~~2.7559~R16~M 5520.62 -2773.37L5520.62 -2770.74 M 5520.62 -2773.37L5521.75 -2773.37 L5522.12 -2773.24 L5522.25 -2773.12 L5522.37 -2772.87 L5522.37 -2772.61 L5522.25 -2772.36 L5522.12 -2772.24 L5521.75 -2772.11 L5520.62 -2772.11 M 5521.49 -2772.11L5522.37 -2770.74 M 5523.2 -2772.87L5523.45 -2772.99 L5523.82 -2773.37 L5523.82 -2770.74 M 5526.15 -2772.99L5526.03 -2773.24 L5525.65 -2773.37 L5525.4 -2773.37 L5525.03 -2773.24 L5524.78 -2772.87 L5524.65 -2772.24 L5524.65 -2771.61 L5524.78 -2771.11 L5525.03 -2770.86 L5525.4 -2770.74 L5525.53 -2770.74 L5525.9 -2770.86 L5526.15 -2771.11 L5526.28 -2771.49 L5526.28 -2771.61 L5526.15 -2771.99 L5525.9 -2772.24 L5525.53 -2772.36 L5525.4 -2772.36 L5525.03 -2772.24 L5524.78 -2771.99 L5524.65 -2771.61 ~none~rep4000~~0~#@$TEXT~N~5517.413~-2779.709~0.4724~0~0~3~~3.1496~56K~M 5519.13 -2782.89L5517.7 -2782.89 L5517.56 -2781.6 L5517.7 -2781.74 L5518.13 -2781.88 L5518.56 -2781.88 L5518.99 -2781.74 L5519.27 -2781.46 L5519.42 -2781.03 L5519.42 -2780.74 L5519.27 -2780.31 L5518.99 -2780.02 L5518.56 -2779.88 L5518.13 -2779.88 L5517.7 -2780.02 L5517.56 -2780.17 L5517.41 -2780.45 M 5522.08 -2782.46L5521.94 -2782.74 L5521.51 -2782.89 L5521.22 -2782.89 L5520.79 -2782.74 L5520.5 -2782.31 L5520.36 -2781.6 L5520.36 -2780.88 L5520.5 -2780.31 L5520.79 -2780.02 L5521.22 -2779.88 L5521.36 -2779.88 L5521.79 -2780.02 L5522.08 -2780.31 L5522.22 -2780.74 L5522.22 -2780.88 L5522.08 -2781.31 L5521.79 -2781.6 L5521.36 -2781.74 L5521.22 -2781.74 L5520.79 -2781.6 L5520.5 -2781.31 L5520.36 -2780.88 M 5523.17 -2782.89L5523.17 -2779.88 M 5525.17 -2782.89L5523.17 -2780.88 M 5523.88 -2781.6L5525.17 -2779.88 ~none~rep4001~~0~#@$TRACK~0.7874~3~~5521.9751 -2777.6893 5526.0751 -2777.6893 5526.0751 -2770.2393 5521.9751 -2770.2393 5521.9751 -2777.6893~rep4004~0#@$PAD~RECT~5523.925~-2772.289~1.9685~2.3622~1~RHPOUT~1~0~5525.1061 -2773.2733 5525.1061 -2771.3047 5522.7439 -2771.3047 5522.7439 -2773.2733~270~rep4002~0~~Y~0~0~0.2~5523.925,-2772.289#@$PAD~RECT~5523.925~-2775.889~1.9685~2.3622~1~GND~2~0~5525.1061 -2776.8733 5525.1061 -2774.9047 5522.7439 -2774.9047 5522.7439 -2776.8733~270~rep4003~0~~Y~0~0~0.2~5523.925,-2775.889","LIB~5586.8283~-2818.7762~package`A0402`value`680R~90~~ggefeece054417b9159~1~~~0~~yes~~#@$TEXT~P~5585.057~-2815.43~0.433~0~0~3~~2.7559~R15~M 5585.06 -2818.21L5585.06 -2815.58 M 5585.06 -2818.21L5586.18 -2818.21 L5586.56 -2818.09 L5586.69 -2817.96 L5586.81 -2817.71 L5586.81 -2817.46 L5586.69 -2817.21 L5586.56 -2817.08 L5586.18 -2816.96 L5585.06 -2816.96 M 5585.93 -2816.96L5586.81 -2815.58 M 5587.64 -2817.71L5587.89 -2817.83 L5588.26 -2818.21 L5588.26 -2815.58 M 5590.59 -2818.21L5589.34 -2818.21 L5589.22 -2817.08 L5589.34 -2817.21 L5589.72 -2817.33 L5590.09 -2817.33 L5590.47 -2817.21 L5590.72 -2816.96 L5590.84 -2816.58 L5590.84 -2816.33 L5590.72 -2815.96 L5590.47 -2815.71 L5590.09 -2815.58 L5589.72 -2815.58 L5589.34 -2815.71 L5589.22 -2815.83 L5589.09 -2816.08 ~none~rep4009~~0~#@$TEXT~N~5588.204~-2825.233~0.4724~0~0~3~~3.1496~680R~M 5589.92 -2827.98L5589.78 -2828.27 L5589.35 -2828.41 L5589.06 -2828.41 L5588.63 -2828.27 L5588.35 -2827.84 L5588.2 -2827.12 L5588.2 -2826.41 L5588.35 -2825.83 L5588.63 -2825.55 L5589.06 -2825.4 L5589.21 -2825.4 L5589.64 -2825.55 L5589.92 -2825.83 L5590.07 -2826.26 L5590.07 -2826.41 L5589.92 -2826.84 L5589.64 -2827.12 L5589.21 -2827.27 L5589.06 -2827.27 L5588.63 -2827.12 L5588.35 -2826.84 L5588.2 -2826.41 M 5591.73 -2828.41L5591.3 -2828.27 L5591.15 -2827.98 L5591.15 -2827.7 L5591.3 -2827.41 L5591.58 -2827.27 L5592.16 -2827.12 L5592.59 -2826.98 L5592.87 -2826.69 L5593.01 -2826.41 L5593.01 -2825.98 L5592.87 -2825.69 L5592.73 -2825.55 L5592.3 -2825.4 L5591.73 -2825.4 L5591.3 -2825.55 L5591.15 -2825.69 L5591.01 -2825.98 L5591.01 -2826.41 L5591.15 -2826.69 L5591.44 -2826.98 L5591.87 -2827.12 L5592.44 -2827.27 L5592.73 -2827.41 L5592.87 -2827.7 L5592.87 -2827.98 L5592.73 -2828.27 L5592.3 -2828.41 L5591.73 -2828.41 M 5594.82 -2828.41L5594.39 -2828.27 L5594.1 -2827.84 L5593.96 -2827.12 L5593.96 -2826.69 L5594.1 -2825.98 L5594.39 -2825.55 L5594.82 -2825.4 L5595.1 -2825.4 L5595.53 -2825.55 L5595.82 -2825.98 L5595.96 -2826.69 L5595.96 -2827.12 L5595.82 -2827.84 L5595.53 -2828.27 L5595.1 -2828.41 L5594.82 -2828.41 M 5596.91 -2828.41L5596.91 -2825.4 M 5596.91 -2828.41L5598.2 -2828.41 L5598.63 -2828.27 L5598.77 -2828.12 L5598.91 -2827.84 L5598.91 -2827.55 L5598.77 -2827.27 L5598.63 -2827.12 L5598.2 -2826.98 L5596.91 -2826.98 M 5597.91 -2826.98L5598.91 -2825.4 ~none~rep4010~~0~#@$TRACK~0.7874~3~~5588.7783 -2822.6263 5584.6783 -2822.6263 5584.6783 -2815.1763 5588.7783 -2815.1763 5588.7783 -2822.6263~rep4013~0#@$PAD~RECT~5586.828~-2820.576~1.9685~2.3622~1~NETK2_1~1~0~5585.6469 -2819.5917 5585.6469 -2821.5603 5588.0091 -2821.5603 5588.0091 -2819.5917~90~rep4011~0~~Y~0~0~0.2~5586.828,-2820.576#@$PAD~RECT~5586.828~-2816.976~1.9685~2.3622~1~MICBIAS~2~0~5585.6469 -2815.9917 5585.6469 -2817.9603 5588.0091 -2817.9603 5588.0091 -2815.9917~90~rep4012~0~~Y~0~0~0.2~5586.828,-2816.976","LIB~5576.7496~-2818.7369~package`A0402`value`47K~90~~gge8b54177fc4d64d35~1~~~0~~yes~~#@$TEXT~P~5575.057~-2815.43~0.433~0~0~3~~2.7559~R14~M 5575.06 -2818.21L5575.06 -2815.58 M 5575.06 -2818.21L5576.18 -2818.21 L5576.56 -2818.09 L5576.69 -2817.96 L5576.81 -2817.71 L5576.81 -2817.46 L5576.69 -2817.21 L5576.56 -2817.08 L5576.18 -2816.96 L5575.06 -2816.96 M 5575.93 -2816.96L5576.81 -2815.58 M 5577.64 -2817.71L5577.89 -2817.83 L5578.26 -2818.21 L5578.26 -2815.58 M 5580.34 -2818.21L5579.09 -2816.46 L5580.97 -2816.46 M 5580.34 -2818.21L5580.34 -2815.58 ~none~rep4018~~0~#@$TEXT~N~5570.523~-2826.244~0.4724~0~0~3~~3.1496~47K~M 5571.95 -2829.42L5570.52 -2827.42 L5572.67 -2827.42 M 5571.95 -2829.42L5571.95 -2826.42 M 5575.62 -2829.42L5574.19 -2826.42 M 5573.62 -2829.42L5575.62 -2829.42 M 5576.56 -2829.42L5576.56 -2826.42 M 5578.57 -2829.42L5576.56 -2827.42 M 5577.28 -2828.13L5578.57 -2826.42 ~none~rep4019~~0~#@$TRACK~0.7874~3~~5578.6995 -2822.5869 5574.5995 -2822.5869 5574.5995 -2815.1369 5578.6995 -2815.1369 5578.6995 -2822.5869~rep4022~0#@$PAD~RECT~5576.75~-2820.537~1.9685~2.3622~1~NETK2_1~1~0~5575.5689 -2819.5527 5575.5689 -2821.5213 5577.9311 -2821.5213 5577.9311 -2819.5527~90~rep4020~0~~Y~0~0~0.2~5576.75,-2820.537#@$PAD~RECT~5576.75~-2816.937~1.9685~2.3622~1~GND~2~0~5575.5689 -2815.9527 5575.5689 -2817.9213 5577.9311 -2817.9213 5577.9311 -2815.9527~90~rep4021~0~~Y~0~0~0.2~5576.75,-2816.937","LIB~5580.6866~-2791.2172~package`A0402`value`4.7K~270~~ggeff4077a9ca69db92~1~~~0~~yes~~#@$TEXT~P~5579.151~-2787.32~0.433~0~0~3~~2.7559~R13~M 5579.15 -2790.1L5579.15 -2787.47 M 5579.15 -2790.1L5580.28 -2790.1 L5580.65 -2789.98 L5580.78 -2789.85 L5580.9 -2789.6 L5580.9 -2789.35 L5580.78 -2789.1 L5580.65 -2788.97 L5580.28 -2788.85 L5579.15 -2788.85 M 5580.03 -2788.85L5580.9 -2787.47 M 5581.73 -2789.6L5581.98 -2789.72 L5582.36 -2790.1 L5582.36 -2787.47 M 5583.44 -2790.1L5584.81 -2790.1 L5584.06 -2789.1 L5584.44 -2789.1 L5584.69 -2788.97 L5584.81 -2788.85 L5584.94 -2788.47 L5584.94 -2788.22 L5584.81 -2787.85 L5584.56 -2787.6 L5584.19 -2787.47 L5583.81 -2787.47 L5583.44 -2787.6 L5583.31 -2787.72 L5583.18 -2787.97 ~none~rep4027~~0~#@$TEXT~N~5583.965~-2784.444~0.4724~0~0~3~~3.1496~4.7K~M 5585.4 -2787.62L5583.96 -2785.62 L5586.11 -2785.62 M 5585.4 -2787.62L5585.4 -2784.62 M 5587.2 -2785.33L5587.06 -2785.19 L5587.2 -2785.04 L5587.34 -2785.19 L5587.2 -2785.33 M 5590.29 -2787.62L5588.86 -2784.62 M 5588.29 -2787.62L5590.29 -2787.62 M 5591.24 -2787.62L5591.24 -2784.62 M 5593.24 -2787.62L5591.24 -2785.62 M 5591.95 -2786.33L5593.24 -2784.62 ~none~rep4028~~0~#@$TRACK~0.7874~3~~5582.8366 -2794.8172 5582.8366 -2787.3672 5578.7366 -2787.3672 5578.7366 -2794.8172 5582.8366 -2794.8172~rep4031~0#@$PAD~RECT~5580.687~-2789.417~1.9685~2.3622~1~NETR12_2~1~0~5581.8681 -2790.4013 5581.8681 -2788.4327 5579.5059 -2788.4327 5579.5059 -2790.4013~270~rep4029~0~~Y~0~0~0.2~5580.687,-2789.417#@$PAD~RECT~5580.687~-2793.017~1.9685~2.3622~1~NETR13_2~2~0~5581.8681 -2794.0013 5581.8681 -2792.0327 5579.5059 -2792.0327 5579.5059 -2794.0013~270~rep4030~0~~Y~0~0~0.2~5580.687,-2793.017","LIB~5575.7653~-2791.1385~package`A0402`value`4.7K~90~~gge15ac9218146e0f4b~1~~~0~~yes~~#@$TEXT~P~5574.072~-2787.635~0.433~0~0~3~~2.7559~R12~M 5574.07 -2790.42L5574.07 -2787.78 M 5574.07 -2790.42L5575.2 -2790.42 L5575.58 -2790.29 L5575.7 -2790.16 L5575.83 -2789.91 L5575.83 -2789.66 L5575.7 -2789.41 L5575.58 -2789.29 L5575.2 -2789.16 L5574.07 -2789.16 M 5574.95 -2789.16L5575.83 -2787.78 M 5576.65 -2789.91L5576.9 -2790.04 L5577.28 -2790.42 L5577.28 -2787.78 M 5578.23 -2789.79L5578.23 -2789.91 L5578.36 -2790.16 L5578.48 -2790.29 L5578.73 -2790.42 L5579.23 -2790.42 L5579.48 -2790.29 L5579.61 -2790.16 L5579.73 -2789.91 L5579.73 -2789.66 L5579.61 -2789.41 L5579.36 -2789.04 L5578.11 -2787.78 L5579.86 -2787.78 ~none~rep4036~~0~#@$TEXT~N~5569.279~-2789.129~0.4724~0~0~3~~3.1496~4.7K~M 5570.71 -2792.31L5569.28 -2790.3 L5571.43 -2790.3 M 5570.71 -2792.31L5570.71 -2789.3 M 5572.51 -2790.02L5572.37 -2789.87 L5572.51 -2789.73 L5572.66 -2789.87 L5572.51 -2790.02 M 5575.61 -2792.31L5574.18 -2789.3 M 5573.6 -2792.31L5575.61 -2792.31 M 5576.55 -2792.31L5576.55 -2789.3 M 5578.56 -2792.31L5576.55 -2790.3 M 5577.27 -2791.02L5578.56 -2789.3 ~none~rep4037~~0~#@$TRACK~0.7874~3~~5577.7153 -2794.9885 5573.6153 -2794.9885 5573.6153 -2787.5385 5577.7153 -2787.5385 5577.7153 -2794.9885~rep4040~0#@$PAD~RECT~5575.765~-2789.338~1.9685~2.3622~1~NETR12_2~2~0~5574.5839 -2788.3537 5574.5839 -2790.3223 5576.9461 -2790.3223 5576.9461 -2788.3537~90~rep4038~0~~Y~0~0~0.2~5575.765,-2789.338#@$PAD~RECT~5575.765~-2792.938~1.9685~2.3622~1~NETJ1_2~1~0~5574.5839 -2791.9537 5574.5839 -2793.9223 5576.9461 -2793.9223 5576.9461 -2791.9537~90~rep4039~0~~Y~0~0~0.2~5575.765,-2792.938","LIB~5653.2456~-2802.9101~package`A0402`value`220R~180~~gge763cf8d5648cb4fd~1~~~0~~yes~~#@$TEXT~P~5659.506~-2802.674~0.433~0~0~3~~2.7559~R11~M 5659.51 -2805.45L5659.51 -2802.82 M 5659.51 -2805.45L5660.63 -2805.45 L5661.01 -2805.33 L5661.13 -2805.2 L5661.26 -2804.95 L5661.26 -2804.7 L5661.13 -2804.45 L5661.01 -2804.33 L5660.63 -2804.2 L5659.51 -2804.2 M 5660.38 -2804.2L5661.26 -2802.82 M 5662.09 -2804.95L5662.34 -2805.08 L5662.71 -2805.45 L5662.71 -2802.82 M 5663.54 -2804.95L5663.79 -2805.08 L5664.17 -2805.45 L5664.17 -2802.82 ~none~rep4045~~0~#@$TEXT~N~5669.122~-2802.475~0.4724~0~0~3~~3.1496~220R~M 5669.27 -2804.94L5669.27 -2805.08 L5669.41 -2805.37 L5669.55 -2805.51 L5669.84 -2805.65 L5670.41 -2805.65 L5670.7 -2805.51 L5670.84 -2805.37 L5670.98 -2805.08 L5670.98 -2804.79 L5670.84 -2804.51 L5670.55 -2804.08 L5669.12 -2802.65 L5671.13 -2802.65 M 5672.21 -2804.94L5672.21 -2805.08 L5672.36 -2805.37 L5672.5 -2805.51 L5672.79 -2805.65 L5673.36 -2805.65 L5673.65 -2805.51 L5673.79 -2805.37 L5673.93 -2805.08 L5673.93 -2804.79 L5673.79 -2804.51 L5673.5 -2804.08 L5672.07 -2802.65 L5674.08 -2802.65 M 5675.88 -2805.65L5675.45 -2805.51 L5675.16 -2805.08 L5675.02 -2804.36 L5675.02 -2803.94 L5675.16 -2803.22 L5675.45 -2802.79 L5675.88 -2802.65 L5676.17 -2802.65 L5676.6 -2802.79 L5676.88 -2803.22 L5677.02 -2803.94 L5677.02 -2804.36 L5676.88 -2805.08 L5676.6 -2805.51 L5676.17 -2805.65 L5675.88 -2805.65 M 5677.97 -2805.65L5677.97 -2802.65 M 5677.97 -2805.65L5679.26 -2805.65 L5679.69 -2805.51 L5679.83 -2805.37 L5679.97 -2805.08 L5679.97 -2804.79 L5679.83 -2804.51 L5679.69 -2804.36 L5679.26 -2804.22 L5677.97 -2804.22 M 5678.97 -2804.22L5679.97 -2802.65 ~none~rep4046~~0~#@$TRACK~0.7874~3~~5656.8456 -2804.8601 5649.3956 -2804.8601 5649.3956 -2800.7601 5656.8456 -2800.7601 5656.8456 -2804.8601~rep4049~0#@$PAD~RECT~5651.446~-2802.91~1.9685~2.3622~1~I2S0_RX_SDA~1~0~5652.4303 -2801.7289 5650.4617 -2801.7289 5650.4617 -2804.0911 5652.4303 -2804.0911~180~rep4047~0~~Y~0~0~0.2~5651.446,-2802.91#@$PAD~RECT~5655.046~-2802.91~1.9685~2.3622~1~H1_CPLD_TDI~2~0~5656.0303 -2801.7289 5654.0618 -2801.7289 5654.0618 -2804.0911 5656.0303 -2804.0911~180~rep4048~0~~Y~0~0~0.2~5655.046,-2802.91","LIB~5809.3232~-2705.0316~package`A0402`value`0.1R~~~gge41bc0941336b1513~1~~~0~~yes~~#@$TEXT~P~5806.121~-2709.617~0.433~0~0~3~~2.7559~R10~M 5806.12 -2712.4L5806.12 -2709.77 M 5806.12 -2712.4L5807.25 -2712.4 L5807.62 -2712.27 L5807.75 -2712.15 L5807.87 -2711.9 L5807.87 -2711.65 L5807.75 -2711.4 L5807.62 -2711.27 L5807.25 -2711.15 L5806.12 -2711.15 M 5807 -2711.15L5807.87 -2709.77 M 5808.7 -2711.9L5808.95 -2712.02 L5809.33 -2712.4 L5809.33 -2709.77 M 5810.91 -2712.4L5810.53 -2712.27 L5810.28 -2711.9 L5810.15 -2711.27 L5810.15 -2710.89 L5810.28 -2710.27 L5810.53 -2709.89 L5810.91 -2709.77 L5811.16 -2709.77 L5811.53 -2709.89 L5811.78 -2710.27 L5811.91 -2710.89 L5811.91 -2711.27 L5811.78 -2711.9 L5811.53 -2712.27 L5811.16 -2712.4 L5810.91 -2712.4 ~none~rep4054~~0~#@$TEXT~N~5805.268~-2700.543~0.4724~0~0~3~~3.1496~0.1R~M 5806.13 -2703.72L5805.7 -2703.58 L5805.41 -2703.15 L5805.27 -2702.43 L5805.27 -2702 L5805.41 -2701.29 L5805.7 -2700.86 L5806.13 -2700.72 L5806.41 -2700.72 L5806.84 -2700.86 L5807.13 -2701.29 L5807.27 -2702 L5807.27 -2702.43 L5807.13 -2703.15 L5806.84 -2703.58 L5806.41 -2703.72 L5806.13 -2703.72 M 5808.36 -2701.43L5808.22 -2701.29 L5808.36 -2701.14 L5808.5 -2701.29 L5808.36 -2701.43 M 5809.45 -2703.15L5809.73 -2703.29 L5810.16 -2703.72 L5810.16 -2700.72 M 5811.11 -2703.72L5811.11 -2700.72 M 5811.11 -2703.72L5812.4 -2703.72 L5812.83 -2703.58 L5812.97 -2703.44 L5813.11 -2703.15 L5813.11 -2702.86 L5812.97 -2702.58 L5812.83 -2702.43 L5812.4 -2702.29 L5811.11 -2702.29 M 5812.11 -2702.29L5813.11 -2700.72 ~none~rep4055~~0~#@$TRACK~0.7874~3~~5813.1732 -2703.0816 5805.7232 -2703.0816 5805.7232 -2707.1816 5813.1732 -2707.1816 5813.1732 -2703.0816~rep4058~0#@$PAD~RECT~5811.123~-2705.032~1.9685~2.3622~1~NETR10_1~1~0~5810.1387 -2706.2131 5812.1073 -2706.2131 5812.1073 -2703.8509 5810.1387 -2703.8509~0~rep4056~0~~Y~0~0~0.2~5811.123,-2705.032#@$PAD~RECT~5807.523~-2705.032~1.9685~2.3622~1~GND~2~0~5806.5388 -2706.2131 5808.5073 -2706.2131 5808.5073 -2703.8509 5806.5388 -2703.8509~0~rep4057~0~~Y~0~0~0.2~5807.523,-2705.032","LIB~5812.109~-2653.7119~package`A0402`value`10R~90~~gge1e1ffada38203b9e~1~~~0~~yes~~#@$TEXT~P~5809.673~-2660.782~0.433~0~0~3~~2.7559~R9~M 5809.67 -2663.56L5809.67 -2660.93 M 5809.67 -2663.56L5810.8 -2663.56 L5811.18 -2663.44 L5811.3 -2663.31 L5811.43 -2663.06 L5811.43 -2662.81 L5811.3 -2662.56 L5811.18 -2662.44 L5810.8 -2662.31 L5809.67 -2662.31 M 5810.55 -2662.31L5811.43 -2660.93 M 5813.88 -2662.69L5813.76 -2662.31 L5813.51 -2662.06 L5813.13 -2661.93 L5813.01 -2661.93 L5812.63 -2662.06 L5812.38 -2662.31 L5812.25 -2662.69 L5812.25 -2662.81 L5812.38 -2663.19 L5812.63 -2663.44 L5813.01 -2663.56 L5813.13 -2663.56 L5813.51 -2663.44 L5813.76 -2663.19 L5813.88 -2662.69 L5813.88 -2662.06 L5813.76 -2661.43 L5813.51 -2661.06 L5813.13 -2660.93 L5812.88 -2660.93 L5812.5 -2661.06 L5812.38 -2661.31 ~none~rep4063~~0~#@$TEXT~N~5808.807~-2644.64~0.4724~0~0~3~~3.1496~10R~M 5808.81 -2647.25L5809.09 -2647.39 L5809.52 -2647.82 L5809.52 -2644.81 M 5811.33 -2647.82L5810.9 -2647.68 L5810.61 -2647.25 L5810.47 -2646.53 L5810.47 -2646.1 L5810.61 -2645.38 L5810.9 -2644.96 L5811.33 -2644.81 L5811.61 -2644.81 L5812.04 -2644.96 L5812.33 -2645.38 L5812.47 -2646.1 L5812.47 -2646.53 L5812.33 -2647.25 L5812.04 -2647.68 L5811.61 -2647.82 L5811.33 -2647.82 M 5813.42 -2647.82L5813.42 -2644.81 M 5813.42 -2647.82L5814.71 -2647.82 L5815.14 -2647.68 L5815.28 -2647.53 L5815.42 -2647.25 L5815.42 -2646.96 L5815.28 -2646.67 L5815.14 -2646.53 L5814.71 -2646.39 L5813.42 -2646.39 M 5814.42 -2646.39L5815.42 -2644.81 ~none~rep4064~~0~#@$TRACK~0.7874~3~~5814.059 -2657.5619 5809.959 -2657.5619 5809.959 -2650.1119 5814.059 -2650.1119 5814.059 -2657.5619~rep4067~0#@$PAD~RECT~5812.109~-2655.512~1.9685~2.3622~1~NETR9_1~1~0~5810.9279 -2654.5277 5810.9279 -2656.4963 5813.2901 -2656.4963 5813.2901 -2654.5277~90~rep4065~0~~Y~0~0~0.2~5812.109,-2655.512#@$PAD~RECT~5812.109~-2651.912~1.9685~2.3622~1~+3V3~2~0~5810.9279 -2650.9277 5810.9279 -2652.8963 5813.2901 -2652.8963 5813.2901 -2650.9277~90~rep4066~0~~Y~0~0~0.2~5812.109,-2651.912","LIB~5819.55~-2619.4599~package`A0402`value`12K~180~~gge86d447fa2a9c8586~1~~~0~~yes~~#@$TEXT~P~5825.067~-2621.688~0.433~0~0~3~~2.7559~R8~M 5825.07 -2624.47L5825.07 -2621.84 M 5825.07 -2624.47L5826.19 -2624.47 L5826.57 -2624.34 L5826.7 -2624.22 L5826.82 -2623.97 L5826.82 -2623.72 L5826.7 -2623.47 L5826.57 -2623.34 L5826.19 -2623.22 L5825.07 -2623.22 M 5825.94 -2623.22L5826.82 -2621.84 M 5828.27 -2624.47L5827.9 -2624.34 L5827.77 -2624.09 L5827.77 -2623.84 L5827.9 -2623.59 L5828.15 -2623.47 L5828.65 -2623.34 L5829.03 -2623.22 L5829.28 -2622.97 L5829.4 -2622.71 L5829.4 -2622.34 L5829.28 -2622.09 L5829.15 -2621.96 L5828.78 -2621.84 L5828.27 -2621.84 L5827.9 -2621.96 L5827.77 -2622.09 L5827.65 -2622.34 L5827.65 -2622.71 L5827.77 -2622.97 L5828.02 -2623.22 L5828.4 -2623.34 L5828.9 -2623.47 L5829.15 -2623.59 L5829.28 -2623.84 L5829.28 -2624.09 L5829.15 -2624.34 L5828.78 -2624.47 L5828.27 -2624.47 ~none~rep4072~~0~#@$TEXT~N~5824.358~-2617.396~0.4724~0~0~3~~3.1496~12K~M 5824.36 -2620L5824.64 -2620.15 L5825.07 -2620.57 L5825.07 -2617.57 M 5826.16 -2619.86L5826.16 -2620 L5826.31 -2620.29 L5826.45 -2620.43 L5826.73 -2620.57 L5827.31 -2620.57 L5827.59 -2620.43 L5827.74 -2620.29 L5827.88 -2620 L5827.88 -2619.72 L5827.74 -2619.43 L5827.45 -2619 L5826.02 -2617.57 L5828.02 -2617.57 M 5828.97 -2620.57L5828.97 -2617.57 M 5830.97 -2620.57L5828.97 -2618.57 M 5829.68 -2619.29L5830.97 -2617.57 ~none~rep4073~~0~#@$TRACK~0.7874~3~~5823.15 -2621.4099 5815.7 -2621.4099 5815.7 -2617.3099 5823.15 -2617.3099 5823.15 -2621.4099~rep4076~0#@$PAD~RECT~5817.75~-2619.46~1.9685~2.3622~1~NETR7_1~1~0~5818.7343 -2618.2789 5816.7657 -2618.2789 5816.7657 -2620.6411 5818.7343 -2620.6411~180~rep4074~0~~Y~0~0~0.2~5817.75,-2619.46#@$PAD~RECT~5821.35~-2619.46~1.9685~2.3622~1~GND~2~0~5822.3343 -2618.2789 5820.3658 -2618.2789 5820.3658 -2620.6411 5822.3343 -2620.6411~180~rep4075~0~~Y~0~0~0.2~5821.35,-2619.46","LIB~5809.0382~-2619.2237~package`A0402`value`1K~~~ggeba2c6d155e7fd301~1~~~0~~yes~~#@$TEXT~P~5798.961~-2618.909~0.433~0~0~3~~2.7559~R7~M 5798.96 -2621.69L5798.96 -2619.06 M 5798.96 -2621.69L5800.09 -2621.69 L5800.46 -2621.56 L5800.59 -2621.44 L5800.72 -2621.19 L5800.72 -2620.94 L5800.59 -2620.69 L5800.46 -2620.56 L5800.09 -2620.44 L5798.96 -2620.44 M 5799.84 -2620.44L5800.72 -2619.06 M 5803.3 -2621.69L5802.04 -2619.06 M 5801.54 -2621.69L5803.3 -2621.69 ~none~rep4081~~0~#@$TEXT~N~5806.678~-2614.342~0.4724~0~0~3~~3.1496~1K~M 5806.68 -2616.95L5806.96 -2617.09 L5807.39 -2617.52 L5807.39 -2614.51 M 5808.34 -2617.52L5808.34 -2614.51 M 5810.34 -2617.52L5808.34 -2615.52 M 5809.05 -2616.23L5810.34 -2614.51 ~none~rep4082~~0~#@$TRACK~0.7874~3~~5812.8882 -2617.2737 5805.4382 -2617.2737 5805.4382 -2621.3737 5812.8882 -2621.3737 5812.8882 -2617.2737~rep4085~0#@$PAD~RECT~5810.838~-2619.224~1.9685~2.3622~1~NETR7_1~1~0~5809.8537 -2620.4051 5811.8223 -2620.4051 5811.8223 -2618.0429 5809.8537 -2618.0429~0~rep4083~0~~Y~0~0~0.2~5810.838,-2619.224#@$PAD~RECT~5807.238~-2619.224~1.9685~2.3622~1~LCD_BACKLIGHT~2~0~5806.2538 -2620.4051 5808.2223 -2620.4051 5808.2223 -2618.0429 5806.2538 -2618.0429~0~rep4084~0~~Y~0~0~0.2~5807.238,-2619.224","LIB~5490.8429~-2586.2105~package`A0402`value`0R~90~~ggefdc86a4b576d9e98~1~~~0~~yes~~#@$TEXT~P~5488.639~-2593.343~0.433~0~0~3~~2.7559~R4~M 5488.64 -2596.12L5488.64 -2593.49 M 5488.64 -2596.12L5489.77 -2596.12 L5490.14 -2596 L5490.27 -2595.87 L5490.39 -2595.62 L5490.39 -2595.37 L5490.27 -2595.12 L5490.14 -2595 L5489.77 -2594.87 L5488.64 -2594.87 M 5489.52 -2594.87L5490.39 -2593.49 M 5492.47 -2596.12L5491.22 -2594.37 L5493.1 -2594.37 M 5492.47 -2596.12L5492.47 -2593.49 ~none~rep4090~~0~#@$TEXT~N~5484.583~-2591.998~0.4724~0~0~3~~3.1496~0R~M 5485.44 -2595.18L5485.01 -2595.03 L5484.73 -2594.6 L5484.58 -2593.89 L5484.58 -2593.46 L5484.73 -2592.74 L5485.01 -2592.31 L5485.44 -2592.17 L5485.73 -2592.17 L5486.16 -2592.31 L5486.44 -2592.74 L5486.59 -2593.46 L5486.59 -2593.89 L5486.44 -2594.6 L5486.16 -2595.03 L5485.73 -2595.18 L5485.44 -2595.18 M 5487.53 -2595.18L5487.53 -2592.17 M 5487.53 -2595.18L5488.82 -2595.18 L5489.25 -2595.03 L5489.39 -2594.89 L5489.54 -2594.6 L5489.54 -2594.32 L5489.39 -2594.03 L5489.25 -2593.89 L5488.82 -2593.74 L5487.53 -2593.74 M 5488.53 -2593.74L5489.54 -2592.17 ~none~rep4091~~0~#@$TRACK~0.7874~3~~5492.7929 -2590.0605 5488.6929 -2590.0605 5488.6929 -2582.6105 5492.7929 -2582.6105 5492.7929 -2590.0605~rep4094~0#@$PAD~RECT~5490.843~-2584.41~1.9685~2.3622~1~REF_EN~2~0~5489.6619 -2583.4257 5489.6619 -2585.3943 5492.0241 -2585.3943 5492.0241 -2583.4257~90~rep4092~0~~Y~0~0~0.2~5490.843,-2584.41#@$PAD~RECT~5490.843~-2588.01~1.9685~2.3622~1~NETX1_1~1~0~5489.6619 -2587.0257 5489.6619 -2588.9943 5492.0241 -2588.9943 5492.0241 -2587.0257~90~rep4093~0~~Y~0~0~0.2~5490.843,-2588.01","LIB~5525.4649~-2610.1497~package`A0603`value`0.3R~90~~ggefe89d0632cfce75f~1~~~0~~yes~~#@$TEXT~P~5530.736~-2611.137~0.433~0~0~3~~2.7559~R3~M 5530.74 -2613.92L5530.74 -2611.29 M 5530.74 -2613.92L5531.86 -2613.92 L5532.24 -2613.79 L5532.36 -2613.67 L5532.49 -2613.42 L5532.49 -2613.17 L5532.36 -2612.92 L5532.24 -2612.79 L5531.86 -2612.66 L5530.74 -2612.66 M 5531.61 -2612.66L5532.49 -2611.29 M 5533.57 -2613.92L5534.95 -2613.92 L5534.19 -2612.92 L5534.57 -2612.92 L5534.82 -2612.79 L5534.95 -2612.66 L5535.07 -2612.29 L5535.07 -2612.04 L5534.95 -2611.66 L5534.69 -2611.41 L5534.32 -2611.29 L5533.94 -2611.29 L5533.57 -2611.41 L5533.44 -2611.54 L5533.32 -2611.79 ~none~rep4099~~0~#@$TEXT~N~5530.27~-2607.157~0.4724~0~0~3~~3.1496~0.3R~M 5531.13 -2610.34L5530.7 -2610.19 L5530.41 -2609.76 L5530.27 -2609.05 L5530.27 -2608.62 L5530.41 -2607.9 L5530.7 -2607.47 L5531.13 -2607.33 L5531.42 -2607.33 L5531.84 -2607.47 L5532.13 -2607.9 L5532.27 -2608.62 L5532.27 -2609.05 L5532.13 -2609.76 L5531.84 -2610.19 L5531.42 -2610.34 L5531.13 -2610.34 M 5533.36 -2608.05L5533.22 -2607.9 L5533.36 -2607.76 L5533.51 -2607.9 L5533.36 -2608.05 M 5534.74 -2610.34L5536.31 -2610.34 L5535.45 -2609.19 L5535.88 -2609.19 L5536.17 -2609.05 L5536.31 -2608.9 L5536.45 -2608.47 L5536.45 -2608.19 L5536.31 -2607.76 L5536.03 -2607.47 L5535.6 -2607.33 L5535.17 -2607.33 L5534.74 -2607.47 L5534.59 -2607.62 L5534.45 -2607.9 M 5537.4 -2610.34L5537.4 -2607.33 M 5537.4 -2610.34L5538.69 -2610.34 L5539.12 -2610.19 L5539.26 -2610.05 L5539.4 -2609.76 L5539.4 -2609.48 L5539.26 -2609.19 L5539.12 -2609.05 L5538.69 -2608.9 L5537.4 -2608.9 M 5538.4 -2608.9L5539.4 -2607.33 ~none~rep4100~~0~#@$TRACK~1.2~3~~5521.9649 -2611.3938 5521.9649 -2616.3938 5528.9649 -2616.3938 5528.9649 -2611.3938~rep4103~0#@$TRACK~1.2~3~~5521.9649 -2608.3938 5521.9649 -2603.8938 5528.9649 -2603.8938 5528.9649 -2608.3938~rep4104~0#@$PAD~RECT~5525.465~-2606.685~4.3307~3.5433~1~NETC1_1~1~0~5523.6933 -2604.5196 5523.6933 -2608.8503 5527.2367 -2608.8503 5527.2367 -2604.5196~90~rep4101~0~~Y~0~0~0.2~5525.465,-2606.685#@$PAD~RECT~5525.465~-2613.614~4.3307~3.5433~1~+3V3~2~0~5523.6933 -2611.4486 5523.6933 -2615.7794 5527.2367 -2615.7794 5527.2367 -2611.4486~90~rep4102~0~~Y~0~0~0.2~5525.465,-2613.614","LIB~5506.3547~-2562.1554~package`A0402`value`22R~270~~gge6f63fc6711cfa315~1~~~0~~yes~~#@$TEXT~P~5500.018~-2566.84~0.433~0~0~3~~2.7559~R2~M 5500.02 -2569.62L5500.02 -2566.99 M 5500.02 -2569.62L5501.15 -2569.62 L5501.52 -2569.5 L5501.65 -2569.37 L5501.77 -2569.12 L5501.77 -2568.87 L5501.65 -2568.62 L5501.52 -2568.49 L5501.15 -2568.37 L5500.02 -2568.37 M 5500.89 -2568.37L5501.77 -2566.99 M 5502.72 -2569L5502.72 -2569.12 L5502.85 -2569.37 L5502.97 -2569.5 L5503.22 -2569.62 L5503.73 -2569.62 L5503.98 -2569.5 L5504.1 -2569.37 L5504.23 -2569.12 L5504.23 -2568.87 L5504.1 -2568.62 L5503.85 -2568.24 L5502.6 -2566.99 L5504.35 -2566.99 ~none~rep4110~~0~#@$TEXT~N~5505.215~-2558.927~0.4724~0~0~3~~3.1496~22R~M 5505.36 -2561.39L5505.36 -2561.53 L5505.5 -2561.82 L5505.64 -2561.96 L5505.93 -2562.11 L5506.5 -2562.11 L5506.79 -2561.96 L5506.93 -2561.82 L5507.08 -2561.53 L5507.08 -2561.25 L5506.93 -2560.96 L5506.65 -2560.53 L5505.21 -2559.1 L5507.22 -2559.1 M 5508.31 -2561.39L5508.31 -2561.53 L5508.45 -2561.82 L5508.59 -2561.96 L5508.88 -2562.11 L5509.45 -2562.11 L5509.74 -2561.96 L5509.88 -2561.82 L5510.03 -2561.53 L5510.03 -2561.25 L5509.88 -2560.96 L5509.6 -2560.53 L5508.16 -2559.1 L5510.17 -2559.1 M 5511.11 -2562.11L5511.11 -2559.1 M 5511.11 -2562.11L5512.4 -2562.11 L5512.83 -2561.96 L5512.97 -2561.82 L5513.12 -2561.53 L5513.12 -2561.25 L5512.97 -2560.96 L5512.83 -2560.82 L5512.4 -2560.67 L5511.11 -2560.67 M 5512.12 -2560.67L5513.12 -2559.1 ~none~rep4111~~0~#@$TRACK~0.7874~3~~5504.4047 -2565.7554 5508.5047 -2565.7554 5508.5047 -2558.3054 5504.4047 -2558.3054 5504.4047 -2565.7554~rep4114~0#@$PAD~RECT~5506.355~-2563.955~1.9685~2.3622~1~NETR2_2~2~0~5507.5361 -2564.9393 5507.5361 -2562.9707 5505.1739 -2562.9707 5505.1739 -2564.9393~270~rep4112~0~~Y~0~0~0.2~5506.355,-2563.955#@$PAD~RECT~5506.355~-2560.355~1.9685~2.3622~1~CLKIN~1~0~5507.5361 -2561.3393 5507.5361 -2559.3707 5505.1739 -2559.3707 5505.1739 -2561.3393~270~rep4113~0~~Y~0~0~0.2~5506.355,-2560.355","LIB~5479.4267~-2689.5637~package`A0402`value`22R~270~~gge353b166cc2dee846~1~~~0~~yes~~#@$TEXT~P~5478.138~-2686.018~0.433~0~0~3~~2.7559~R1~M 5478.14 -2688.8L5478.14 -2686.17 M 5478.14 -2688.8L5479.27 -2688.8 L5479.64 -2688.67 L5479.77 -2688.55 L5479.89 -2688.3 L5479.89 -2688.05 L5479.77 -2687.8 L5479.64 -2687.67 L5479.27 -2687.55 L5478.14 -2687.55 M 5479.01 -2687.55L5479.89 -2686.17 M 5480.72 -2688.3L5480.97 -2688.42 L5481.34 -2688.8 L5481.34 -2686.17 ~none~rep4119~~0~#@$TEXT~N~5473.531~-2686.963~0.4724~0~0~3~~3.1496~22R~M 5473.67 -2689.43L5473.67 -2689.57 L5473.82 -2689.86 L5473.96 -2690 L5474.25 -2690.14 L5474.82 -2690.14 L5475.11 -2690 L5475.25 -2689.86 L5475.39 -2689.57 L5475.39 -2689.28 L5475.25 -2689 L5474.96 -2688.57 L5473.53 -2687.14 L5475.54 -2687.14 M 5476.62 -2689.43L5476.62 -2689.57 L5476.77 -2689.86 L5476.91 -2690 L5477.2 -2690.14 L5477.77 -2690.14 L5478.06 -2690 L5478.2 -2689.86 L5478.34 -2689.57 L5478.34 -2689.28 L5478.2 -2689 L5477.91 -2688.57 L5476.48 -2687.14 L5478.48 -2687.14 M 5479.43 -2690.14L5479.43 -2687.14 M 5479.43 -2690.14L5480.72 -2690.14 L5481.15 -2690 L5481.29 -2689.86 L5481.43 -2689.57 L5481.43 -2689.28 L5481.29 -2689 L5481.15 -2688.85 L5480.72 -2688.71 L5479.43 -2688.71 M 5480.43 -2688.71L5481.43 -2687.14 ~none~rep4120~~0~#@$TRACK~0.7874~3~~5477.4767 -2693.1636 5481.5767 -2693.1636 5481.5767 -2685.7136 5477.4767 -2685.7136 5477.4767 -2693.1636~rep4123~0#@$PAD~RECT~5479.427~-2687.764~1.9685~2.3622~1~VBUSCTRL~1~0~5480.6081 -2688.7483 5480.6081 -2686.7797 5478.2459 -2686.7797 5478.2459 -2688.7483~270~rep4121~0~~Y~0~0~0.2~5479.427,-2687.764#@$PAD~RECT~5479.427~-2691.364~1.9685~2.3622~1~VBUS~2~0~5480.6081 -2692.3483 5480.6081 -2690.3797 5478.2459 -2690.3797 5478.2459 -2692.3483~270~rep4122~0~~Y~0~0~0.2~5479.427,-2691.364","LIB~5811.1248~-2626.3497~package`ASOT-23`value`S8050~360~~ggef76c01de5337d462~1~~~0~~yes~~#@$TEXT~P~5800.851~-2632.334~0.433~0~0~3~~2.7559~Q1~M 5801.6 -2635.11L5801.35 -2634.99 L5801.1 -2634.74 L5800.98 -2634.49 L5800.85 -2634.11 L5800.85 -2633.49 L5800.98 -2633.11 L5801.1 -2632.86 L5801.35 -2632.61 L5801.6 -2632.48 L5802.1 -2632.48 L5802.35 -2632.61 L5802.6 -2632.86 L5802.73 -2633.11 L5802.86 -2633.49 L5802.86 -2634.11 L5802.73 -2634.49 L5802.6 -2634.74 L5802.35 -2634.99 L5802.1 -2635.11 L5801.6 -2635.11 M 5801.98 -2632.99L5802.73 -2632.23 M 5803.68 -2634.61L5803.93 -2634.74 L5804.31 -2635.11 L5804.31 -2632.48 ~none~rep4128~~0~#@$TEXT~N~5792.229~-2625.917~0.4724~0~0~3~~3.1496~S8050~M 5794.23 -2628.67L5793.95 -2628.95 L5793.52 -2629.09 L5792.94 -2629.09 L5792.52 -2628.95 L5792.23 -2628.67 L5792.23 -2628.38 L5792.37 -2628.09 L5792.52 -2627.95 L5792.8 -2627.81 L5793.66 -2627.52 L5793.95 -2627.38 L5794.09 -2627.23 L5794.23 -2626.95 L5794.23 -2626.52 L5793.95 -2626.23 L5793.52 -2626.09 L5792.94 -2626.09 L5792.52 -2626.23 L5792.23 -2626.52 M 5795.89 -2629.09L5795.46 -2628.95 L5795.32 -2628.67 L5795.32 -2628.38 L5795.46 -2628.09 L5795.75 -2627.95 L5796.32 -2627.81 L5796.75 -2627.66 L5797.04 -2627.38 L5797.18 -2627.09 L5797.18 -2626.66 L5797.04 -2626.37 L5796.9 -2626.23 L5796.47 -2626.09 L5795.89 -2626.09 L5795.46 -2626.23 L5795.32 -2626.37 L5795.18 -2626.66 L5795.18 -2627.09 L5795.32 -2627.38 L5795.61 -2627.66 L5796.04 -2627.81 L5796.61 -2627.95 L5796.9 -2628.09 L5797.04 -2628.38 L5797.04 -2628.67 L5796.9 -2628.95 L5796.47 -2629.09 L5795.89 -2629.09 M 5798.99 -2629.09L5798.56 -2628.95 L5798.27 -2628.52 L5798.13 -2627.81 L5798.13 -2627.38 L5798.27 -2626.66 L5798.56 -2626.23 L5798.99 -2626.09 L5799.27 -2626.09 L5799.7 -2626.23 L5799.99 -2626.66 L5800.13 -2627.38 L5800.13 -2627.81 L5799.99 -2628.52 L5799.7 -2628.95 L5799.27 -2629.09 L5798.99 -2629.09 M 5802.79 -2629.09L5801.36 -2629.09 L5801.22 -2627.81 L5801.36 -2627.95 L5801.79 -2628.09 L5802.22 -2628.09 L5802.65 -2627.95 L5802.94 -2627.66 L5803.08 -2627.23 L5803.08 -2626.95 L5802.94 -2626.52 L5802.65 -2626.23 L5802.22 -2626.09 L5801.79 -2626.09 L5801.36 -2626.23 L5801.22 -2626.37 L5801.08 -2626.66 M 5804.88 -2629.09L5804.46 -2628.95 L5804.17 -2628.52 L5804.03 -2627.81 L5804.03 -2627.38 L5804.17 -2626.66 L5804.46 -2626.23 L5804.88 -2626.09 L5805.17 -2626.09 L5805.6 -2626.23 L5805.89 -2626.66 L5806.03 -2627.38 L5806.03 -2627.81 L5805.89 -2628.52 L5805.6 -2628.95 L5805.17 -2629.09 L5804.88 -2629.09 ~none~rep4129~~0~#@$TRACK~1.2~3~~5809.1248 -2631.1371 5809.1248 -2635.6371 5811.1248 -2635.6371~rep4133~0#@$TRACK~1.2~3~~5814.6248 -2626.6371 5815.1248 -2626.6371~rep4134~0#@$TRACK~1.2~3~~5818.6248 -2635.6371 5820.6248 -2635.6371 5820.6248 -2631.1371~rep4135~0#@$PAD~RECT~5811.125~-2626.35~3.6~5~1~NETR7_1~1~0~5809.325 -2628.85 5812.925 -2628.85 5812.925 -2623.85 5809.325 -2623.85~0~rep4130~0~~Y~0~0~0.2~5811.125,-2626.35#@$PAD~RECT~5814.925~-2635.137~3.6~5~1~NETQ1_3~3~0~5813.125 -2637.637 5816.725 -2637.637 5816.725 -2632.637 5813.125 -2632.637~0~rep4131~0~~Y~0~0~0.2~5814.925,-2635.137#@$PAD~RECT~5818.625~-2626.35~3.6~5~1~GND~2~0~5816.825 -2628.85 5820.425 -2628.85 5820.425 -2623.85 5816.825 -2623.85~0~rep4132~0~~Y~0~0~0.2~5818.625,-2626.35","LIB~5728.0094~-2765.819~package`ZH2.0-WS-2P`value`ZH2.0-WS-2P~360~~gge188f82074eb8ca32~1~~~0~~yes~~#@$TEXT~P~5749.516~-2769.562~0.433~0~0~3~~2.7559~J5~M 5750.77 -2772.34L5750.77 -2770.34 L5750.64 -2769.96 L5750.52 -2769.84 L5750.27 -2769.71 L5750.02 -2769.71 L5749.77 -2769.84 L5749.64 -2769.96 L5749.52 -2770.34 L5749.52 -2770.59 M 5753.1 -2772.34L5751.85 -2772.34 L5751.72 -2771.22 L5751.85 -2771.34 L5752.22 -2771.47 L5752.6 -2771.47 L5752.97 -2771.34 L5753.22 -2771.09 L5753.35 -2770.71 L5753.35 -2770.46 L5753.22 -2770.09 L5752.97 -2769.84 L5752.6 -2769.71 L5752.22 -2769.71 L5751.85 -2769.84 L5751.72 -2769.96 L5751.6 -2770.21 ~none~rep4139~~0~#@$TEXT~N~5702.772~-2783.07~0.4724~0~0~3~~3.1496~ZH2.0-WS-2P~M 5704.78 -2786.25L5702.77 -2783.24 M 5702.77 -2786.25L5704.78 -2786.25 M 5702.77 -2783.24L5704.78 -2783.24 M 5705.72 -2786.25L5705.72 -2783.24 M 5707.73 -2786.25L5707.73 -2783.24 M 5705.72 -2784.82L5707.73 -2784.82 M 5708.81 -2785.53L5708.81 -2785.68 L5708.96 -2785.96 L5709.1 -2786.1 L5709.39 -2786.25 L5709.96 -2786.25 L5710.25 -2786.1 L5710.39 -2785.96 L5710.53 -2785.68 L5710.53 -2785.39 L5710.39 -2785.1 L5710.1 -2784.67 L5708.67 -2783.24 L5710.68 -2783.24 M 5711.76 -2783.96L5711.62 -2783.81 L5711.76 -2783.67 L5711.91 -2783.81 L5711.76 -2783.96 M 5713.71 -2786.25L5713.28 -2786.1 L5712.99 -2785.68 L5712.85 -2784.96 L5712.85 -2784.53 L5712.99 -2783.81 L5713.28 -2783.38 L5713.71 -2783.24 L5714 -2783.24 L5714.43 -2783.38 L5714.71 -2783.81 L5714.86 -2784.53 L5714.86 -2784.96 L5714.71 -2785.68 L5714.43 -2786.1 L5714 -2786.25 L5713.71 -2786.25 M 5715.8 -2784.53L5718.38 -2784.53 M 5719.32 -2786.25L5720.04 -2783.24 M 5720.75 -2786.25L5720.04 -2783.24 M 5720.75 -2786.25L5721.47 -2783.24 M 5722.19 -2786.25L5721.47 -2783.24 M 5725.13 -2785.82L5724.85 -2786.1 L5724.42 -2786.25 L5723.85 -2786.25 L5723.42 -2786.1 L5723.13 -2785.82 L5723.13 -2785.53 L5723.27 -2785.25 L5723.42 -2785.1 L5723.7 -2784.96 L5724.56 -2784.67 L5724.85 -2784.53 L5724.99 -2784.39 L5725.13 -2784.1 L5725.13 -2783.67 L5724.85 -2783.38 L5724.42 -2783.24 L5723.85 -2783.24 L5723.42 -2783.38 L5723.13 -2783.67 M 5726.08 -2784.53L5728.66 -2784.53 M 5729.74 -2785.53L5729.74 -2785.68 L5729.89 -2785.96 L5730.03 -2786.1 L5730.32 -2786.25 L5730.89 -2786.25 L5731.18 -2786.1 L5731.32 -2785.96 L5731.46 -2785.68 L5731.46 -2785.39 L5731.32 -2785.1 L5731.03 -2784.67 L5729.6 -2783.24 L5731.61 -2783.24 M 5732.55 -2786.25L5732.55 -2783.24 M 5732.55 -2786.25L5733.84 -2786.25 L5734.27 -2786.1 L5734.41 -2785.96 L5734.55 -2785.68 L5734.55 -2785.25 L5734.41 -2784.96 L5734.27 -2784.82 L5733.84 -2784.67 L5732.55 -2784.67 ~none~rep4140~~0~#@$TRACK~1~3~~5744.511 -2772.599 5744.511 -2776.049 5742.786 -2774.324 5744.511 -2772.599~rep4145~0#@$TRACK~1~3~~5708.7574 -2781.9214 5740.3322 -2781.9214 5740.3322 -2777.8269~rep4148~0#@$TRACK~1~3~~5740.2732 -2772.9647 5740.2732 -2775.5828 5736.2968 -2775.5828 5736.2968 -2777.8269 5740.3125 -2777.8269~rep4150~0#@$TRACK~1~3~~5740.3716 -2753.9883 5736.3558 -2753.9883 5736.3558 -2756.2324 5740.3322 -2756.2324 5740.3322 -2758.8506~rep4154~0#@$TRACK~1~3~~5708.8165 -2749.8939 5740.3913 -2749.8939 5740.3913 -2753.9883~rep4158~0#@$TRACK~1~3~~5708.9149 -2757.1576 5708.9149 -2774.4805~rep4160~0#@$PAD~OVAL~5740.411~-2769.756~4.7244~13.7794~1~AGND~2~0~5744.9385 -2769.756 5735.8835 -2769.756~270~rep4141~0~~Y~0~0~0.2~5740.411,-2769.756#@$PAD~RECT~5715.608~-2753.221~4.7244~15.7479~1~GND~0~0~5723.482 -2755.5832 5723.482 -2750.8588 5707.7341 -2750.8588 5707.7341 -2755.5832~270~rep4142~0~~Y~0~0~0.2~5715.608,-2753.221#@$PAD~RECT~5715.608~-2778.417~4.7244~15.7479~1~GND~0~0~5723.482 -2780.7792 5723.482 -2776.0548 5707.7341 -2776.0548 5707.7341 -2780.7792~270~rep4143~0~~Y~0~0~0.2~5715.608,-2778.417#@$PAD~OVAL~5740.411~-2761.882~4.7244~13.7794~1~VBAT+~1~0~5744.9385 -2761.882 5735.8835 -2761.882~270~rep4144~0~~Y~0~0~0.2~5740.411,-2761.882","LIB~5529.4267~-2816.8471~package`JST-1.27`value`JST-1.27~360~~gge51bfc0e5166a1c40~1~~~0~~yes~~#@$TEXT~P~5510.175~-2819.839~0.433~0~0~3~~2.7559~J1~M 5511.43 -2822.62L5511.43 -2820.62 L5511.3 -2820.24 L5511.18 -2820.11 L5510.93 -2819.99 L5510.68 -2819.99 L5510.43 -2820.11 L5510.3 -2820.24 L5510.17 -2820.62 L5510.17 -2820.87 M 5512.25 -2822.12L5512.5 -2822.24 L5512.88 -2822.62 L5512.88 -2819.99 ~none~rep4162~~0~#@$TEXT~N~5507.458~-2801.062~0.4724~0~0~3~~3.1496~JST-1.27~M 5508.89 -2804.24L5508.89 -2801.95 L5508.75 -2801.52 L5508.6 -2801.38 L5508.32 -2801.23 L5508.03 -2801.23 L5507.74 -2801.38 L5507.6 -2801.52 L5507.46 -2801.95 L5507.46 -2802.24 M 5511.84 -2803.81L5511.55 -2804.1 L5511.12 -2804.24 L5510.55 -2804.24 L5510.12 -2804.1 L5509.83 -2803.81 L5509.83 -2803.52 L5509.98 -2803.24 L5510.12 -2803.09 L5510.41 -2802.95 L5511.27 -2802.67 L5511.55 -2802.52 L5511.7 -2802.38 L5511.84 -2802.09 L5511.84 -2801.66 L5511.55 -2801.38 L5511.12 -2801.23 L5510.55 -2801.23 L5510.12 -2801.38 L5509.83 -2801.66 M 5513.79 -2804.24L5513.79 -2801.23 M 5512.78 -2804.24L5514.79 -2804.24 M 5515.73 -2802.52L5518.31 -2802.52 M 5519.25 -2803.67L5519.54 -2803.81 L5519.97 -2804.24 L5519.97 -2801.23 M 5521.06 -2801.95L5520.92 -2801.81 L5521.06 -2801.66 L5521.2 -2801.81 L5521.06 -2801.95 M 5522.29 -2803.52L5522.29 -2803.67 L5522.43 -2803.95 L5522.58 -2804.1 L5522.86 -2804.24 L5523.44 -2804.24 L5523.72 -2804.1 L5523.86 -2803.95 L5524.01 -2803.67 L5524.01 -2803.38 L5523.86 -2803.09 L5523.58 -2802.67 L5522.15 -2801.23 L5524.15 -2801.23 M 5527.1 -2804.24L5525.67 -2801.23 M 5525.1 -2804.24L5527.1 -2804.24 ~none~rep4163~~0~#@$TRACK~0.7874~3~~5525.096 -2821.7684 5518.6 -2821.7684 5518.6 -2802.0833 5540.2535 -2802.0833 5540.2535 -2821.7684 5533.7574 -2821.7684~rep4168~0#@$PAD~RECT~5543.6~-2811.926~5.9055~9.8425~1~GND~0~0~5540.6473 -2816.8472 5546.5528 -2816.8472 5546.5528 -2807.0047 5540.6473 -2807.0047~0~rep4164~0~~Y~0~0~0.2~5543.6,-2811.926#@$PAD~RECT~5515.254~-2811.926~5.9055~9.8425~1~GND~0~0~5512.3012 -2816.8472 5518.2068 -2816.8472 5518.2068 -2807.0047 5512.3012 -2807.0047~0~rep4165~0~~Y~0~0~0.2~5515.254,-2811.926#@$PAD~RECT~5531.927~-2821.768~2.7559~6.2992~1~NETJ1_2~1~0~5530.549 -2824.9176 5533.305 -2824.9176 5533.305 -2818.6184 5530.549 -2818.6184~0~rep4166~0~~Y~0~0~0.2~5531.927,-2821.768#@$PAD~RECT~5526.927~-2821.768~2.7559~6.2992~1~NETJ1_1~2~0~5525.549 -2824.9176 5528.305 -2824.9176 5528.305 -2818.6184 5525.549 -2818.6184~0~rep4167~0~~Y~0~0~0.2~5526.927,-2821.768","LIB~5478.2208~-2614.3229~package`A0603`value`10uF~270~~gge2b4e6e580c7acde0~1~~~0~~yes~~#@$TEXT~P~5483.37~-2621.604~0.433~0~0~3~~2.7559~C35~M 5485.25 -2623.76L5485.12 -2624.01 L5484.87 -2624.26 L5484.62 -2624.39 L5484.12 -2624.39 L5483.87 -2624.26 L5483.62 -2624.01 L5483.49 -2623.76 L5483.37 -2623.38 L5483.37 -2622.76 L5483.49 -2622.38 L5483.62 -2622.13 L5483.87 -2621.88 L5484.12 -2621.75 L5484.62 -2621.75 L5484.87 -2621.88 L5485.12 -2622.13 L5485.25 -2622.38 M 5486.33 -2624.39L5487.7 -2624.39 L5486.95 -2623.38 L5487.33 -2623.38 L5487.58 -2623.26 L5487.7 -2623.13 L5487.83 -2622.76 L5487.83 -2622.51 L5487.7 -2622.13 L5487.45 -2621.88 L5487.08 -2621.75 L5486.7 -2621.75 L5486.33 -2621.88 L5486.2 -2622.01 L5486.08 -2622.26 M 5490.16 -2624.39L5488.91 -2624.39 L5488.78 -2623.26 L5488.91 -2623.38 L5489.28 -2623.51 L5489.66 -2623.51 L5490.03 -2623.38 L5490.28 -2623.13 L5490.41 -2622.76 L5490.41 -2622.51 L5490.28 -2622.13 L5490.03 -2621.88 L5489.66 -2621.75 L5489.28 -2621.75 L5488.91 -2621.88 L5488.78 -2622.01 L5488.66 -2622.26 ~none~rep4174~~0~#@$TEXT~N~5473.559~-2608.612~0.4724~0~0~3~~3.1496~10uF~M 5473.56 -2611.22L5473.85 -2611.36 L5474.28 -2611.79 L5474.28 -2608.78 M 5476.08 -2611.79L5475.65 -2611.65 L5475.36 -2611.22 L5475.22 -2610.5 L5475.22 -2610.07 L5475.36 -2609.36 L5475.65 -2608.93 L5476.08 -2608.78 L5476.37 -2608.78 L5476.79 -2608.93 L5477.08 -2609.36 L5477.22 -2610.07 L5477.22 -2610.5 L5477.08 -2611.22 L5476.79 -2611.65 L5476.37 -2611.79 L5476.08 -2611.79 M 5478.17 -2610.79L5478.17 -2609.36 L5478.31 -2608.93 L5478.6 -2608.78 L5479.03 -2608.78 L5479.31 -2608.93 L5479.74 -2609.36 M 5479.74 -2610.79L5479.74 -2608.78 M 5480.69 -2611.79L5480.69 -2608.78 M 5480.69 -2611.79L5482.55 -2611.79 M 5480.69 -2610.36L5481.83 -2610.36 ~none~rep4175~~0~#@$TRACK~1.2~3~~5474.7208 -2613.0788 5474.7208 -2608.0788 5481.7208 -2608.0788 5481.7208 -2613.0788~rep4178~0#@$TRACK~1.2~3~~5474.7208 -2616.0788 5474.7208 -2620.5788 5481.7208 -2620.5788 5481.7208 -2616.0788~rep4179~0#@$PAD~RECT~5478.221~-2610.858~4.3307~3.5433~1~GND~2~0~5479.9927 -2613.0234 5479.9927 -2608.6926 5476.4493 -2608.6926 5476.4493 -2613.0234~270~rep4176~0~~Y~0~0~0.2~5478.221,-2610.858#@$PAD~RECT~5478.221~-2617.787~4.3307~3.5433~1~+3V3~1~0~5479.9927 -2619.9523 5479.9927 -2615.6216 5476.4493 -2615.6216 5476.4493 -2619.9523~270~rep4177~0~~Y~0~0~0.2~5478.221,-2617.787","LIB~5770.8586~-2728.2993~package`A0603`value`10uF~180~~gge553def7d7947fca6~1~~~0~~yes~~#@$TEXT~P~5756.113~-2731.205~0.433~0~0~3~~2.7559~C34~M 5757.99 -2733.36L5757.87 -2733.61 L5757.62 -2733.86 L5757.37 -2733.99 L5756.86 -2733.99 L5756.61 -2733.86 L5756.36 -2733.61 L5756.24 -2733.36 L5756.11 -2732.98 L5756.11 -2732.36 L5756.24 -2731.98 L5756.36 -2731.73 L5756.61 -2731.48 L5756.86 -2731.36 L5757.37 -2731.36 L5757.62 -2731.48 L5757.87 -2731.73 L5757.99 -2731.98 M 5759.07 -2733.99L5760.45 -2733.99 L5759.7 -2732.98 L5760.07 -2732.98 L5760.32 -2732.86 L5760.45 -2732.73 L5760.57 -2732.36 L5760.57 -2732.11 L5760.45 -2731.73 L5760.2 -2731.48 L5759.82 -2731.36 L5759.45 -2731.36 L5759.07 -2731.48 L5758.94 -2731.61 L5758.82 -2731.86 M 5762.65 -2733.99L5761.4 -2732.23 L5763.28 -2732.23 M 5762.65 -2733.99L5762.65 -2731.36 ~none~rep4185~~0~#@$TEXT~N~5754.01~-2727~0.4724~0~0~3~~3.1496~10uF~M 5754.01 -2729.61L5754.3 -2729.75 L5754.73 -2730.18 L5754.73 -2727.17 M 5756.53 -2730.18L5756.1 -2730.04 L5755.81 -2729.61 L5755.67 -2728.89 L5755.67 -2728.46 L5755.81 -2727.74 L5756.1 -2727.32 L5756.53 -2727.17 L5756.82 -2727.17 L5757.25 -2727.32 L5757.53 -2727.74 L5757.68 -2728.46 L5757.68 -2728.89 L5757.53 -2729.61 L5757.25 -2730.04 L5756.82 -2730.18 L5756.53 -2730.18 M 5758.62 -2729.18L5758.62 -2727.74 L5758.76 -2727.32 L5759.05 -2727.17 L5759.48 -2727.17 L5759.77 -2727.32 L5760.19 -2727.74 M 5760.19 -2729.18L5760.19 -2727.17 M 5761.14 -2730.18L5761.14 -2727.17 M 5761.14 -2730.18L5763 -2730.18 M 5761.14 -2728.75L5762.29 -2728.75 ~none~rep4186~~0~#@$TRACK~1.2~3~~5772.6145 -2724.7993 5777.1145 -2724.7993 5777.1145 -2731.7993 5772.6145 -2731.7993~rep4189~0#@$TRACK~1.2~3~~5769.6145 -2724.7993 5764.6145 -2724.7993 5764.6145 -2731.7993 5769.6145 -2731.7993~rep4191~0#@$PAD~RECT~5774.323~-2728.299~4.3307~3.5433~1~+3V3~1~0~5776.4884 -2726.5273 5772.1577 -2726.5273 5772.1577 -2730.0706 5776.4884 -2730.0706~180~rep4187~0~~Y~0~0~0.2~5774.323,-2728.299#@$PAD~RECT~5767.394~-2728.299~4.3307~3.5433~1~GND~2~0~5769.5594 -2726.5273 5765.2287 -2726.5273 5765.2287 -2730.0706 5769.5594 -2730.0706~180~rep4188~0~~Y~0~0~0.2~5767.394,-2728.299","LIB~5765.3704~-2622.0373~package`A0402`value`100nF~90~~ggedeb55bbe20a101cf~1~~~0~~yes~~#@$TEXT~P~5754.004~-2619.404~0.433~0~0~3~~2.7559~C33~M 5755.88 -2621.56L5755.76 -2621.81 L5755.51 -2622.06 L5755.26 -2622.19 L5754.76 -2622.19 L5754.51 -2622.06 L5754.25 -2621.81 L5754.13 -2621.56 L5754 -2621.18 L5754 -2620.56 L5754.13 -2620.18 L5754.25 -2619.93 L5754.51 -2619.68 L5754.76 -2619.55 L5755.26 -2619.55 L5755.51 -2619.68 L5755.76 -2619.93 L5755.88 -2620.18 M 5756.96 -2622.19L5758.34 -2622.19 L5757.59 -2621.18 L5757.96 -2621.18 L5758.21 -2621.06 L5758.34 -2620.93 L5758.46 -2620.56 L5758.46 -2620.31 L5758.34 -2619.93 L5758.09 -2619.68 L5757.71 -2619.55 L5757.34 -2619.55 L5756.96 -2619.68 L5756.84 -2619.8 L5756.71 -2620.06 M 5759.54 -2622.19L5760.92 -2622.19 L5760.17 -2621.18 L5760.54 -2621.18 L5760.79 -2621.06 L5760.92 -2620.93 L5761.04 -2620.56 L5761.04 -2620.31 L5760.92 -2619.93 L5760.67 -2619.68 L5760.29 -2619.55 L5759.92 -2619.55 L5759.54 -2619.68 L5759.42 -2619.8 L5759.29 -2620.06 ~none~rep4196~~0~#@$TEXT~N~5749.24~-2624.286~0.4724~0~0~3~~3.1496~100nF~M 5749.24 -2626.89L5749.53 -2627.03 L5749.96 -2627.46 L5749.96 -2624.46 M 5751.76 -2627.46L5751.33 -2627.32 L5751.04 -2626.89 L5750.9 -2626.18 L5750.9 -2625.75 L5751.04 -2625.03 L5751.33 -2624.6 L5751.76 -2624.46 L5752.05 -2624.46 L5752.48 -2624.6 L5752.76 -2625.03 L5752.9 -2625.75 L5752.9 -2626.18 L5752.76 -2626.89 L5752.48 -2627.32 L5752.05 -2627.46 L5751.76 -2627.46 M 5754.71 -2627.46L5754.28 -2627.32 L5753.99 -2626.89 L5753.85 -2626.18 L5753.85 -2625.75 L5753.99 -2625.03 L5754.28 -2624.6 L5754.71 -2624.46 L5755 -2624.46 L5755.42 -2624.6 L5755.71 -2625.03 L5755.85 -2625.75 L5755.85 -2626.18 L5755.71 -2626.89 L5755.42 -2627.32 L5755 -2627.46 L5754.71 -2627.46 M 5756.8 -2626.46L5756.8 -2624.46 M 5756.8 -2625.89L5757.23 -2626.32 L5757.51 -2626.46 L5757.94 -2626.46 L5758.23 -2626.32 L5758.37 -2625.89 L5758.37 -2624.46 M 5759.32 -2627.46L5759.32 -2624.46 M 5759.32 -2627.46L5761.18 -2627.46 M 5759.32 -2626.03L5760.46 -2626.03 ~none~rep4197~~0~#@$TRACK~0.7874~3~~5767.3204 -2618.4373 5767.3204 -2625.8873 5763.2204 -2625.8873 5763.2204 -2618.4373 5767.3204 -2618.4373~rep4200~0#@$PAD~RECT~5765.37~-2623.837~1.9685~2.3622~1~+3V3~1~0~5764.1889 -2622.8527 5764.1889 -2624.8213 5766.5511 -2624.8213 5766.5511 -2622.8527~90~rep4198~0~~Y~0~0~0.2~5765.37,-2623.837#@$PAD~RECT~5765.37~-2620.237~1.9685~2.3622~1~GND~2~0~5764.1889 -2619.2527 5764.1889 -2621.2213 5766.5511 -2621.2213 5766.5511 -2619.2527~90~rep4199~0~~Y~0~0~0.2~5765.37,-2620.237","LIB~5805.844~-2604.9574~package`A0402`value`100nF~360~~ggecc1d00c51cc12124~1~~~0~~yes~~#@$TEXT~P~5802.745~-2609.883~0.433~0~0~3~~2.7559~C31~M 5804.62 -2612.04L5804.5 -2612.29 L5804.25 -2612.54 L5804 -2612.66 L5803.5 -2612.66 L5803.25 -2612.54 L5803 -2612.29 L5802.87 -2612.04 L5802.75 -2611.66 L5802.75 -2611.04 L5802.87 -2610.66 L5803 -2610.41 L5803.25 -2610.16 L5803.5 -2610.03 L5804 -2610.03 L5804.25 -2610.16 L5804.5 -2610.41 L5804.62 -2610.66 M 5805.7 -2612.66L5807.08 -2612.66 L5806.33 -2611.66 L5806.7 -2611.66 L5806.95 -2611.54 L5807.08 -2611.41 L5807.2 -2611.04 L5807.2 -2610.79 L5807.08 -2610.41 L5806.83 -2610.16 L5806.45 -2610.03 L5806.08 -2610.03 L5805.7 -2610.16 L5805.58 -2610.28 L5805.45 -2610.53 M 5808.03 -2612.16L5808.28 -2612.29 L5808.66 -2612.66 L5808.66 -2610.03 ~none~rep4205~~0~#@$TEXT~N~5811.844~-2606.532~0.4724~0~0~3~~3.1496~100nF~M 5811.84 -2609.14L5812.13 -2609.28 L5812.56 -2609.71 L5812.56 -2606.7 M 5814.36 -2609.71L5813.93 -2609.57 L5813.65 -2609.14 L5813.5 -2608.42 L5813.5 -2607.99 L5813.65 -2607.28 L5813.93 -2606.85 L5814.36 -2606.7 L5814.65 -2606.7 L5815.08 -2606.85 L5815.37 -2607.28 L5815.51 -2607.99 L5815.51 -2608.42 L5815.37 -2609.14 L5815.08 -2609.57 L5814.65 -2609.71 L5814.36 -2609.71 M 5817.31 -2609.71L5816.88 -2609.57 L5816.6 -2609.14 L5816.45 -2608.42 L5816.45 -2607.99 L5816.6 -2607.28 L5816.88 -2606.85 L5817.31 -2606.7 L5817.6 -2606.7 L5818.03 -2606.85 L5818.32 -2607.28 L5818.46 -2607.99 L5818.46 -2608.42 L5818.32 -2609.14 L5818.03 -2609.57 L5817.6 -2609.71 L5817.31 -2609.71 M 5819.4 -2608.71L5819.4 -2606.7 M 5819.4 -2608.14L5819.83 -2608.57 L5820.12 -2608.71 L5820.55 -2608.71 L5820.83 -2608.57 L5820.98 -2608.14 L5820.98 -2606.7 M 5821.92 -2609.71L5821.92 -2606.7 M 5821.92 -2609.71L5823.78 -2609.71 M 5821.92 -2608.28L5823.07 -2608.28 ~none~rep4206~~0~#@$TRACK~0.7874~3~~5802.2441 -2607.1074 5802.2441 -2603.0074 5809.6941 -2603.0074 5809.6941 -2607.1074 5802.2441 -2607.1074~rep4209~0#@$PAD~RECT~5807.644~-2604.957~1.9685~2.3622~1~+3V3~1~0~5806.6598 -2606.1381 5808.6283 -2606.1381 5808.6283 -2603.7759 5806.6598 -2603.7759~0~rep4207~0~~Y~0~0~0.2~5807.644,-2604.957#@$PAD~RECT~5804.044~-2604.957~1.9685~2.3622~1~GND~2~0~5803.0597 -2606.1381 5805.0283 -2606.1381 5805.0283 -2603.7759 5803.0597 -2603.7759~0~rep4208~0~~Y~0~0~0.2~5804.044,-2604.957","LIB~5773.1027~-2720.7402~package`A0402`value`100nF~360~~ggea2ee6ceb65d30336~1~~~0~~yes~~#@$TEXT~P~5760.073~-2720.268~0.433~0~0~3~~2.7559~C30~M 5761.95 -2722.42L5761.83 -2722.67 L5761.58 -2722.92 L5761.33 -2723.05 L5760.82 -2723.05 L5760.57 -2722.92 L5760.32 -2722.67 L5760.2 -2722.42 L5760.07 -2722.05 L5760.07 -2721.42 L5760.2 -2721.04 L5760.32 -2720.79 L5760.57 -2720.54 L5760.82 -2720.42 L5761.33 -2720.42 L5761.58 -2720.54 L5761.83 -2720.79 L5761.95 -2721.04 M 5763.03 -2723.05L5764.41 -2723.05 L5763.66 -2722.05 L5764.03 -2722.05 L5764.28 -2721.92 L5764.41 -2721.8 L5764.53 -2721.42 L5764.53 -2721.17 L5764.41 -2720.79 L5764.16 -2720.54 L5763.78 -2720.42 L5763.41 -2720.42 L5763.03 -2720.54 L5762.9 -2720.67 L5762.78 -2720.92 M 5766.11 -2723.05L5765.74 -2722.92 L5765.48 -2722.55 L5765.36 -2721.92 L5765.36 -2721.55 L5765.48 -2720.92 L5765.74 -2720.54 L5766.11 -2720.42 L5766.36 -2720.42 L5766.74 -2720.54 L5766.99 -2720.92 L5767.11 -2721.55 L5767.11 -2721.92 L5766.99 -2722.55 L5766.74 -2722.92 L5766.36 -2723.05 L5766.11 -2723.05 ~none~rep4214~~0~#@$TEXT~N~5767.04~-2715.819~0.4724~0~0~3~~3.1496~100nF~M 5767.04 -2718.42L5767.33 -2718.57 L5767.76 -2719 L5767.76 -2715.99 M 5769.56 -2719L5769.13 -2718.85 L5768.84 -2718.42 L5768.7 -2717.71 L5768.7 -2717.28 L5768.84 -2716.56 L5769.13 -2716.13 L5769.56 -2715.99 L5769.85 -2715.99 L5770.28 -2716.13 L5770.56 -2716.56 L5770.7 -2717.28 L5770.7 -2717.71 L5770.56 -2718.42 L5770.28 -2718.85 L5769.85 -2719 L5769.56 -2719 M 5772.51 -2719L5772.08 -2718.85 L5771.79 -2718.42 L5771.65 -2717.71 L5771.65 -2717.28 L5771.79 -2716.56 L5772.08 -2716.13 L5772.51 -2715.99 L5772.79 -2715.99 L5773.22 -2716.13 L5773.51 -2716.56 L5773.65 -2717.28 L5773.65 -2717.71 L5773.51 -2718.42 L5773.22 -2718.85 L5772.79 -2719 L5772.51 -2719 M 5774.6 -2718L5774.6 -2715.99 M 5774.6 -2717.42L5775.03 -2717.85 L5775.31 -2718 L5775.74 -2718 L5776.03 -2717.85 L5776.17 -2717.42 L5776.17 -2715.99 M 5777.12 -2719L5777.12 -2715.99 M 5777.12 -2719L5778.98 -2719 M 5777.12 -2717.57L5778.26 -2717.57 ~none~rep4215~~0~#@$TRACK~0.7874~3~~5776.9527 -2718.7902 5769.5027 -2718.7902 5769.5027 -2722.8902 5776.9527 -2722.8902 5776.9527 -2718.7902~rep4218~0#@$PAD~RECT~5771.303~-2720.74~1.9685~2.3622~1~GND~2~0~5770.3187 -2721.9211 5772.2873 -2721.9211 5772.2873 -2719.5589 5770.3187 -2719.5589~0~rep4216~0~~Y~0~0~0.2~5771.303,-2720.74#@$PAD~RECT~5774.903~-2720.74~1.9685~2.3622~1~+3V3~1~0~5773.9188 -2721.9211 5775.8873 -2721.9211 5775.8873 -2719.5589 5773.9188 -2719.5589~0~rep4217~0~~Y~0~0~0.2~5774.903,-2720.74","LIB~5655.6866~-2785.6266~package`A0603`value`10uF~180~~gge5bfcee5f0e3d202c~1~~~0~~yes~~#@$TEXT~P~5663.926~-2784.955~0.433~0~0~3~~2.7559~C29~M 5665.8 -2787.11L5665.68 -2787.36 L5665.43 -2787.61 L5665.18 -2787.74 L5664.68 -2787.74 L5664.43 -2787.61 L5664.18 -2787.36 L5664.05 -2787.11 L5663.93 -2786.73 L5663.93 -2786.11 L5664.05 -2785.73 L5664.18 -2785.48 L5664.43 -2785.23 L5664.68 -2785.11 L5665.18 -2785.11 L5665.43 -2785.23 L5665.68 -2785.48 L5665.8 -2785.73 M 5666.76 -2787.11L5666.76 -2787.24 L5666.88 -2787.49 L5667.01 -2787.61 L5667.26 -2787.74 L5667.76 -2787.74 L5668.01 -2787.61 L5668.13 -2787.49 L5668.26 -2787.24 L5668.26 -2786.98 L5668.13 -2786.73 L5667.88 -2786.36 L5666.63 -2785.11 L5668.39 -2785.11 M 5670.84 -2786.86L5670.72 -2786.48 L5670.46 -2786.23 L5670.09 -2786.11 L5669.96 -2786.11 L5669.59 -2786.23 L5669.34 -2786.48 L5669.21 -2786.86 L5669.21 -2786.98 L5669.34 -2787.36 L5669.59 -2787.61 L5669.96 -2787.74 L5670.09 -2787.74 L5670.46 -2787.61 L5670.72 -2787.36 L5670.84 -2786.86 L5670.84 -2786.23 L5670.72 -2785.61 L5670.46 -2785.23 L5670.09 -2785.11 L5669.84 -2785.11 L5669.46 -2785.23 L5669.34 -2785.48 ~none~rep4223~~0~#@$TEXT~N~5663.807~-2780.349~0.4724~0~0~3~~3.1496~10uF~M 5663.81 -2782.95L5664.09 -2783.1 L5664.52 -2783.53 L5664.52 -2780.52 M 5666.33 -2783.53L5665.9 -2783.38 L5665.61 -2782.95 L5665.47 -2782.24 L5665.47 -2781.81 L5665.61 -2781.09 L5665.9 -2780.66 L5666.33 -2780.52 L5666.61 -2780.52 L5667.04 -2780.66 L5667.33 -2781.09 L5667.47 -2781.81 L5667.47 -2782.24 L5667.33 -2782.95 L5667.04 -2783.38 L5666.61 -2783.53 L5666.33 -2783.53 M 5668.42 -2782.53L5668.42 -2781.09 L5668.56 -2780.66 L5668.85 -2780.52 L5669.28 -2780.52 L5669.56 -2780.66 L5669.99 -2781.09 M 5669.99 -2782.53L5669.99 -2780.52 M 5670.94 -2783.53L5670.94 -2780.52 M 5670.94 -2783.53L5672.8 -2783.53 M 5670.94 -2782.1L5672.08 -2782.1 ~none~rep4224~~0~#@$TRACK~1.2~3~~5654.4425 -2782.1266 5649.4425 -2782.1266 5649.4425 -2789.1266 5654.4425 -2789.1266~rep4227~0#@$TRACK~1.2~3~~5657.4425 -2782.1266 5661.9425 -2782.1266 5661.9425 -2789.1266 5657.4425 -2789.1266~rep4228~0#@$PAD~RECT~5652.222~-2785.627~4.3307~3.5433~1~GND~2~0~5654.3874 -2783.8553 5650.0566 -2783.8553 5650.0566 -2787.3986 5654.3874 -2787.3986~180~rep4225~0~~Y~0~0~0.2~5652.222,-2785.627#@$PAD~RECT~5659.151~-2785.627~4.3307~3.5433~1~+3V3~1~0~5661.3164 -2783.8553 5656.9856 -2783.8553 5656.9856 -2787.3986 5661.3164 -2787.3986~180~rep4226~0~~Y~0~0~0.2~5659.151,-2785.627","LIB~5681.0409~-2593.9337~package`A0805`value`10uF~90~~ggee3aeb17489c0ab5d~1~~~0~~yes~~#@$TEXT~P~5675.073~-2582.379~0.433~0~0~3~~2.7559~C28~M 5676.95 -2584.53L5676.83 -2584.78 L5676.58 -2585.03 L5676.33 -2585.16 L5675.82 -2585.16 L5675.57 -2585.03 L5675.32 -2584.78 L5675.2 -2584.53 L5675.07 -2584.16 L5675.07 -2583.53 L5675.2 -2583.16 L5675.32 -2582.91 L5675.57 -2582.65 L5675.82 -2582.53 L5676.33 -2582.53 L5676.58 -2582.65 L5676.83 -2582.91 L5676.95 -2583.16 M 5677.9 -2584.53L5677.9 -2584.66 L5678.03 -2584.91 L5678.15 -2585.03 L5678.41 -2585.16 L5678.91 -2585.16 L5679.16 -2585.03 L5679.28 -2584.91 L5679.41 -2584.66 L5679.41 -2584.41 L5679.28 -2584.16 L5679.03 -2583.78 L5677.78 -2582.53 L5679.53 -2582.53 M 5680.99 -2585.16L5680.61 -2585.03 L5680.48 -2584.78 L5680.48 -2584.53 L5680.61 -2584.28 L5680.86 -2584.16 L5681.36 -2584.03 L5681.74 -2583.91 L5681.99 -2583.66 L5682.11 -2583.41 L5682.11 -2583.03 L5681.99 -2582.78 L5681.86 -2582.65 L5681.49 -2582.53 L5680.99 -2582.53 L5680.61 -2582.65 L5680.48 -2582.78 L5680.36 -2583.03 L5680.36 -2583.41 L5680.48 -2583.66 L5680.74 -2583.91 L5681.11 -2584.03 L5681.61 -2584.16 L5681.86 -2584.28 L5681.99 -2584.53 L5681.99 -2584.78 L5681.86 -2585.03 L5681.49 -2585.16 L5680.99 -2585.16 ~none~rep4234~~0~#@$TEXT~N~5675.214~-2595.471~0.4724~0~0~3~~3.1496~10uF~M 5675.21 -2598.08L5675.5 -2598.22 L5675.93 -2598.65 L5675.93 -2595.64 M 5677.73 -2598.65L5677.3 -2598.51 L5677.02 -2598.08 L5676.87 -2597.36 L5676.87 -2596.93 L5677.02 -2596.22 L5677.3 -2595.79 L5677.73 -2595.64 L5678.02 -2595.64 L5678.45 -2595.79 L5678.74 -2596.22 L5678.88 -2596.93 L5678.88 -2597.36 L5678.74 -2598.08 L5678.45 -2598.51 L5678.02 -2598.65 L5677.73 -2598.65 M 5679.82 -2597.65L5679.82 -2596.22 L5679.97 -2595.79 L5680.25 -2595.64 L5680.68 -2595.64 L5680.97 -2595.79 L5681.4 -2596.22 M 5681.4 -2597.65L5681.4 -2595.64 M 5682.34 -2598.65L5682.34 -2595.64 M 5682.34 -2598.65L5684.2 -2598.65 M 5682.34 -2597.22L5683.49 -2597.22 ~none~rep4235~~0~#@$TRACK~1.2~3~~5685.5409 -2591.4337 5685.5409 -2598.9337 5676.5409 -2598.9337 5676.5409 -2591.4337~rep4238~0#@$TRACK~1.2~3~~5685.5409 -2587.4337 5685.5409 -2579.9337 5676.5409 -2579.9337 5676.5409 -2587.4337~rep4240~0#@$PAD~RECT~5681.041~-2593.934~6~4.7244~1~+3V3~1~0~5683.4032 -2596.934 5683.4032 -2590.934 5678.6788 -2590.934 5678.6788 -2596.934~270~rep4236~0~~Y~0~0~0.2~5681.041,-2593.934#@$PAD~RECT~5681.041~-2584.934~6~4.7244~1~GND~2~0~5683.4032 -2587.934 5683.4032 -2581.934 5678.6788 -2581.934 5678.6788 -2587.934~270~rep4237~0~~Y~0~0~0.2~5681.041,-2584.934","LIB~5619.6236~-2782.9495~package`A0402`value`100nF~90~~gge5bc8fc857418e778~1~~~0~~yes~~#@$TEXT~P~5616.789~-2776.335~0.433~0~0~3~~2.7559~C26~M 5618.67 -2778.49L5618.54 -2778.74 L5618.29 -2778.99 L5618.04 -2779.12 L5617.54 -2779.12 L5617.29 -2778.99 L5617.04 -2778.74 L5616.91 -2778.49 L5616.79 -2778.11 L5616.79 -2777.49 L5616.91 -2777.11 L5617.04 -2776.86 L5617.29 -2776.61 L5617.54 -2776.49 L5618.04 -2776.49 L5618.29 -2776.61 L5618.54 -2776.86 L5618.67 -2777.11 M 5619.62 -2778.49L5619.62 -2778.62 L5619.75 -2778.87 L5619.87 -2778.99 L5620.12 -2779.12 L5620.62 -2779.12 L5620.87 -2778.99 L5621 -2778.87 L5621.12 -2778.62 L5621.12 -2778.36 L5621 -2778.11 L5620.75 -2777.74 L5619.49 -2776.49 L5621.25 -2776.49 M 5623.58 -2778.74L5623.45 -2778.99 L5623.08 -2779.12 L5622.83 -2779.12 L5622.45 -2778.99 L5622.2 -2778.62 L5622.08 -2777.99 L5622.08 -2777.36 L5622.2 -2776.86 L5622.45 -2776.61 L5622.83 -2776.49 L5622.95 -2776.49 L5623.33 -2776.61 L5623.58 -2776.86 L5623.7 -2777.24 L5623.7 -2777.36 L5623.58 -2777.74 L5623.33 -2777.99 L5622.95 -2778.11 L5622.83 -2778.11 L5622.45 -2777.99 L5622.2 -2777.74 L5622.08 -2777.36 ~none~rep4245~~0~#@$TEXT~N~5616.563~-2772.948~0.3937~0~0~3~~2.3622~100nF~M 5616.56 -2774.9L5616.78 -2775.01 L5617.1 -2775.33 L5617.1 -2773.08 M 5618.45 -2775.33L5618.13 -2775.22 L5617.92 -2774.9 L5617.81 -2774.36 L5617.81 -2774.04 L5617.92 -2773.51 L5618.13 -2773.18 L5618.45 -2773.08 L5618.67 -2773.08 L5618.99 -2773.18 L5619.2 -2773.51 L5619.31 -2774.04 L5619.31 -2774.36 L5619.2 -2774.9 L5618.99 -2775.22 L5618.67 -2775.33 L5618.45 -2775.33 M 5620.66 -2775.33L5620.34 -2775.22 L5620.13 -2774.9 L5620.02 -2774.36 L5620.02 -2774.04 L5620.13 -2773.51 L5620.34 -2773.18 L5620.66 -2773.08 L5620.88 -2773.08 L5621.2 -2773.18 L5621.42 -2773.51 L5621.52 -2774.04 L5621.52 -2774.36 L5621.42 -2774.9 L5621.2 -2775.22 L5620.88 -2775.33 L5620.66 -2775.33 M 5622.23 -2774.58L5622.23 -2773.08 M 5622.23 -2774.15L5622.55 -2774.47 L5622.77 -2774.58 L5623.09 -2774.58 L5623.31 -2774.47 L5623.41 -2774.15 L5623.41 -2773.08 M 5624.12 -2775.33L5624.12 -2773.08 M 5624.12 -2775.33L5625.52 -2775.33 M 5624.12 -2774.26L5624.98 -2774.26 ~none~rep4246~~0~#@$TRACK~0.7874~3~~5621.5736 -2786.7995 5617.4736 -2786.7995 5617.4736 -2779.3495 5621.5736 -2779.3495 5621.5736 -2786.7995~rep4249~0#@$PAD~RECT~5619.624~-2781.149~1.9685~2.3622~1~GND~2~0~5618.4429 -2780.1647 5618.4429 -2782.1333 5620.8051 -2782.1333 5620.8051 -2780.1647~90~rep4247~0~~Y~0~0~0.2~5619.624,-2781.149#@$PAD~RECT~5619.624~-2784.749~1.9685~2.3622~1~+3V3~1~0~5618.4429 -2783.7647 5618.4429 -2785.7333 5620.8051 -2785.7333 5620.8051 -2783.7647~90~rep4248~0~~Y~0~0~0.2~5619.624,-2784.749","LIB~5522.3109~-2739.2468~package`A0805`value`4.7uF~270~~gge9b75bd895f0e39d2~1~~~0~~yes~~#@$TEXT~P~5528.216~-2745.31~0.433~0~0~3~~2.7559~C19~M 5530.1 -2747.46L5529.97 -2747.71 L5529.72 -2747.97 L5529.47 -2748.09 L5528.97 -2748.09 L5528.72 -2747.97 L5528.47 -2747.71 L5528.34 -2747.46 L5528.22 -2747.09 L5528.22 -2746.46 L5528.34 -2746.09 L5528.47 -2745.84 L5528.72 -2745.59 L5528.97 -2745.46 L5529.47 -2745.46 L5529.72 -2745.59 L5529.97 -2745.84 L5530.1 -2746.09 M 5530.92 -2747.59L5531.17 -2747.71 L5531.55 -2748.09 L5531.55 -2745.46 M 5534 -2747.21L5533.88 -2746.84 L5533.63 -2746.59 L5533.25 -2746.46 L5533.13 -2746.46 L5532.75 -2746.59 L5532.5 -2746.84 L5532.38 -2747.21 L5532.38 -2747.34 L5532.5 -2747.71 L5532.75 -2747.97 L5533.13 -2748.09 L5533.25 -2748.09 L5533.63 -2747.97 L5533.88 -2747.71 L5534 -2747.21 L5534 -2746.59 L5533.88 -2745.96 L5533.63 -2745.59 L5533.25 -2745.46 L5533 -2745.46 L5532.63 -2745.59 L5532.5 -2745.84 ~none~rep4254~~0~#@$TEXT~N~5528.61~-2739.719~0.4724~0~0~3~~3.1496~4.7uF~M 5530.04 -2742.9L5528.61 -2740.89 L5530.76 -2740.89 M 5530.04 -2742.9L5530.04 -2739.89 M 5531.85 -2740.61L5531.7 -2740.46 L5531.85 -2740.32 L5531.99 -2740.46 L5531.85 -2740.61 M 5534.94 -2742.9L5533.51 -2739.89 M 5532.93 -2742.9L5534.94 -2742.9 M 5535.88 -2741.9L5535.88 -2740.46 L5536.03 -2740.03 L5536.31 -2739.89 L5536.74 -2739.89 L5537.03 -2740.03 L5537.46 -2740.46 M 5537.46 -2741.9L5537.46 -2739.89 M 5538.4 -2742.9L5538.4 -2739.89 M 5538.4 -2742.9L5540.26 -2742.9 M 5538.4 -2741.47L5539.55 -2741.47 ~none~rep4255~~0~#@$TRACK~1.2~3~~5526.8109 -2741.7468 5526.8109 -2734.2468 5517.8109 -2734.2468 5517.8109 -2741.7468~rep4258~0#@$TRACK~1.2~3~~5526.8109 -2745.7468 5526.8109 -2753.2468 5517.8109 -2753.2468 5517.8109 -2745.7468~rep4260~0#@$PAD~RECT~5522.311~-2748.247~6~4.7244~1~GND~2~0~5519.9488 -2745.247 5519.9488 -2751.247 5524.6732 -2751.247 5524.6732 -2745.247~90~rep4256~0~~Y~0~0~0.2~5522.311,-2748.247#@$PAD~RECT~5522.311~-2739.247~6~4.7244~1~BAT+~1~0~5519.9488 -2736.247 5519.9488 -2742.247 5524.6732 -2742.247 5524.6732 -2736.247~90~rep4257~0~~Y~0~0~0.2~5522.311,-2739.247","LIB~5479.915~-2737.4876~package`A0805`value`4.7uF~90~~gged9d0285421fe3ef0~1~~~0~~yes~~#@$TEXT~P~5471.332~-2739.535~0.433~0~0~3~~2.7559~C18~M 5473.21 -2741.69L5473.09 -2741.94 L5472.84 -2742.19 L5472.59 -2742.32 L5472.08 -2742.32 L5471.83 -2742.19 L5471.58 -2741.94 L5471.46 -2741.69 L5471.33 -2741.31 L5471.33 -2740.69 L5471.46 -2740.31 L5471.58 -2740.06 L5471.83 -2739.81 L5472.08 -2739.69 L5472.59 -2739.69 L5472.84 -2739.81 L5473.09 -2740.06 L5473.21 -2740.31 M 5474.04 -2741.81L5474.29 -2741.94 L5474.66 -2742.32 L5474.66 -2739.69 M 5476.12 -2742.32L5475.74 -2742.19 L5475.62 -2741.94 L5475.62 -2741.69 L5475.74 -2741.44 L5475.99 -2741.31 L5476.49 -2741.19 L5476.87 -2741.06 L5477.12 -2740.81 L5477.25 -2740.56 L5477.25 -2740.19 L5477.12 -2739.94 L5476.99 -2739.81 L5476.62 -2739.69 L5476.12 -2739.69 L5475.74 -2739.81 L5475.62 -2739.94 L5475.49 -2740.19 L5475.49 -2740.56 L5475.62 -2740.81 L5475.87 -2741.06 L5476.24 -2741.19 L5476.74 -2741.31 L5476.99 -2741.44 L5477.12 -2741.69 L5477.12 -2741.94 L5476.99 -2742.19 L5476.62 -2742.32 L5476.12 -2742.32 ~none~rep4265~~0~#@$TEXT~N~5478.537~-2740.283~0.4724~0~0~3~~3.1496~4.7uF~M 5479.97 -2743.46L5478.54 -2741.46 L5480.68 -2741.46 M 5479.97 -2743.46L5479.97 -2740.45 M 5481.77 -2741.17L5481.63 -2741.03 L5481.77 -2740.88 L5481.92 -2741.03 L5481.77 -2741.17 M 5484.86 -2743.46L5483.43 -2740.45 M 5482.86 -2743.46L5484.86 -2743.46 M 5485.81 -2742.46L5485.81 -2741.03 L5485.95 -2740.6 L5486.24 -2740.45 L5486.67 -2740.45 L5486.96 -2740.6 L5487.38 -2741.03 M 5487.38 -2742.46L5487.38 -2740.45 M 5488.33 -2743.46L5488.33 -2740.45 M 5488.33 -2743.46L5490.19 -2743.46 M 5488.33 -2742.03L5489.47 -2742.03 ~none~rep4266~~0~#@$TRACK~1.2~3~~5484.4151 -2734.9876 5484.4151 -2742.4876 5475.4151 -2742.4876 5475.4151 -2734.9876~rep4269~0#@$TRACK~1.2~3~~5484.4151 -2730.9876 5484.4151 -2723.4876 5475.4151 -2723.4876 5475.4151 -2730.9876~rep4271~0#@$PAD~RECT~5479.915~-2728.488~6~4.7244~1~GND~2~0~5482.2772 -2731.488 5482.2772 -2725.488 5477.5528 -2725.488 5477.5528 -2731.488~270~rep4267~0~~Y~0~0~0.2~5479.915,-2728.488#@$PAD~RECT~5479.915~-2737.488~6~4.7244~1~VIN~1~0~5482.2772 -2740.488 5482.2772 -2734.488 5477.5528 -2734.488 5477.5528 -2740.488~270~rep4268~0~~Y~0~0~0.2~5479.915,-2737.488","LIB~5853.8881~-2780.4625~package`A0603`value`22uF~180~~gge86bb77bda672094d~1~~~0~~yes~~#@$TEXT~P~5838.504~-2779.991~0.433~0~0~3~~2.7559~C15~M 5840.38 -2782.15L5840.26 -2782.4 L5840.01 -2782.65 L5839.76 -2782.77 L5839.26 -2782.77 L5839.01 -2782.65 L5838.75 -2782.4 L5838.63 -2782.15 L5838.5 -2781.77 L5838.5 -2781.14 L5838.63 -2780.77 L5838.75 -2780.52 L5839.01 -2780.27 L5839.26 -2780.14 L5839.76 -2780.14 L5840.01 -2780.27 L5840.26 -2780.52 L5840.38 -2780.77 M 5841.21 -2782.27L5841.46 -2782.4 L5841.84 -2782.77 L5841.84 -2780.14 M 5844.17 -2782.77L5842.91 -2782.77 L5842.79 -2781.64 L5842.91 -2781.77 L5843.29 -2781.9 L5843.67 -2781.9 L5844.04 -2781.77 L5844.29 -2781.52 L5844.42 -2781.14 L5844.42 -2780.89 L5844.29 -2780.52 L5844.04 -2780.27 L5843.67 -2780.14 L5843.29 -2780.14 L5842.91 -2780.27 L5842.79 -2780.39 L5842.66 -2780.64 ~none~rep4276~~0~#@$TEXT~N~5853.181~-2787.037~0.4724~0~0~3~~3.1496~22uF~M 5853.32 -2789.5L5853.32 -2789.64 L5853.47 -2789.93 L5853.61 -2790.07 L5853.9 -2790.22 L5854.47 -2790.22 L5854.76 -2790.07 L5854.9 -2789.93 L5855.04 -2789.64 L5855.04 -2789.36 L5854.9 -2789.07 L5854.61 -2788.64 L5853.18 -2787.21 L5855.19 -2787.21 M 5856.27 -2789.5L5856.27 -2789.64 L5856.42 -2789.93 L5856.56 -2790.07 L5856.85 -2790.22 L5857.42 -2790.22 L5857.71 -2790.07 L5857.85 -2789.93 L5857.99 -2789.64 L5857.99 -2789.36 L5857.85 -2789.07 L5857.56 -2788.64 L5856.13 -2787.21 L5858.13 -2787.21 M 5859.08 -2789.21L5859.08 -2787.78 L5859.22 -2787.35 L5859.51 -2787.21 L5859.94 -2787.21 L5860.23 -2787.35 L5860.65 -2787.78 M 5860.65 -2789.21L5860.65 -2787.21 M 5861.6 -2790.22L5861.6 -2787.21 M 5861.6 -2790.22L5863.46 -2790.22 M 5861.6 -2788.78L5862.74 -2788.78 ~none~rep4277~~0~#@$TRACK~1.2~3~~5852.644 -2776.9625 5847.644 -2776.9625 5847.644 -2783.9625 5852.644 -2783.9625~rep4280~0#@$TRACK~1.2~3~~5855.644 -2776.9625 5860.144 -2776.9625 5860.144 -2783.9625 5855.644 -2783.9625~rep4281~0#@$PAD~RECT~5850.424~-2780.462~4.3307~3.5433~1~GND~2~0~5852.5894 -2778.6903 5848.2587 -2778.6903 5848.2587 -2782.2336 5852.5894 -2782.2336~180~rep4278~0~~Y~0~0~0.2~5850.424,-2780.462#@$PAD~RECT~5857.353~-2780.462~4.3307~3.5433~1~NETR23_1~1~0~5859.5184 -2778.6903 5855.1877 -2778.6903 5855.1877 -2782.2336 5859.5184 -2782.2336~180~rep4279~0~~Y~0~0~0.2~5857.353,-2780.462","LIB~5855.6598~-2771.6042~package`A0402`value`100nF~~~gge00361082df9d4549~1~~~0~~yes~~#@$TEXT~P~5844.043~-2771.754~0.433~0~0~3~~2.7559~C14~M 5845.92 -2773.91L5845.8 -2774.16 L5845.55 -2774.41 L5845.3 -2774.53 L5844.8 -2774.53 L5844.54 -2774.41 L5844.29 -2774.16 L5844.17 -2773.91 L5844.04 -2773.53 L5844.04 -2772.91 L5844.17 -2772.53 L5844.29 -2772.28 L5844.54 -2772.03 L5844.8 -2771.9 L5845.3 -2771.9 L5845.55 -2772.03 L5845.8 -2772.28 L5845.92 -2772.53 M 5846.75 -2774.03L5847 -2774.16 L5847.38 -2774.53 L5847.38 -2771.9 M 5849.45 -2774.53L5848.2 -2772.78 L5850.08 -2772.78 M 5849.45 -2774.53L5849.45 -2771.9 ~none~rep4287~~0~#@$TEXT~N~5860.618~-2772.2~0.3937~0~0~3~~2.3622~100nF~M 5860.62 -2774.15L5860.83 -2774.26 L5861.16 -2774.58 L5861.16 -2772.33 M 5862.51 -2774.58L5862.19 -2774.48 L5861.97 -2774.15 L5861.86 -2773.62 L5861.86 -2773.29 L5861.97 -2772.76 L5862.19 -2772.44 L5862.51 -2772.33 L5862.72 -2772.33 L5863.04 -2772.44 L5863.26 -2772.76 L5863.37 -2773.29 L5863.37 -2773.62 L5863.26 -2774.15 L5863.04 -2774.48 L5862.72 -2774.58 L5862.51 -2774.58 M 5864.72 -2774.58L5864.4 -2774.48 L5864.18 -2774.15 L5864.08 -2773.62 L5864.08 -2773.29 L5864.18 -2772.76 L5864.4 -2772.44 L5864.72 -2772.33 L5864.93 -2772.33 L5865.26 -2772.44 L5865.47 -2772.76 L5865.58 -2773.29 L5865.58 -2773.62 L5865.47 -2774.15 L5865.26 -2774.48 L5864.93 -2774.58 L5864.72 -2774.58 M 5866.29 -2773.83L5866.29 -2772.33 M 5866.29 -2773.4L5866.61 -2773.72 L5866.82 -2773.83 L5867.15 -2773.83 L5867.36 -2773.72 L5867.47 -2773.4 L5867.47 -2772.33 M 5868.18 -2774.58L5868.18 -2772.33 M 5868.18 -2774.58L5869.57 -2774.58 M 5868.18 -2773.51L5869.04 -2773.51 ~none~rep4288~~0~#@$TRACK~0.7874~3~~5859.5098 -2769.6543 5852.0598 -2769.6543 5852.0598 -2773.7543 5859.5098 -2773.7543 5859.5098 -2769.6543~rep4291~0#@$PAD~RECT~5857.46~-2771.604~1.9685~2.3622~1~NETR23_1~1~0~5856.4757 -2772.7851 5858.4443 -2772.7851 5858.4443 -2770.4229 5856.4757 -2770.4229~0~rep4289~0~~Y~0~0~0.2~5857.46,-2771.604#@$PAD~RECT~5853.86~-2771.604~1.9685~2.3622~1~GND~2~0~5852.8757 -2772.7851 5854.8443 -2772.7851 5854.8443 -2770.4229 5852.8757 -2770.4229~0~rep4290~0~~Y~0~0~0.2~5853.86,-2771.604","LIB~5596.7102~-2818.9337~package`A0402`value`100nF~270~~ggee7ba3aba9f9889c8~1~~~0~~yes~~#@$TEXT~P~5595.45~-2815.43~0.433~0~0~3~~2.7559~C13~M 5597.33 -2817.58L5597.2 -2817.83 L5596.95 -2818.09 L5596.7 -2818.21 L5596.2 -2818.21 L5595.95 -2818.09 L5595.7 -2817.83 L5595.58 -2817.58 L5595.45 -2817.21 L5595.45 -2816.58 L5595.58 -2816.21 L5595.7 -2815.96 L5595.95 -2815.71 L5596.2 -2815.58 L5596.7 -2815.58 L5596.95 -2815.71 L5597.2 -2815.96 L5597.33 -2816.21 M 5598.16 -2817.71L5598.41 -2817.83 L5598.78 -2818.21 L5598.78 -2815.58 M 5599.86 -2818.21L5601.24 -2818.21 L5600.49 -2817.21 L5600.86 -2817.21 L5601.11 -2817.08 L5601.24 -2816.96 L5601.36 -2816.58 L5601.36 -2816.33 L5601.24 -2815.96 L5600.99 -2815.71 L5600.61 -2815.58 L5600.24 -2815.58 L5599.86 -2815.71 L5599.73 -2815.83 L5599.61 -2816.08 ~none~rep4296~~0~#@$TEXT~N~5598.127~-2825.003~0.4724~0~0~3~~3.1496~100nF~M 5598.13 -2827.61L5598.41 -2827.75 L5598.84 -2828.18 L5598.84 -2825.18 M 5600.65 -2828.18L5600.22 -2828.04 L5599.93 -2827.61 L5599.79 -2826.89 L5599.79 -2826.46 L5599.93 -2825.75 L5600.22 -2825.32 L5600.65 -2825.18 L5600.93 -2825.18 L5601.36 -2825.32 L5601.65 -2825.75 L5601.79 -2826.46 L5601.79 -2826.89 L5601.65 -2827.61 L5601.36 -2828.04 L5600.93 -2828.18 L5600.65 -2828.18 M 5603.6 -2828.18L5603.17 -2828.04 L5602.88 -2827.61 L5602.74 -2826.89 L5602.74 -2826.46 L5602.88 -2825.75 L5603.17 -2825.32 L5603.6 -2825.18 L5603.88 -2825.18 L5604.31 -2825.32 L5604.6 -2825.75 L5604.74 -2826.46 L5604.74 -2826.89 L5604.6 -2827.61 L5604.31 -2828.04 L5603.88 -2828.18 L5603.6 -2828.18 M 5605.69 -2827.18L5605.69 -2825.18 M 5605.69 -2826.61L5606.12 -2827.04 L5606.4 -2827.18 L5606.83 -2827.18 L5607.12 -2827.04 L5607.26 -2826.61 L5607.26 -2825.18 M 5608.21 -2828.18L5608.21 -2825.18 M 5608.21 -2828.18L5610.07 -2828.18 M 5608.21 -2826.75L5609.35 -2826.75 ~none~rep4297~~0~#@$TRACK~0.7874~3~~5598.8602 -2822.5337 5598.8602 -2815.0837 5594.7602 -2815.0837 5594.7602 -2822.5337 5598.8602 -2822.5337~rep4300~0#@$PAD~RECT~5596.71~-2820.734~1.9685~2.3622~1~GND~2~0~5597.8911 -2821.7183 5597.8911 -2819.7497 5595.5289 -2819.7497 5595.5289 -2821.7183~270~rep4298~0~~Y~0~0~0.2~5596.71,-2820.734#@$PAD~RECT~5596.71~-2817.134~1.9685~2.3622~1~MICBIAS~1~0~5597.8911 -2818.1183 5597.8911 -2816.1497 5595.5289 -2816.1497 5595.5289 -2818.1183~270~rep4299~0~~Y~0~0~0.2~5596.71,-2817.134","LIB~5605.8834~-2819.9967~package`A0603`value`22uF~180~~gge26a39bcafcc8ce7c~1~~~0~~yes~~#@$TEXT~P~5599.978~-2813.698~0.433~0~0~3~~2.7559~C12~M 5601.86 -2815.85L5601.73 -2816.1 L5601.48 -2816.35 L5601.23 -2816.48 L5600.73 -2816.48 L5600.48 -2816.35 L5600.23 -2816.1 L5600.1 -2815.85 L5599.98 -2815.48 L5599.98 -2814.85 L5600.1 -2814.47 L5600.23 -2814.22 L5600.48 -2813.97 L5600.73 -2813.85 L5601.23 -2813.85 L5601.48 -2813.97 L5601.73 -2814.22 L5601.86 -2814.47 M 5602.68 -2815.98L5602.93 -2816.1 L5603.31 -2816.48 L5603.31 -2813.85 M 5604.26 -2815.85L5604.26 -2815.98 L5604.39 -2816.23 L5604.51 -2816.35 L5604.76 -2816.48 L5605.26 -2816.48 L5605.51 -2816.35 L5605.64 -2816.23 L5605.77 -2815.98 L5605.77 -2815.73 L5605.64 -2815.48 L5605.39 -2815.1 L5604.14 -2813.85 L5605.89 -2813.85 ~none~rep4305~~0~#@$TEXT~N~5601.096~-2836.093~0.4724~0~0~3~~3.1496~22uF~M 5601.24 -2838.56L5601.24 -2838.7 L5601.38 -2838.99 L5601.53 -2839.13 L5601.81 -2839.27 L5602.38 -2839.27 L5602.67 -2839.13 L5602.81 -2838.99 L5602.96 -2838.7 L5602.96 -2838.41 L5602.81 -2838.13 L5602.53 -2837.7 L5601.1 -2836.26 L5603.1 -2836.26 M 5604.19 -2838.56L5604.19 -2838.7 L5604.33 -2838.99 L5604.47 -2839.13 L5604.76 -2839.27 L5605.33 -2839.27 L5605.62 -2839.13 L5605.76 -2838.99 L5605.91 -2838.7 L5605.91 -2838.41 L5605.76 -2838.13 L5605.48 -2837.7 L5604.05 -2836.26 L5606.05 -2836.26 M 5606.99 -2838.27L5606.99 -2836.84 L5607.14 -2836.41 L5607.42 -2836.26 L5607.85 -2836.26 L5608.14 -2836.41 L5608.57 -2836.84 M 5608.57 -2838.27L5608.57 -2836.26 M 5609.51 -2839.27L5609.51 -2836.26 M 5609.51 -2839.27L5611.38 -2839.27 M 5609.51 -2837.84L5610.66 -2837.84 ~none~rep4306~~0~#@$TRACK~1.2~3~~5604.6393 -2816.4967 5599.6393 -2816.4967 5599.6393 -2823.4967 5604.6393 -2823.4967~rep4309~0#@$TRACK~1.2~3~~5607.6393 -2816.4967 5612.1393 -2816.4967 5612.1393 -2823.4967 5607.6393 -2823.4967~rep4310~0#@$PAD~RECT~5602.419~-2819.997~4.3307~3.5433~1~GND~2~0~5604.5844 -2818.2253 5600.2537 -2818.2253 5600.2537 -2821.7686 5604.5844 -2821.7686~180~rep4307~0~~Y~0~0~0.2~5602.419,-2819.997#@$PAD~RECT~5609.348~-2819.997~4.3307~3.5433~1~NETU1_16~1~0~5611.5134 -2818.2253 5607.1827 -2818.2253 5607.1827 -2821.7686 5611.5134 -2821.7686~180~rep4308~0~~Y~0~0~0.2~5609.348,-2819.997","LIB~5617.272~-2821.6484~package`A0402`value`100nF~180~~gge20764de07767b3a1~1~~~0~~yes~~#@$TEXT~P~5615.579~-2816.924~0.433~0~0~3~~2.7559~C11~M 5617.46 -2819.08L5617.33 -2819.33 L5617.08 -2819.58 L5616.83 -2819.71 L5616.33 -2819.71 L5616.08 -2819.58 L5615.83 -2819.33 L5615.7 -2819.08 L5615.58 -2818.7 L5615.58 -2818.08 L5615.7 -2817.7 L5615.83 -2817.45 L5616.08 -2817.2 L5616.33 -2817.07 L5616.83 -2817.07 L5617.08 -2817.2 L5617.33 -2817.45 L5617.46 -2817.7 M 5618.28 -2819.2L5618.54 -2819.33 L5618.91 -2819.71 L5618.91 -2817.07 M 5619.74 -2819.2L5619.99 -2819.33 L5620.36 -2819.71 L5620.36 -2817.07 ~none~rep4316~~0~#@$TEXT~N~5612.964~-2826.953~0.3937~0~0~3~~3.1496~100nF~M 5612.96 -2829.56L5613.25 -2829.7 L5613.68 -2830.13 L5613.68 -2827.12 M 5615.48 -2830.13L5615.05 -2829.99 L5614.77 -2829.56 L5614.62 -2828.84 L5614.62 -2828.41 L5614.77 -2827.7 L5615.05 -2827.27 L5615.48 -2827.12 L5615.77 -2827.12 L5616.2 -2827.27 L5616.49 -2827.7 L5616.63 -2828.41 L5616.63 -2828.84 L5616.49 -2829.56 L5616.2 -2829.99 L5615.77 -2830.13 L5615.48 -2830.13 M 5618.43 -2830.13L5618 -2829.99 L5617.72 -2829.56 L5617.57 -2828.84 L5617.57 -2828.41 L5617.72 -2827.7 L5618 -2827.27 L5618.43 -2827.12 L5618.72 -2827.12 L5619.15 -2827.27 L5619.43 -2827.7 L5619.58 -2828.41 L5619.58 -2828.84 L5619.43 -2829.56 L5619.15 -2829.99 L5618.72 -2830.13 L5618.43 -2830.13 M 5620.52 -2829.13L5620.52 -2827.12 M 5620.52 -2828.56L5620.95 -2828.99 L5621.24 -2829.13 L5621.67 -2829.13 L5621.95 -2828.99 L5622.1 -2828.56 L5622.1 -2827.12 M 5623.04 -2830.13L5623.04 -2827.12 M 5623.04 -2830.13L5624.9 -2830.13 M 5623.04 -2828.7L5624.19 -2828.7 ~none~rep4317~~0~#@$TRACK~0.7874~3~~5620.872 -2823.5984 5613.422 -2823.5984 5613.422 -2819.4984 5620.872 -2819.4984 5620.872 -2823.5984~rep4320~0#@$PAD~RECT~5615.472~-2821.648~1.9685~2.3622~1~NETU1_16~1~0~5616.4563 -2820.4669 5614.4877 -2820.4669 5614.4877 -2822.8291 5616.4563 -2822.8291~180~rep4318~0~~Y~0~0~0.2~5615.472,-2821.648#@$PAD~RECT~5619.072~-2821.648~1.9685~2.3622~1~GND~2~0~5620.0563 -2820.4669 5618.0878 -2820.4669 5618.0878 -2822.8291 5620.0563 -2822.8291~180~rep4319~0~~Y~0~0~0.2~5619.072,-2821.648","LIB~5638.2377~-2817.6345~package`A0603`value`22uF~90~~gge3e75135af30e0f04~1~~~0~~yes~~#@$TEXT~P~5637.096~-2811.453~0.433~0~0~3~~2.7559~C10~M 5638.98 -2813.61L5638.85 -2813.86 L5638.6 -2814.11 L5638.35 -2814.23 L5637.85 -2814.23 L5637.6 -2814.11 L5637.35 -2813.86 L5637.22 -2813.61 L5637.1 -2813.23 L5637.1 -2812.61 L5637.22 -2812.23 L5637.35 -2811.98 L5637.6 -2811.73 L5637.85 -2811.6 L5638.35 -2811.6 L5638.6 -2811.73 L5638.85 -2811.98 L5638.98 -2812.23 M 5639.8 -2813.73L5640.05 -2813.86 L5640.43 -2814.23 L5640.43 -2811.6 M 5642.01 -2814.23L5641.63 -2814.11 L5641.38 -2813.73 L5641.25 -2813.11 L5641.25 -2812.73 L5641.38 -2812.1 L5641.63 -2811.73 L5642.01 -2811.6 L5642.26 -2811.6 L5642.63 -2811.73 L5642.88 -2812.1 L5643.01 -2812.73 L5643.01 -2813.11 L5642.88 -2813.73 L5642.63 -2814.11 L5642.26 -2814.23 L5642.01 -2814.23 ~none~rep4325~~0~#@$TEXT~N~5641.151~-2827.164~0.4724~0~0~3~~3.1496~22uF~M 5641.29 -2829.63L5641.29 -2829.77 L5641.44 -2830.06 L5641.58 -2830.2 L5641.87 -2830.34 L5642.44 -2830.34 L5642.73 -2830.2 L5642.87 -2830.06 L5643.01 -2829.77 L5643.01 -2829.48 L5642.87 -2829.2 L5642.58 -2828.77 L5641.15 -2827.34 L5643.16 -2827.34 M 5644.24 -2829.63L5644.24 -2829.77 L5644.39 -2830.06 L5644.53 -2830.2 L5644.82 -2830.34 L5645.39 -2830.34 L5645.68 -2830.2 L5645.82 -2830.06 L5645.96 -2829.77 L5645.96 -2829.48 L5645.82 -2829.2 L5645.53 -2828.77 L5644.1 -2827.34 L5646.1 -2827.34 M 5647.05 -2829.34L5647.05 -2827.91 L5647.19 -2827.48 L5647.48 -2827.34 L5647.91 -2827.34 L5648.19 -2827.48 L5648.62 -2827.91 M 5648.62 -2829.34L5648.62 -2827.34 M 5649.57 -2830.34L5649.57 -2827.34 M 5649.57 -2830.34L5651.43 -2830.34 M 5649.57 -2828.91L5650.71 -2828.91 ~none~rep4326~~0~#@$TRACK~1.2~3~~5634.7377 -2818.8786 5634.7377 -2823.8786 5641.7377 -2823.8786 5641.7377 -2818.8786~rep4329~0#@$TRACK~1.2~3~~5634.7377 -2815.8786 5634.7377 -2811.3786 5641.7377 -2811.3786 5641.7377 -2815.8786~rep4330~0#@$PAD~RECT~5638.238~-2821.099~4.3307~3.5433~1~GND~2~0~5636.4664 -2818.9336 5636.4664 -2823.2644 5640.0097 -2823.2644 5640.0097 -2818.9336~90~rep4327~0~~Y~0~0~0.2~5638.238,-2821.099#@$PAD~RECT~5638.238~-2814.17~4.3307~3.5433~1~NETC9_1~1~0~5636.4664 -2812.0046 5636.4664 -2816.3354 5640.0097 -2816.3354 5640.0097 -2812.0046~90~rep4328~0~~Y~0~0~0.2~5638.238,-2814.17","LIB~5646.7929~-2817.5558~package`A0603`value`22uF~90~~gge7ddfd2f632a8b17d~1~~~0~~yes~~#@$TEXT~P~5645.73~-2811.414~0.433~0~0~3~~2.7559~C9~M 5647.61 -2813.57L5647.48 -2813.82 L5647.23 -2814.07 L5646.98 -2814.2 L5646.48 -2814.2 L5646.23 -2814.07 L5645.98 -2813.82 L5645.86 -2813.57 L5645.73 -2813.19 L5645.73 -2812.57 L5645.86 -2812.19 L5645.98 -2811.94 L5646.23 -2811.69 L5646.48 -2811.56 L5646.98 -2811.56 L5647.23 -2811.69 L5647.48 -2811.94 L5647.61 -2812.19 M 5650.06 -2813.32L5649.94 -2812.94 L5649.69 -2812.69 L5649.31 -2812.57 L5649.19 -2812.57 L5648.81 -2812.69 L5648.56 -2812.94 L5648.44 -2813.32 L5648.44 -2813.44 L5648.56 -2813.82 L5648.81 -2814.07 L5649.19 -2814.2 L5649.31 -2814.2 L5649.69 -2814.07 L5649.94 -2813.82 L5650.06 -2813.32 L5650.06 -2812.69 L5649.94 -2812.07 L5649.69 -2811.69 L5649.31 -2811.56 L5649.06 -2811.56 L5648.69 -2811.69 L5648.56 -2811.94 ~none~rep4336~~0~#@$TEXT~N~5646.635~-2827.241~0.4724~0~0~3~~3.1496~22uF~M 5646.78 -2829.7L5646.78 -2829.85 L5646.92 -2830.13 L5647.06 -2830.28 L5647.35 -2830.42 L5647.92 -2830.42 L5648.21 -2830.28 L5648.35 -2830.13 L5648.5 -2829.85 L5648.5 -2829.56 L5648.35 -2829.27 L5648.07 -2828.84 L5646.64 -2827.41 L5648.64 -2827.41 M 5649.73 -2829.7L5649.73 -2829.85 L5649.87 -2830.13 L5650.01 -2830.28 L5650.3 -2830.42 L5650.87 -2830.42 L5651.16 -2830.28 L5651.3 -2830.13 L5651.45 -2829.85 L5651.45 -2829.56 L5651.3 -2829.27 L5651.02 -2828.84 L5649.58 -2827.41 L5651.59 -2827.41 M 5652.53 -2829.42L5652.53 -2827.99 L5652.68 -2827.56 L5652.96 -2827.41 L5653.39 -2827.41 L5653.68 -2827.56 L5654.11 -2827.99 M 5654.11 -2829.42L5654.11 -2827.41 M 5655.05 -2830.42L5655.05 -2827.41 M 5655.05 -2830.42L5656.91 -2830.42 M 5655.05 -2828.99L5656.2 -2828.99 ~none~rep4337~~0~#@$TRACK~1.2~3~~5643.2929 -2818.7999 5643.2929 -2823.7999 5650.2929 -2823.7999 5650.2929 -2818.7999~rep4340~0#@$TRACK~1.2~3~~5643.2929 -2815.7999 5643.2929 -2811.2999 5650.2929 -2811.2999 5650.2929 -2815.7999~rep4341~0#@$PAD~RECT~5646.793~-2821.02~4.3307~3.5433~1~LHPOUT~2~0~5645.0213 -2818.8546 5645.0213 -2823.1854 5648.5647 -2823.1854 5648.5647 -2818.8546~90~rep4338~0~~Y~0~0~0.2~5646.793,-2821.02#@$PAD~RECT~5646.793~-2814.091~4.3307~3.5433~1~NETC9_1~1~0~5645.0213 -2811.9256 5645.0213 -2816.2563 5648.5647 -2816.2563 5648.5647 -2811.9256~90~rep4339~0~~Y~0~0~0.2~5646.793,-2814.091","LIB~5529.5944~-2782.9476~package`A0402`value`100pF~90~~gge80f3708378e3d903~1~~~0~~yes~~#@$TEXT~P~5528.453~-2793.617~0.433~0~0~3~~2.7559~C8~M 5530.33 -2795.77L5530.21 -2796.02 L5529.96 -2796.27 L5529.71 -2796.4 L5529.2 -2796.4 L5528.95 -2796.27 L5528.7 -2796.02 L5528.58 -2795.77 L5528.45 -2795.4 L5528.45 -2794.77 L5528.58 -2794.39 L5528.7 -2794.14 L5528.95 -2793.89 L5529.2 -2793.77 L5529.71 -2793.77 L5529.96 -2793.89 L5530.21 -2794.14 L5530.33 -2794.39 M 5531.78 -2796.4L5531.41 -2796.27 L5531.28 -2796.02 L5531.28 -2795.77 L5531.41 -2795.52 L5531.66 -2795.4 L5532.16 -2795.27 L5532.54 -2795.15 L5532.79 -2794.89 L5532.91 -2794.64 L5532.91 -2794.27 L5532.79 -2794.02 L5532.66 -2793.89 L5532.29 -2793.77 L5531.78 -2793.77 L5531.41 -2793.89 L5531.28 -2794.02 L5531.16 -2794.27 L5531.16 -2794.64 L5531.28 -2794.89 L5531.53 -2795.15 L5531.91 -2795.27 L5532.41 -2795.4 L5532.66 -2795.52 L5532.79 -2795.77 L5532.79 -2796.02 L5532.66 -2796.27 L5532.29 -2796.4 L5531.78 -2796.4 ~none~rep4347~~0~#@$TEXT~N~5533.633~-2797.583~0.4724~0~0~3~~3.1496~100pF~M 5533.63 -2800.19L5533.92 -2800.33 L5534.35 -2800.76 L5534.35 -2797.75 M 5536.15 -2800.76L5535.72 -2800.62 L5535.44 -2800.19 L5535.29 -2799.47 L5535.29 -2799.04 L5535.44 -2798.33 L5535.72 -2797.9 L5536.15 -2797.75 L5536.44 -2797.75 L5536.87 -2797.9 L5537.15 -2798.33 L5537.3 -2799.04 L5537.3 -2799.47 L5537.15 -2800.19 L5536.87 -2800.62 L5536.44 -2800.76 L5536.15 -2800.76 M 5539.1 -2800.76L5538.67 -2800.62 L5538.39 -2800.19 L5538.24 -2799.47 L5538.24 -2799.04 L5538.39 -2798.33 L5538.67 -2797.9 L5539.1 -2797.75 L5539.39 -2797.75 L5539.82 -2797.9 L5540.1 -2798.33 L5540.25 -2799.04 L5540.25 -2799.47 L5540.1 -2800.19 L5539.82 -2800.62 L5539.39 -2800.76 L5539.1 -2800.76 M 5541.19 -2799.76L5541.19 -2796.75 M 5541.19 -2799.33L5541.48 -2799.62 L5541.76 -2799.76 L5542.19 -2799.76 L5542.48 -2799.62 L5542.77 -2799.33 L5542.91 -2798.9 L5542.91 -2798.61 L5542.77 -2798.18 L5542.48 -2797.9 L5542.19 -2797.75 L5541.76 -2797.75 L5541.48 -2797.9 L5541.19 -2798.18 M 5543.85 -2800.76L5543.85 -2797.75 M 5543.85 -2800.76L5545.72 -2800.76 M 5543.85 -2799.33L5545 -2799.33 ~none~rep4348~~0~#@$TRACK~0.7874~3~~5531.5444 -2786.7976 5527.4444 -2786.7976 5527.4444 -2779.3476 5531.5444 -2779.3476 5531.5444 -2786.7976~rep4351~0#@$PAD~RECT~5529.594~-2784.748~1.9685~2.3622~1~LHPOUT~1~0~5528.4129 -2783.7637 5528.4129 -2785.7323 5530.7751 -2785.7323 5530.7751 -2783.7637~90~rep4349~0~~Y~0~0~0.2~5529.594,-2784.748#@$PAD~RECT~5529.594~-2781.148~1.9685~2.3622~1~GND~2~0~5528.4129 -2780.1637 5528.4129 -2782.1323 5530.7751 -2782.1323 5530.7751 -2780.1637~90~rep4350~0~~Y~0~0~0.2~5529.594,-2781.148","LIB~5529.6337~-2774.2862~package`A0402`value`100pF~270~~gge48d2dd422533522c~1~~~0~~yes~~#@$TEXT~P~5527.232~-2768.263~0.433~0~0~3~~2.7559~C7~M 5529.11 -2770.42L5528.99 -2770.67 L5528.74 -2770.92 L5528.48 -2771.04 L5527.98 -2771.04 L5527.73 -2770.92 L5527.48 -2770.67 L5527.36 -2770.42 L5527.23 -2770.04 L5527.23 -2769.42 L5527.36 -2769.04 L5527.48 -2768.79 L5527.73 -2768.54 L5527.98 -2768.41 L5528.48 -2768.41 L5528.74 -2768.54 L5528.99 -2768.79 L5529.11 -2769.04 M 5531.69 -2771.04L5530.44 -2768.41 M 5529.94 -2771.04L5531.69 -2771.04 ~none~rep4356~~0~#@$TEXT~N~5532.873~-2782.001~0.4724~0~0~3~~3.1496~100pF~M 5532.87 -2784.61L5533.16 -2784.75 L5533.59 -2785.18 L5533.59 -2782.17 M 5535.39 -2785.18L5534.96 -2785.04 L5534.68 -2784.61 L5534.53 -2783.89 L5534.53 -2783.46 L5534.68 -2782.75 L5534.96 -2782.32 L5535.39 -2782.17 L5535.68 -2782.17 L5536.11 -2782.32 L5536.39 -2782.75 L5536.54 -2783.46 L5536.54 -2783.89 L5536.39 -2784.61 L5536.11 -2785.04 L5535.68 -2785.18 L5535.39 -2785.18 M 5538.34 -2785.18L5537.91 -2785.04 L5537.63 -2784.61 L5537.48 -2783.89 L5537.48 -2783.46 L5537.63 -2782.75 L5537.91 -2782.32 L5538.34 -2782.17 L5538.63 -2782.17 L5539.06 -2782.32 L5539.34 -2782.75 L5539.49 -2783.46 L5539.49 -2783.89 L5539.34 -2784.61 L5539.06 -2785.04 L5538.63 -2785.18 L5538.34 -2785.18 M 5540.43 -2784.18L5540.43 -2781.17 M 5540.43 -2783.75L5540.72 -2784.03 L5541 -2784.18 L5541.43 -2784.18 L5541.72 -2784.03 L5542.01 -2783.75 L5542.15 -2783.32 L5542.15 -2783.03 L5542.01 -2782.6 L5541.72 -2782.32 L5541.43 -2782.17 L5541 -2782.17 L5540.72 -2782.32 L5540.43 -2782.6 M 5543.09 -2785.18L5543.09 -2782.17 M 5543.09 -2785.18L5544.96 -2785.18 M 5543.09 -2783.75L5544.24 -2783.75 ~none~rep4357~~0~#@$TRACK~0.7874~3~~5527.6838 -2777.8862 5531.7838 -2777.8862 5531.7838 -2770.4362 5527.6838 -2770.4362 5527.6838 -2777.8862~rep4360~0#@$PAD~RECT~5529.634~-2772.486~1.9685~2.3622~1~RHPOUT~1~0~5530.8151 -2773.4703 5530.8151 -2771.5017 5528.4529 -2771.5017 5528.4529 -2773.4703~270~rep4358~0~~Y~0~0~0.2~5529.634,-2772.486#@$PAD~RECT~5529.634~-2776.086~1.9685~2.3622~1~GND~2~0~5530.8151 -2777.0703 5530.8151 -2775.1017 5528.4529 -2775.1017 5528.4529 -2777.0703~270~rep4359~0~~Y~0~0~0.2~5529.634,-2776.086","LIB~5581.7889~-2818.7369~package`A0402`value`1uF~90~~ggeab4a8fe24fad9fe4~1~~~0~~yes~~#@$TEXT~P~5579.82~-2815.469~0.433~0~0~3~~2.7559~C6~M 5581.7 -2817.62L5581.57 -2817.87 L5581.32 -2818.12 L5581.07 -2818.25 L5580.57 -2818.25 L5580.32 -2818.12 L5580.07 -2817.87 L5579.95 -2817.62 L5579.82 -2817.25 L5579.82 -2816.62 L5579.95 -2816.25 L5580.07 -2816 L5580.32 -2815.74 L5580.57 -2815.62 L5581.07 -2815.62 L5581.32 -2815.74 L5581.57 -2816 L5581.7 -2816.25 M 5584.03 -2817.87L5583.9 -2818.12 L5583.53 -2818.25 L5583.28 -2818.25 L5582.9 -2818.12 L5582.65 -2817.75 L5582.53 -2817.12 L5582.53 -2816.5 L5582.65 -2816 L5582.9 -2815.74 L5583.28 -2815.62 L5583.4 -2815.62 L5583.78 -2815.74 L5584.03 -2816 L5584.15 -2816.37 L5584.15 -2816.5 L5584.03 -2816.87 L5583.78 -2817.12 L5583.4 -2817.25 L5583.28 -2817.25 L5582.9 -2817.12 L5582.65 -2816.87 L5582.53 -2816.5 ~none~rep4365~~0~#@$TEXT~N~5582.771~-2817.398~0.3937~0~0~3~~2.3622~1uF~M 5582.77 -2819.35L5582.99 -2819.46 L5583.31 -2819.78 L5583.31 -2817.53 M 5584.02 -2819.03L5584.02 -2817.96 L5584.12 -2817.63 L5584.34 -2817.53 L5584.66 -2817.53 L5584.88 -2817.63 L5585.2 -2817.96 M 5585.2 -2819.03L5585.2 -2817.53 M 5585.91 -2819.78L5585.91 -2817.53 M 5585.91 -2819.78L5587.3 -2819.78 M 5585.91 -2818.71L5586.77 -2818.71 ~none~rep4366~~0~#@$TRACK~0.7874~3~~5583.7389 -2815.1369 5583.7389 -2822.5869 5579.6389 -2822.5869 5579.6389 -2815.1369 5583.7389 -2815.1369~rep4369~0#@$PAD~RECT~5581.789~-2816.937~1.9685~2.3622~1~MICIN~2~0~5580.6079 -2815.9527 5580.6079 -2817.9213 5582.9701 -2817.9213 5582.9701 -2815.9527~90~rep4367~0~~Y~0~0~0.2~5581.789,-2816.937#@$PAD~RECT~5581.789~-2820.537~1.9685~2.3622~1~NETK2_1~1~0~5580.6079 -2819.5527 5580.6079 -2821.5213 5582.9701 -2821.5213 5582.9701 -2819.5527~90~rep4368~0~~Y~0~0~0.2~5581.789,-2820.537","LIB~5580.844~-2799.7605~package`A0402`value`47nF~90~~ggeddba3c46cf8b8e66~1~~~0~~yes~~#@$TEXT~P~5574.781~-2804.209~0.433~0~0~3~~2.7559~C5~M 5576.66 -2806.36L5576.53 -2806.61 L5576.28 -2806.87 L5576.03 -2806.99 L5575.53 -2806.99 L5575.28 -2806.87 L5575.03 -2806.61 L5574.91 -2806.36 L5574.78 -2805.99 L5574.78 -2805.36 L5574.91 -2804.99 L5575.03 -2804.74 L5575.28 -2804.48 L5575.53 -2804.36 L5576.03 -2804.36 L5576.28 -2804.48 L5576.53 -2804.74 L5576.66 -2804.99 M 5578.99 -2806.99L5577.74 -2806.99 L5577.61 -2805.86 L5577.74 -2805.99 L5578.11 -2806.11 L5578.49 -2806.11 L5578.86 -2805.99 L5579.12 -2805.74 L5579.24 -2805.36 L5579.24 -2805.11 L5579.12 -2804.74 L5578.86 -2804.48 L5578.49 -2804.36 L5578.11 -2804.36 L5577.74 -2804.48 L5577.61 -2804.61 L5577.49 -2804.86 ~none~rep4374~~0~#@$TEXT~N~5559.752~-2799.365~0.4724~0~0~3~~3.1496~47nF~M 5561.18 -2802.54L5559.75 -2800.54 L5561.9 -2800.54 M 5561.18 -2802.54L5561.18 -2799.54 M 5564.85 -2802.54L5563.42 -2799.54 M 5562.84 -2802.54L5564.85 -2802.54 M 5565.79 -2801.54L5565.79 -2799.54 M 5565.79 -2800.97L5566.22 -2801.4 L5566.51 -2801.54 L5566.94 -2801.54 L5567.23 -2801.4 L5567.37 -2800.97 L5567.37 -2799.54 M 5568.31 -2802.54L5568.31 -2799.54 M 5568.31 -2802.54L5570.17 -2802.54 M 5568.31 -2801.11L5569.46 -2801.11 ~none~rep4375~~0~#@$TRACK~0.7874~3~~5582.794 -2796.1605 5582.794 -2803.6105 5578.694 -2803.6105 5578.694 -2796.1605 5582.794 -2796.1605~rep4378~0#@$PAD~RECT~5580.844~-2797.96~1.9685~2.3622~1~NETR13_2~2~0~5579.6629 -2796.9757 5579.6629 -2798.9443 5582.0251 -2798.9443 5582.0251 -2796.9757~90~rep4376~0~~Y~0~0~0.2~5580.844,-2797.96#@$PAD~RECT~5580.844~-2801.56~1.9685~2.3622~1~RHPOUT_SPK~1~0~5579.6629 -2800.5757 5579.6629 -2802.5443 5582.0251 -2802.5443 5582.0251 -2800.5757~90~rep4377~0~~Y~0~0~0.2~5580.844,-2801.56","LIB~5560.6472~-2781.414~package`A0402`value`1uF~180~~gge3a68d3ddabf48558~1~~~0~~yes~~#@$TEXT~P~5557.694~-2776.729~0.433~0~0~3~~2.7559~C4~M 5559.57 -2778.88L5559.45 -2779.13 L5559.2 -2779.38 L5558.95 -2779.51 L5558.45 -2779.51 L5558.2 -2779.38 L5557.94 -2779.13 L5557.82 -2778.88 L5557.69 -2778.51 L5557.69 -2777.88 L5557.82 -2777.51 L5557.94 -2777.26 L5558.2 -2777 L5558.45 -2776.88 L5558.95 -2776.88 L5559.2 -2777 L5559.45 -2777.26 L5559.57 -2777.51 M 5561.65 -2779.51L5560.4 -2777.76 L5562.28 -2777.76 M 5561.65 -2779.51L5561.65 -2776.88 ~none~rep4383~~0~#@$TEXT~N~5556.405~-2773.144~0.4724~0~0~3~~3.1496~1uF~M 5556.41 -2775.75L5556.69 -2775.89 L5557.12 -2776.32 L5557.12 -2773.32 M 5558.07 -2775.32L5558.07 -2773.89 L5558.21 -2773.46 L5558.5 -2773.32 L5558.93 -2773.32 L5559.21 -2773.46 L5559.64 -2773.89 M 5559.64 -2775.32L5559.64 -2773.32 M 5560.59 -2776.32L5560.59 -2773.32 M 5560.59 -2776.32L5562.45 -2776.32 M 5560.59 -2774.89L5561.73 -2774.89 ~none~rep4384~~0~#@$TRACK~0.7874~3~~5564.2472 -2783.364 5564.2472 -2779.264 5556.7972 -2779.264 5556.7972 -2783.364 5564.2472 -2783.364~rep4387~0#@$PAD~RECT~5562.447~-2781.414~1.9685~2.3622~1~GND~2~0~5563.4313 -2780.2329 5561.4628 -2780.2329 5561.4628 -2782.5951 5563.4313 -2782.5951~180~rep4385~0~~Y~0~0~0.2~5562.447,-2781.414#@$PAD~RECT~5558.847~-2781.414~1.9685~2.3622~1~NETU5_2~1~0~5559.8313 -2780.2329 5557.8627 -2780.2329 5557.8627 -2782.5951 5559.8313 -2782.5951~180~rep4386~0~~Y~0~0~0.2~5558.847,-2781.414","LIB~5562.0251~-2818.7762~package`A0402`value`1uF~180~~ggecc82bf2c2e22e605~1~~~0~~yes~~#@$TEXT~P~5559.427~-2823.146~0.433~0~0~3~~2.7559~C3~M 5561.31 -2825.3L5561.18 -2825.55 L5560.93 -2825.8 L5560.68 -2825.93 L5560.18 -2825.93 L5559.93 -2825.8 L5559.68 -2825.55 L5559.55 -2825.3 L5559.43 -2824.93 L5559.43 -2824.3 L5559.55 -2823.92 L5559.68 -2823.67 L5559.93 -2823.42 L5560.18 -2823.3 L5560.68 -2823.3 L5560.93 -2823.42 L5561.18 -2823.67 L5561.31 -2823.92 M 5562.38 -2825.93L5563.76 -2825.93 L5563.01 -2824.93 L5563.39 -2824.93 L5563.64 -2824.8 L5563.76 -2824.67 L5563.89 -2824.3 L5563.89 -2824.05 L5563.76 -2823.67 L5563.51 -2823.42 L5563.13 -2823.3 L5562.76 -2823.3 L5562.38 -2823.42 L5562.26 -2823.55 L5562.13 -2823.8 ~none~rep4392~~0~#@$TEXT~N~5558.633~-2813.961~0.4724~0~0~3~~3.1496~1uF~M 5558.63 -2816.57L5558.92 -2816.71 L5559.35 -2817.14 L5559.35 -2814.13 M 5560.29 -2816.14L5560.29 -2814.71 L5560.44 -2814.28 L5560.72 -2814.13 L5561.15 -2814.13 L5561.44 -2814.28 L5561.87 -2814.71 M 5561.87 -2816.14L5561.87 -2814.13 M 5562.81 -2817.14L5562.81 -2814.13 M 5562.81 -2817.14L5564.67 -2817.14 M 5562.81 -2815.71L5563.96 -2815.71 ~none~rep4393~~0~#@$TRACK~0.7874~3~~5565.6251 -2820.7262 5558.1751 -2820.7262 5558.1751 -2816.6262 5565.6251 -2816.6262 5565.6251 -2820.7262~rep4396~0#@$PAD~RECT~5563.825~-2818.776~1.9685~2.3622~1~VIN~2~0~5564.8093 -2817.5949 5562.8407 -2817.5949 5562.8407 -2819.9571 5564.8093 -2819.9571~180~rep4394~0~~Y~0~0~0.2~5563.825,-2818.776#@$PAD~RECT~5560.225~-2818.776~1.9685~2.3622~1~GND~1~0~5561.2093 -2817.5949 5559.2408 -2817.5949 5559.2408 -2819.9571 5561.2093 -2819.9571~180~rep4395~0~~Y~0~0~0.2~5560.225,-2818.776","LIB~5522.7326~-2597.431~package`A0402`value`1uF~180~~ggea2c5d49bc5dde298~1~~~0~~yes~~#@$TEXT~P~5527.498~-2599.524~0.433~0~0~3~~2.7559~C2~M 5529.38 -2601.68L5529.25 -2601.93 L5529 -2602.18 L5528.75 -2602.31 L5528.25 -2602.31 L5528 -2602.18 L5527.75 -2601.93 L5527.62 -2601.68 L5527.5 -2601.3 L5527.5 -2600.68 L5527.62 -2600.3 L5527.75 -2600.05 L5528 -2599.8 L5528.25 -2599.67 L5528.75 -2599.67 L5529 -2599.8 L5529.25 -2600.05 L5529.38 -2600.3 M 5530.33 -2601.68L5530.33 -2601.8 L5530.45 -2602.05 L5530.58 -2602.18 L5530.83 -2602.31 L5531.33 -2602.31 L5531.58 -2602.18 L5531.71 -2602.05 L5531.83 -2601.8 L5531.83 -2601.55 L5531.71 -2601.3 L5531.46 -2600.93 L5530.2 -2599.67 L5531.96 -2599.67 ~none~rep4401~~0~#@$TEXT~N~5519.546~-2592.825~0.4724~0~0~3~~3.1496~1uF~M 5519.55 -2595.43L5519.83 -2595.57 L5520.26 -2596 L5520.26 -2593 M 5521.21 -2595L5521.21 -2593.57 L5521.35 -2593.14 L5521.64 -2593 L5522.07 -2593 L5522.35 -2593.14 L5522.78 -2593.57 M 5522.78 -2595L5522.78 -2593 M 5523.73 -2596L5523.73 -2593 M 5523.73 -2596L5525.59 -2596 M 5523.73 -2594.57L5524.87 -2594.57 ~none~rep4402~~0~#@$TRACK~0.7874~3~~5526.3326 -2599.381 5518.8826 -2599.381 5518.8826 -2595.281 5526.3326 -2595.281 5526.3326 -2599.381~rep4405~0#@$PAD~RECT~5520.933~-2597.431~1.9685~2.3622~1~NETC1_1~1~0~5521.9173 -2596.2499 5519.9487 -2596.2499 5519.9487 -2598.6121 5521.9173 -2598.6121~180~rep4403~0~~Y~0~0~0.2~5520.933,-2597.431#@$PAD~RECT~5524.533~-2597.431~1.9685~2.3622~1~GND~2~0~5525.5173 -2596.2499 5523.5488 -2596.2499 5523.5488 -2598.6121 5525.5173 -2598.6121~180~rep4404~0~~Y~0~0~0.2~5524.533,-2597.431","LIB~5510.3311~-2597.3129~package`A0603`value`4.7uF~180~~ggeb4693cfd16d534cd~1~~~0~~yes~~#@$TEXT~P~5513.601~-2603.612~0.433~0~0~3~~2.7559~C1~M 5515.48 -2605.77L5515.35 -2606.02 L5515.1 -2606.27 L5514.85 -2606.39 L5514.35 -2606.39 L5514.1 -2606.27 L5513.85 -2606.02 L5513.73 -2605.77 L5513.6 -2605.39 L5513.6 -2604.76 L5513.73 -2604.39 L5513.85 -2604.14 L5514.1 -2603.89 L5514.35 -2603.76 L5514.85 -2603.76 L5515.1 -2603.89 L5515.35 -2604.14 L5515.48 -2604.39 M 5516.31 -2605.89L5516.56 -2606.02 L5516.93 -2606.39 L5516.93 -2603.76 ~none~rep4410~~0~#@$TEXT~N~5506.711~-2591.132~0.4724~0~0~3~~3.1496~4.7uF~M 5508.14 -2594.31L5506.71 -2592.31 L5508.86 -2592.31 M 5508.14 -2594.31L5508.14 -2591.3 M 5509.95 -2592.02L5509.8 -2591.88 L5509.95 -2591.73 L5510.09 -2591.88 L5509.95 -2592.02 M 5513.04 -2594.31L5511.61 -2591.3 M 5511.03 -2594.31L5513.04 -2594.31 M 5513.98 -2593.31L5513.98 -2591.88 L5514.13 -2591.45 L5514.41 -2591.3 L5514.84 -2591.3 L5515.13 -2591.45 L5515.56 -2591.88 M 5515.56 -2593.31L5515.56 -2591.3 M 5516.5 -2594.31L5516.5 -2591.3 M 5516.5 -2594.31L5518.36 -2594.31 M 5516.5 -2592.88L5517.65 -2592.88 ~none~rep4411~~0~#@$TRACK~1.2~3~~5512.087 -2593.8129 5516.587 -2593.8129 5516.587 -2600.8129 5512.087 -2600.8129~rep4414~0#@$TRACK~1.2~3~~5509.087 -2593.8129 5504.087 -2593.8129 5504.087 -2600.8129 5509.087 -2600.8129~rep4416~0#@$PAD~RECT~5513.796~-2597.313~4.3307~3.5433~1~NETC1_1~1~0~5515.9614 -2595.5413 5511.6307 -2595.5413 5511.6307 -2599.0847 5515.9614 -2599.0847~180~rep4412~0~~Y~0~0~0.2~5513.796,-2597.313#@$PAD~RECT~5506.867~-2597.313~4.3307~3.5433~1~GND~2~0~5509.0324 -2595.5413 5504.7017 -2595.5413 5504.7017 -2599.0847 5509.0324 -2599.0847~180~rep4413~0~~Y~0~0~0.2~5506.867,-2597.313","LIB~5476.3023~-2754.7758~package`PJ342A`value`PJ342A~~~gge7aadee231938cadd~1~~~0~~yes~~#@$TEXT~P~5482.852~-2787.871~0.433~0~0~3~~2.7559~J4~M 5484.1 -2790.65L5484.1 -2788.65 L5483.98 -2788.27 L5483.85 -2788.15 L5483.6 -2788.02 L5483.35 -2788.02 L5483.1 -2788.15 L5482.98 -2788.27 L5482.85 -2788.65 L5482.85 -2788.9 M 5486.18 -2790.65L5484.93 -2788.9 L5486.81 -2788.9 M 5486.18 -2790.65L5486.18 -2788.02 ~none~rep4421~~0~#@$TEXT~N~5472.932~-2790.462~0.4724~0~0~3~~3.1496~PJ342A~M 5472.93 -2793.64L5472.93 -2790.63 M 5472.93 -2793.64L5474.22 -2793.64 L5474.65 -2793.5 L5474.79 -2793.35 L5474.94 -2793.07 L5474.94 -2792.64 L5474.79 -2792.35 L5474.65 -2792.21 L5474.22 -2792.07 L5472.93 -2792.07 M 5477.31 -2793.64L5477.31 -2791.35 L5477.17 -2790.92 L5477.03 -2790.78 L5476.74 -2790.63 L5476.45 -2790.63 L5476.17 -2790.78 L5476.02 -2790.92 L5475.88 -2791.35 L5475.88 -2791.64 M 5478.54 -2793.64L5480.12 -2793.64 L5479.26 -2792.5 L5479.69 -2792.5 L5479.98 -2792.35 L5480.12 -2792.21 L5480.26 -2791.78 L5480.26 -2791.49 L5480.12 -2791.06 L5479.83 -2790.78 L5479.4 -2790.63 L5478.97 -2790.63 L5478.54 -2790.78 L5478.4 -2790.92 L5478.26 -2791.21 M 5482.64 -2793.64L5481.21 -2791.64 L5483.35 -2791.64 M 5482.64 -2793.64L5482.64 -2790.63 M 5484.44 -2792.92L5484.44 -2793.07 L5484.59 -2793.35 L5484.73 -2793.5 L5485.01 -2793.64 L5485.59 -2793.64 L5485.87 -2793.5 L5486.02 -2793.35 L5486.16 -2793.07 L5486.16 -2792.78 L5486.02 -2792.5 L5485.73 -2792.07 L5484.3 -2790.63 L5486.3 -2790.63 M 5488.39 -2793.64L5487.25 -2790.63 M 5488.39 -2793.64L5489.54 -2790.63 M 5487.68 -2791.64L5489.11 -2791.64 ~none~rep4422~~0~#@$PAD~RECT~5476.302~-2754.776~9.8425~8.6614~1~NETK2_3~1~0~5471.9713 -2749.8547 5471.9713 -2759.6972 5480.6327 -2759.6972 5480.6327 -2749.8547~90~rep4423~0~~Y~0~0~0.2~5476.302,-2754.776#@$PAD~RECT~5476.652~-2781.126~9.8425~8.6614~1~GND~4~0~5472.3213 -2776.2047 5472.3213 -2786.0473 5480.9827 -2786.0473 5480.9827 -2776.2047~90~rep4424~0~~Y~0~0~0.2~5476.652,-2781.126#@$PAD~RECT~5489.702~-2755.076~9.8425~6.2992~1~RHPOUT~3~0~5486.5524 -2750.1547 5486.5524 -2759.9973 5492.8516 -2759.9973 5492.8516 -2750.1547~90~rep4425~0~~Y~0~0~0.2~5489.702,-2755.076#@$PAD~RECT~5505.102~-2781.776~9.8425~6.2992~1~LHPOUT~2~0~5501.9524 -2776.8547 5501.9524 -2786.6972 5508.2516 -2786.6972 5508.2516 -2776.8547~90~rep4426~0~~Y~0~0~0.2~5505.102,-2781.776#@$PAD~RECT~5512.052~-2755.076~9.8424~6.2992~1~RHPOUT_SPK~6~0~5508.9024 -2750.1548 5508.9024 -2759.9972 5515.2016 -2759.9972 5515.2016 -2750.1548~90~rep4427~0~~Y~0~0~0.2~5512.052,-2755.076#@$PAD~RECT~5514.152~-2781.776~9.8425~6.2992~1~LHPOUT~5~0~5511.0024 -2776.8547 5511.0024 -2786.6972 5517.3016 -2786.6972 5517.3016 -2776.8547~90~rep4428~0~~Y~0~0~0.2~5514.152,-2781.776#@$PAD~ELLIPSE~5478.252~-2768.076~5.9055~5.9055~11~~0~2.9528~~0~rep4429~5.9255~5478.242 -2768.076 5478.262 -2768.076~Y~0~0~0.2~5478.252,-2768.076#@$PAD~ELLIPSE~5506.252~-2768.076~5.9055~5.9055~11~~0~2.9528~~0~rep4430~5.9255~5506.242 -2768.076 5506.262 -2768.076~Y~0~0~0.2~5506.252,-2768.076#@$TRACK~1~3~~5470.0023 -2780.2258 5471.6523 -2780.2258~rep4431~0#@$TRACK~1~3~~5481.9523 -2780.5758 5500.8023 -2780.5758~rep4432~0#@$TRACK~1~3~~5508.9023 -2780.5758 5510.3523 -2780.5758~rep4433~0#@$TRACK~1~3~~5515.8023 -2755.9758 5515.8023 -2775.9758~rep4434~0#@$TRACK~1~3~~5494.1523 -2756.2258 5508.0523 -2756.2258~rep4435~0#@$TRACK~1~3~~5481.5023 -2756.1758 5485.8023 -2756.1758~rep4436~0#@$TRACK~1~3~~5469.6523 -2756.1758 5471.3523 -2756.1758~rep4437~0#@$TRACK~1~3~~5478.1523 -2760.5258 5478.1523 -2763.1758~rep4438~0#@$TRACK~1~3~~5478.1523 -2771.9258 5478.1523 -2774.4758~rep4439~0","LIB~5490.7523~-2607.8258~package`HDR2.54-M-LS-2X11P`value`HackRF_ONE_P20~~~gge8a5f5ee1e90f0523~1~~~0~~yes~~#@$TEXT~P~5499.702~-2657.754~0.433~0~0~3~~2.7559~P20~M 5499.7 -2660.53L5499.7 -2657.9 M 5499.7 -2660.53L5500.83 -2660.53 L5501.21 -2660.41 L5501.33 -2660.28 L5501.46 -2660.03 L5501.46 -2659.66 L5501.33 -2659.41 L5501.21 -2659.28 L5500.83 -2659.16 L5499.7 -2659.16 M 5502.41 -2659.91L5502.41 -2660.03 L5502.53 -2660.28 L5502.66 -2660.41 L5502.91 -2660.53 L5503.41 -2660.53 L5503.66 -2660.41 L5503.79 -2660.28 L5503.91 -2660.03 L5503.91 -2659.78 L5503.79 -2659.53 L5503.54 -2659.16 L5502.28 -2657.9 L5504.04 -2657.9 M 5505.61 -2660.53L5505.24 -2660.41 L5504.99 -2660.03 L5504.86 -2659.41 L5504.86 -2659.03 L5504.99 -2658.41 L5505.24 -2658.03 L5505.61 -2657.9 L5505.87 -2657.9 L5506.24 -2658.03 L5506.49 -2658.41 L5506.62 -2659.03 L5506.62 -2659.41 L5506.49 -2660.03 L5506.24 -2660.41 L5505.87 -2660.53 L5505.61 -2660.53 ~none~rep4441~~0~#@$TEXT~N~5521.878~-2692.121~0.4724~0~0~3~~3.1496~HackRF_ONE_P20~M 5521.88 -2695.3L5521.88 -2692.29 M 5523.88 -2695.3L5523.88 -2692.29 M 5521.88 -2693.87L5523.88 -2693.87 M 5526.55 -2694.3L5526.55 -2692.29 M 5526.55 -2693.87L5526.26 -2694.15 L5525.97 -2694.3 L5525.54 -2694.3 L5525.26 -2694.15 L5524.97 -2693.87 L5524.83 -2693.44 L5524.83 -2693.15 L5524.97 -2692.72 L5525.26 -2692.44 L5525.54 -2692.29 L5525.97 -2692.29 L5526.26 -2692.44 L5526.55 -2692.72 M 5529.21 -2693.87L5528.92 -2694.15 L5528.64 -2694.3 L5528.21 -2694.3 L5527.92 -2694.15 L5527.63 -2693.87 L5527.49 -2693.44 L5527.49 -2693.15 L5527.63 -2692.72 L5527.92 -2692.44 L5528.21 -2692.29 L5528.64 -2692.29 L5528.92 -2692.44 L5529.21 -2692.72 M 5530.15 -2695.3L5530.15 -2692.29 M 5531.58 -2694.3L5530.15 -2692.87 M 5530.73 -2693.44L5531.73 -2692.29 M 5532.67 -2695.3L5532.67 -2692.29 M 5532.67 -2695.3L5533.96 -2695.3 L5534.39 -2695.16 L5534.53 -2695.01 L5534.68 -2694.73 L5534.68 -2694.44 L5534.53 -2694.15 L5534.39 -2694.01 L5533.96 -2693.87 L5532.67 -2693.87 M 5533.67 -2693.87L5534.68 -2692.29 M 5535.62 -2695.3L5535.62 -2692.29 M 5535.62 -2695.3L5537.48 -2695.3 M 5535.62 -2693.87L5536.77 -2693.87 M 5538.43 -2691.29L5541 -2691.29 M 5542.81 -2695.3L5542.52 -2695.16 L5542.24 -2694.87 L5542.09 -2694.58 L5541.95 -2694.15 L5541.95 -2693.44 L5542.09 -2693.01 L5542.24 -2692.72 L5542.52 -2692.44 L5542.81 -2692.29 L5543.38 -2692.29 L5543.67 -2692.44 L5543.95 -2692.72 L5544.1 -2693.01 L5544.24 -2693.44 L5544.24 -2694.15 L5544.1 -2694.58 L5543.95 -2694.87 L5543.67 -2695.16 L5543.38 -2695.3 L5542.81 -2695.3 M 5545.19 -2695.3L5545.19 -2692.29 M 5545.19 -2695.3L5547.19 -2692.29 M 5547.19 -2695.3L5547.19 -2692.29 M 5548.13 -2695.3L5548.13 -2692.29 M 5548.13 -2695.3L5550 -2695.3 M 5548.13 -2693.87L5549.28 -2693.87 M 5548.13 -2692.29L5550 -2692.29 M 5550.94 -2691.29L5553.52 -2691.29 M 5554.46 -2695.3L5554.46 -2692.29 M 5554.46 -2695.3L5555.75 -2695.3 L5556.18 -2695.16 L5556.32 -2695.01 L5556.47 -2694.73 L5556.47 -2694.3 L5556.32 -2694.01 L5556.18 -2693.87 L5555.75 -2693.72 L5554.46 -2693.72 M 5557.55 -2694.58L5557.55 -2694.73 L5557.7 -2695.01 L5557.84 -2695.16 L5558.13 -2695.3 L5558.7 -2695.3 L5558.99 -2695.16 L5559.13 -2695.01 L5559.27 -2694.73 L5559.27 -2694.44 L5559.13 -2694.15 L5558.84 -2693.72 L5557.41 -2692.29 L5559.42 -2692.29 M 5561.22 -2695.3L5560.79 -2695.16 L5560.5 -2694.73 L5560.36 -2694.01 L5560.36 -2693.58 L5560.5 -2692.87 L5560.79 -2692.44 L5561.22 -2692.29 L5561.51 -2692.29 L5561.94 -2692.44 L5562.22 -2692.87 L5562.36 -2693.58 L5562.36 -2694.01 L5562.22 -2694.73 L5561.94 -2695.16 L5561.51 -2695.3 L5561.22 -2695.3 ~none~rep4442~~0~#@$ARC~0.7874~3~~M 5489.7803 -2603.1258 A 0.728 0.728 0 1 0 5489.78012 -2603.10979~~rep4443~0#@$TRACK~0.7874~3~~5491.8023 -2712.6258 5511.3523 -2712.6258 5511.3523 -2602.6758 5491.8023 -2602.6758 5491.8023 -2712.6258~rep4466~0#@$PAD~RECT~5490.752~-2607.826~3.937~12.5984~1~VBAT~1~0~5497.0512 -2609.7945 5497.0512 -2605.8575 5484.4528 -2605.8575 5484.4528 -2609.7945~270~rep4444~0~~Y~0~0~0.2~5490.752,-2607.826#@$PAD~RECT~5512.502~-2607.826~3.937~12.5984~1~~2~0~5518.8012 -2609.7945 5518.8012 -2605.8575 5506.2028 -2605.8575 5506.2028 -2609.7945~270~rep4445~0~~Y~0~0~0.2~5512.502,-2607.826#@$PAD~RECT~5490.752~-2617.821~3.937~12.5984~1~+3V3~3~0~5497.0512 -2619.7895 5497.0512 -2615.8525 5484.4528 -2615.8525 5484.4528 -2619.7895~270~rep4446~0~~Y~0~0~0.2~5490.752,-2617.821#@$PAD~RECT~5512.502~-2617.821~3.937~12.5984~1~~4~0~5518.8012 -2619.7895 5518.8012 -2615.8525 5506.2028 -2615.8525 5506.2028 -2619.7895~270~rep4447~0~~Y~0~0~0.2~5512.502,-2617.821#@$PAD~RECT~5490.752~-2627.816~3.937~12.5984~1~MCU_D0~5~0~5497.0512 -2629.7845 5497.0512 -2625.8475 5484.4528 -2625.8475 5484.4528 -2629.7845~270~rep4448~0~~Y~0~0~0.2~5490.752,-2627.816#@$PAD~RECT~5512.502~-2627.816~3.937~12.5984~1~MCU_D1~6~0~5518.8012 -2629.7845 5518.8012 -2625.8475 5506.2028 -2625.8475 5506.2028 -2629.7845~270~rep4449~0~~Y~0~0~0.2~5512.502,-2627.816#@$PAD~RECT~5490.752~-2637.811~3.937~12.5984~1~MCU_D2~7~0~5497.0512 -2639.7795 5497.0512 -2635.8425 5484.4528 -2635.8425 5484.4528 -2639.7795~270~rep4450~0~~Y~0~0~0.2~5490.752,-2637.811#@$PAD~RECT~5512.502~-2637.811~3.937~12.5984~1~MCU_D3~8~0~5518.8012 -2639.7795 5518.8012 -2635.8425 5506.2028 -2635.8425 5506.2028 -2639.7795~270~rep4451~0~~Y~0~0~0.2~5512.502,-2637.811#@$PAD~RECT~5490.752~-2647.806~3.937~12.5984~1~MCU_D4~9~0~5497.0512 -2649.7745 5497.0512 -2645.8375 5484.4528 -2645.8375 5484.4528 -2649.7745~270~rep4452~0~~Y~0~0~0.2~5490.752,-2647.806#@$PAD~RECT~5512.502~-2647.806~3.937~12.5984~1~MCU_D5~10~0~5518.8012 -2649.7745 5518.8012 -2645.8375 5506.2028 -2645.8375 5506.2028 -2649.7745~270~rep4453~0~~Y~0~0~0.2~5512.502,-2647.806#@$PAD~RECT~5490.752~-2657.801~3.937~12.5984~1~MCU_D6~11~0~5497.0512 -2659.7695 5497.0512 -2655.8325 5484.4528 -2655.8325 5484.4528 -2659.7695~270~rep4454~0~~Y~0~0~0.2~5490.752,-2657.801#@$PAD~RECT~5490.752~-2667.796~3.937~12.5984~1~GND~13~0~5497.0512 -2669.7645 5497.0512 -2665.8275 5484.4528 -2665.8275 5484.4528 -2669.7645~270~rep4455~0~~Y~0~0~0.2~5490.752,-2667.796#@$PAD~RECT~5490.752~-2687.786~3.937~12.5984~1~VBUSCTRL~17~0~5497.0512 -2689.7545 5497.0512 -2685.8175 5484.4528 -2685.8175 5484.4528 -2689.7545~270~rep4456~0~~Y~0~0~0.2~5490.752,-2687.786#@$PAD~RECT~5490.752~-2677.791~3.937~12.5984~1~GND~15~0~5497.0512 -2679.7595 5497.0512 -2675.8225 5484.4528 -2675.8225 5484.4528 -2679.7595~270~rep4457~0~~Y~0~0~0.2~5490.752,-2677.791#@$PAD~RECT~5490.752~-2697.781~3.937~12.5984~1~GND~19~0~5497.0512 -2699.7495 5497.0512 -2695.8125 5484.4528 -2695.8125 5484.4528 -2699.7495~270~rep4458~0~~Y~0~0~0.2~5490.752,-2697.781#@$PAD~RECT~5490.752~-2707.776~3.937~12.5984~1~VBUS~21~0~5497.0512 -2709.7445 5497.0512 -2705.8075 5484.4528 -2705.8075 5484.4528 -2709.7445~270~rep4459~0~~Y~0~0~0.2~5490.752,-2707.776#@$PAD~RECT~5512.502~-2657.801~3.937~12.5984~1~MCU_D7~12~0~5518.8012 -2659.7695 5518.8012 -2655.8325 5506.2028 -2655.8325 5506.2028 -2659.7695~270~rep4460~0~~Y~0~0~0.2~5512.502,-2657.801#@$PAD~RECT~5512.502~-2667.796~3.937~12.5984~1~TP_R~14~0~5518.8012 -2669.7645 5518.8012 -2665.8275 5506.2028 -2665.8275 5506.2028 -2669.7645~270~rep4461~0~~Y~0~0~0.2~5512.502,-2667.796#@$PAD~RECT~5512.502~-2677.791~3.937~12.5984~1~TP_D~16~0~5518.8012 -2679.7595 5518.8012 -2675.8225 5506.2028 -2675.8225 5506.2028 -2679.7595~270~rep4462~0~~Y~0~0~0.2~5512.502,-2677.791#@$PAD~RECT~5512.502~-2687.786~3.937~12.5983~1~TP_L~18~0~5518.8012 -2689.7545 5518.8012 -2685.8175 5506.2029 -2685.8175 5506.2029 -2689.7545~270~rep4463~0~~Y~0~0~0.2~5512.502,-2687.786#@$PAD~RECT~5512.502~-2697.781~3.937~12.5984~1~TP_U~20~0~5518.8012 -2699.7495 5518.8012 -2695.8125 5506.2028 -2695.8125 5506.2028 -2699.7495~270~rep4464~0~~Y~0~0~0.2~5512.502,-2697.781#@$PAD~RECT~5512.502~-2707.776~3.937~12.5984~1~VIN~22~0~5518.8012 -2709.7445 5518.8012 -2705.8075 5506.2028 -2705.8075 5506.2028 -2709.7445~270~rep4465~0~~Y~0~0~0.2~5512.502,-2707.776","LIB~5516.9023~-2583.8258~package`HDR2.54-M-LS-2X13P`value`HACKRF_ONE_P22~~~ggec0534ad0681881b6~1~~~0~~yes~~#@$TEXT~P~5574.702~-2573.154~0.433~0~0~3~~2.7559~P22~M 5574.7 -2575.93L5574.7 -2573.3 M 5574.7 -2575.93L5575.83 -2575.93 L5576.21 -2575.81 L5576.33 -2575.68 L5576.46 -2575.43 L5576.46 -2575.06 L5576.33 -2574.81 L5576.21 -2574.68 L5575.83 -2574.56 L5574.7 -2574.56 M 5577.41 -2575.31L5577.41 -2575.43 L5577.53 -2575.68 L5577.66 -2575.81 L5577.91 -2575.93 L5578.41 -2575.93 L5578.66 -2575.81 L5578.79 -2575.68 L5578.91 -2575.43 L5578.91 -2575.18 L5578.79 -2574.93 L5578.54 -2574.56 L5577.28 -2573.3 L5579.04 -2573.3 M 5579.99 -2575.31L5579.99 -2575.43 L5580.11 -2575.68 L5580.24 -2575.81 L5580.49 -2575.93 L5580.99 -2575.93 L5581.24 -2575.81 L5581.37 -2575.68 L5581.49 -2575.43 L5581.49 -2575.18 L5581.37 -2574.93 L5581.12 -2574.56 L5579.86 -2573.3 L5581.62 -2573.3 ~none~rep4471~~0~#@$TEXT~N~5559.27~-2594.242~0.4724~0~0~3~~3.1496~HACKRF_ONE_P22~M 5559.27 -2597.42L5559.27 -2594.41 M 5561.27 -2597.42L5561.27 -2594.41 M 5559.27 -2595.99L5561.27 -2595.99 M 5563.36 -2597.42L5562.22 -2594.41 M 5563.36 -2597.42L5564.51 -2594.41 M 5562.65 -2595.42L5564.08 -2595.42 M 5567.6 -2596.7L5567.46 -2596.99 L5567.17 -2597.28 L5566.89 -2597.42 L5566.31 -2597.42 L5566.03 -2597.28 L5565.74 -2596.99 L5565.6 -2596.7 L5565.45 -2596.27 L5565.45 -2595.56 L5565.6 -2595.13 L5565.74 -2594.84 L5566.03 -2594.56 L5566.31 -2594.41 L5566.89 -2594.41 L5567.17 -2594.56 L5567.46 -2594.84 L5567.6 -2595.13 M 5568.55 -2597.42L5568.55 -2594.41 M 5570.55 -2597.42L5568.55 -2595.42 M 5569.26 -2596.13L5570.55 -2594.41 M 5571.5 -2597.42L5571.5 -2594.41 M 5571.5 -2597.42L5572.78 -2597.42 L5573.21 -2597.28 L5573.36 -2597.13 L5573.5 -2596.85 L5573.5 -2596.56 L5573.36 -2596.27 L5573.21 -2596.13 L5572.78 -2595.99 L5571.5 -2595.99 M 5572.5 -2595.99L5573.5 -2594.41 M 5574.45 -2597.42L5574.45 -2594.41 M 5574.45 -2597.42L5576.31 -2597.42 M 5574.45 -2595.99L5575.59 -2595.99 M 5577.25 -2593.41L5579.83 -2593.41 M 5581.63 -2597.42L5581.35 -2597.28 L5581.06 -2596.99 L5580.92 -2596.7 L5580.77 -2596.27 L5580.77 -2595.56 L5580.92 -2595.13 L5581.06 -2594.84 L5581.35 -2594.56 L5581.63 -2594.41 L5582.2 -2594.41 L5582.49 -2594.56 L5582.78 -2594.84 L5582.92 -2595.13 L5583.06 -2595.56 L5583.06 -2596.27 L5582.92 -2596.7 L5582.78 -2596.99 L5582.49 -2597.28 L5582.2 -2597.42 L5581.63 -2597.42 M 5584.01 -2597.42L5584.01 -2594.41 M 5584.01 -2597.42L5586.01 -2594.41 M 5586.01 -2597.42L5586.01 -2594.41 M 5586.96 -2597.42L5586.96 -2594.41 M 5586.96 -2597.42L5588.82 -2597.42 M 5586.96 -2595.99L5588.1 -2595.99 M 5586.96 -2594.41L5588.82 -2594.41 M 5589.76 -2593.41L5592.34 -2593.41 M 5593.29 -2597.42L5593.29 -2594.41 M 5593.29 -2597.42L5594.57 -2597.42 L5595 -2597.28 L5595.15 -2597.13 L5595.29 -2596.85 L5595.29 -2596.42 L5595.15 -2596.13 L5595 -2595.99 L5594.57 -2595.85 L5593.29 -2595.85 M 5596.38 -2596.7L5596.38 -2596.85 L5596.52 -2597.13 L5596.66 -2597.28 L5596.95 -2597.42 L5597.52 -2597.42 L5597.81 -2597.28 L5597.95 -2597.13 L5598.1 -2596.85 L5598.1 -2596.56 L5597.95 -2596.27 L5597.67 -2595.85 L5596.23 -2594.41 L5598.24 -2594.41 M 5599.33 -2596.7L5599.33 -2596.85 L5599.47 -2597.13 L5599.61 -2597.28 L5599.9 -2597.42 L5600.47 -2597.42 L5600.76 -2597.28 L5600.9 -2597.13 L5601.05 -2596.85 L5601.05 -2596.56 L5600.9 -2596.27 L5600.62 -2595.85 L5599.18 -2594.41 L5601.19 -2594.41 ~none~rep4472~~0~#@$ARC~0.7874~3~~M 5512.9303 -2585.4258 A 0.728 0.728 0 1 0 5512.93012 -2585.40979~~rep4473~0#@$TRACK~0.7874~3~~5621.7023 -2563.1258 5641.8523 -2563.1258 5641.8523 -2582.6758 5621.7023 -2582.6758 5511.7523 -2582.6758 5511.7523 -2563.1258 5621.7023 -2563.1258~rep4500~0#@$PAD~RECT~5637.002~-2583.826~3.937~12.5984~1~~25~0~5638.9705 -2577.5268 5635.0335 -2577.5268 5635.0335 -2590.1252 5638.9705 -2590.1252~180~rep4474~0~~Y~0~0~0.2~5637.002,-2583.826#@$PAD~RECT~5637.002~-2562.076~3.937~12.5984~1~SCL~26~0~5638.9705 -2555.7768 5635.0335 -2555.7768 5635.0335 -2568.3752 5638.9705 -2568.3752~180~rep4475~0~~Y~0~0~0.2~5637.002,-2562.076#@$PAD~RECT~5627.007~-2562.076~3.937~12.5984~1~SDA~24~0~5628.9755 -2555.7768 5625.0385 -2555.7768 5625.0385 -2568.3752 5628.9755 -2568.3752~180~rep4476~0~~Y~0~0~0.2~5627.007,-2562.076#@$PAD~RECT~5627.007~-2583.826~3.937~12.5984~1~P2_8~23~0~5628.9755 -2577.5268 5625.0385 -2577.5268 5625.0385 -2590.1252 5628.9755 -2590.1252~180~rep4477~0~~Y~0~0~0.2~5627.007,-2583.826#@$PAD~RECT~5616.852~-2562.076~3.937~12.5984~1~MCU_DIR~22~0~5618.8205 -2555.7768 5614.8835 -2555.7768 5614.8835 -2568.3752 5618.8205 -2568.3752~180~rep4478~0~~Y~0~0~0.2~5616.852,-2562.076#@$PAD~RECT~5606.857~-2562.076~3.937~12.5984~1~MCU_IO_STBX~20~0~5608.8255 -2555.7768 5604.8885 -2555.7768 5604.8885 -2568.3752 5608.8255 -2568.3752~180~rep4479~0~~Y~0~0~0.2~5606.857,-2562.076#@$PAD~RECT~5596.862~-2562.076~3.937~12.5984~1~GND~18~0~5598.8305 -2555.7768 5594.8935 -2555.7768 5594.8935 -2568.3752 5598.8305 -2568.3752~180~rep4480~0~~Y~0~0~0.2~5596.862,-2562.076#@$PAD~RECT~5586.867~-2562.076~3.937~12.5984~1~I2S0_SCK~16~0~5588.8355 -2555.7768 5584.8985 -2555.7768 5584.8985 -2568.3752 5588.8355 -2568.3752~180~rep4481~0~~Y~0~0~0.2~5586.867,-2562.076#@$PAD~RECT~5576.872~-2562.076~3.937~12.5984~1~~14~0~5578.8405 -2555.7768 5574.9035 -2555.7768 5574.9035 -2568.3752 5578.8405 -2568.3752~180~rep4482~0~~Y~0~0~0.2~5576.872,-2562.076#@$PAD~RECT~5566.877~-2562.076~3.937~12.5984~1~~12~0~5568.8455 -2555.7768 5564.9085 -2555.7768 5564.9085 -2568.3752 5568.8455 -2568.3752~180~rep4483~0~~Y~0~0~0.2~5566.877,-2562.076#@$PAD~RECT~5616.852~-2583.826~3.937~12.5984~1~MCU_LCD_WR~21~0~5618.8205 -2577.5268 5614.8835 -2577.5268 5614.8835 -2590.1252 5618.8205 -2590.1252~180~rep4484~0~~Y~0~0~0.2~5616.852,-2583.826#@$PAD~RECT~5606.857~-2583.826~3.937~12.5984~1~MCU_ADDR~19~0~5608.8255 -2577.5268 5604.8885 -2577.5268 5604.8885 -2590.1252 5608.8255 -2590.1252~180~rep4485~0~~Y~0~0~0.2~5606.857,-2583.826#@$PAD~RECT~5586.867~-2583.826~3.937~12.5984~1~I2S0_WS~15~0~5588.8355 -2577.5268 5584.8985 -2577.5268 5584.8985 -2590.1252 5588.8355 -2590.1252~180~rep4486~0~~Y~0~0~0.2~5586.867,-2583.826#@$PAD~RECT~5596.862~-2583.826~3.937~12.5984~1~I2S0_MCLK~17~0~5598.8305 -2577.5268 5594.8935 -2577.5268 5594.8935 -2590.1252 5598.8305 -2590.1252~180~rep4487~0~~Y~0~0~0.2~5596.862,-2583.826#@$PAD~RECT~5576.872~-2583.826~3.937~12.5984~1~I2S0_TX_SDA~13~0~5578.8405 -2577.5268 5574.9035 -2577.5268 5574.9035 -2590.1252 5578.8405 -2590.1252~180~rep4488~0~~Y~0~0~0.2~5576.872,-2583.826#@$PAD~RECT~5566.877~-2583.826~3.937~12.5984~1~+3V3~11~0~5568.8455 -2577.5268 5564.9085 -2577.5268 5564.9085 -2590.1252 5568.8455 -2590.1252~180~rep4489~0~~Y~0~0~0.2~5566.877,-2583.826#@$PAD~RECT~5556.882~-2562.076~3.937~12.5984~1~GND~10~0~5558.8505 -2555.7768 5554.9135 -2555.7768 5554.9135 -2568.3752 5558.8505 -2568.3752~180~rep4490~0~~Y~0~0~0.2~5556.882,-2562.076#@$PAD~RECT~5556.882~-2583.826~3.937~12.5984~1~~9~0~5558.8505 -2577.5268 5554.9135 -2577.5268 5554.9135 -2590.1252 5558.8505 -2590.1252~180~rep4491~0~~Y~0~0~0.2~5556.882,-2583.826#@$PAD~RECT~5546.887~-2562.076~3.937~12.5984~1~~8~0~5548.8555 -2555.7768 5544.9185 -2555.7768 5544.9185 -2568.3752 5548.8555 -2568.3752~180~rep4492~0~~Y~0~0~0.2~5546.887,-2562.076#@$PAD~RECT~5546.887~-2583.826~3.937~12.5984~1~~7~0~5548.8555 -2577.5268 5544.9185 -2577.5268 5544.9185 -2590.1252 5548.8555 -2590.1252~180~rep4493~0~~Y~0~0~0.2~5546.887,-2583.826#@$PAD~RECT~5536.892~-2562.076~3.937~12.5984~1~MCU_LCD_TE~6~0~5538.8605 -2555.7768 5534.9235 -2555.7768 5534.9235 -2568.3752 5538.8605 -2568.3752~180~rep4494~0~~Y~0~0~0.2~5536.892,-2562.076#@$PAD~RECT~5536.892~-2583.826~3.937~12.5984~1~MCU_LCD_RD~5~0~5538.8605 -2577.5268 5534.9235 -2577.5268 5534.9235 -2590.1252 5538.8605 -2590.1252~180~rep4495~0~~Y~0~0~0.2~5536.892,-2583.826#@$PAD~RECT~5526.897~-2562.076~3.937~12.5984~1~GND~4~0~5528.8655 -2555.7768 5524.9285 -2555.7768 5524.9285 -2568.3752 5528.8655 -2568.3752~180~rep4496~0~~Y~0~0~0.2~5526.897,-2562.076#@$PAD~RECT~5526.897~-2583.826~3.937~12.5984~1~RESET#~3~0~5528.8655 -2577.5268 5524.9285 -2577.5268 5524.9285 -2590.1252 5528.8655 -2590.1252~180~rep4497~0~~Y~0~0~0.2~5526.897,-2583.826#@$PAD~RECT~5516.902~-2562.076~3.937~12.5984~1~CLKIN~2~0~5518.8705 -2555.7768 5514.9335 -2555.7768 5514.9335 -2568.3752 5518.8705 -2568.3752~180~rep4498~0~~Y~0~0~0.2~5516.902,-2562.076#@$PAD~RECT~5516.902~-2583.826~3.937~12.5984~1~~1~0~5518.8705 -2577.5268 5514.9335 -2577.5268 5514.9335 -2590.1252 5518.8705 -2590.1252~180~rep4499~0~~Y~0~0~0.2~5516.902,-2583.826","LIB~5681.0023~-2607.9258~package`HDR2.54-M-LS-2X11P`value`HACKRF_ONE_P28~~~gge5bf4baecd1f78c6b~1~~~0~~yes~~#@$TEXT~P~5689.902~-2657.854~0.433~0~0~3~~2.7559~P28~M 5689.9 -2660.63L5689.9 -2658 M 5689.9 -2660.63L5691.03 -2660.63 L5691.41 -2660.51 L5691.53 -2660.38 L5691.66 -2660.13 L5691.66 -2659.76 L5691.53 -2659.51 L5691.41 -2659.38 L5691.03 -2659.26 L5689.9 -2659.26 M 5692.61 -2660.01L5692.61 -2660.13 L5692.73 -2660.38 L5692.86 -2660.51 L5693.11 -2660.63 L5693.61 -2660.63 L5693.86 -2660.51 L5693.99 -2660.38 L5694.11 -2660.13 L5694.11 -2659.88 L5693.99 -2659.63 L5693.74 -2659.26 L5692.48 -2658 L5694.24 -2658 M 5695.69 -2660.63L5695.31 -2660.51 L5695.19 -2660.26 L5695.19 -2660.01 L5695.31 -2659.76 L5695.56 -2659.63 L5696.07 -2659.51 L5696.44 -2659.38 L5696.69 -2659.13 L5696.82 -2658.88 L5696.82 -2658.51 L5696.69 -2658.25 L5696.57 -2658.13 L5696.19 -2658 L5695.69 -2658 L5695.31 -2658.13 L5695.19 -2658.25 L5695.06 -2658.51 L5695.06 -2658.88 L5695.19 -2659.13 L5695.44 -2659.38 L5695.81 -2659.51 L5696.32 -2659.63 L5696.57 -2659.76 L5696.69 -2660.01 L5696.69 -2660.26 L5696.57 -2660.51 L5696.19 -2660.63 L5695.69 -2660.63 ~none~rep4507~~0~#@$TEXT~N~5676.053~-2718.397~0.4724~0~0~3~~3.1496~HACKRF_ONE_P28~M 5676.05 -2721.58L5676.05 -2718.57 M 5678.06 -2721.58L5678.06 -2718.57 M 5676.05 -2720.14L5678.06 -2720.14 M 5680.15 -2721.58L5679 -2718.57 M 5680.15 -2721.58L5681.29 -2718.57 M 5679.43 -2719.57L5680.86 -2719.57 M 5684.39 -2720.86L5684.24 -2721.15 L5683.96 -2721.43 L5683.67 -2721.58 L5683.1 -2721.58 L5682.81 -2721.43 L5682.52 -2721.15 L5682.38 -2720.86 L5682.24 -2720.43 L5682.24 -2719.71 L5682.38 -2719.28 L5682.52 -2719 L5682.81 -2718.71 L5683.1 -2718.57 L5683.67 -2718.57 L5683.96 -2718.71 L5684.24 -2719 L5684.39 -2719.28 M 5685.33 -2721.58L5685.33 -2718.57 M 5687.33 -2721.58L5685.33 -2719.57 M 5686.05 -2720.29L5687.33 -2718.57 M 5688.28 -2721.58L5688.28 -2718.57 M 5688.28 -2721.58L5689.57 -2721.58 L5690 -2721.43 L5690.14 -2721.29 L5690.28 -2721 L5690.28 -2720.72 L5690.14 -2720.43 L5690 -2720.29 L5689.57 -2720.14 L5688.28 -2720.14 M 5689.28 -2720.14L5690.28 -2718.57 M 5691.23 -2721.58L5691.23 -2718.57 M 5691.23 -2721.58L5693.09 -2721.58 M 5691.23 -2720.14L5692.37 -2720.14 M 5694.03 -2717.57L5696.61 -2717.57 M 5698.42 -2721.58L5698.13 -2721.43 L5697.84 -2721.15 L5697.7 -2720.86 L5697.56 -2720.43 L5697.56 -2719.71 L5697.7 -2719.28 L5697.84 -2719 L5698.13 -2718.71 L5698.42 -2718.57 L5698.99 -2718.57 L5699.27 -2718.71 L5699.56 -2719 L5699.7 -2719.28 L5699.85 -2719.71 L5699.85 -2720.43 L5699.7 -2720.86 L5699.56 -2721.15 L5699.27 -2721.43 L5698.99 -2721.58 L5698.42 -2721.58 M 5700.79 -2721.58L5700.79 -2718.57 M 5700.79 -2721.58L5702.8 -2718.57 M 5702.8 -2721.58L5702.8 -2718.57 M 5703.74 -2721.58L5703.74 -2718.57 M 5703.74 -2721.58L5705.6 -2721.58 M 5703.74 -2720.14L5704.89 -2720.14 M 5703.74 -2718.57L5705.6 -2718.57 M 5706.55 -2717.57L5709.12 -2717.57 M 5710.07 -2721.58L5710.07 -2718.57 M 5710.07 -2721.58L5711.36 -2721.58 L5711.79 -2721.43 L5711.93 -2721.29 L5712.07 -2721 L5712.07 -2720.57 L5711.93 -2720.29 L5711.79 -2720.14 L5711.36 -2720 L5710.07 -2720 M 5713.16 -2720.86L5713.16 -2721 L5713.3 -2721.29 L5713.45 -2721.43 L5713.73 -2721.58 L5714.31 -2721.58 L5714.59 -2721.43 L5714.74 -2721.29 L5714.88 -2721 L5714.88 -2720.72 L5714.74 -2720.43 L5714.45 -2720 L5713.02 -2718.57 L5715.02 -2718.57 M 5716.68 -2721.58L5716.25 -2721.43 L5716.11 -2721.15 L5716.11 -2720.86 L5716.25 -2720.57 L5716.54 -2720.43 L5717.11 -2720.29 L5717.54 -2720.14 L5717.83 -2719.86 L5717.97 -2719.57 L5717.97 -2719.14 L5717.83 -2718.86 L5717.69 -2718.71 L5717.26 -2718.57 L5716.68 -2718.57 L5716.25 -2718.71 L5716.11 -2718.86 L5715.97 -2719.14 L5715.97 -2719.57 L5716.11 -2719.86 L5716.4 -2720.14 L5716.83 -2720.29 L5717.4 -2720.43 L5717.69 -2720.57 L5717.83 -2720.86 L5717.83 -2721.15 L5717.69 -2721.43 L5717.26 -2721.58 L5716.68 -2721.58 ~none~rep4508~~0~#@$ARC~0.7874~3~~M 5680.0303 -2603.2258 A 0.728 0.728 0 1 0 5680.03012 -2603.20979~~rep4509~0#@$TRACK~0.7874~3~~5682.0523 -2712.7258 5701.6023 -2712.7258 5701.6023 -2602.7758 5682.0523 -2602.7758 5682.0523 -2712.7258~rep4532~0#@$PAD~RECT~5681.002~-2607.926~3.937~12.5984~1~+3V3~1~0~5687.3012 -2609.8945 5687.3012 -2605.9575 5674.7028 -2605.9575 5674.7028 -2609.8945~270~rep4510~0~~Y~0~0~0.2~5681.002,-2607.926#@$PAD~RECT~5702.752~-2607.926~3.937~12.5984~1~GND~2~0~5709.0512 -2609.8945 5709.0512 -2605.9575 5696.4528 -2605.9575 5696.4528 -2609.8945~270~rep4511~0~~Y~0~0~0.2~5702.752,-2607.926#@$PAD~RECT~5681.002~-2617.921~3.937~12.5984~1~SD_CD~3~0~5687.3012 -2619.8895 5687.3012 -2615.9525 5674.7028 -2615.9525 5674.7028 -2619.8895~270~rep4512~0~~Y~0~0~0.2~5681.002,-2617.921#@$PAD~RECT~5702.752~-2617.921~3.937~12.5984~1~SD_DAT3~4~0~5709.0512 -2619.8895 5709.0512 -2615.9525 5696.4528 -2615.9525 5696.4528 -2619.8895~270~rep4513~0~~Y~0~0~0.2~5702.752,-2617.921#@$PAD~RECT~5681.002~-2627.916~3.937~12.5984~1~SD_DAT2~5~0~5687.3012 -2629.8845 5687.3012 -2625.9475 5674.7028 -2625.9475 5674.7028 -2629.8845~270~rep4514~0~~Y~0~0~0.2~5681.002,-2627.916#@$PAD~RECT~5702.752~-2627.916~3.937~12.5984~1~SD_DAT1~6~0~5709.0512 -2629.8845 5709.0512 -2625.9475 5696.4528 -2625.9475 5696.4528 -2629.8845~270~rep4515~0~~Y~0~0~0.2~5702.752,-2627.916#@$PAD~RECT~5681.002~-2637.911~3.937~12.5984~1~SD_DAT0~7~0~5687.3012 -2639.8795 5687.3012 -2635.9425 5674.7028 -2635.9425 5674.7028 -2639.8795~270~rep4516~0~~Y~0~0~0.2~5681.002,-2637.911#@$PAD~RECT~5702.752~-2637.911~3.937~12.5984~1~PP_CPLD_TMS~8~0~5709.0512 -2639.8795 5709.0512 -2635.9425 5696.4528 -2635.9425 5696.4528 -2639.8795~270~rep4517~0~~Y~0~0~0.2~5702.752,-2637.911#@$PAD~RECT~5681.002~-2647.906~3.937~12.5983~1~SD_CMD~9~0~5687.3012 -2649.8745 5687.3012 -2645.9375 5674.7029 -2645.9375 5674.7029 -2649.8745~270~rep4518~0~~Y~0~0~0.2~5681.002,-2647.906#@$PAD~RECT~5702.752~-2647.906~3.937~12.5984~1~PP_CPLD_TDO~10~0~5709.0512 -2649.8745 5709.0512 -2645.9375 5696.4528 -2645.9375 5696.4528 -2649.8745~270~rep4519~0~~Y~0~0~0.2~5702.752,-2647.906#@$PAD~RECT~5681.002~-2657.901~3.937~12.5984~1~SD_CLK~11~0~5687.3012 -2659.8695 5687.3012 -2655.9325 5674.7028 -2655.9325 5674.7028 -2659.8695~270~rep4520~0~~Y~0~0~0.2~5681.002,-2657.901#@$PAD~RECT~5681.002~-2667.896~3.937~12.5984~1~~13~0~5687.3012 -2669.8645 5687.3012 -2665.9275 5674.7028 -2665.9275 5674.7028 -2669.8645~270~rep4521~0~~Y~0~0~0.2~5681.002,-2667.896#@$PAD~RECT~5681.002~-2687.886~3.937~12.5984~1~H1_CPLD_TCK~17~0~5687.3012 -2689.8545 5687.3012 -2685.9175 5674.7028 -2685.9175 5674.7028 -2689.8545~270~rep4522~0~~Y~0~0~0.2~5681.002,-2687.886#@$PAD~RECT~5681.002~-2677.891~3.937~12.5984~1~~15~0~5687.3012 -2679.8595 5687.3012 -2675.9225 5674.7028 -2675.9225 5674.7028 -2679.8595~270~rep4523~0~~Y~0~0~0.2~5681.002,-2677.891#@$PAD~RECT~5681.002~-2697.881~3.937~12.5984~1~H1_CPLD_TDI~19~0~5687.3012 -2699.8495 5687.3012 -2695.9125 5674.7028 -2695.9125 5674.7028 -2699.8495~270~rep4524~0~~Y~0~0~0.2~5681.002,-2697.881#@$PAD~RECT~5681.002~-2707.876~3.937~12.5984~1~~21~0~5687.3012 -2709.8445 5687.3012 -2705.9075 5674.7028 -2705.9075 5674.7028 -2709.8445~270~rep4525~0~~Y~0~0~0.2~5681.002,-2707.876#@$PAD~RECT~5702.752~-2657.901~3.937~12.5984~1~GND~12~0~5709.0512 -2659.8695 5709.0512 -2655.9325 5696.4528 -2655.9325 5696.4528 -2659.8695~270~rep4526~0~~Y~0~0~0.2~5702.752,-2657.901#@$PAD~RECT~5702.752~-2667.896~3.937~12.5984~1~~14~0~5709.0512 -2669.8645 5709.0512 -2665.9275 5696.4528 -2665.9275 5696.4528 -2669.8645~270~rep4527~0~~Y~0~0~0.2~5702.752,-2667.896#@$PAD~RECT~5702.752~-2677.891~3.937~12.5984~1~~16~0~5709.0512 -2679.8595 5709.0512 -2675.9225 5696.4528 -2675.9225 5696.4528 -2679.8595~270~rep4528~0~~Y~0~0~0.2~5702.752,-2677.891#@$PAD~RECT~5702.752~-2687.886~3.937~12.5984~1~~18~0~5709.0512 -2689.8545 5709.0512 -2685.9175 5696.4528 -2685.9175 5696.4528 -2689.8545~270~rep4529~0~~Y~0~0~0.2~5702.752,-2687.886#@$PAD~RECT~5702.752~-2697.881~3.937~12.5984~1~~20~0~5709.0512 -2699.8495 5709.0512 -2695.9125 5696.4528 -2695.9125 5696.4528 -2699.8495~270~rep4530~0~~Y~0~0~0.2~5702.752,-2697.881#@$PAD~RECT~5702.752~-2707.876~3.937~12.5984~1~~22~0~5709.0512 -2709.8445 5709.0512 -2705.9075 5696.4528 -2705.9075 5696.4528 -2709.8445~270~rep4531~0~~Y~0~0~0.2~5702.752,-2707.876","LIB~5821.8523~-2642.8259~package`FPC0.5 2H-WS-40P`value`FPC0.5 2H-WS-40P~~~ggebd3ee0abdb58119f~1~~~0~~yes~~#@$TEXT~P~5828.802~-2682.054~0.433~0~0~3~~2.7559~J3~M 5830.05 -2684.83L5830.05 -2682.83 L5829.93 -2682.45 L5829.8 -2682.33 L5829.55 -2682.2 L5829.3 -2682.2 L5829.05 -2682.33 L5828.93 -2682.45 L5828.8 -2682.83 L5828.8 -2683.08 M 5831.13 -2684.83L5832.51 -2684.83 L5831.76 -2683.83 L5832.13 -2683.83 L5832.38 -2683.71 L5832.51 -2683.58 L5832.64 -2683.21 L5832.64 -2682.96 L5832.51 -2682.58 L5832.26 -2682.33 L5831.88 -2682.2 L5831.51 -2682.2 L5831.13 -2682.33 L5831.01 -2682.45 L5830.88 -2682.71 ~none~rep4537~~0~#@$TEXT~N~5819.692~-2739.003~0.4724~0~0~3~~3.1496~FPC0.5 2H-WS-40P~M 5819.69 -2742.18L5819.69 -2739.18 M 5819.69 -2742.18L5821.55 -2742.18 M 5819.69 -2740.75L5820.84 -2740.75 M 5822.5 -2742.18L5822.5 -2739.18 M 5822.5 -2742.18L5823.79 -2742.18 L5824.22 -2742.04 L5824.36 -2741.9 L5824.5 -2741.61 L5824.5 -2741.18 L5824.36 -2740.89 L5824.22 -2740.75 L5823.79 -2740.61 L5822.5 -2740.61 M 5827.59 -2741.47L5827.45 -2741.75 L5827.16 -2742.04 L5826.88 -2742.18 L5826.31 -2742.18 L5826.02 -2742.04 L5825.73 -2741.75 L5825.59 -2741.47 L5825.45 -2741.04 L5825.45 -2740.32 L5825.59 -2739.89 L5825.73 -2739.6 L5826.02 -2739.32 L5826.31 -2739.18 L5826.88 -2739.18 L5827.16 -2739.32 L5827.45 -2739.6 L5827.59 -2739.89 M 5829.4 -2742.18L5828.97 -2742.04 L5828.68 -2741.61 L5828.54 -2740.89 L5828.54 -2740.46 L5828.68 -2739.75 L5828.97 -2739.32 L5829.4 -2739.18 L5829.68 -2739.18 L5830.11 -2739.32 L5830.4 -2739.75 L5830.54 -2740.46 L5830.54 -2740.89 L5830.4 -2741.61 L5830.11 -2742.04 L5829.68 -2742.18 L5829.4 -2742.18 M 5831.63 -2739.89L5831.49 -2739.75 L5831.63 -2739.6 L5831.77 -2739.75 L5831.63 -2739.89 M 5834.44 -2742.18L5833.01 -2742.18 L5832.86 -2740.89 L5833.01 -2741.04 L5833.44 -2741.18 L5833.86 -2741.18 L5834.29 -2741.04 L5834.58 -2740.75 L5834.72 -2740.32 L5834.72 -2740.03 L5834.58 -2739.6 L5834.29 -2739.32 L5833.86 -2739.18 L5833.44 -2739.18 L5833.01 -2739.32 L5832.86 -2739.46 L5832.72 -2739.75 M 5838.02 -2741.47L5838.02 -2741.61 L5838.16 -2741.9 L5838.3 -2742.04 L5838.59 -2742.18 L5839.16 -2742.18 L5839.45 -2742.04 L5839.59 -2741.9 L5839.73 -2741.61 L5839.73 -2741.32 L5839.59 -2741.04 L5839.31 -2740.61 L5837.87 -2739.18 L5839.88 -2739.18 M 5840.82 -2742.18L5840.82 -2739.18 M 5842.83 -2742.18L5842.83 -2739.18 M 5840.82 -2740.75L5842.83 -2740.75 M 5843.77 -2740.46L5846.35 -2740.46 M 5847.29 -2742.18L5848.01 -2739.18 M 5848.73 -2742.18L5848.01 -2739.18 M 5848.73 -2742.18L5849.44 -2739.18 M 5850.16 -2742.18L5849.44 -2739.18 M 5853.11 -2741.75L5852.82 -2742.04 L5852.39 -2742.18 L5851.82 -2742.18 L5851.39 -2742.04 L5851.1 -2741.75 L5851.1 -2741.47 L5851.24 -2741.18 L5851.39 -2741.04 L5851.67 -2740.89 L5852.53 -2740.61 L5852.82 -2740.46 L5852.96 -2740.32 L5853.11 -2740.03 L5853.11 -2739.6 L5852.82 -2739.32 L5852.39 -2739.18 L5851.82 -2739.18 L5851.39 -2739.32 L5851.1 -2739.6 M 5854.05 -2740.46L5856.63 -2740.46 M 5859 -2742.18L5857.57 -2740.18 L5859.72 -2740.18 M 5859 -2742.18L5859 -2739.18 M 5861.52 -2742.18L5861.09 -2742.04 L5860.81 -2741.61 L5860.67 -2740.89 L5860.67 -2740.46 L5860.81 -2739.75 L5861.09 -2739.32 L5861.52 -2739.18 L5861.81 -2739.18 L5862.24 -2739.32 L5862.53 -2739.75 L5862.67 -2740.46 L5862.67 -2740.89 L5862.53 -2741.61 L5862.24 -2742.04 L5861.81 -2742.18 L5861.52 -2742.18 M 5863.61 -2742.18L5863.61 -2739.18 M 5863.61 -2742.18L5864.9 -2742.18 L5865.33 -2742.04 L5865.48 -2741.9 L5865.62 -2741.61 L5865.62 -2741.18 L5865.48 -2740.89 L5865.33 -2740.75 L5864.9 -2740.61 L5863.61 -2740.61 ~none~rep4538~~0~#@$ARC~1~3~~M 5822.2185 -2640.7259 A 0.3162 0.3162 0 1 0 5822.21725 -2640.69779~~rep4539~0#@$TRACK~1~3~~5823.7523 -2721.9259 5823.7523 -2730.3759~rep4582~0#@$TRACK~1~3~~5835.9523 -2731.0259 5835.9523 -2732.6759 5841.9023 -2732.6759 5841.9023 -2631.1259 5835.9523 -2631.1259 5835.9523 -2632.6759~rep4583~0#@$TRACK~1~3~~5823.7523 -2633.3759 5823.7523 -2641.1259~rep4588~0#@$PAD~OVAL~5821.852~-2642.826~4.9213~1.1811~1~GND~1~0~5819.9819 -2642.826 5823.7221 -2642.826~0~rep4540~0~~Y~0~0~0.2~5821.852,-2642.826#@$PAD~OVAL~5821.852~-2644.803~4.9213~1.1811~1~GND~2~0~5819.9819 -2644.803 5823.7221 -2644.803~0~rep4541~0~~Y~0~0~0.2~5821.852,-2644.803#@$PAD~OVAL~5821.852~-2646.78~4.9213~1.1811~1~GND~3~0~5819.9819 -2646.78 5823.7221 -2646.78~0~rep4542~0~~Y~0~0~0.2~5821.852,-2646.78#@$PAD~OVAL~5821.852~-2648.757~4.9213~1.1811~1~GND~4~0~5819.9819 -2648.757 5823.7221 -2648.757~0~rep4543~0~~Y~0~0~0.2~5821.852,-2648.757#@$PAD~OVAL~5821.852~-2650.734~4.9213~1.1811~1~NETQ1_3~5~0~5819.9819 -2650.734 5823.7221 -2650.734~0~rep4544~0~~Y~0~0~0.2~5821.852,-2650.734#@$PAD~OVAL~5821.852~-2652.71~4.9213~1.1811~1~NETQ1_3~6~0~5819.9819 -2652.71 5823.7221 -2652.71~0~rep4545~0~~Y~0~0~0.2~5821.852,-2652.71#@$PAD~OVAL~5821.852~-2654.687~4.9213~1.1811~1~NETQ1_3~7~0~5819.9819 -2654.687 5823.7221 -2654.687~0~rep4546~0~~Y~0~0~0.2~5821.852,-2654.687#@$PAD~OVAL~5821.852~-2656.664~4.9213~1.1811~1~NETR9_1~8~0~5819.9819 -2656.664 5823.7221 -2656.664~0~rep4547~0~~Y~0~0~0.2~5821.852,-2656.664#@$PAD~OVAL~5821.852~-2658.641~4.9213~1.1811~1~LCD_DB15~9~0~5819.9819 -2658.641 5823.7221 -2658.641~0~rep4548~0~~Y~0~0~0.2~5821.852,-2658.641#@$PAD~OVAL~5821.852~-2660.618~4.9213~1.1811~1~LCD_DB14~10~0~5819.9819 -2660.618 5823.7221 -2660.618~0~rep4549~0~~Y~0~0~0.2~5821.852,-2660.618#@$PAD~OVAL~5821.852~-2662.595~4.9213~1.1811~1~LCD_DB13~11~0~5819.9819 -2662.595 5823.7221 -2662.595~0~rep4550~0~~Y~0~0~0.2~5821.852,-2662.595#@$PAD~OVAL~5821.852~-2664.572~4.9213~1.1811~1~LCD_DB12~12~0~5819.9819 -2664.572 5823.7221 -2664.572~0~rep4551~0~~Y~0~0~0.2~5821.852,-2664.572#@$PAD~OVAL~5821.852~-2666.549~4.9213~1.1811~1~LCD_DB11~13~0~5819.9819 -2666.549 5823.7221 -2666.549~0~rep4552~0~~Y~0~0~0.2~5821.852,-2666.549#@$PAD~OVAL~5821.852~-2668.526~4.9213~1.1811~1~LCD_DB10~14~0~5819.9819 -2668.526 5823.7221 -2668.526~0~rep4553~0~~Y~0~0~0.2~5821.852,-2668.526#@$PAD~OVAL~5821.852~-2670.503~4.9213~1.1811~1~LCD_DB9~15~0~5819.9819 -2670.503 5823.7221 -2670.503~0~rep4554~0~~Y~0~0~0.2~5821.852,-2670.503#@$PAD~OVAL~5821.852~-2672.48~4.9213~1.1811~1~LCD_DB8~16~0~5819.9819 -2672.48 5823.7221 -2672.48~0~rep4555~0~~Y~0~0~0.2~5821.852,-2672.48#@$PAD~OVAL~5821.852~-2674.457~4.9213~1.1811~1~LCD_DB7~17~0~5819.9819 -2674.457 5823.7221 -2674.457~0~rep4556~0~~Y~0~0~0.2~5821.852,-2674.457#@$PAD~OVAL~5821.852~-2676.434~4.9213~1.1811~1~LCD_DB6~18~0~5819.9819 -2676.434 5823.7221 -2676.434~0~rep4557~0~~Y~0~0~0.2~5821.852,-2676.434#@$PAD~OVAL~5821.852~-2678.41~4.9213~1.1811~1~LCD_DB5~19~0~5819.9819 -2678.41 5823.7221 -2678.41~0~rep4558~0~~Y~0~0~0.2~5821.852,-2678.41#@$PAD~OVAL~5821.852~-2680.387~4.9213~1.1811~1~LCD_DB4~20~0~5819.9819 -2680.387 5823.7221 -2680.387~0~rep4559~0~~Y~0~0~0.2~5821.852,-2680.387#@$PAD~OVAL~5821.852~-2682.364~4.9213~1.1811~1~LCD_DB3~21~0~5819.9819 -2682.364 5823.7221 -2682.364~0~rep4560~0~~Y~0~0~0.2~5821.852,-2682.364#@$PAD~OVAL~5821.852~-2684.341~4.9213~1.1811~1~LCD-DB2~22~0~5819.9819 -2684.341 5823.7221 -2684.341~0~rep4561~0~~Y~0~0~0.2~5821.852,-2684.341#@$PAD~OVAL~5821.852~-2686.318~4.9213~1.1811~1~LCD_DB1~23~0~5819.9819 -2686.318 5823.7221 -2686.318~0~rep4562~0~~Y~0~0~0.2~5821.852,-2686.318#@$PAD~OVAL~5821.852~-2688.295~4.9213~1.1811~1~LCD-DB0~24~0~5819.9819 -2688.295 5823.7221 -2688.295~0~rep4563~0~~Y~0~0~0.2~5821.852,-2688.295#@$PAD~OVAL~5821.852~-2690.272~4.9213~1.1811~1~GND~25~0~5819.9819 -2690.272 5823.7221 -2690.272~0~rep4564~0~~Y~0~0~0.2~5821.852,-2690.272#@$PAD~OVAL~5821.852~-2692.249~4.9213~1.1811~1~LCD_RESET#~26~0~5819.9819 -2692.249 5823.7221 -2692.249~0~rep4565~0~~Y~0~0~0.2~5821.852,-2692.249#@$PAD~OVAL~5821.852~-2694.226~4.9213~1.1811~1~~27~0~5819.9819 -2694.226 5823.7221 -2694.226~0~rep4566~0~~Y~0~0~0.2~5821.852,-2694.226#@$PAD~OVAL~5821.852~-2696.203~4.9213~1.1811~1~GND~28~0~5819.9819 -2696.203 5823.7221 -2696.203~0~rep4567~0~~Y~0~0~0.2~5821.852,-2696.203#@$PAD~OVAL~5821.852~-2698.18~4.9213~1.1811~1~LCD_RD#~29~0~5819.9819 -2698.18 5823.7221 -2698.18~0~rep4568~0~~Y~0~0~0.2~5821.852,-2698.18#@$PAD~OVAL~5821.852~-2700.157~4.9213~1.1811~1~LCD_WR#~30~0~5819.9819 -2700.157 5823.7221 -2700.157~0~rep4569~0~~Y~0~0~0.2~5821.852,-2700.157#@$PAD~OVAL~5821.852~-2702.134~4.9213~1.1811~1~LCD_RS~31~0~5819.9819 -2702.134 5823.7221 -2702.134~0~rep4570~0~~Y~0~0~0.2~5821.852,-2702.134#@$PAD~OVAL~5821.852~-2704.11~4.9213~1.1811~1~NETR10_1~32~0~5819.9819 -2704.11 5823.7221 -2704.11~0~rep4571~0~~Y~0~0~0.2~5821.852,-2704.11#@$PAD~OVAL~5821.852~-2706.087~4.9213~1.1811~1~LCD_TE~33~0~5819.9819 -2706.087 5823.7221 -2706.087~0~rep4572~0~~Y~0~0~0.2~5821.852,-2706.087#@$PAD~OVAL~5821.852~-2708.064~4.9213~1.1811~1~+3V3~34~0~5819.9819 -2708.064 5823.7221 -2708.064~0~rep4573~0~~Y~0~0~0.2~5821.852,-2708.064#@$PAD~OVAL~5821.852~-2710.041~4.9213~1.1811~1~+3V3~35~0~5819.9819 -2710.041 5823.7221 -2710.041~0~rep4574~0~~Y~0~0~0.2~5821.852,-2710.041#@$PAD~OVAL~5821.852~-2712.018~4.9213~1.1811~1~GND~36~0~5819.9819 -2712.018 5823.7221 -2712.018~0~rep4575~0~~Y~0~0~0.2~5821.852,-2712.018#@$PAD~OVAL~5821.852~-2713.995~4.9213~1.1811~1~TP_D~37~0~5819.9819 -2713.995 5823.7221 -2713.995~0~rep4576~0~~Y~0~0~0.2~5821.852,-2713.995#@$PAD~OVAL~5821.852~-2715.972~4.9213~1.1811~1~TP_R~38~0~5819.9819 -2715.972 5823.7221 -2715.972~0~rep4577~0~~Y~0~0~0.2~5821.852,-2715.972#@$PAD~OVAL~5821.852~-2717.949~4.9213~1.1811~1~TP_U~39~0~5819.9819 -2717.949 5823.7221 -2717.949~0~rep4578~0~~Y~0~0~0.2~5821.852,-2717.949#@$PAD~OVAL~5821.852~-2719.926~4.9213~1.1811~1~TP_L~40~0~5819.9819 -2719.926 5823.7221 -2719.926~0~rep4579~0~~Y~0~0~0.2~5821.852,-2719.926#@$PAD~OVAL~5830.802~-2725.976~11.811~7.874~1~~0~0~5828.8335 -2725.976 5832.7705 -2725.976~0~rep4580~0~~Y~0~0~0.2~5830.802,-2725.976#@$PAD~OVAL~5831.052~-2636.876~11.811~7.874~1~~0~0~5829.0835 -2636.876 5833.0205 -2636.876~0~rep4581~0~~Y~0~0~0.2~5831.052,-2636.876","LIB~5485.2523~-2548.3758~package`M3`value`M3~~~gge0849e6bd53cfc746~1~~~0~~yes~~#@$TEXT~P~5474.743~-2560.974~0.433~0~0~3~~2.7559~U?~M 5474.74 -2563.76L5474.74 -2561.88 L5474.87 -2561.5 L5475.12 -2561.25 L5475.49 -2561.12 L5475.74 -2561.12 L5476.12 -2561.25 L5476.37 -2561.5 L5476.5 -2561.88 L5476.5 -2563.76 M 5477.32 -2563.13L5477.32 -2563.25 L5477.45 -2563.5 L5477.57 -2563.63 L5477.82 -2563.76 L5478.33 -2563.76 L5478.58 -2563.63 L5478.7 -2563.5 L5478.83 -2563.25 L5478.83 -2563 L5478.7 -2562.75 L5478.58 -2562.63 L5478.07 -2562.38 L5478.07 -2562 M 5478.07 -2561.38L5477.95 -2561.25 L5478.07 -2561.12 L5478.2 -2561.25 L5478.07 -2561.38 ~none~rep4590~~0~#@$TEXT~N~5498.246~-2545.502~0.4724~0~0~3~~3.1496~M3~M 5498.25 -2548.68L5498.25 -2545.67 M 5498.25 -2548.68L5499.39 -2545.67 M 5500.54 -2548.68L5499.39 -2545.67 M 5500.54 -2548.68L5500.54 -2545.67 M 5501.77 -2548.68L5503.34 -2548.68 L5502.48 -2547.53 L5502.91 -2547.53 L5503.2 -2547.39 L5503.34 -2547.25 L5503.49 -2546.82 L5503.49 -2546.53 L5503.34 -2546.1 L5503.06 -2545.82 L5502.63 -2545.67 L5502.2 -2545.67 L5501.77 -2545.82 L5501.63 -2545.96 L5501.48 -2546.25 ~none~rep4591~~0~#@$PAD~ELLIPSE~5485.252~-2548.376~20.8661~20.8661~11~GND~1~6.496~~0~rep4592~13.012~5485.242 -2548.376 5485.262 -2548.376~Y~0~0~0.2~5485.252,-2548.376#@$VIA~5485.102~-2557.126~2.5591~~0.7874~rep4593~0#@$VIA~5491.302~-2554.576~2.5591~~0.7874~rep4594~0#@$VIA~5479.002~-2554.626~2.5591~~0.7874~rep4595~0#@$VIA~5476.202~-2548.226~2.5591~~0.7874~rep4596~0#@$VIA~5493.752~-2548.426~2.5591~~0.7874~rep4597~0#@$VIA~5479.002~-2542.426~2.5591~~0.7874~rep4598~0#@$VIA~5485.102~-2539.826~2.5591~~0.7874~rep4599~0#@$VIA~5491.252~-2542.376~2.5591~~0.7874~rep4600~0","LIB~5926.1523~-2548.6258~package`M3`value`M3~~~gge0b67e2366e5b1ba6~1~~~0~~yes~~#@$TEXT~P~5924.202~-2548.854~0.433~0~0~3~~2.7559~M2~M 5924.2 -2551.63L5924.2 -2549 M 5924.2 -2551.63L5925.2 -2549 M 5926.21 -2551.63L5925.2 -2549 M 5926.21 -2551.63L5926.21 -2549 M 5927.16 -2551.01L5927.16 -2551.13 L5927.28 -2551.38 L5927.41 -2551.51 L5927.66 -2551.63 L5928.16 -2551.63 L5928.41 -2551.51 L5928.54 -2551.38 L5928.66 -2551.13 L5928.66 -2550.88 L5928.54 -2550.63 L5928.29 -2550.26 L5927.03 -2549 L5928.79 -2549 ~none~rep4602~~0~#@$TEXT~N~5937.026~-2542.116~0.4724~0~0~3~~3.1496~M3~M 5937.03 -2545.29L5937.03 -2542.29 M 5937.03 -2545.29L5938.17 -2542.29 M 5939.32 -2545.29L5938.17 -2542.29 M 5939.32 -2545.29L5939.32 -2542.29 M 5940.55 -2545.29L5942.12 -2545.29 L5941.26 -2544.15 L5941.69 -2544.15 L5941.98 -2544.01 L5942.12 -2543.86 L5942.27 -2543.43 L5942.27 -2543.15 L5942.12 -2542.72 L5941.84 -2542.43 L5941.41 -2542.29 L5940.98 -2542.29 L5940.55 -2542.43 L5940.4 -2542.57 L5940.26 -2542.86 ~none~rep4603~~0~#@$PAD~ELLIPSE~5926.152~-2548.626~20.8661~20.8661~11~GND~1~6.496~~0~rep4604~13.012~5926.142 -2548.626 5926.162 -2548.626~Y~0~0~0.2~5926.152,-2548.626#@$VIA~5926.002~-2557.376~2.5591~~0.7874~rep4605~0#@$VIA~5932.202~-2554.826~2.5591~~0.7874~rep4606~0#@$VIA~5919.902~-2554.876~2.5591~~0.7874~rep4607~0#@$VIA~5917.102~-2548.476~2.5591~~0.7874~rep4608~0#@$VIA~5934.652~-2548.676~2.5591~~0.7874~rep4609~0#@$VIA~5919.902~-2542.676~2.5591~~0.7874~rep4610~0#@$VIA~5926.002~-2540.076~2.5591~~0.7874~rep4611~0#@$VIA~5932.152~-2542.626~2.5591~~0.7874~rep4612~0","LIB~5926.0023~-2812.8258~package`M3`value`M3~~~gge4e48eb34ab40b298~1~~~0~~yes~~#@$TEXT~P~5924.002~-2813.054~0.433~0~0~3~~2.7559~M3~M 5924 -2815.83L5924 -2813.2 M 5924 -2815.83L5925 -2813.2 M 5926.01 -2815.83L5925 -2813.2 M 5926.01 -2815.83L5926.01 -2813.2 M 5927.08 -2815.83L5928.46 -2815.83 L5927.71 -2814.83 L5928.09 -2814.83 L5928.34 -2814.71 L5928.46 -2814.58 L5928.59 -2814.21 L5928.59 -2813.96 L5928.46 -2813.58 L5928.21 -2813.33 L5927.84 -2813.2 L5927.46 -2813.2 L5927.08 -2813.33 L5926.96 -2813.45 L5926.83 -2813.71 ~none~rep4614~~0~#@$TEXT~N~5911.711~-2823.415~0.4724~0~0~3~~3.1496~M3~M 5911.71 -2826.59L5911.71 -2823.59 M 5911.71 -2826.59L5912.86 -2823.59 M 5914 -2826.59L5912.86 -2823.59 M 5914 -2826.59L5914 -2823.59 M 5915.23 -2826.59L5916.81 -2826.59 L5915.95 -2825.45 L5916.38 -2825.45 L5916.66 -2825.3 L5916.81 -2825.16 L5916.95 -2824.73 L5916.95 -2824.45 L5916.81 -2824.02 L5916.52 -2823.73 L5916.09 -2823.59 L5915.66 -2823.59 L5915.23 -2823.73 L5915.09 -2823.87 L5914.95 -2824.16 ~none~rep4615~~0~#@$PAD~ELLIPSE~5926.002~-2812.826~20.8661~20.8661~11~GND~1~6.496~~0~rep4616~13.012~5925.992 -2812.826 5926.012 -2812.826~Y~0~0~0.2~5926.002,-2812.826#@$VIA~5925.852~-2821.576~2.5591~~0.7874~rep4617~0#@$VIA~5932.052~-2819.026~2.5591~~0.7874~rep4618~0#@$VIA~5919.752~-2819.076~2.5591~~0.7874~rep4619~0#@$VIA~5916.952~-2812.676~2.5591~~0.7874~rep4620~0#@$VIA~5934.502~-2812.876~2.5591~~0.7874~rep4621~0#@$VIA~5919.752~-2806.876~2.5591~~0.7874~rep4622~0#@$VIA~5925.852~-2804.276~2.5591~~0.7874~rep4623~0#@$VIA~5932.002~-2806.826~2.5591~~0.7874~rep4624~0","LIB~5484.7023~-2811.9258~package`M3`value`M3~~~gge60a981ccfcd2d311~1~~~0~~yes~~#@$TEXT~P~5482.702~-2812.154~0.433~0~0~3~~2.7559~M4~M 5482.7 -2814.93L5482.7 -2812.3 M 5482.7 -2814.93L5483.7 -2812.3 M 5484.71 -2814.93L5483.7 -2812.3 M 5484.71 -2814.93L5484.71 -2812.3 M 5486.79 -2814.93L5485.53 -2813.18 L5487.41 -2813.18 M 5486.79 -2814.93L5486.79 -2812.3 ~none~rep4626~~0~#@$TEXT~N~5495.215~-2820.659~0.4724~0~0~3~~3.1496~M3~M 5495.21 -2823.84L5495.21 -2820.83 M 5495.21 -2823.84L5496.36 -2820.83 M 5497.51 -2823.84L5496.36 -2820.83 M 5497.51 -2823.84L5497.51 -2820.83 M 5498.74 -2823.84L5500.31 -2823.84 L5499.45 -2822.69 L5499.88 -2822.69 L5500.17 -2822.55 L5500.31 -2822.41 L5500.45 -2821.98 L5500.45 -2821.69 L5500.31 -2821.26 L5500.03 -2820.97 L5499.6 -2820.83 L5499.17 -2820.83 L5498.74 -2820.97 L5498.59 -2821.12 L5498.45 -2821.4 ~none~rep4627~~0~#@$PAD~ELLIPSE~5484.702~-2811.926~20.8661~20.8661~11~GND~1~6.496~~0~rep4628~13.012~5484.692 -2811.926 5484.712 -2811.926~Y~0~0~0.2~5484.702,-2811.926#@$VIA~5484.552~-2820.676~2.5591~~0.7874~rep4629~0#@$VIA~5490.752~-2818.126~2.5591~~0.7874~rep4630~0#@$VIA~5478.452~-2818.176~2.5591~~0.7874~rep4631~0#@$VIA~5475.652~-2811.776~2.5591~~0.7874~rep4632~0#@$VIA~5493.202~-2811.976~2.5591~~0.7874~rep4633~0#@$VIA~5478.452~-2805.976~2.5591~~0.7874~rep4634~0#@$VIA~5484.552~-2803.376~2.5591~~0.7874~rep4635~0#@$VIA~5490.702~-2805.926~2.5591~~0.7874~rep4636~0","LIB~5771.1185~-2621.9585~package`A0402`value`100nF~90~~gged2625f4b4bd439ef~1~~~0~~yes~~#@$TEXT~P~5774.437~-2625.467~0.433~0~0~3~~2.7559~C32~M 5776.32 -2627.62L5776.19 -2627.87 L5775.94 -2628.12 L5775.69 -2628.25 L5775.19 -2628.25 L5774.94 -2628.12 L5774.69 -2627.87 L5774.56 -2627.62 L5774.44 -2627.25 L5774.44 -2626.62 L5774.56 -2626.24 L5774.69 -2625.99 L5774.94 -2625.74 L5775.19 -2625.62 L5775.69 -2625.62 L5775.94 -2625.74 L5776.19 -2625.99 L5776.32 -2626.24 M 5777.39 -2628.25L5778.77 -2628.25 L5778.02 -2627.25 L5778.4 -2627.25 L5778.65 -2627.12 L5778.77 -2627 L5778.9 -2626.62 L5778.9 -2626.37 L5778.77 -2625.99 L5778.52 -2625.74 L5778.15 -2625.62 L5777.77 -2625.62 L5777.39 -2625.74 L5777.27 -2625.87 L5777.14 -2626.12 M 5779.85 -2627.62L5779.85 -2627.75 L5779.97 -2628 L5780.1 -2628.12 L5780.35 -2628.25 L5780.85 -2628.25 L5781.1 -2628.12 L5781.23 -2628 L5781.35 -2627.75 L5781.35 -2627.5 L5781.23 -2627.25 L5780.98 -2626.87 L5779.72 -2625.62 L5781.48 -2625.62 ~none~rep4638~~0~#@$TEXT~N~5774.319~-2620.507~0.4724~0~0~3~~3.1496~100nF~M 5774.32 -2623.11L5774.61 -2623.26 L5775.03 -2623.68 L5775.03 -2620.68 M 5776.84 -2623.68L5776.41 -2623.54 L5776.12 -2623.11 L5775.98 -2622.4 L5775.98 -2621.97 L5776.12 -2621.25 L5776.41 -2620.82 L5776.84 -2620.68 L5777.12 -2620.68 L5777.55 -2620.82 L5777.84 -2621.25 L5777.98 -2621.97 L5777.98 -2622.4 L5777.84 -2623.11 L5777.55 -2623.54 L5777.12 -2623.68 L5776.84 -2623.68 M 5779.79 -2623.68L5779.36 -2623.54 L5779.07 -2623.11 L5778.93 -2622.4 L5778.93 -2621.97 L5779.07 -2621.25 L5779.36 -2620.82 L5779.79 -2620.68 L5780.07 -2620.68 L5780.5 -2620.82 L5780.79 -2621.25 L5780.93 -2621.97 L5780.93 -2622.4 L5780.79 -2623.11 L5780.5 -2623.54 L5780.07 -2623.68 L5779.79 -2623.68 M 5781.88 -2622.68L5781.88 -2620.68 M 5781.88 -2622.11L5782.31 -2622.54 L5782.59 -2622.68 L5783.02 -2622.68 L5783.31 -2622.54 L5783.45 -2622.11 L5783.45 -2620.68 M 5784.4 -2623.68L5784.4 -2620.68 M 5784.4 -2623.68L5786.26 -2623.68 M 5784.4 -2622.25L5785.54 -2622.25 ~none~rep4639~~0~#@$TRACK~0.7874~3~~5773.0684 -2625.8085 5768.9684 -2625.8085 5768.9684 -2618.3585 5773.0684 -2618.3585 5773.0684 -2625.8085~rep4642~0#@$PAD~RECT~5771.118~-2620.158~1.9685~2.3622~1~GND~2~0~5769.9369 -2619.1737 5769.9369 -2621.1423 5772.2991 -2621.1423 5772.2991 -2619.1737~90~rep4640~0~~Y~0~0~0.2~5771.118,-2620.158#@$PAD~RECT~5771.119~-2623.758~1.9685~2.3622~1~+3V3~1~0~5769.9379 -2622.7737 5769.9379 -2624.7423 5772.3001 -2624.7423 5772.3001 -2622.7737~90~rep4641~0~~Y~0~0~0.2~5771.119,-2623.758","LIB~5665.2639~-2552.8689~package`A0603`value`0R~360~~gge68c0bc52ff9b48aa~1~~~0~~yes~~#@$TEXT~P~5655.095~-2559.439~0.433~0~0~3~~2.7559~R32A~M 5655.09 -2562.22L5655.09 -2559.59 M 5655.09 -2562.22L5656.22 -2562.22 L5656.6 -2562.09 L5656.72 -2561.97 L5656.85 -2561.72 L5656.85 -2561.47 L5656.72 -2561.22 L5656.6 -2561.09 L5656.22 -2560.97 L5655.09 -2560.97 M 5655.97 -2560.97L5656.85 -2559.59 M 5657.93 -2562.22L5659.3 -2562.22 L5658.55 -2561.22 L5658.93 -2561.22 L5659.18 -2561.09 L5659.3 -2560.97 L5659.43 -2560.59 L5659.43 -2560.34 L5659.3 -2559.96 L5659.05 -2559.71 L5658.68 -2559.59 L5658.3 -2559.59 L5657.93 -2559.71 L5657.8 -2559.84 L5657.68 -2560.09 M 5660.38 -2561.59L5660.38 -2561.72 L5660.51 -2561.97 L5660.63 -2562.09 L5660.88 -2562.22 L5661.38 -2562.22 L5661.63 -2562.09 L5661.76 -2561.97 L5661.88 -2561.72 L5661.88 -2561.47 L5661.76 -2561.22 L5661.51 -2560.84 L5660.26 -2559.59 L5662.01 -2559.59 M 5663.84 -2562.22L5662.84 -2559.59 M 5663.84 -2562.22L5664.84 -2559.59 M 5663.21 -2560.47L5664.46 -2560.47 ~none~rep4647~~0~#@$TEXT~N~5668.914~-2559.596~0.4724~0~0~3~~3.1496~0R~M 5669.77 -2562.77L5669.34 -2562.63 L5669.06 -2562.2 L5668.91 -2561.49 L5668.91 -2561.06 L5669.06 -2560.34 L5669.34 -2559.91 L5669.77 -2559.77 L5670.06 -2559.77 L5670.49 -2559.91 L5670.77 -2560.34 L5670.92 -2561.06 L5670.92 -2561.49 L5670.77 -2562.2 L5670.49 -2562.63 L5670.06 -2562.77 L5669.77 -2562.77 M 5671.86 -2562.77L5671.86 -2559.77 M 5671.86 -2562.77L5673.15 -2562.77 L5673.58 -2562.63 L5673.72 -2562.49 L5673.87 -2562.2 L5673.87 -2561.92 L5673.72 -2561.63 L5673.58 -2561.49 L5673.15 -2561.34 L5671.86 -2561.34 M 5672.87 -2561.34L5673.87 -2559.77 ~none~rep4648~~0~#@$TRACK~1.2~3~~5663.508 -2549.3689 5659.008 -2549.3689 5659.008 -2556.3689 5663.508 -2556.3689~rep4651~0#@$TRACK~1.2~3~~5666.508 -2549.3689 5671.508 -2549.3689 5671.508 -2556.3689 5666.508 -2556.3689~rep4653~0#@$PAD~RECT~5661.799~-2552.869~4.3307~3.5433~1~NETK2_3~1~0~5659.6337 -2554.6407 5663.9644 -2554.6407 5663.9644 -2551.0973 5659.6337 -2551.0973~0~rep4649~0~~Y~0~0~0.2~5661.799,-2552.869#@$PAD~RECT~5668.728~-2552.869~4.3307~3.5433~1~NETK2_1~2~0~5666.5627 -2554.6407 5670.8934 -2554.6407 5670.8934 -2551.0973 5666.5627 -2551.0973~0~rep4650~0~~Y~0~0~0.2~5668.728,-2552.869","LIB~5715.3311~-2547.0373~package`A0603`value`0R~360~~ggefe1a844dd21a19b5~1~~~0~~yes~~#@$TEXT~P~5709.544~-2540.581~0.433~0~0~3~~2.7559~R32B~M 5709.54 -2543.36L5709.54 -2540.73 M 5709.54 -2543.36L5710.67 -2543.36 L5711.05 -2543.24 L5711.17 -2543.11 L5711.3 -2542.86 L5711.3 -2542.61 L5711.17 -2542.36 L5711.05 -2542.23 L5710.67 -2542.11 L5709.54 -2542.11 M 5710.42 -2542.11L5711.3 -2540.73 M 5712.37 -2543.36L5713.75 -2543.36 L5713 -2542.36 L5713.38 -2542.36 L5713.63 -2542.23 L5713.75 -2542.11 L5713.88 -2541.73 L5713.88 -2541.48 L5713.75 -2541.11 L5713.5 -2540.86 L5713.13 -2540.73 L5712.75 -2540.73 L5712.37 -2540.86 L5712.25 -2540.98 L5712.12 -2541.23 M 5714.83 -2542.74L5714.83 -2542.86 L5714.96 -2543.11 L5715.08 -2543.24 L5715.33 -2543.36 L5715.83 -2543.36 L5716.08 -2543.24 L5716.21 -2543.11 L5716.33 -2542.86 L5716.33 -2542.61 L5716.21 -2542.36 L5715.96 -2541.98 L5714.7 -2540.73 L5716.46 -2540.73 M 5717.29 -2543.36L5717.29 -2540.73 M 5717.29 -2543.36L5718.41 -2543.36 L5718.79 -2543.24 L5718.91 -2543.11 L5719.04 -2542.86 L5719.04 -2542.61 L5718.91 -2542.36 L5718.79 -2542.23 L5718.41 -2542.11 M 5717.29 -2542.11L5718.41 -2542.11 L5718.79 -2541.98 L5718.91 -2541.86 L5719.04 -2541.61 L5719.04 -2541.23 L5718.91 -2540.98 L5718.79 -2540.86 L5718.41 -2540.73 L5717.29 -2540.73 ~none~rep4658~~0~#@$TEXT~N~5723.402~-2546.958~0.4724~0~0~3~~3.1496~0R~M 5724.26 -2550.14L5723.83 -2549.99 L5723.55 -2549.56 L5723.4 -2548.85 L5723.4 -2548.42 L5723.55 -2547.7 L5723.83 -2547.27 L5724.26 -2547.13 L5724.55 -2547.13 L5724.98 -2547.27 L5725.26 -2547.7 L5725.41 -2548.42 L5725.41 -2548.85 L5725.26 -2549.56 L5724.98 -2549.99 L5724.55 -2550.14 L5724.26 -2550.14 M 5726.35 -2550.14L5726.35 -2547.13 M 5726.35 -2550.14L5727.64 -2550.14 L5728.07 -2549.99 L5728.21 -2549.85 L5728.36 -2549.56 L5728.36 -2549.28 L5728.21 -2548.99 L5728.07 -2548.85 L5727.64 -2548.71 L5726.35 -2548.71 M 5727.35 -2548.71L5728.36 -2547.13 ~none~rep4659~~0~#@$TRACK~1.2~3~~5716.5752 -2543.5373 5721.5752 -2543.5373 5721.5752 -2550.5373 5716.5752 -2550.5373~rep4662~0#@$TRACK~1.2~3~~5713.5752 -2543.5373 5709.0752 -2543.5373 5709.0752 -2550.5373 5713.5752 -2550.5373~rep4663~0#@$PAD~RECT~5718.796~-2547.037~4.3307~3.5433~1~NETK2_1~2~0~5716.6307 -2548.8086 5720.9614 -2548.8086 5720.9614 -2545.2653 5716.6307 -2545.2653~0~rep4660~0~~Y~0~0~0.2~5718.796,-2547.037#@$PAD~RECT~5711.867~-2547.037~4.3307~3.5433~1~NETM1_2~1~0~5709.7017 -2548.8086 5714.0324 -2548.8086 5714.0324 -2545.2653 5709.7017 -2545.2653~0~rep4661~0~~Y~0~0~0.2~5711.867,-2547.037","LIB~5755.646~-2584.7144~package`CR2032A`value`CR2032~180~~gge209f0e49c54e94d7~1~~~0~~yes~~#@$TEXT~P~5806.445~-2557.396~0.433~0~0~3~~2.7559~BAT1~M 5806.44 -2560.18L5806.44 -2557.55 M 5806.44 -2560.18L5807.57 -2560.18 L5807.95 -2560.05 L5808.07 -2559.93 L5808.2 -2559.68 L5808.2 -2559.43 L5808.07 -2559.18 L5807.95 -2559.05 L5807.57 -2558.92 M 5806.44 -2558.92L5807.57 -2558.92 L5807.95 -2558.8 L5808.07 -2558.67 L5808.2 -2558.42 L5808.2 -2558.05 L5808.07 -2557.8 L5807.95 -2557.67 L5807.57 -2557.55 L5806.44 -2557.55 M 5810.03 -2560.18L5809.03 -2557.55 M 5810.03 -2560.18L5811.03 -2557.55 M 5809.4 -2558.42L5810.65 -2558.42 M 5812.73 -2560.18L5812.73 -2557.55 M 5811.86 -2560.18L5813.61 -2560.18 M 5814.44 -2559.68L5814.69 -2559.8 L5815.06 -2560.18 L5815.06 -2557.55 ~none~rep4669~~0~#@$TEXT~N~5805.134~-2552.313~0.4724~0~0~3~~3.937~CR2032~M 5807.82 -2555.39L5807.64 -2555.75 L5807.28 -2556.11 L5806.92 -2556.29 L5806.21 -2556.29 L5805.85 -2556.11 L5805.49 -2555.75 L5805.31 -2555.39 L5805.13 -2554.85 L5805.13 -2553.96 L5805.31 -2553.42 L5805.49 -2553.06 L5805.85 -2552.71 L5806.21 -2552.53 L5806.92 -2552.53 L5807.28 -2552.71 L5807.64 -2553.06 L5807.82 -2553.42 M 5809 -2556.29L5809 -2552.53 M 5809 -2556.29L5810.61 -2556.29 L5811.15 -2556.11 L5811.33 -2555.93 L5811.5 -2555.57 L5811.5 -2555.21 L5811.33 -2554.85 L5811.15 -2554.68 L5810.61 -2554.5 L5809 -2554.5 M 5810.25 -2554.5L5811.5 -2552.53 M 5812.87 -2555.39L5812.87 -2555.57 L5813.04 -2555.93 L5813.22 -2556.11 L5813.58 -2556.29 L5814.3 -2556.29 L5814.65 -2556.11 L5814.83 -2555.93 L5815.01 -2555.57 L5815.01 -2555.21 L5814.83 -2554.85 L5814.48 -2554.32 L5812.69 -2552.53 L5815.19 -2552.53 M 5817.45 -2556.29L5816.91 -2556.11 L5816.55 -2555.57 L5816.37 -2554.68 L5816.37 -2554.14 L5816.55 -2553.24 L5816.91 -2552.71 L5817.45 -2552.53 L5817.8 -2552.53 L5818.34 -2552.71 L5818.7 -2553.24 L5818.88 -2554.14 L5818.88 -2554.68 L5818.7 -2555.57 L5818.34 -2556.11 L5817.8 -2556.29 L5817.45 -2556.29 M 5820.42 -2556.29L5822.39 -2556.29 L5821.31 -2554.85 L5821.85 -2554.85 L5822.21 -2554.68 L5822.39 -2554.5 L5822.56 -2553.96 L5822.56 -2553.6 L5822.39 -2553.06 L5822.03 -2552.71 L5821.49 -2552.53 L5820.95 -2552.53 L5820.42 -2552.71 L5820.24 -2552.89 L5820.06 -2553.24 M 5823.92 -2555.39L5823.92 -2555.57 L5824.1 -2555.93 L5824.28 -2556.11 L5824.64 -2556.29 L5825.36 -2556.29 L5825.71 -2556.11 L5825.89 -2555.93 L5826.07 -2555.57 L5826.07 -2555.21 L5825.89 -2554.85 L5825.54 -2554.32 L5823.75 -2552.53 L5826.25 -2552.53 ~none~rep4670~~0~#@$ARC~0.7874~3~~M 5780.84293 -2553.21845 A 40.3346 40.3346 0 0 0 5780.84293 -2616.21035~~rep4671~0#@$ARC~0.7874~3~~M 5730.44907 -2616.21035 A 40.3346 40.3346 0 0 0 5730.44907 -2553.21845~~rep4672~0#@$TRACK~0.7874~3~~5730.4492 -2553.2184 5780.8429 -2553.2184 5799.3468 -2553.2184 5799.3468 -2616.2105 5780.8429 -2616.2105 5730.4492 -2616.2105~rep4675~0#@$TRACK~0.7874~3~~5730.449 -2553.2184 5711.9452 -2553.2184 5711.9452 -2616.2105 5730.449 -2616.2105~rep4676~0#@$TRACK~0.7874~3~~5799.3468 -2570.9349 5812.3389 -2570.9349 5812.3389 -2575.6593~rep4681~0#@$TRACK~0.7874~3~~5799.3468 -2598.494 5812.3389 -2598.494 5812.3389 -2593.7696~rep4682~0#@$TRACK~0.7874~3~~5698.9531 -2570.9349 5698.9531 -2575.6593 5698.9531 -2570.9349 5711.9452 -2570.9349~rep4683~0#@$TRACK~0.7874~3~~5698.9531 -2598.4939 5698.9531 -2593.7695 5698.9531 -2598.494 5711.9059 -2598.494~rep4684~0#@$TEXT~L~5816.945~-2564.714~1~180~0~3~~7.874~+~M 5813.7204 -2557.8388L5813.7204 -2564.2888 M 5816.9404 -2561.0588L5810.5004 -2561.0588 ~~rep4693~~0~#@$PAD~RECT~5812.339~-2584.714~12.5984~16.5354~1~VBAT~1~0~5818.6382 -2576.4463 5806.0398 -2576.4463 5806.0398 -2592.9817 5818.6382 -2592.9817~180~rep4673~0~~Y~0~0~0.2~5812.339,-2584.714#@$PAD~RECT~5698.953~-2584.714~12.5984~16.5354~1~GND~2~0~5692.6538 -2592.9817 5705.2522 -2592.9817 5705.2522 -2576.4463 5692.6538 -2576.4463~0~rep4674~0~~Y~0~0~0.2~5698.953,-2584.714","LIB~5499.1613~-2735.3098~package`QFN-16`value`BQ24075RGTR~180~~gge124c013cfc851acc~1~c6b3e099eb1546f59356cd16b4fc1545~1541737649~0~~yes~86ae59f611414b1fa3aff42605eb1e53~#@$TEXT~P~5509.437~-2730.782~0.4724~0~0~3~~3.1496~U6~M 5509.44 -2733.96L5509.44 -2731.81 L5509.58 -2731.38 L5509.87 -2731.1 L5510.3 -2730.95 L5510.58 -2730.95 L5511.01 -2731.1 L5511.3 -2731.38 L5511.44 -2731.81 L5511.44 -2733.96 M 5514.1 -2733.53L5513.96 -2733.82 L5513.53 -2733.96 L5513.25 -2733.96 L5512.82 -2733.82 L5512.53 -2733.39 L5512.39 -2732.67 L5512.39 -2731.96 L5512.53 -2731.38 L5512.82 -2731.1 L5513.25 -2730.95 L5513.39 -2730.95 L5513.82 -2731.1 L5514.1 -2731.38 L5514.25 -2731.81 L5514.25 -2731.96 L5514.1 -2732.39 L5513.82 -2732.67 L5513.39 -2732.82 L5513.25 -2732.82 L5512.82 -2732.67 L5512.53 -2732.39 L5512.39 -2731.96 ~none~rep4695~~0~#@$TEXT~N~5518.689~-2717.633~0.4724~0~0~3~~3.1496~BQ24075RGTR~M 5518.69 -2720.81L5518.69 -2717.8 M 5518.69 -2720.81L5519.98 -2720.81 L5520.41 -2720.67 L5520.55 -2720.52 L5520.69 -2720.24 L5520.69 -2719.95 L5520.55 -2719.67 L5520.41 -2719.52 L5519.98 -2719.38 M 5518.69 -2719.38L5519.98 -2719.38 L5520.41 -2719.24 L5520.55 -2719.09 L5520.69 -2718.81 L5520.69 -2718.38 L5520.55 -2718.09 L5520.41 -2717.95 L5519.98 -2717.8 L5518.69 -2717.8 M 5522.5 -2720.81L5522.21 -2720.67 L5521.92 -2720.38 L5521.78 -2720.1 L5521.64 -2719.67 L5521.64 -2718.95 L5521.78 -2718.52 L5521.92 -2718.23 L5522.21 -2717.95 L5522.5 -2717.8 L5523.07 -2717.8 L5523.36 -2717.95 L5523.64 -2718.23 L5523.79 -2718.52 L5523.93 -2718.95 L5523.93 -2719.67 L5523.79 -2720.1 L5523.64 -2720.38 L5523.36 -2720.67 L5523.07 -2720.81 L5522.5 -2720.81 M 5522.93 -2718.38L5523.79 -2717.52 M 5525.02 -2720.1L5525.02 -2720.24 L5525.16 -2720.52 L5525.3 -2720.67 L5525.59 -2720.81 L5526.16 -2720.81 L5526.45 -2720.67 L5526.59 -2720.52 L5526.73 -2720.24 L5526.73 -2719.95 L5526.59 -2719.67 L5526.31 -2719.24 L5524.87 -2717.8 L5526.88 -2717.8 M 5529.25 -2720.81L5527.82 -2718.81 L5529.97 -2718.81 M 5529.25 -2720.81L5529.25 -2717.8 M 5531.77 -2720.81L5531.34 -2720.67 L5531.06 -2720.24 L5530.92 -2719.52 L5530.92 -2719.09 L5531.06 -2718.38 L5531.34 -2717.95 L5531.77 -2717.8 L5532.06 -2717.8 L5532.49 -2717.95 L5532.78 -2718.38 L5532.92 -2719.09 L5532.92 -2719.52 L5532.78 -2720.24 L5532.49 -2720.67 L5532.06 -2720.81 L5531.77 -2720.81 M 5535.87 -2720.81L5534.44 -2717.8 M 5533.86 -2720.81L5535.87 -2720.81 M 5538.53 -2720.81L5537.1 -2720.81 L5536.96 -2719.52 L5537.1 -2719.67 L5537.53 -2719.81 L5537.96 -2719.81 L5538.39 -2719.67 L5538.67 -2719.38 L5538.82 -2718.95 L5538.82 -2718.66 L5538.67 -2718.23 L5538.39 -2717.95 L5537.96 -2717.8 L5537.53 -2717.8 L5537.1 -2717.95 L5536.96 -2718.09 L5536.81 -2718.38 M 5539.76 -2720.81L5539.76 -2717.8 M 5539.76 -2720.81L5541.05 -2720.81 L5541.48 -2720.67 L5541.62 -2720.52 L5541.77 -2720.24 L5541.77 -2719.95 L5541.62 -2719.67 L5541.48 -2719.52 L5541.05 -2719.38 L5539.76 -2719.38 M 5540.76 -2719.38L5541.77 -2717.8 M 5544.86 -2720.1L5544.72 -2720.38 L5544.43 -2720.67 L5544.14 -2720.81 L5543.57 -2720.81 L5543.28 -2720.67 L5543 -2720.38 L5542.85 -2720.1 L5542.71 -2719.67 L5542.71 -2718.95 L5542.85 -2718.52 L5543 -2718.23 L5543.28 -2717.95 L5543.57 -2717.8 L5544.14 -2717.8 L5544.43 -2717.95 L5544.72 -2718.23 L5544.86 -2718.52 L5544.86 -2718.95 M 5544.14 -2718.95L5544.86 -2718.95 M 5546.81 -2720.81L5546.81 -2717.8 M 5545.8 -2720.81L5547.81 -2720.81 M 5548.75 -2720.81L5548.75 -2717.8 M 5548.75 -2720.81L5550.04 -2720.81 L5550.47 -2720.67 L5550.61 -2720.52 L5550.76 -2720.24 L5550.76 -2719.95 L5550.61 -2719.67 L5550.47 -2719.52 L5550.04 -2719.38 L5548.75 -2719.38 M 5549.76 -2719.38L5550.76 -2717.8 ~none~rep4696~~0~#@$ARC~0.7874~3~~M 5507.58662 -2729.788 A 0.5905 0.5905 0 1 0 5507.58671 -2729.80439~~rep4697~0#@$TRACK~0.7874~3~~5492.3706 -2740.3295 5492.3706 -2742.1005 5494.1416 -2742.1005~rep4715~0#@$TRACK~0.7874~3~~5492.3706 -2730.2895 5492.3706 -2728.5185 5494.1416 -2728.5185~rep4717~0#@$TRACK~0.7874~3~~5504.1816 -2728.5185 5505.9526 -2728.5185 5505.9526 -2730.2895~rep4719~0#@$TRACK~0.7874~3~~5504.1816 -2742.1005 5505.9526 -2742.1005 5505.9526 -2740.3295~rep4721~0#@$PAD~RECT~5504.673~-2732.357~2.7559~0.9842~1~U6-1~1~0~5506.051 -2731.8649 5503.2951 -2731.8649 5503.2951 -2732.8491 5506.051 -2732.8491~180~rep4698~0~~Y~0~0~0.2~5504.673,-2732.357#@$PAD~RECT~5504.673~-2734.326~2.7559~0.9842~1~BAT+~2~0~5506.051 -2733.8339 5503.2951 -2733.8339 5503.2951 -2734.8181 5506.051 -2734.8181~180~rep4699~0~~Y~0~0~0.2~5504.673,-2734.326#@$PAD~RECT~5504.673~-2736.294~2.7559~0.9842~1~BAT+~3~0~5506.051 -2735.8019 5503.2951 -2735.8019 5503.2951 -2736.7861 5506.051 -2736.7861~180~rep4700~0~~Y~0~0~0.2~5504.673,-2736.294#@$PAD~RECT~5504.673~-2738.263~2.7559~0.9842~1~U6-4~4~0~5506.051 -2737.7709 5503.2951 -2737.7709 5503.2951 -2738.7551 5506.051 -2738.7551~180~rep4701~0~~Y~0~0~0.2~5504.673,-2738.263#@$PAD~RECT~5502.114~-2740.822~0.9842~2.7559~1~U6-5~5~0~5502.6061 -2739.444 5501.6219 -2739.444 5501.6219 -2742.1999 5502.6061 -2742.1999~180~rep4702~0~~Y~0~0~0.2~5502.114,-2740.822#@$PAD~RECT~5500.146~-2740.822~0.9842~2.7559~1~U6-6~6~0~5500.6381 -2739.444 5499.6539 -2739.444 5499.6539 -2742.1999 5500.6381 -2742.1999~180~rep4703~0~~Y~0~0~0.2~5500.146,-2740.822#@$PAD~RECT~5498.177~-2740.822~0.9842~2.7559~1~U6-7~7~0~5498.6691 -2739.444 5497.6849 -2739.444 5497.6849 -2742.1999 5498.6691 -2742.1999~180~rep4704~0~~Y~0~0~0.2~5498.177,-2740.822#@$PAD~RECT~5496.209~-2740.822~0.9842~2.7559~1~GND~8~0~5496.7011 -2739.444 5495.7169 -2739.444 5495.7169 -2742.1999 5496.7011 -2742.1999~180~rep4705~0~~Y~0~0~0.2~5496.209,-2740.822#@$PAD~RECT~5493.65~-2738.263~2.7559~0.9842~1~U6-9~9~0~5495.028 -2737.7709 5492.272 -2737.7709 5492.272 -2738.7551 5495.028 -2738.7551~180~rep4706~0~~Y~0~0~0.2~5493.65,-2738.263#@$PAD~RECT~5493.65~-2736.294~2.7559~0.9842~1~VIN~10~0~5495.028 -2735.8019 5492.272 -2735.8019 5492.272 -2736.7861 5495.028 -2736.7861~180~rep4707~0~~Y~0~0~0.2~5493.65,-2736.294#@$PAD~RECT~5493.65~-2734.326~2.7559~0.9842~1~VIN~11~0~5495.028 -2733.8339 5492.272 -2733.8339 5492.272 -2734.8181 5495.028 -2734.8181~180~rep4708~0~~Y~0~0~0.2~5493.65,-2734.326#@$PAD~RECT~5493.65~-2732.357~2.7559~0.9842~1~U6-12~12~0~5495.028 -2731.8649 5492.272 -2731.8649 5492.272 -2732.8491 5495.028 -2732.8491~180~rep4709~0~~Y~0~0~0.2~5493.65,-2732.357#@$PAD~RECT~5496.209~-2729.798~0.9842~2.7559~1~VBUS~13~0~5496.7011 -2728.42 5495.7169 -2728.42 5495.7169 -2731.1759 5496.7011 -2731.1759~180~rep4710~0~~Y~0~0~0.2~5496.209,-2729.798#@$PAD~RECT~5498.177~-2729.798~0.9842~2.7559~1~U6-14~14~0~5498.6691 -2728.42 5497.6849 -2728.42 5497.6849 -2731.1759 5498.6691 -2731.1759~180~rep4711~0~~Y~0~0~0.2~5498.177,-2729.798#@$PAD~RECT~5500.146~-2729.798~0.9842~2.7559~1~U6-15~15~0~5500.6381 -2728.42 5499.6539 -2728.42 5499.6539 -2731.1759 5500.6381 -2731.1759~180~rep4712~0~~Y~0~0~0.2~5500.146,-2729.798#@$PAD~RECT~5502.114~-2729.798~0.9842~2.7559~1~U6-16~16~0~5502.6061 -2728.42 5501.6219 -2728.42 5501.6219 -2731.1759 5502.6061 -2731.1759~180~rep4713~0~~Y~0~0~0.2~5502.114,-2729.798#@$PAD~RECT~5499.161~-2735.31~6.2992~6.2992~1~GND~17~0~5502.3106 -2732.1604 5496.0114 -2732.1604 5496.0114 -2738.4596 5502.3106 -2738.4596~180~rep4714~0~~Y~0~0~0.2~5499.161,-2735.31","LIB~5522.8227~-2731.0972~package`A0402`value`10K~180~~ggee0ee0f05e2f0b4da~1~~~0~~yes~~#@$TEXT~P~5528.02~-2731.137~0.4724~0~0~3~~3.1496~R33~M 5528.02 -2734.31L5528.02 -2731.31 M 5528.02 -2734.31L5529.31 -2734.31 L5529.74 -2734.17 L5529.88 -2734.03 L5530.02 -2733.74 L5530.02 -2733.46 L5529.88 -2733.17 L5529.74 -2733.03 L5529.31 -2732.88 L5528.02 -2732.88 M 5529.02 -2732.88L5530.02 -2731.31 M 5531.26 -2734.31L5532.83 -2734.31 L5531.97 -2733.17 L5532.4 -2733.17 L5532.69 -2733.03 L5532.83 -2732.88 L5532.97 -2732.45 L5532.97 -2732.17 L5532.83 -2731.74 L5532.54 -2731.45 L5532.11 -2731.31 L5531.68 -2731.31 L5531.26 -2731.45 L5531.11 -2731.59 L5530.97 -2731.88 M 5534.2 -2734.31L5535.78 -2734.31 L5534.92 -2733.17 L5535.35 -2733.17 L5535.64 -2733.03 L5535.78 -2732.88 L5535.92 -2732.45 L5535.92 -2732.17 L5535.78 -2731.74 L5535.49 -2731.45 L5535.06 -2731.31 L5534.63 -2731.31 L5534.2 -2731.45 L5534.06 -2731.59 L5533.92 -2731.88 ~none~rep4724~~0~#@$TEXT~N~5539.555~-2730.703~0.4724~0~0~3~~3.1496~10K~M 5539.56 -2733.31L5539.84 -2733.45 L5540.27 -2733.88 L5540.27 -2730.88 M 5542.07 -2733.88L5541.65 -2733.74 L5541.36 -2733.31 L5541.22 -2732.59 L5541.22 -2732.16 L5541.36 -2731.45 L5541.65 -2731.02 L5542.07 -2730.88 L5542.36 -2730.88 L5542.79 -2731.02 L5543.08 -2731.45 L5543.22 -2732.16 L5543.22 -2732.59 L5543.08 -2733.31 L5542.79 -2733.74 L5542.36 -2733.88 L5542.07 -2733.88 M 5544.16 -2733.88L5544.16 -2730.88 M 5546.17 -2733.88L5544.16 -2731.88 M 5544.88 -2732.59L5546.17 -2730.88 ~none~rep4725~~0~#@$TRACK~0.7874~3~~5526.4227 -2733.0472 5526.4227 -2728.9472 5518.9727 -2728.9472 5518.9727 -2733.0472 5526.4227 -2733.0472~rep4728~0#@$PAD~RECT~5524.623~-2731.097~1.9685~2.3622~1~GND~2~0~5525.6073 -2729.9159 5523.6387 -2729.9159 5523.6387 -2732.2781 5525.6073 -2732.2781~180~rep4726~0~~Y~0~0~0.2~5524.623,-2731.097#@$PAD~RECT~5521.023~-2731.097~1.9685~2.3622~1~U6-1~1~0~5522.0073 -2729.9159 5520.0388 -2729.9159 5520.0388 -2732.2781 5522.0073 -2732.2781~180~rep4727~0~~Y~0~0~0.2~5521.023,-2731.097","LIB~5496.1692~-2720.2311~package`A0402`value`4.12K~270~~ggec7fcac2dc179deab~1~~~0~~yes~~#@$TEXT~P~5486.76~-2714.562~0.4724~0~0~3~~3.1496~R34~M 5486.76 -2717.74L5486.76 -2714.73 M 5486.76 -2717.74L5488.05 -2717.74 L5488.48 -2717.6 L5488.62 -2717.45 L5488.76 -2717.17 L5488.76 -2716.88 L5488.62 -2716.59 L5488.48 -2716.45 L5488.05 -2716.31 L5486.76 -2716.31 M 5487.76 -2716.31L5488.76 -2714.73 M 5490 -2717.74L5491.57 -2717.74 L5490.71 -2716.59 L5491.14 -2716.59 L5491.43 -2716.45 L5491.57 -2716.31 L5491.71 -2715.88 L5491.71 -2715.59 L5491.57 -2715.16 L5491.28 -2714.88 L5490.85 -2714.73 L5490.42 -2714.73 L5490 -2714.88 L5489.85 -2715.02 L5489.71 -2715.31 M 5494.09 -2717.74L5492.66 -2715.74 L5494.81 -2715.74 M 5494.09 -2717.74L5494.09 -2714.73 ~none~rep4733~~0~#@$TEXT~N~5495.539~-2712.987~0.4724~0~0~3~~3.1496~4.12K~M 5496.97 -2716.17L5495.54 -2714.16 L5497.69 -2714.16 M 5496.97 -2716.17L5496.97 -2713.16 M 5498.77 -2713.87L5498.63 -2713.73 L5498.77 -2713.59 L5498.92 -2713.73 L5498.77 -2713.87 M 5499.86 -2715.59L5500.15 -2715.74 L5500.58 -2716.17 L5500.58 -2713.16 M 5501.67 -2715.45L5501.67 -2715.59 L5501.81 -2715.88 L5501.95 -2716.02 L5502.24 -2716.17 L5502.81 -2716.17 L5503.1 -2716.02 L5503.24 -2715.88 L5503.38 -2715.59 L5503.38 -2715.31 L5503.24 -2715.02 L5502.96 -2714.59 L5501.52 -2713.16 L5503.53 -2713.16 M 5504.47 -2716.17L5504.47 -2713.16 M 5506.48 -2716.17L5504.47 -2714.16 M 5505.19 -2714.88L5506.48 -2713.16 ~none~rep4734~~0~#@$TRACK~0.7874~3~~5498.3192 -2723.8311 5498.3192 -2716.3811 5494.2192 -2716.3811 5494.2192 -2723.8311 5498.3192 -2723.8311~rep4737~0#@$PAD~RECT~5496.169~-2722.031~1.9685~2.3622~1~U6-14~2~0~5497.3501 -2723.0153 5497.3501 -2721.0467 5494.9879 -2721.0467 5494.9879 -2723.0153~270~rep4735~0~~Y~0~0~0.2~5496.169,-2722.031#@$PAD~RECT~5496.169~-2718.431~1.9685~2.3622~1~GND~1~0~5497.3501 -2719.4153 5497.3501 -2717.4467 5494.9879 -2717.4467 5494.9879 -2719.4153~270~rep4736~0~~Y~0~0~0.2~5496.169,-2718.431","LIB~5479.0489~-2716.7002~package`A0402`value`1.2K~180~~ggeed5ed49cac6cc905~1~~~0~~yes~~#@$TEXT~P~5483.734~-2716.858~0.4724~0~0~3~~3.1496~R35~M 5483.73 -2720.04L5483.73 -2717.03 M 5483.73 -2720.04L5485.02 -2720.04 L5485.45 -2719.89 L5485.6 -2719.75 L5485.74 -2719.46 L5485.74 -2719.18 L5485.6 -2718.89 L5485.45 -2718.75 L5485.02 -2718.6 L5483.73 -2718.6 M 5484.74 -2718.6L5485.74 -2717.03 M 5486.97 -2720.04L5488.54 -2720.04 L5487.69 -2718.89 L5488.11 -2718.89 L5488.4 -2718.75 L5488.54 -2718.6 L5488.69 -2718.17 L5488.69 -2717.89 L5488.54 -2717.46 L5488.26 -2717.17 L5487.83 -2717.03 L5487.4 -2717.03 L5486.97 -2717.17 L5486.83 -2717.32 L5486.68 -2717.6 M 5491.35 -2720.04L5489.92 -2720.04 L5489.78 -2718.75 L5489.92 -2718.89 L5490.35 -2719.03 L5490.78 -2719.03 L5491.21 -2718.89 L5491.49 -2718.6 L5491.64 -2718.17 L5491.64 -2717.89 L5491.49 -2717.46 L5491.21 -2717.17 L5490.78 -2717.03 L5490.35 -2717.03 L5489.92 -2717.17 L5489.78 -2717.32 L5489.63 -2717.6 ~none~rep4742~~0~#@$TEXT~N~5473.773~-2712.566~0.3937~0~0~3~~2.7559~1.2K~M 5473.77 -2714.85L5474.02 -2714.97 L5474.4 -2715.35 L5474.4 -2712.72 M 5475.35 -2713.34L5475.23 -2713.22 L5475.35 -2713.09 L5475.48 -2713.22 L5475.35 -2713.34 M 5476.43 -2714.72L5476.43 -2714.85 L5476.55 -2715.1 L5476.68 -2715.22 L5476.93 -2715.35 L5477.43 -2715.35 L5477.68 -2715.22 L5477.81 -2715.1 L5477.93 -2714.85 L5477.93 -2714.6 L5477.81 -2714.35 L5477.56 -2713.97 L5476.3 -2712.72 L5478.06 -2712.72 M 5478.88 -2715.35L5478.88 -2712.72 M 5480.64 -2715.35L5478.88 -2713.59 M 5479.51 -2714.22L5480.64 -2712.72 ~none~rep4743~~0~#@$TRACK~0.7874~3~~5482.6489 -2718.6502 5475.1989 -2718.6502 5475.1989 -2714.5502 5482.6489 -2714.5502 5482.6489 -2718.6502~rep4746~0#@$PAD~RECT~5477.249~-2716.7~1.9685~2.3622~1~GND~1~0~5478.2333 -2715.5189 5476.2647 -2715.5189 5476.2647 -2717.8811 5478.2333 -2717.8811~180~rep4744~0~~Y~0~0~0.2~5477.249,-2716.7#@$PAD~RECT~5480.849~-2716.7~1.9685~2.3622~1~U6-12~2~0~5481.8333 -2715.5189 5479.8648 -2715.5189 5479.8648 -2717.8811 5481.8333 -2717.8811~180~rep4745~0~~Y~0~0~0.2~5480.849,-2716.7","LIB~5522.5078~-2725.6642~package`A0402`value`1.2K~360~~ggeee084f684bde39fa~1~~~0~~yes~~#@$TEXT~P~5527.665~-2725.664~0.4724~0~0~3~~3.1496~R36~M 5527.67 -2728.84L5527.67 -2725.84 M 5527.67 -2728.84L5528.95 -2728.84 L5529.38 -2728.7 L5529.53 -2728.56 L5529.67 -2728.27 L5529.67 -2727.98 L5529.53 -2727.7 L5529.38 -2727.55 L5528.95 -2727.41 L5527.67 -2727.41 M 5528.67 -2727.41L5529.67 -2725.84 M 5530.9 -2728.84L5532.48 -2728.84 L5531.62 -2727.7 L5532.05 -2727.7 L5532.33 -2727.55 L5532.48 -2727.41 L5532.62 -2726.98 L5532.62 -2726.69 L5532.48 -2726.27 L5532.19 -2725.98 L5531.76 -2725.84 L5531.33 -2725.84 L5530.9 -2725.98 L5530.76 -2726.12 L5530.61 -2726.41 M 5535.28 -2728.41L5535.14 -2728.7 L5534.71 -2728.84 L5534.42 -2728.84 L5533.99 -2728.7 L5533.71 -2728.27 L5533.56 -2727.55 L5533.56 -2726.84 L5533.71 -2726.27 L5533.99 -2725.98 L5534.42 -2725.84 L5534.57 -2725.84 L5535 -2725.98 L5535.28 -2726.27 L5535.42 -2726.69 L5535.42 -2726.84 L5535.28 -2727.27 L5535 -2727.55 L5534.57 -2727.7 L5534.42 -2727.7 L5533.99 -2727.55 L5533.71 -2727.27 L5533.56 -2726.84 ~none~rep4751~~0~#@$TEXT~N~5539.437~-2725.389~0.4724~0~0~3~~3.1496~1.2K~M 5539.44 -2727.99L5539.72 -2728.14 L5540.15 -2728.57 L5540.15 -2725.56 M 5541.24 -2726.28L5541.1 -2726.13 L5541.24 -2725.99 L5541.38 -2726.13 L5541.24 -2726.28 M 5542.47 -2727.85L5542.47 -2727.99 L5542.62 -2728.28 L5542.76 -2728.42 L5543.04 -2728.57 L5543.62 -2728.57 L5543.9 -2728.42 L5544.05 -2728.28 L5544.19 -2727.99 L5544.19 -2727.71 L5544.05 -2727.42 L5543.76 -2726.99 L5542.33 -2725.56 L5544.33 -2725.56 M 5545.28 -2728.57L5545.28 -2725.56 M 5547.28 -2728.57L5545.28 -2726.56 M 5545.99 -2727.28L5547.28 -2725.56 ~none~rep4752~~0~#@$TRACK~0.7874~3~~5526.3578 -2723.7142 5518.9078 -2723.7142 5518.9078 -2727.8142 5526.3578 -2727.8142 5526.3578 -2723.7142~rep4755~0#@$PAD~RECT~5524.308~-2725.664~1.9685~2.3622~1~GND~1~0~5523.3237 -2726.8451 5525.2923 -2726.8451 5525.2923 -2724.4829 5523.3237 -2724.4829~0~rep4753~0~~Y~0~0~0.2~5524.308,-2725.664#@$PAD~RECT~5520.708~-2725.664~1.9685~2.3622~1~U6-16~2~0~5519.7237 -2726.8451 5521.6923 -2726.8451 5521.6923 -2724.4829 5519.7237 -2724.4829~0~rep4754~0~~Y~0~0~0.2~5520.708,-2725.664","LIB~5512.7834~-2746.2547~package`A0402`value`10K~180~~gge0e69257913149112~1~~~0~~yes~~#@$TEXT~P~5508.61~-2741.57~0.4724~0~0~3~~3.1496~R37~M 5508.61 -2744.75L5508.61 -2741.74 M 5508.61 -2744.75L5509.9 -2744.75 L5510.33 -2744.6 L5510.47 -2744.46 L5510.61 -2744.18 L5510.61 -2743.89 L5510.47 -2743.6 L5510.33 -2743.46 L5509.9 -2743.32 L5508.61 -2743.32 M 5509.61 -2743.32L5510.61 -2741.74 M 5511.85 -2744.75L5513.42 -2744.75 L5512.56 -2743.6 L5512.99 -2743.6 L5513.28 -2743.46 L5513.42 -2743.32 L5513.56 -2742.89 L5513.56 -2742.6 L5513.42 -2742.17 L5513.13 -2741.88 L5512.7 -2741.74 L5512.28 -2741.74 L5511.85 -2741.88 L5511.7 -2742.03 L5511.56 -2742.31 M 5516.51 -2744.75L5515.08 -2741.74 M 5514.51 -2744.75L5516.51 -2744.75 ~none~rep4760~~0~#@$TEXT~N~5508.965~-2750.703~0.4724~0~0~3~~3.1496~10K~M 5508.96 -2753.31L5509.25 -2753.45 L5509.68 -2753.88 L5509.68 -2750.88 M 5511.48 -2753.88L5511.05 -2753.74 L5510.77 -2753.31 L5510.63 -2752.59 L5510.63 -2752.16 L5510.77 -2751.45 L5511.05 -2751.02 L5511.48 -2750.88 L5511.77 -2750.88 L5512.2 -2751.02 L5512.49 -2751.45 L5512.63 -2752.16 L5512.63 -2752.59 L5512.49 -2753.31 L5512.2 -2753.74 L5511.77 -2753.88 L5511.48 -2753.88 M 5513.57 -2753.88L5513.57 -2750.88 M 5515.58 -2753.88L5513.57 -2751.88 M 5514.29 -2752.59L5515.58 -2750.88 ~none~rep4761~~0~#@$TRACK~0.7874~3~~5516.3833 -2748.2047 5516.3833 -2744.1047 5508.9333 -2744.1047 5508.9333 -2748.2047 5516.3833 -2748.2047~rep4764~0#@$PAD~RECT~5514.583~-2746.255~1.9685~2.3622~1~GND~2~0~5515.5673 -2745.0739 5513.5987 -2745.0739 5513.5987 -2747.4361 5515.5673 -2747.4361~180~rep4762~0~~Y~0~0~0.2~5514.583,-2746.255#@$PAD~RECT~5510.983~-2746.255~1.9685~2.3622~1~U6-4~1~0~5511.9673 -2745.0739 5509.9988 -2745.0739 5509.9988 -2747.4361 5511.9673 -2747.4361~180~rep4763~0~~Y~0~0~0.2~5510.983,-2746.255","LIB~5480.0274~-2746.0185~package`A0402`value`1.2K~180~~gge9e71ce6b7342da3b~1~~~0~~yes~~#@$TEXT~P~5484.752~-2747.239~0.4724~0~0~3~~3.1496~R29~M 5484.75 -2750.42L5484.75 -2747.41 M 5484.75 -2750.42L5486.04 -2750.42 L5486.47 -2750.27 L5486.61 -2750.13 L5486.76 -2749.84 L5486.76 -2749.56 L5486.61 -2749.27 L5486.47 -2749.13 L5486.04 -2748.99 L5484.75 -2748.99 M 5485.75 -2748.99L5486.76 -2747.41 M 5487.84 -2749.7L5487.84 -2749.84 L5487.99 -2750.13 L5488.13 -2750.27 L5488.42 -2750.42 L5488.99 -2750.42 L5489.28 -2750.27 L5489.42 -2750.13 L5489.56 -2749.84 L5489.56 -2749.56 L5489.42 -2749.27 L5489.13 -2748.84 L5487.7 -2747.41 L5489.71 -2747.41 M 5492.51 -2749.41L5492.37 -2748.99 L5492.08 -2748.7 L5491.65 -2748.56 L5491.51 -2748.56 L5491.08 -2748.7 L5490.79 -2748.99 L5490.65 -2749.41 L5490.65 -2749.56 L5490.79 -2749.99 L5491.08 -2750.27 L5491.51 -2750.42 L5491.65 -2750.42 L5492.08 -2750.27 L5492.37 -2749.99 L5492.51 -2749.41 L5492.51 -2748.7 L5492.37 -2747.98 L5492.08 -2747.55 L5491.65 -2747.41 L5491.37 -2747.41 L5490.94 -2747.55 L5490.79 -2747.84 ~none~rep4769~~0~#@$TEXT~N~5476.681~-2751.058~0.4724~0~0~3~~3.1496~1.2K~M 5476.68 -2753.66L5476.97 -2753.81 L5477.4 -2754.24 L5477.4 -2751.23 M 5478.48 -2751.95L5478.34 -2751.8 L5478.48 -2751.66 L5478.63 -2751.8 L5478.48 -2751.95 M 5479.72 -2753.52L5479.72 -2753.66 L5479.86 -2753.95 L5480 -2754.09 L5480.29 -2754.24 L5480.86 -2754.24 L5481.15 -2754.09 L5481.29 -2753.95 L5481.43 -2753.66 L5481.43 -2753.38 L5481.29 -2753.09 L5481 -2752.66 L5479.57 -2751.23 L5481.58 -2751.23 M 5482.52 -2754.24L5482.52 -2751.23 M 5484.53 -2754.24L5482.52 -2752.23 M 5483.24 -2752.95L5484.53 -2751.23 ~none~rep4770~~0~#@$TRACK~0.7874~3~~5483.6274 -2747.9685 5483.6274 -2743.8685 5476.1774 -2743.8685 5476.1774 -2747.9685 5483.6274 -2747.9685~rep4773~0#@$PAD~RECT~5481.827~-2746.018~1.9685~2.3622~1~VIN~2~0~5482.8113 -2744.8369 5480.8428 -2744.8369 5480.8428 -2747.1991 5482.8113 -2747.1991~180~rep4771~0~~Y~0~0~0.2~5481.827,-2746.018#@$PAD~RECT~5478.227~-2746.018~1.9685~2.3622~1~LED2-1~1~0~5479.2113 -2744.8369 5477.2427 -2744.8369 5477.2427 -2747.1991 5479.2113 -2747.1991~180~rep4772~0~~Y~0~0~0.2~5478.227,-2746.018","LIB~5478.099~-2703.1051~package`A0603`value`1uF~90~~ggec8e923f96b539988~1~~~0~~yes~~#@$TEXT~P~5470.405~-2714.315~0.4724~0~0~3~~3.1496~C16~M 5472.55 -2716.78L5472.41 -2717.06 L5472.12 -2717.35 L5471.84 -2717.49 L5471.26 -2717.49 L5470.98 -2717.35 L5470.69 -2717.06 L5470.55 -2716.78 L5470.4 -2716.35 L5470.4 -2715.63 L5470.55 -2715.2 L5470.69 -2714.92 L5470.98 -2714.63 L5471.26 -2714.49 L5471.84 -2714.49 L5472.12 -2714.63 L5472.41 -2714.92 L5472.55 -2715.2 M 5473.5 -2716.92L5473.78 -2717.06 L5474.21 -2717.49 L5474.21 -2714.49 M 5476.88 -2717.06L5476.73 -2717.35 L5476.3 -2717.49 L5476.02 -2717.49 L5475.59 -2717.35 L5475.3 -2716.92 L5475.16 -2716.2 L5475.16 -2715.49 L5475.3 -2714.92 L5475.59 -2714.63 L5476.02 -2714.49 L5476.16 -2714.49 L5476.59 -2714.63 L5476.88 -2714.92 L5477.02 -2715.35 L5477.02 -2715.49 L5476.88 -2715.92 L5476.59 -2716.2 L5476.16 -2716.35 L5476.02 -2716.35 L5475.59 -2716.2 L5475.3 -2715.92 L5475.16 -2715.49 ~none~rep4778~~0~#@$TEXT~N~5470.602~-2703.213~0.4724~0~0~3~~3.1496~1uF~M 5470.6 -2705.82L5470.89 -2705.96 L5471.32 -2706.39 L5471.32 -2703.38 M 5472.26 -2705.39L5472.26 -2703.96 L5472.41 -2703.53 L5472.69 -2703.38 L5473.12 -2703.38 L5473.41 -2703.53 L5473.84 -2703.96 M 5473.84 -2705.39L5473.84 -2703.38 M 5474.78 -2706.39L5474.78 -2703.38 M 5474.78 -2706.39L5476.64 -2706.39 M 5474.78 -2704.96L5475.93 -2704.96 ~none~rep4779~~0~#@$TRACK~1.2~3~~5481.599 -2701.3492 5481.599 -2696.8492 5474.599 -2696.8492 5474.599 -2701.3492~rep4782~0#@$TRACK~1.2~3~~5481.599 -2704.3492 5481.599 -2709.3492 5474.599 -2709.3492 5474.599 -2704.3492~rep4784~0#@$PAD~RECT~5478.099~-2699.64~4.3307~3.5433~1~GND~1~0~5476.3273 -2697.4746 5476.3273 -2701.8053 5479.8707 -2701.8053 5479.8707 -2697.4746~90~rep4780~0~~Y~0~0~0.2~5478.099,-2699.64#@$PAD~RECT~5478.099~-2706.57~4.3307~3.5433~1~VBUS~2~0~5476.3273 -2704.4046 5476.3273 -2708.7354 5479.8707 -2708.7354 5479.8707 -2704.4046~90~rep4781~0~~Y~0~0~0.2~5478.099,-2706.57","LIB~5501.1692~-2720.2704~package`A0402`value`10K~270~~gge2eb3813281b987ab~1~~~0~~yes~~#@$TEXT~P~5503.335~-2714.877~0.4724~0~0~3~~3.1496~R38~M 5503.33 -2718.05L5503.33 -2715.05 M 5503.33 -2718.05L5504.62 -2718.05 L5505.05 -2717.91 L5505.2 -2717.77 L5505.34 -2717.48 L5505.34 -2717.2 L5505.2 -2716.91 L5505.05 -2716.77 L5504.62 -2716.62 L5503.33 -2716.62 M 5504.34 -2716.62L5505.34 -2715.05 M 5506.57 -2718.05L5508.14 -2718.05 L5507.29 -2716.91 L5507.72 -2716.91 L5508 -2716.77 L5508.14 -2716.62 L5508.29 -2716.19 L5508.29 -2715.91 L5508.14 -2715.48 L5507.86 -2715.19 L5507.43 -2715.05 L5507 -2715.05 L5506.57 -2715.19 L5506.43 -2715.33 L5506.28 -2715.62 M 5509.95 -2718.05L5509.52 -2717.91 L5509.38 -2717.63 L5509.38 -2717.34 L5509.52 -2717.05 L5509.81 -2716.91 L5510.38 -2716.77 L5510.81 -2716.62 L5511.09 -2716.34 L5511.24 -2716.05 L5511.24 -2715.62 L5511.09 -2715.33 L5510.95 -2715.19 L5510.52 -2715.05 L5509.95 -2715.05 L5509.52 -2715.19 L5509.38 -2715.33 L5509.23 -2715.62 L5509.23 -2716.05 L5509.38 -2716.34 L5509.66 -2716.62 L5510.09 -2716.77 L5510.66 -2716.91 L5510.95 -2717.05 L5511.09 -2717.34 L5511.09 -2717.63 L5510.95 -2717.91 L5510.52 -2718.05 L5509.95 -2718.05 ~none~rep4789~~0~#@$TEXT~N~5500.146~-2712.121~0.4724~0~0~3~~3.1496~10K~M 5500.15 -2714.73L5500.43 -2714.87 L5500.86 -2715.3 L5500.86 -2712.29 M 5502.67 -2715.3L5502.24 -2715.16 L5501.95 -2714.73 L5501.81 -2714.01 L5501.81 -2713.58 L5501.95 -2712.87 L5502.24 -2712.44 L5502.67 -2712.29 L5502.95 -2712.29 L5503.38 -2712.44 L5503.67 -2712.87 L5503.81 -2713.58 L5503.81 -2714.01 L5503.67 -2714.73 L5503.38 -2715.16 L5502.95 -2715.3 L5502.67 -2715.3 M 5504.76 -2715.3L5504.76 -2712.29 M 5506.76 -2715.3L5504.76 -2713.29 M 5505.47 -2714.01L5506.76 -2712.29 ~none~rep4790~~0~#@$TRACK~0.7874~3~~5503.3192 -2723.8704 5503.3192 -2716.4204 5499.2192 -2716.4204 5499.2192 -2723.8704 5503.3192 -2723.8704~rep4793~0#@$PAD~RECT~5501.169~-2722.07~1.9685~2.3622~1~U6-15~2~0~5502.3501 -2723.0543 5502.3501 -2721.0857 5499.9879 -2721.0857 5499.9879 -2723.0543~270~rep4791~0~~Y~0~0~0.2~5501.169,-2722.07#@$PAD~RECT~5501.169~-2718.47~1.9685~2.3622~1~GND~1~0~5502.3501 -2719.4543 5502.3501 -2717.4857 5499.9879 -2717.4857 5499.9879 -2719.4543~270~rep4792~0~~Y~0~0~0.2~5501.169,-2718.47","LIB~5702.1141~-2794.9161~package`A0402`value`100nF~270~~gge49133e3f49d3504d~1~~~0~~yes~~#@$TEXT~P~5691.839~-2796.018~0.433~0~0~3~~2.7559~C44~M 5693.72 -2798.17L5693.59 -2798.42 L5693.34 -2798.67 L5693.09 -2798.8 L5692.59 -2798.8 L5692.34 -2798.67 L5692.09 -2798.42 L5691.96 -2798.17 L5691.84 -2797.8 L5691.84 -2797.17 L5691.96 -2796.8 L5692.09 -2796.54 L5692.34 -2796.29 L5692.59 -2796.17 L5693.09 -2796.17 L5693.34 -2796.29 L5693.59 -2796.54 L5693.72 -2796.8 M 5695.8 -2798.8L5694.54 -2797.05 L5696.42 -2797.05 M 5695.8 -2798.8L5695.8 -2796.17 M 5698.5 -2798.8L5697.25 -2797.05 L5699.13 -2797.05 M 5698.5 -2798.8L5698.5 -2796.17 ~none~rep4798~~0~#@$TEXT~N~5686.822~-2791.52~0.4724~0~0~3~~3.1496~100nF~M 5686.82 -2794.13L5687.11 -2794.27 L5687.54 -2794.7 L5687.54 -2791.69 M 5689.34 -2794.7L5688.91 -2794.55 L5688.63 -2794.13 L5688.48 -2793.41 L5688.48 -2792.98 L5688.63 -2792.26 L5688.91 -2791.83 L5689.34 -2791.69 L5689.63 -2791.69 L5690.06 -2791.83 L5690.34 -2792.26 L5690.49 -2792.98 L5690.49 -2793.41 L5690.34 -2794.13 L5690.06 -2794.55 L5689.63 -2794.7 L5689.34 -2794.7 M 5692.29 -2794.7L5691.86 -2794.55 L5691.57 -2794.13 L5691.43 -2793.41 L5691.43 -2792.98 L5691.57 -2792.26 L5691.86 -2791.83 L5692.29 -2791.69 L5692.58 -2791.69 L5693.01 -2791.83 L5693.29 -2792.26 L5693.44 -2792.98 L5693.44 -2793.41 L5693.29 -2794.13 L5693.01 -2794.55 L5692.58 -2794.7 L5692.29 -2794.7 M 5694.38 -2793.7L5694.38 -2791.69 M 5694.38 -2793.12L5694.81 -2793.55 L5695.1 -2793.7 L5695.53 -2793.7 L5695.81 -2793.55 L5695.96 -2793.12 L5695.96 -2791.69 M 5696.9 -2794.7L5696.9 -2791.69 M 5696.9 -2794.7L5698.76 -2794.7 M 5696.9 -2793.27L5698.05 -2793.27 ~none~rep4799~~0~#@$TRACK~0.7874~3~~5704.2641 -2798.5161 5704.2641 -2791.0661 5700.1641 -2791.0661 5700.1641 -2798.5161 5704.2641 -2798.5161~rep4802~0#@$PAD~RECT~5702.114~-2796.716~1.9685~2.3622~1~AGND~2~0~5703.2951 -2797.7003 5703.2951 -2795.7317 5700.9329 -2795.7317 5700.9329 -2797.7003~270~rep4800~0~~Y~0~0~0.2~5702.114,-2796.716#@$PAD~RECT~5702.114~-2793.116~1.9685~2.3622~1~VBAT+~1~0~5703.2951 -2794.1003 5703.2951 -2792.1317 5700.9329 -2792.1317 5700.9329 -2794.1003~270~rep4801~0~~Y~0~0~0.2~5702.114,-2793.116","LIB~5472.8284~-2744.2986~package`LED0603`value`Green~360~~gge48c2d4982f4ec99a~1~~~0~~yes~~#@$TEXT~P~5474.325~-2726.74~0.4724~0~0~3~~3.1496~LED2~M 5474.32 -2729.92L5474.32 -2726.91 M 5474.32 -2726.91L5476.04 -2726.91 M 5476.99 -2729.92L5476.99 -2726.91 M 5476.99 -2729.92L5478.85 -2729.92 M 5476.99 -2728.49L5478.13 -2728.49 M 5476.99 -2726.91L5478.85 -2726.91 M 5479.79 -2729.92L5479.79 -2726.91 M 5479.79 -2729.92L5480.8 -2729.92 L5481.22 -2729.77 L5481.51 -2729.49 L5481.65 -2729.2 L5481.8 -2728.77 L5481.8 -2728.06 L5481.65 -2727.63 L5481.51 -2727.34 L5481.22 -2727.05 L5480.8 -2726.91 L5479.79 -2726.91 M 5482.89 -2729.2L5482.89 -2729.35 L5483.03 -2729.63 L5483.17 -2729.77 L5483.46 -2729.92 L5484.03 -2729.92 L5484.32 -2729.77 L5484.46 -2729.63 L5484.6 -2729.35 L5484.6 -2729.06 L5484.46 -2728.77 L5484.17 -2728.34 L5482.74 -2726.91 L5484.75 -2726.91 ~none~rep4807~~0~#@$TEXT~N~5468.143~-2737.173~0.3937~0~0~3~~2.3622~Green~M 5469.75 -2739.02L5469.65 -2739.23 L5469.43 -2739.45 L5469.22 -2739.56 L5468.79 -2739.56 L5468.57 -2739.45 L5468.36 -2739.23 L5468.25 -2739.02 L5468.14 -2738.7 L5468.14 -2738.16 L5468.25 -2737.84 L5468.36 -2737.62 L5468.57 -2737.41 L5468.79 -2737.3 L5469.22 -2737.3 L5469.43 -2737.41 L5469.65 -2737.62 L5469.75 -2737.84 L5469.75 -2738.16 M 5469.22 -2738.16L5469.75 -2738.16 M 5470.46 -2738.8L5470.46 -2737.3 M 5470.46 -2738.16L5470.57 -2738.48 L5470.78 -2738.7 L5471 -2738.8 L5471.32 -2738.8 M 5472.03 -2738.16L5473.32 -2738.16 L5473.32 -2738.38 L5473.21 -2738.59 L5473.1 -2738.7 L5472.89 -2738.8 L5472.57 -2738.8 L5472.35 -2738.7 L5472.14 -2738.48 L5472.03 -2738.16 L5472.03 -2737.95 L5472.14 -2737.62 L5472.35 -2737.41 L5472.57 -2737.3 L5472.89 -2737.3 L5473.1 -2737.41 L5473.32 -2737.62 M 5474.03 -2738.16L5475.32 -2738.16 L5475.32 -2738.38 L5475.21 -2738.59 L5475.1 -2738.7 L5474.89 -2738.8 L5474.56 -2738.8 L5474.35 -2738.7 L5474.13 -2738.48 L5474.03 -2738.16 L5474.03 -2737.95 L5474.13 -2737.62 L5474.35 -2737.41 L5474.56 -2737.3 L5474.89 -2737.3 L5475.1 -2737.41 L5475.32 -2737.62 M 5476.02 -2738.8L5476.02 -2737.3 M 5476.02 -2738.38L5476.35 -2738.7 L5476.56 -2738.8 L5476.88 -2738.8 L5477.1 -2738.7 L5477.21 -2738.38 L5477.21 -2737.3 ~none~rep4808~~0~#@$TRACK~0.7874~3~~5474.8784 -2738.5486 5474.8784 -2736.2486 5470.5784 -2736.2486 5470.5784 -2738.4986~rep4811~0#@$TRACK~0.7874~3~~5474.8784 -2744.2986 5474.8784 -2746.4986 5470.5784 -2746.4986 5470.5784 -2744.1986~rep4814~0#@$TRACK~0.7874~3~~5472.6784 -2740.4486 5473.1784 -2740.4486 5475.1284 -2742.3986 5470.3284 -2742.3986 5472.2784 -2740.4486 5473.1784 -2740.4486~rep4817~0#@$PAD~RECT~5472.828~-2744.299~2.7559~2.7559~1~LED2-1~1~0~5474.206 -2742.921 5471.4501 -2742.921 5471.4501 -2745.6769 5474.206 -2745.6769~180~rep4809~0~~Y~0~0~0.2~5472.828,-2744.299#@$PAD~RECT~5472.828~-2738.249~2.7559~2.7559~1~U6-7~2~0~5474.206 -2736.871 5471.4501 -2736.871 5471.4501 -2739.6269 5474.206 -2739.6269~180~rep4810~0~~Y~0~0~0.2~5472.828,-2738.249","LIB~5472.8284~-2721.5034~package`LED0603`value`RED~180~~gge7a65b453ee5a9ec2~1~~~0~~yes~~#@$TEXT~P~5470.033~-2742.369~0.4724~0~0~3~~3.1496~LED1~M 5470.03 -2745.55L5470.03 -2742.54 M 5470.03 -2742.54L5471.75 -2742.54 M 5472.7 -2745.55L5472.7 -2742.54 M 5472.7 -2745.55L5474.56 -2745.55 M 5472.7 -2744.12L5473.84 -2744.12 M 5472.7 -2742.54L5474.56 -2742.54 M 5475.5 -2745.55L5475.5 -2742.54 M 5475.5 -2745.55L5476.5 -2745.55 L5476.93 -2745.4 L5477.22 -2745.12 L5477.36 -2744.83 L5477.51 -2744.4 L5477.51 -2743.69 L5477.36 -2743.26 L5477.22 -2742.97 L5476.93 -2742.68 L5476.5 -2742.54 L5475.5 -2742.54 M 5478.45 -2744.98L5478.74 -2745.12 L5479.17 -2745.55 L5479.17 -2742.54 ~none~rep4823~~0~#@$TEXT~N~5466.687~-2728.984~0.3937~0~0~3~~2.3622~RED~M 5466.69 -2731.37L5466.69 -2729.11 M 5466.69 -2731.37L5467.65 -2731.37 L5467.98 -2731.26 L5468.08 -2731.15 L5468.19 -2730.94 L5468.19 -2730.72 L5468.08 -2730.51 L5467.98 -2730.4 L5467.65 -2730.29 L5466.69 -2730.29 M 5467.44 -2730.29L5468.19 -2729.11 M 5468.9 -2731.37L5468.9 -2729.11 M 5468.9 -2731.37L5470.29 -2731.37 M 5468.9 -2730.29L5469.76 -2730.29 M 5468.9 -2729.11L5470.29 -2729.11 M 5471 -2731.37L5471 -2729.11 M 5471 -2731.37L5471.75 -2731.37 L5472.08 -2731.26 L5472.29 -2731.05 L5472.4 -2730.83 L5472.51 -2730.51 L5472.51 -2729.97 L5472.4 -2729.65 L5472.29 -2729.43 L5472.08 -2729.22 L5471.75 -2729.11 L5471 -2729.11 ~none~rep4824~~0~#@$TRACK~0.7874~3~~5475.0784 -2727.3034 5475.0784 -2729.5534 5470.7784 -2729.5534 5470.7784 -2727.2534~rep4827~0#@$TRACK~0.7874~3~~5475.0784 -2721.6034 5475.0784 -2719.3034 5470.7784 -2719.3034 5470.7784 -2721.5034~rep4830~0#@$TRACK~0.7874~3~~5472.4784 -2725.3534 5473.3784 -2725.3534 5475.3284 -2723.4034 5470.5284 -2723.4034 5472.4784 -2725.3534 5472.9784 -2725.3534~rep4833~0#@$PAD~RECT~5472.828~-2721.503~2.7559~2.7559~1~LED1-1~1~0~5471.4501 -2722.881 5474.206 -2722.881 5474.206 -2720.125 5471.4501 -2720.125~0~rep4825~0~~Y~0~0~0.2~5472.828,-2721.503#@$PAD~RECT~5472.828~-2727.553~2.7559~2.7559~1~U6-9~2~0~5471.4501 -2728.9309 5474.206 -2728.9309 5474.206 -2726.175 5471.4501 -2726.175~0~rep4826~0~~Y~0~0~0.2~5472.828,-2727.553","SVGNODE~{\"gId\":\"gge10906\",\"nodeName\":\"path\",\"nodeType\":1,\"layerid\":\"4\",\"attrs\":{\"d\":\"M 5756.1206 -2553.951 L 5756.1335 -2553.9348 L 5810.8275 -2553.9363 L 5865.5215 -2553.938 L 5865.5879 -2553.8718 L 5865.6541 -2553.8057 L 5865.654 -2553.6405 L 5865.6538 -2553.4753 L 5865.6286 -2553.3599 L 5865.6034 -2553.2446 L 5865.5411 -2553.1596 L 5865.479 -2553.0745 L 5865.4567 -2553.0195 L 5865.4345 -2552.9647 L 5865.4168 -2552.8414 L 5865.3992 -2552.718 L 5865.3222 -2552.6286 L 5865.245 -2552.539 L 5865.2242 -2552.3691 L 5865.2036 -2552.1991 L 5865.1286 -2552.1185 L 5865.0536 -2552.0379 L 5865.0259 -2551.8818 L 5864.9985 -2551.7259 L 5864.9241 -2551.6184 L 5864.8497 -2551.5109 L 5864.8497 -2551.4542 L 5864.8497 -2551.3975 L 5864.6957 -2551.0007 L 5864.5417 -2550.604 L 5864.496 -2550.5485 L 5864.4505 -2550.493 L 5864.408 -2550.3015 L 5864.3657 -2550.1097 L 5864.3087 -2550.0374 L 5864.2517 -2549.9652 L 5864.2229 -2549.8219 L 5864.1939 -2549.6786 L 5864.1665 -2549.5897 L 5864.139 -2549.5008 L 5864.0966 -2549.4719 L 5864.0541 -2549.443 L 5864.0225 -2549.2637 L 5863.9908 -2549.0844 L 5863.922 -2548.9827 L 5863.8533 -2548.8811 L 5863.7953 -2548.6809 L 5863.7372 -2548.4809 L 5863.7126 -2548.4615 L 5863.6878 -2548.4422 L 5863.6259 -2548.2628 L 5863.5638 -2548.0834 L 5863.505 -2548.0036 L 5863.4462 -2547.9238 L 5863.408 -2547.7362 L 5863.3697 -2547.5486 L 5863.3074 -2547.465 L 5863.2451 -2547.3815 L 5863.2069 -2547.194 L 5863.1687 -2547.0062 L 5863.1067 -2546.9226 L 5863.0448 -2546.8391 L 5863.0174 -2546.7114 L 5862.99 -2546.5839 L 5862.9905 -2546.4244 L 5862.9909 -2546.2649 L 5863.0141 -2546.1373 L 5863.0375 -2546.0095 L 5863.0896 -2545.9562 L 5863.1416 -2545.9026 L 5863.1788 -2545.7895 L 5863.216 -2545.6767 L 5863.216 -2545.6091 L 5863.216 -2545.5416 L 5863.3036 -2545.443 L 5863.3914 -2545.3444 L 5863.4081 -2545.1842 L 5863.4249 -2545.0238 L 5863.495 -2544.9425 L 5863.565 -2544.861 L 5863.5968 -2544.7015 L 5863.6287 -2544.542 L 5863.7081 -2544.4271 L 5863.7873 -2544.3121 L 5863.8053 -2544.1598 L 5863.8232 -2544.0076 L 5863.887 -2543.9266 L 5863.9509 -2543.8455 L 5863.9856 -2543.7401 L 5864.0202 -2543.6348 L 5864.0202 -2543.571 L 5864.0202 -2543.5073 L 5864.0966 -2543.3969 L 5864.173 -2543.2867 L 5864.2069 -2543.1203 L 5864.2408 -2542.9539 L 5864.3168 -2542.8786 L 5864.3926 -2542.8032 L 5864.4099 -2542.643 L 5864.4274 -2542.4828 L 5864.513 -2542.3527 L 5864.5986 -2542.2227 L 5864.6143 -2542.0979 L 5864.63 -2541.9732 L 5864.699 -2541.8857 L 5864.7678 -2541.7982 L 5864.8208 -2541.6155 L 5864.8739 -2541.4327 L 5864.923 -2541.3702 L 5864.9722 -2541.3079 L 5864.9988 -2541.1861 L 5865.0254 -2541.0644 L 5865.0256 -2541.0096 L 5865.0258 -2540.9549 L 5865.1005 -2540.8578 L 5865.1752 -2540.7607 L 5865.2145 -2540.5895 L 5865.2537 -2540.4181 L 5865.3034 -2540.3611 L 5865.353 -2540.3041 L 5865.4041 -2540.0942 L 5865.4552 -2539.8841 L 5865.5166 -2539.8202 L 5865.578 -2539.7563 L 5865.6183 -2539.5489 L 5865.6587 -2539.3415 L 5865.6967 -2539.2658 L 5865.7347 -2539.1901 L 5865.6687 -2539.1063 L 5865.6027 -2539.0226 L 5810.8357 -2539.0148 L 5756.0689 -2539.0071 L 5756.0097 -2539.0678 L 5755.9508 -2539.1286 L 5755.943 -2546.4278 L 5755.9352 -2553.7271 L 5755.9496 -2553.8 L 5755.964 -2553.8729 L 5756.0359 -2553.9201 L 5756.1076 -2553.9672 L 5756.1206 -2553.951 M 5893.7303 -2551.2394 L 5893.7303 -2548.5412 L 5893.3789 -2548.5516 L 5893.0275 -2548.562 L 5892.958 -2548.6504 L 5892.8882 -2548.7388 L 5892.8739 -2549.9745 L 5892.8595 -2551.2101 L 5892.855 -2551.2221 L 5892.8506 -2551.2341 L 5892.216 -2551.2061 L 5891.5813 -2551.1783 L 5891.3909 -2551.1853 L 5891.2004 -2551.1925 L 5891.1522 -2551.0737 L 5891.1036 -2550.9549 L 5891.0987 -2549.8926 L 5891.094 -2548.8305 L 5891.0395 -2548.7185 L 5890.9849 -2548.6066 L 5890.9261 -2548.5577 L 5890.8673 -2548.5088 L 5887.7054 -2548.4939 L 5884.5434 -2548.4791 L 5884.1428 -2548.4503 L 5883.7423 -2548.4217 L 5883.6716 -2548.3555 L 5883.6012 -2548.2892 L 5883.469 -2548.2577 L 5883.3368 -2548.2261 L 5883.2558 -2548.1925 L 5883.1746 -2548.1588 L 5883.1192 -2548.0334 L 5883.0637 -2547.9079 L 5883.042 -2547.9079 L 5883.0204 -2547.9079 L 5882.8316 -2547.6687 L 5882.6432 -2547.4295 L 5882.6074 -2547.4295 L 5882.5712 -2547.4295 L 5882.5226 -2547.308 L 5882.4738 -2547.1867 L 5882.4088 -2547.1492 L 5882.3441 -2547.1116 L 5882.3441 -2547.0707 L 5882.3441 -2547.0297 L 5882.2911 -2546.9025 L 5882.2382 -2546.7752 L 5882.1922 -2546.7114 L 5882.1462 -2546.6478 L 5882.1058 -2546.3286 L 5882.0655 -2546.0095 L 5882.01 -2545.8182 L 5881.9544 -2545.6268 L 5881.9544 -2543.7763 L 5881.9544 -2541.9258 L 5882.072 -2541.8517 L 5882.1897 -2541.7776 L 5882.4617 -2541.7833 L 5882.7335 -2541.789 L 5883.1435 -2541.784 L 5883.5533 -2541.7789 L 5883.6657 -2541.8002 L 5883.7781 -2541.8217 L 5883.8088 -2541.8897 L 5883.8395 -2541.9577 L 5883.8521 -2544.0052 L 5883.8647 -2546.0528 L 5883.9177 -2546.1428 L 5883.9706 -2546.2329 L 5884.0685 -2546.2552 L 5884.1663 -2546.2774 L 5887.4927 -2546.2784 L 5890.8191 -2546.2793 L 5890.8924 -2546.2315 L 5890.9654 -2546.1834 L 5890.9712 -2546.1763 L 5890.9768 -2546.1691 L 5890.9899 -2544.0087 L 5891.0031 -2541.8483 L 5891.048 -2541.7913 L 5891.0927 -2541.7344 L 5891.8522 -2541.7243 L 5892.6117 -2541.7143 L 5892.7178 -2541.7341 L 5892.8238 -2541.754 L 5892.8496 -2541.8718 L 5892.8754 -2541.9897 L 5892.8756 -2544.0251 L 5892.8757 -2546.0607 L 5892.9131 -2546.1525 L 5892.9505 -2546.2443 L 5892.9948 -2546.2586 L 5893.0391 -2546.2729 L 5893.3847 -2546.2766 L 5893.7303 -2546.2803 L 5893.7303 -2542.6434 L 5893.7303 -2539.0066 L 5880.553 -2539.0083 L 5867.3758 -2539.0101 L 5867.288 -2539.0482 L 5867.2001 -2539.0864 L 5867.1492 -2539.2685 L 5867.0982 -2539.4508 L 5867.0428 -2539.5164 L 5866.9873 -2539.5819 L 5866.9463 -2539.7649 L 5866.9054 -2539.9476 L 5866.8477 -2540.0274 L 5866.7901 -2540.1071 L 5866.7472 -2540.3039 L 5866.7044 -2540.5008 L 5866.6326 -2540.5879 L 5866.561 -2540.6752 L 5866.5302 -2540.8493 L 5866.4994 -2541.0232 L 5866.4441 -2541.0553 L 5866.3887 -2541.0874 L 5866.3622 -2541.1609 L 5866.3359 -2541.2342 L 5866.3188 -2541.3566 L 5866.3015 -2541.4791 L 5866.2453 -2541.5589 L 5866.1891 -2541.6386 L 5866.0758 -2541.9417 L 5865.9622 -2542.2448 L 5865.9204 -2542.3925 L 5865.8785 -2542.5402 L 5865.8286 -2542.5976 L 5865.7786 -2542.655 L 5865.7387 -2542.8328 L 5865.6988 -2543.0107 L 5865.6407 -2543.0903 L 5865.5829 -2543.1701 L 5865.5404 -2543.3615 L 5865.4977 -2543.5529 L 5865.4378 -2543.6342 L 5865.378 -2543.7153 L 5865.3362 -2543.8735 L 5865.2943 -2544.0315 L 5865.228 -2544.129 L 5865.1616 -2544.2263 L 5865.1294 -2544.409 L 5865.0972 -2544.5917 L 5865.0388 -2544.6402 L 5864.9804 -2544.6887 L 5864.9537 -2544.7749 L 5864.9268 -2544.861 L 5864.9104 -2544.9567 L 5864.8936 -2545.0525 L 5864.8217 -2545.1492 L 5864.75 -2545.2459 L 5864.7242 -2545.4186 L 5864.6983 -2545.5914 L 5864.6285 -2545.6781 L 5864.5587 -2545.7648 L 5864.5144 -2545.943 L 5864.4701 -2546.1213 L 5864.447 -2546.1213 L 5864.4239 -2546.1213 L 5864.3854 -2546.2154 L 5864.3471 -2546.3096 L 5864.3471 -2546.4695 L 5864.3471 -2546.6295 L 5864.4195 -2546.7342 L 5864.4918 -2546.8391 L 5864.5364 -2547.0409 L 5864.581 -2547.2429 L 5864.6378 -2547.2902 L 5864.6946 -2547.3373 L 5864.7121 -2547.4988 L 5864.7296 -2547.6603 L 5864.8101 -2547.7761 L 5864.8907 -2547.892 L 5864.947 -2548.0828 L 5865.0034 -2548.2736 L 5865.0399 -2548.3251 L 5865.0766 -2548.3765 L 5865.1391 -2548.5786 L 5865.2015 -2548.7809 L 5865.2498 -2548.847 L 5865.2978 -2548.913 L 5865.3397 -2549.0973 L 5865.3815 -2549.2817 L 5865.4384 -2549.3288 L 5865.4952 -2549.3762 L 5865.5386 -2549.5753 L 5865.582 -2549.7744 L 5865.6393 -2549.8541 L 5865.6965 -2549.9339 L 5865.7375 -2550.1227 L 5865.7784 -2550.3114 L 5865.8388 -2550.3939 L 5865.8992 -2550.4763 L 5865.9537 -2550.6648 L 5866.0082 -2550.8534 L 5866.0659 -2550.9403 L 5866.1235 -2551.0272 L 5866.1563 -2551.1756 L 5866.189 -2551.3242 L 5866.2483 -2551.3835 L 5866.3076 -2551.4425 L 5866.3076 -2551.4881 L 5866.3076 -2551.5337 L 5866.3482 -2551.6846 L 5866.3887 -2551.8354 L 5866.4451 -2551.8823 L 5866.5015 -2551.9293 L 5866.5463 -2552.1386 L 5866.5907 -2552.3478 L 5866.6457 -2552.4331 L 5866.7003 -2552.5182 L 5866.7581 -2552.6936 L 5866.8158 -2552.8691 L 5866.8612 -2552.9329 L 5866.9065 -2552.9967 L 5866.9484 -2553.1811 L 5866.9903 -2553.3655 L 5867.0489 -2553.4143 L 5867.1077 -2553.4631 L 5867.1241 -2553.6128 L 5867.1406 -2553.7624 L 5867.1702 -2553.813 L 5867.2 -2553.8638 L 5867.2547 -2553.9008 L 5867.3097 -2553.9379 L 5880.52 -2553.9379 L 5893.7303 -2553.9379 L 5893.7303 -2551.2394 M 5762.9509 -2551.1932 L 5762.5866 -2551.1639 L 5762.2544 -2551.1631 L 5761.9223 -2551.1622 L 5761.8935 -2551.0265 L 5761.8645 -2550.891 L 5761.8861 -2546.3541 L 5761.9079 -2541.8172 L 5761.9405 -2541.7758 L 5761.9733 -2541.7344 L 5765.8867 -2541.7365 L 5769.8004 -2541.7387 L 5769.9261 -2541.7502 L 5770.0517 -2541.7617 L 5770.2197 -2541.7356 L 5770.3877 -2541.7097 L 5770.5122 -2541.7921 L 5770.6366 -2541.8747 L 5770.862 -2541.9243 L 5771.0872 -2541.974 L 5771.2431 -2542.0728 L 5771.3989 -2542.1716 L 5771.4951 -2542.188 L 5771.5914 -2542.2044 L 5771.7849 -2542.44 L 5771.9786 -2542.6756 L 5772.003 -2542.6756 L 5772.0272 -2542.6756 L 5772.2056 -2542.9068 L 5772.384 -2543.1382 L 5772.4561 -2543.3296 L 5772.5281 -2543.5211 L 5772.5797 -2543.6234 L 5772.6314 -2543.7258 L 5772.6649 -2544.0063 L 5772.6984 -2544.2868 L 5772.7418 -2544.4238 L 5772.7853 -2544.5609 L 5772.7443 -2544.8227 L 5772.7034 -2545.0844 L 5772.7034 -2545.1784 L 5772.7034 -2545.2727 L 5772.6487 -2545.5614 L 5772.594 -2545.8501 L 5772.5119 -2545.9679 L 5772.4297 -2546.0857 L 5772.4023 -2546.2146 L 5772.375 -2546.3435 L 5772.3234 -2546.3785 L 5772.272 -2546.4135 L 5772.2357 -2546.5237 L 5772.1994 -2546.6339 L 5772.1374 -2546.6697 L 5772.0754 -2546.7057 L 5772.028 -2546.8075 L 5771.9807 -2546.9093 L 5771.9086 -2546.9283 L 5771.8364 -2546.9474 L 5771.7969 -2547.0369 L 5771.7576 -2547.1263 L 5771.6336 -2547.1719 L 5771.5096 -2547.2172 L 5771.4468 -2547.3011 L 5771.3838 -2547.385 L 5771.1776 -2547.4245 L 5770.9714 -2547.4641 L 5770.7629 -2547.5481 L 5770.5544 -2547.6321 L 5767.2322 -2547.6503 L 5763.9102 -2547.6687 L 5763.8452 -2547.746 L 5763.7805 -2547.8233 L 5763.7805 -2549.5195 L 5763.7805 -2551.2153 L 5763.7616 -2551.2402 L 5763.7427 -2551.2651 L 5763.529 -2551.2439 L 5763.3154 -2551.2226 L 5762.9509 -2551.1932 M 5879.1124 -2551.1907 L 5879.0954 -2551.1555 L 5879.089 -2549.4857 L 5879.0827 -2547.8157 L 5879.0348 -2547.7103 L 5878.987 -2547.6048 L 5878.8872 -2547.541 L 5878.7874 -2547.4772 L 5875.5574 -2547.4683 L 5872.3276 -2547.4592 L 5872.2671 -2547.5002 L 5872.2067 -2547.541 L 5872.1729 -2547.6437 L 5872.139 -2547.7464 L 5872.139 -2549.3241 L 5872.139 -2550.9018 L 5872.1234 -2550.9536 L 5872.1078 -2551.0054 L 5872.0108 -2551.0681 L 5871.914 -2551.1308 L 5871.6181 -2551.1461 L 5871.3221 -2551.1615 L 5870.8159 -2551.1771 L 5870.3097 -2551.1927 L 5870.2901 -2551.1216 L 5870.2706 -2551.0505 L 5870.2604 -2546.5519 L 5870.2501 -2542.0535 L 5870.2781 -2541.9339 L 5870.3062 -2541.8141 L 5870.3742 -2541.8092 L 5870.4425 -2541.8042 L 5870.6813 -2541.797 L 5870.9199 -2541.7895 L 5871.3256 -2541.7822 L 5871.7313 -2541.775 L 5871.8223 -2541.8131 L 5871.9133 -2541.8512 L 5871.9443 -2541.9204 L 5871.9757 -2541.9897 L 5871.9831 -2543.5573 L 5871.9904 -2545.1249 L 5872.0422 -2545.1844 L 5872.094 -2545.2438 L 5875.5466 -2545.2438 L 5878.9992 -2545.2438 L 5879.0442 -2545.1868 L 5879.0889 -2545.1298 L 5879.0932 -2543.5546 L 5879.0973 -2541.9795 L 5879.125 -2541.9138 L 5879.1527 -2541.8482 L 5879.2717 -2541.8072 L 5879.3907 -2541.7663 L 5880.0836 -2541.7761 L 5880.7766 -2541.7859 L 5880.825 -2541.8878 L 5880.8736 -2541.9897 L 5880.8698 -2546.5005 L 5880.8658 -2551.0112 L 5880.8167 -2551.0947 L 5880.7677 -2551.1783 L 5880.0037 -2551.1947 L 5879.2398 -2551.2114 L 5879.1847 -2551.2188 L 5879.1297 -2551.2259 L 5879.1124 -2551.1907 M 5836.1704 -2551.1809 L 5835.7304 -2551.1732 L 5835.6266 -2551.1497 L 5835.5229 -2551.1261 L 5835.439 -2550.9766 L 5835.3552 -2550.8272 L 5835.3217 -2550.7834 L 5835.2881 -2550.7398 L 5835.2733 -2550.6459 L 5835.2586 -2550.5523 L 5835.1855 -2550.4596 L 5835.1127 -2550.367 L 5835.0603 -2550.2141 L 5835.0082 -2550.0614 L 5834.9501 -2549.9816 L 5834.892 -2549.9019 L 5834.8387 -2549.7292 L 5834.7852 -2549.5564 L 5834.7238 -2549.4636 L 5834.6622 -2549.3705 L 5834.6622 -2549.3165 L 5834.6622 -2549.2624 L 5834.5742 -2549.0929 L 5834.4861 -2548.9233 L 5834.4861 -2548.9009 L 5834.4861 -2548.8786 L 5834.417 -2548.7748 L 5834.348 -2548.6711 L 5832.5051 -2548.6726 L 5830.6626 -2548.6744 L 5830.5702 -2548.7234 L 5830.4778 -2548.7724 L 5830.4226 -2548.8382 L 5830.3674 -2548.904 L 5830.3504 -2549.0361 L 5830.333 -2549.1681 L 5830.2504 -2549.2656 L 5830.1676 -2549.3629 L 5830.1496 -2549.5143 L 5830.1318 -2549.6659 L 5830.0509 -2549.7886 L 5829.9701 -2549.9116 L 5829.9361 -2550.0184 L 5829.9024 -2550.1253 L 5829.833 -2550.2281 L 5829.7635 -2550.3309 L 5829.7372 -2550.4514 L 5829.7108 -2550.5721 L 5829.7107 -2550.612 L 5829.7105 -2550.6517 L 5829.6594 -2550.7166 L 5829.6084 -2550.7816 L 5829.5504 -2550.9123 L 5829.4924 -2551.043 L 5829.369 -2551.1049 L 5829.2455 -2551.1669 L 5828.8836 -2551.1506 L 5828.5217 -2551.1345 L 5828.231 -2551.1802 L 5827.9404 -2551.2259 L 5827.8221 -2551.2259 L 5827.7038 -2551.2259 L 5827.664 -2551.2067 L 5827.6242 -2551.1873 L 5827.6242 -2551.0708 L 5827.6242 -2550.9543 L 5827.6487 -2550.8458 L 5827.6734 -2550.7372 L 5827.7233 -2550.6698 L 5827.7731 -2550.6022 L 5827.8245 -2550.3916 L 5827.8759 -2550.1808 L 5827.9174 -2550.1371 L 5827.9592 -2550.0934 L 5828.0089 -2549.9498 L 5828.0588 -2549.8063 L 5828.1174 -2549.7171 L 5828.176 -2549.6278 L 5828.2135 -2549.4678 L 5828.2509 -2549.3076 L 5828.3147 -2549.2115 L 5828.3784 -2549.1153 L 5828.3926 -2549.0301 L 5828.407 -2548.9449 L 5828.4451 -2548.8089 L 5828.4833 -2548.6729 L 5828.5291 -2548.6417 L 5828.5752 -2548.6105 L 5828.6187 -2548.4426 L 5828.6621 -2548.2747 L 5828.7208 -2548.1857 L 5828.7792 -2548.0964 L 5828.8171 -2547.9346 L 5828.855 -2547.7728 L 5828.9165 -2547.7005 L 5828.9779 -2547.6282 L 5829.0169 -2547.4622 L 5829.0555 -2547.2963 L 5829.1305 -2547.1879 L 5829.2054 -2547.0799 L 5829.2227 -2546.9595 L 5829.24 -2546.8391 L 5829.3219 -2546.723 L 5829.4036 -2546.607 L 5829.4203 -2546.4997 L 5829.437 -2546.3924 L 5829.4636 -2546.3047 L 5829.4903 -2546.217 L 5829.5109 -2546.217 L 5829.5314 -2546.217 L 5829.613 -2546.0016 L 5829.6945 -2545.7863 L 5829.739 -2545.722 L 5829.7834 -2545.6579 L 5829.822 -2545.4696 L 5829.8607 -2545.281 L 5829.9361 -2545.1986 L 5830.0118 -2545.1162 L 5830.0433 -2544.9566 L 5830.075 -2544.797 L 5830.1285 -2544.7291 L 5830.1822 -2544.6614 L 5830.2258 -2544.4899 L 5830.2697 -2544.3187 L 5830.3386 -2544.223 L 5830.4078 -2544.1272 L 5830.449 -2543.9692 L 5830.4903 -2543.8111 L 5830.5518 -2543.7294 L 5830.6134 -2543.6479 L 5830.6463 -2543.4845 L 5830.6793 -2543.3211 L 5830.7605 -2543.2248 L 5830.8416 -2543.1286 L 5830.8416 -2543.0806 L 5830.8416 -2543.0328 L 5831.0239 -2542.798 L 5831.206 -2542.5634 L 5831.2998 -2542.4007 L 5831.3935 -2542.238 L 5831.5034 -2542.1849 L 5831.6129 -2542.1317 L 5831.6448 -2542.0565 L 5831.6764 -2541.9811 L 5831.8163 -2541.9454 L 5831.956 -2541.9099 L 5832.0634 -2541.9099 L 5832.171 -2541.9099 L 5832.2399 -2541.8346 L 5832.3088 -2541.7594 L 5832.5114 -2541.8194 L 5832.7142 -2541.8793 L 5832.9269 -2541.9129 L 5833.1394 -2541.9464 L 5833.2331 -2542.0539 L 5833.3269 -2542.1614 L 5833.4296 -2542.2003 L 5833.532 -2542.2394 L 5833.5474 -2542.3169 L 5833.5629 -2542.3945 L 5833.6383 -2542.4528 L 5833.7138 -2542.511 L 5833.767 -2542.6227 L 5833.8202 -2542.7346 L 5833.9323 -2542.9444 L 5834.0444 -2543.1541 L 5834.0866 -2543.1712 L 5834.129 -2543.1881 L 5834.1547 -2543.2748 L 5834.1805 -2543.3615 L 5834.1949 -2543.4469 L 5834.2096 -2543.5321 L 5834.2732 -2543.6278 L 5834.3367 -2543.7237 L 5834.3647 -2543.8297 L 5834.3925 -2543.9358 L 5834.4536 -2544.0401 L 5834.5146 -2544.1443 L 5834.5661 -2544.2953 L 5834.6178 -2544.4462 L 5834.6738 -2544.526 L 5834.7298 -2544.6058 L 5834.7707 -2544.7941 L 5834.8114 -2544.9824 L 5834.8596 -2545.0492 L 5834.9075 -2545.1162 L 5834.9446 -2545.2119 L 5834.9818 -2545.3076 L 5834.9996 -2545.4012 L 5835.0174 -2545.4948 L 5835.0784 -2545.5868 L 5835.1393 -2545.6788 L 5835.1799 -2545.8601 L 5835.2206 -2546.0415 L 5835.2783 -2546.1213 L 5835.336 -2546.201 L 5835.405 -2546.3765 L 5835.4739 -2546.5519 L 5835.5366 -2546.7114 L 5835.5992 -2546.871 L 5835.6837 -2546.9908 L 5835.7682 -2547.1104 L 5835.7682 -2547.1752 L 5835.7682 -2547.24 L 5835.8071 -2547.3582 L 5835.846 -2547.4763 L 5835.8932 -2547.5406 L 5835.9405 -2547.6048 L 5835.9931 -2547.784 L 5836.0458 -2547.963 L 5836.0945 -2548.019 L 5836.1432 -2548.0752 L 5836.1729 -2548.191 L 5836.2026 -2548.3066 L 5836.274 -2548.4342 L 5836.3454 -2548.562 L 5836.3846 -2548.7296 L 5836.4238 -2548.8974 L 5836.4944 -2548.9891 L 5836.565 -2549.0809 L 5836.5937 -2549.2254 L 5836.6223 -2549.3702 L 5836.6807 -2549.4606 L 5836.739 -2549.551 L 5836.7822 -2549.6986 L 5836.8256 -2549.8463 L 5836.8756 -2549.9037 L 5836.9257 -2549.961 L 5836.9656 -2550.1362 L 5837.0058 -2550.3114 L 5837.0755 -2550.3938 L 5837.1451 -2550.4763 L 5837.1626 -2550.588 L 5837.1801 -2550.6996 L 5837.2683 -2550.9292 L 5837.3562 -2551.1587 L 5837.3401 -2551.1919 L 5837.324 -2551.2249 L 5836.967 -2551.2068 L 5836.6101 -2551.1885 L 5836.1704 -2551.1809 M 5818.3241 -2551.1641 L 5818.1609 -2551.1366 L 5817.8592 -2551.1466 L 5817.5576 -2551.1565 L 5817.483 -2551.1672 L 5817.4084 -2551.1783 L 5817.3893 -2551.0505 L 5817.3702 -2550.9229 L 5817.3837 -2546.4721 L 5817.3972 -2542.0215 L 5817.4074 -2541.9567 L 5817.4176 -2541.8916 L 5817.502 -2541.8528 L 5817.5863 -2541.8141 L 5821.823 -2541.8141 L 5826.0597 -2541.8141 L 5826.1463 -2541.8601 L 5826.2329 -2541.9061 L 5826.4571 -2541.943 L 5826.6817 -2541.9802 L 5826.7446 -2542.0541 L 5826.8073 -2542.128 L 5826.9546 -2542.1763 L 5827.1017 -2542.2246 L 5827.2688 -2542.4466 L 5827.4358 -2542.6687 L 5827.5489 -2542.7162 L 5827.6619 -2542.7638 L 5827.6905 -2542.8345 L 5827.7193 -2542.905 L 5827.8086 -2543.0217 L 5827.8978 -2543.1382 L 5827.9757 -2543.3456 L 5828.0536 -2543.5529 L 5828.0914 -2543.64 L 5828.1291 -2543.7267 L 5828.1643 -2543.9809 L 5828.1995 -2544.235 L 5828.2449 -2544.3406 L 5828.2902 -2544.4462 L 5828.2868 -2544.7015 L 5828.2835 -2544.9567 L 5828.2145 -2545.2438 L 5828.1454 -2545.5311 L 5828.1203 -2545.6905 L 5828.095 -2545.8501 L 5828.0369 -2545.9297 L 5827.9789 -2546.0095 L 5827.915 -2546.193 L 5827.8511 -2546.3765 L 5827.8262 -2546.3765 L 5827.8011 -2546.3765 L 5827.75 -2546.5035 L 5827.6992 -2546.6304 L 5827.6258 -2546.6786 L 5827.5525 -2546.7267 L 5827.5358 -2546.7933 L 5827.519 -2546.8598 L 5827.4105 -2546.9189 L 5827.302 -2546.978 L 5827.2864 -2547.0407 L 5827.2707 -2547.1034 L 5827.1474 -2547.1707 L 5827.0241 -2547.238 L 5827.0052 -2547.238 L 5826.9861 -2547.238 L 5826.9219 -2547.3159 L 5826.8575 -2547.3938 L 5826.581 -2547.4558 L 5826.3044 -2547.5177 L 5826.204 -2547.5772 L 5826.1036 -2547.6368 L 5822.7732 -2547.6446 L 5819.4427 -2547.6523 L 5819.3842 -2547.691 L 5819.3257 -2547.7299 L 5819.3017 -2547.787 L 5819.2775 -2547.8441 L 5819.2788 -2549.4328 L 5819.2802 -2551.0212 L 5819.2634 -2551.1284 L 5819.2464 -2551.2354 L 5818.867 -2551.2135 L 5818.4877 -2551.1915 L 5818.3241 -2551.1641 M 5814.9066 -2551.1874 L 5814.5177 -2551.1885 L 5814.4509 -2551.1445 L 5814.3838 -2551.1007 L 5814.3676 -2551.0189 L 5814.3515 -2550.9373 L 5814.2675 -2550.8184 L 5814.1831 -2550.6996 L 5814.1255 -2550.5242 L 5814.068 -2550.3486 L 5814.0208 -2550.2814 L 5813.9736 -2550.2141 L 5813.9476 -2550.09 L 5813.9213 -2549.9657 L 5813.8519 -2549.8541 L 5813.7824 -2549.7425 L 5813.7404 -2549.6391 L 5813.6984 -2549.5358 L 5813.6371 -2549.4849 L 5813.576 -2549.4341 L 5813.5593 -2549.2916 L 5813.5423 -2549.149 L 5813.4576 -2549.02 L 5813.3725 -2548.8909 L 5813.3725 -2548.851 L 5813.3725 -2548.8111 L 5813.3197 -2548.7503 L 5813.2667 -2548.6895 L 5811.403 -2548.6851 L 5809.5394 -2548.6809 L 5809.4717 -2548.7251 L 5809.4038 -2548.7693 L 5809.3427 -2548.873 L 5809.2816 -2548.9768 L 5809.2531 -2549.0901 L 5809.2245 -2549.2033 L 5809.1393 -2549.3713 L 5809.0542 -2549.5389 L 5809.0371 -2549.6567 L 5809.0202 -2549.7744 L 5808.8971 -2550.099 L 5808.7741 -2550.4236 L 5808.746 -2550.4457 L 5808.7178 -2550.4678 L 5808.6476 -2550.6634 L 5808.5774 -2550.8591 L 5808.4677 -2550.9898 L 5808.358 -2551.1205 L 5808.0563 -2551.1594 L 5807.7547 -2551.1983 L 5807.664 -2551.1497 L 5807.5731 -2551.1011 L 5807.4757 -2551.1352 L 5807.3786 -2551.1694 L 5807.2562 -2551.1509 L 5807.1341 -2551.1327 L 5806.9417 -2551.1797 L 5806.7493 -2551.2267 L 5806.6408 -2551.2064 L 5806.5321 -2551.1861 L 5806.5087 -2551.1083 L 5806.4854 -2551.0304 L 5806.4854 -2550.9698 L 5806.4854 -2550.9093 L 5806.5847 -2550.7881 L 5806.684 -2550.6672 L 5806.7018 -2550.5256 L 5806.7197 -2550.384 L 5806.8025 -2550.2864 L 5806.8855 -2550.1891 L 5806.9126 -2550.0323 L 5806.94 -2549.8756 L 5807.0141 -2549.7683 L 5807.0882 -2549.6609 L 5807.1046 -2549.532 L 5807.1209 -2549.4028 L 5807.2022 -2549.2792 L 5807.2836 -2549.1554 L 5807.3009 -2549.0088 L 5807.3182 -2548.8624 L 5807.3891 -2548.7598 L 5807.46 -2548.6573 L 5807.5004 -2548.4844 L 5807.541 -2548.3115 L 5807.5946 -2548.2483 L 5807.6481 -2548.1849 L 5807.7077 -2548.0194 L 5807.7676 -2547.8537 L 5807.8175 -2547.7963 L 5807.8677 -2547.7387 L 5807.9111 -2547.5641 L 5807.9544 -2547.3897 L 5808.0104 -2547.3432 L 5808.0662 -2547.2966 L 5808.106 -2547.1446 L 5808.1459 -2546.9926 L 5808.2074 -2546.8865 L 5808.2691 -2546.7804 L 5808.3121 -2546.6343 L 5808.3552 -2546.4882 L 5808.4135 -2546.389 L 5808.4718 -2546.2896 L 5808.5113 -2546.1177 L 5808.5509 -2545.9458 L 5808.6132 -2545.8087 L 5808.6758 -2545.6715 L 5808.7234 -2545.4962 L 5808.7707 -2545.3209 L 5808.822 -2545.2381 L 5808.8732 -2545.1555 L 5808.8732 -2545.1152 L 5808.8732 -2545.0747 L 5808.9639 -2544.9041 L 5809.0544 -2544.7335 L 5809.104 -2544.5658 L 5809.1535 -2544.3981 L 5809.2 -2544.3664 L 5809.2466 -2544.3348 L 5809.3006 -2544.1512 L 5809.3545 -2543.9677 L 5809.4017 -2543.9037 L 5809.4489 -2543.8394 L 5809.5123 -2543.6578 L 5809.5755 -2543.476 L 5809.6376 -2543.4243 L 5809.6998 -2543.3725 L 5809.7859 -2543.1597 L 5809.872 -2542.9468 L 5809.9194 -2542.8431 L 5809.9666 -2542.7394 L 5810.0113 -2542.7208 L 5810.0562 -2542.7026 L 5810.0994 -2542.5863 L 5810.1426 -2542.4699 L 5810.2055 -2542.4308 L 5810.2683 -2542.3916 L 5810.3078 -2542.3022 L 5810.3473 -2542.2129 L 5810.4133 -2542.1721 L 5810.4797 -2542.1311 L 5810.5252 -2542.0573 L 5810.5711 -2541.9835 L 5810.7589 -2541.9441 L 5810.947 -2541.9045 L 5811.0726 -2541.8777 L 5811.1984 -2541.8506 L 5811.3478 -2541.8484 L 5811.4974 -2541.846 L 5811.7123 -2541.8815 L 5811.9273 -2541.9168 L 5812.0605 -2541.9479 L 5812.194 -2541.979 L 5812.2165 -2542.0544 L 5812.2392 -2542.13 L 5812.3351 -2542.1628 L 5812.4309 -2542.1954 L 5812.531 -2542.3466 L 5812.631 -2542.4977 L 5812.6606 -2542.5847 L 5812.6901 -2542.6714 L 5812.7674 -2542.7222 L 5812.8446 -2542.7729 L 5812.8446 -2542.8328 L 5812.8446 -2542.8925 L 5812.936 -2543.0632 L 5813.0271 -2543.2338 L 5813.0501 -2543.3367 L 5813.0729 -2543.4394 L 5813.1314 -2543.528 L 5813.1897 -2543.6168 L 5813.2469 -2543.7596 L 5813.3039 -2543.9023 L 5813.3729 -2543.984 L 5813.4417 -2544.0657 L 5813.4597 -2544.2003 L 5813.4775 -2544.3347 L 5813.56 -2544.4335 L 5813.6425 -2544.5324 L 5813.6578 -2544.6966 L 5813.6728 -2544.861 L 5813.7744 -2544.9727 L 5813.8761 -2545.0844 L 5813.8757 -2545.1412 L 5813.8754 -2545.1981 L 5813.912 -2545.31 L 5813.9487 -2545.4216 L 5813.9865 -2545.4695 L 5814.0241 -2545.5173 L 5814.0478 -2545.6266 L 5814.0716 -2545.7358 L 5814.1489 -2545.8726 L 5814.2262 -2546.0095 L 5814.2621 -2546.1626 L 5814.2983 -2546.3156 L 5814.3648 -2546.426 L 5814.431 -2546.5365 L 5814.467 -2546.6897 L 5814.5027 -2546.8429 L 5814.5664 -2546.9187 L 5814.6298 -2546.9946 L 5814.6564 -2547.1198 L 5814.683 -2547.2449 L 5814.7496 -2547.3232 L 5814.8163 -2547.4017 L 5814.8493 -2547.5671 L 5814.8828 -2547.7324 L 5814.9521 -2547.8441 L 5815.0216 -2547.9558 L 5815.0544 -2548.0675 L 5815.0873 -2548.1792 L 5815.2142 -2548.514 L 5815.3413 -2548.8491 L 5815.3868 -2548.9055 L 5815.4324 -2548.9618 L 5815.4729 -2549.138 L 5815.5131 -2549.3141 L 5815.5611 -2549.3708 L 5815.6091 -2549.4275 L 5815.66 -2549.6158 L 5815.7111 -2549.8042 L 5815.7702 -2549.885 L 5815.8292 -2549.9657 L 5815.8744 -2550.1253 L 5815.9195 -2550.2848 L 5815.9756 -2550.3646 L 5816.0318 -2550.4444 L 5816.0784 -2550.615 L 5816.1249 -2550.7857 L 5816.1792 -2550.855 L 5816.2332 -2550.9242 L 5816.2381 -2551.0511 L 5816.2429 -2551.1783 L 5816.2404 -2551.2008 L 5816.238 -2551.2235 L 5815.7667 -2551.205 L 5815.2954 -2551.1864 L 5814.9066 -2551.1874 M 5858.1135 -2551.1669 L 5857.925 -2551.1745 L 5857.8497 -2551.1736 L 5857.7742 -2551.1727 L 5856.907 -2551.1657 L 5856.0398 -2551.1588 L 5855.9644 -2551.1156 L 5855.889 -2551.0723 L 5855.7759 -2551.0157 L 5855.6627 -2550.9589 L 5855.5127 -2550.7729 L 5855.3627 -2550.5873 L 5855.229 -2550.5238 L 5855.0954 -2550.4603 L 5855.0695 -2550.4603 L 5855.0436 -2550.4603 L 5854.9636 -2550.3857 L 5854.8837 -2550.3111 L 5854.7454 -2550.2388 L 5854.6072 -2550.1663 L 5854.5567 -2550.11 L 5854.5066 -2550.0534 L 5854.4112 -2550.0146 L 5854.3157 -2549.9758 L 5854.2022 -2549.8512 L 5854.0888 -2549.7265 L 5854.0518 -2549.7265 L 5854.0147 -2549.7265 L 5853.9282 -2549.6165 L 5853.8413 -2549.5065 L 5853.7466 -2549.4731 L 5853.652 -2549.4397 L 5853.6234 -2549.4397 L 5853.5949 -2549.4394 L 5853.5541 -2549.3603 L 5853.5134 -2549.2816 L 5853.3689 -2549.2292 L 5853.2247 -2549.1771 L 5853.1618 -2549.1041 L 5853.099 -2549.0311 L 5852.9523 -2548.9734 L 5852.8058 -2548.9156 L 5852.7706 -2548.8291 L 5852.7353 -2548.7427 L 5852.649 -2548.7066 L 5852.5627 -2548.6704 L 5852.5208 -2548.5893 L 5852.4791 -2548.5083 L 5852.3482 -2548.4348 L 5852.2172 -2548.3613 L 5852.182 -2548.3074 L 5852.1467 -2548.2533 L 5852.0501 -2548.2044 L 5851.9534 -2548.1554 L 5851.917 -2548.0657 L 5851.8806 -2547.9763 L 5851.8306 -2547.9562 L 5851.7807 -2547.9361 L 5851.7247 -2547.8343 L 5851.6688 -2547.7324 L 5851.6357 -2547.7067 L 5851.6027 -2547.6808 L 5851.5138 -2547.4572 L 5851.425 -2547.2335 L 5851.3948 -2547.2457 L 5851.3647 -2547.2577 L 5851.309 -2547.4633 L 5851.2534 -2547.6687 L 5851.2502 -2549.2639 L 5851.2472 -2550.8591 L 5851.2304 -2551.0187 L 5851.2138 -2551.1783 L 5851.1384 -2551.168 L 5851.0631 -2551.1578 L 5850.9625 -2551.1645 L 5850.8619 -2551.1712 L 5850.7237 -2551.1738 L 5850.5856 -2551.1764 L 5850.0326 -2551.1669 L 5849.4796 -2551.1575 L 5849.4321 -2551.1679 L 5849.3847 -2551.1783 L 5849.3523 -2551.0665 L 5849.32 -2550.9549 L 5849.318 -2546.4951 L 5849.3161 -2542.0354 L 5849.3518 -2541.9272 L 5849.3874 -2541.8188 L 5849.509 -2541.7947 L 5849.6303 -2541.7705 L 5850.133 -2541.7734 L 5850.6357 -2541.7765 L 5850.9104 -2541.8104 L 5851.1849 -2541.8446 L 5851.2121 -2541.8788 L 5851.239 -2541.913 L 5851.2409 -2543.5945 L 5851.243 -2545.2758 L 5851.2617 -2545.4001 L 5851.2803 -2545.5244 L 5851.3192 -2545.5995 L 5851.3578 -2545.6746 L 5851.4033 -2545.6746 L 5851.4485 -2545.6746 L 5851.4977 -2545.571 L 5851.5468 -2545.4672 L 5851.5623 -2545.3828 L 5851.578 -2545.2982 L 5851.6661 -2545.2323 L 5851.7542 -2545.1663 L 5851.7542 -2545.1205 L 5851.7542 -2545.0747 L 5851.8425 -2545.0086 L 5851.9306 -2544.9427 L 5851.9574 -2544.868 L 5851.9843 -2544.7932 L 5852.0969 -2544.755 L 5852.2098 -2544.7166 L 5852.3 -2544.6054 L 5852.3903 -2544.4942 L 5852.4274 -2544.4942 L 5852.4647 -2544.4942 L 5852.5429 -2544.3895 L 5852.6213 -2544.2849 L 5852.7335 -2544.2426 L 5852.8456 -2544.2004 L 5852.922 -2544.0964 L 5852.9985 -2543.9926 L 5853.0657 -2543.9723 L 5853.1328 -2543.9518 L 5853.2081 -2543.8713 L 5853.2834 -2543.791 L 5853.3988 -2543.7262 L 5853.5143 -2543.6613 L 5853.5511 -2543.59 L 5853.5878 -2543.5187 L 5853.7002 -2543.4807 L 5853.8125 -2543.4425 L 5853.8956 -2543.3508 L 5853.9787 -2543.2592 L 5854.1077 -2543.2053 L 5854.2366 -2543.1515 L 5854.2837 -2543.0855 L 5854.3307 -2543.0198 L 5854.4312 -2542.9556 L 5854.5318 -2542.8916 L 5854.5819 -2542.8188 L 5854.6321 -2542.7462 L 5854.7579 -2542.6896 L 5854.8837 -2542.6332 L 5854.9464 -2542.5625 L 5855.0093 -2542.4918 L 5855.1058 -2542.4528 L 5855.2022 -2542.4137 L 5855.2816 -2542.3272 L 5855.3613 -2542.2408 L 5855.4814 -2542.1838 L 5855.6018 -2542.1269 L 5855.6701 -2542.0543 L 5855.7381 -2541.9814 L 5855.9141 -2541.877 L 5856.0901 -2541.7727 L 5856.7687 -2541.7694 L 5857.4474 -2541.7663 L 5858.0004 -2541.7743 L 5858.5534 -2541.782 L 5858.7166 -2541.7791 L 5858.8801 -2541.7761 L 5859.0806 -2541.8031 L 5859.2812 -2541.83 L 5859.3116 -2541.9081 L 5859.3421 -2541.986 L 5859.3295 -2542.0118 L 5859.317 -2542.0375 L 5859.2113 -2542.0714 L 5859.1054 -2542.1051 L 5859.0224 -2542.1971 L 5858.9395 -2542.2891 L 5858.8153 -2542.3415 L 5858.6911 -2542.3937 L 5858.6653 -2542.4551 L 5858.6394 -2542.5163 L 5858.4943 -2542.6094 L 5858.3494 -2542.7023 L 5858.3165 -2542.7525 L 5858.2837 -2542.8028 L 5858.1797 -2542.8374 L 5858.0758 -2542.8719 L 5857.9813 -2542.967 L 5857.8867 -2543.062 L 5857.8053 -2543.0971 L 5857.7239 -2543.1324 L 5857.6445 -2543.2194 L 5857.565 -2543.3067 L 5857.439 -2543.3597 L 5857.3131 -2543.4128 L 5857.276 -2543.4846 L 5857.239 -2543.5565 L 5857.1296 -2543.6022 L 5857.0201 -2543.6479 L 5856.9321 -2543.7464 L 5856.8441 -2543.8447 L 5856.6989 -2543.8849 L 5856.5536 -2543.9248 L 5856.515 -2543.9998 L 5856.4764 -2544.0747 L 5856.4043 -2544.1066 L 5856.3322 -2544.1383 L 5856.1428 -2544.3006 L 5855.9532 -2544.4628 L 5855.9278 -2544.5234 L 5855.9023 -2544.5841 L 5855.7323 -2544.6533 L 5855.5623 -2544.7226 L 5855.512 -2544.7794 L 5855.4616 -2544.8363 L 5855.3741 -2544.8735 L 5855.2865 -2544.9108 L 5855.2108 -2545.0005 L 5855.1349 -2545.0903 L 5855.047 -2545.1312 L 5854.959 -2545.172 L 5854.8962 -2545.258 L 5854.8332 -2545.3437 L 5854.7177 -2545.3983 L 5854.6021 -2545.4528 L 5854.5444 -2545.5309 L 5854.4866 -2545.6091 L 5854.3496 -2545.6596 L 5854.2123 -2545.7102 L 5854.1584 -2545.7824 L 5854.1044 -2545.8546 L 5853.9913 -2545.9106 L 5853.8782 -2545.9666 L 5853.815 -2546.0426 L 5853.7517 -2546.1187 L 5853.6412 -2546.1683 L 5853.5306 -2546.2178 L 5853.4969 -2546.2531 L 5853.4633 -2546.2887 L 5853.4638 -2546.4521 L 5853.4642 -2546.6158 L 5853.4832 -2546.6536 L 5853.5022 -2546.6916 L 5853.6676 -2546.7858 L 5853.8329 -2546.88 L 5853.8488 -2546.9322 L 5853.8644 -2546.9844 L 5853.9722 -2547.043 L 5854.0801 -2547.1016 L 5854.1118 -2547.1503 L 5854.1436 -2547.199 L 5854.3 -2547.2713 L 5854.4563 -2547.3436 L 5854.5066 -2547.3972 L 5854.5567 -2547.4507 L 5854.6825 -2547.5412 L 5854.8083 -2547.6318 L 5854.8385 -2547.6856 L 5854.8689 -2547.7396 L 5854.9518 -2547.7821 L 5855.0344 -2547.8248 L 5855.1223 -2547.913 L 5855.2104 -2548.0011 L 5855.3449 -2548.0405 L 5855.4795 -2548.08 L 5855.5575 -2548.185 L 5855.6358 -2548.2904 L 5855.7247 -2548.326 L 5855.8136 -2548.3617 L 5855.8764 -2548.4129 L 5855.9392 -2548.4639 L 5856.0819 -2548.5503 L 5856.2244 -2548.6368 L 5856.2513 -2548.7003 L 5856.2781 -2548.764 L 5856.3998 -2548.8154 L 5856.5214 -2548.8666 L 5856.5725 -2548.9544 L 5856.6235 -2549.042 L 5856.7646 -2549.0984 L 5856.9052 -2549.1548 L 5856.9217 -2549.1886 L 5856.9382 -2549.2223 L 5857.0889 -2549.3128 L 5857.2395 -2549.4033 L 5857.2933 -2549.4653 L 5857.347 -2549.5272 L 5857.4423 -2549.5659 L 5857.5377 -2549.6048 L 5857.6512 -2549.7294 L 5857.7646 -2549.8541 L 5857.816 -2549.8541 L 5857.8672 -2549.8541 L 5857.9372 -2549.9492 L 5858.0072 -2550.0443 L 5858.0745 -2550.0769 L 5858.1419 -2550.1093 L 5858.1944 -2550.1093 L 5858.2469 -2550.1093 L 5858.3373 -2550.2331 L 5858.4278 -2550.3567 L 5858.5346 -2550.3795 L 5858.6417 -2550.4022 L 5858.676 -2550.4646 L 5858.7104 -2550.5269 L 5858.8787 -2550.6044 L 5859.0468 -2550.6818 L 5859.0911 -2550.7511 L 5859.1353 -2550.8204 L 5859.2465 -2550.8724 L 5859.3578 -2550.9244 L 5859.3653 -2551.0217 L 5859.3728 -2551.1191 L 5859.4404 -2551.1493 L 5859.5079 -2551.1794 L 5858.9049 -2551.1694 L 5858.302 -2551.1593 L 5858.1135 -2551.1669 M 5843.5224 -2551.1659 L 5840.0036 -2551.1596 L 5839.7271 -2551.098 L 5839.4506 -2551.0364 L 5839.1874 -2551.0032 L 5838.9242 -2550.9701 L 5838.8731 -2550.8936 L 5838.822 -2550.8173 L 5838.7268 -2550.7621 L 5838.6313 -2550.7069 L 5838.5946 -2550.617 L 5838.5581 -2550.5271 L 5838.4639 -2550.4939 L 5838.3698 -2550.4607 L 5838.3407 -2550.4604 L 5838.3117 -2550.4603 L 5838.2848 -2550.3621 L 5838.2579 -2550.2639 L 5838.1853 -2550.2293 L 5838.1129 -2550.1944 L 5838.0825 -2550.088 L 5838.0521 -2549.9817 L 5838.0013 -2549.9471 L 5837.9502 -2549.9125 L 5837.8876 -2549.7318 L 5837.8252 -2549.551 L 5837.7622 -2549.4864 L 5837.6992 -2549.4218 L 5837.6758 -2549.1563 L 5837.6525 -2548.8907 L 5837.6284 -2548.7583 L 5837.6043 -2548.6257 L 5837.6036 -2546.692 L 5837.603 -2544.7582 L 5837.6292 -2544.5863 L 5837.6556 -2544.4144 L 5837.6748 -2544.06 L 5837.6944 -2543.7057 L 5837.7482 -2543.6188 L 5837.8021 -2543.5317 L 5837.8546 -2543.3535 L 5837.9071 -2543.1752 L 5838.0115 -2543.0131 L 5838.116 -2542.8511 L 5838.1973 -2542.7528 L 5838.2786 -2542.6547 L 5838.295 -2542.5709 L 5838.3117 -2542.4871 L 5838.4034 -2542.4502 L 5838.4952 -2542.4134 L 5838.5837 -2542.3255 L 5838.6722 -2542.2378 L 5838.7724 -2542.1721 L 5838.8724 -2542.1065 L 5838.9125 -2542.0453 L 5838.9527 -2541.9843 L 5839.2267 -2541.9278 L 5839.5007 -2541.8712 L 5841.3609 -2541.8666 L 5843.2209 -2541.8619 L 5843.4093 -2541.8048 L 5843.5978 -2541.7477 L 5845.7928 -2541.7533 L 5847.988 -2541.7587 L 5848.0619 -2541.8377 L 5848.1359 -2541.9167 L 5848.1624 -2541.9795 L 5848.1888 -2542.0422 L 5848.1594 -2542.4468 L 5848.1297 -2542.8511 L 5848.155 -2543.3136 L 5848.1805 -2543.7763 L 5848.0923 -2543.8781 L 5848.0042 -2543.9799 L 5847.8747 -2543.9999 L 5847.7452 -2544.0201 L 5843.7362 -2544.0288 L 5839.7271 -2544.0378 L 5839.6056 -2544.0698 L 5839.4843 -2544.1018 L 5839.4346 -2544.1649 L 5839.385 -2544.2281 L 5839.387 -2546.4858 L 5839.389 -2548.7435 L 5839.4243 -2548.8307 L 5839.4598 -2548.9175 L 5839.4957 -2548.9554 L 5839.5316 -2548.9933 L 5843.7551 -2548.996 L 5847.9786 -2548.9989 L 5848.0566 -2549.0589 L 5848.1347 -2549.1194 L 5848.137 -2549.3192 L 5848.1391 -2549.5191 L 5848.1455 -2550.2453 L 5848.1519 -2550.9713 L 5848.0727 -2551.0747 L 5847.9936 -2551.1783 L 5847.5175 -2551.1753 L 5847.0415 -2551.1722 L 5843.5224 -2551.1659 M 5801.2161 -2551.1453 L 5801.1373 -2551.1289 L 5801.1219 -2551.0417 L 5801.1066 -2550.9549 L 5801.0899 -2547.5903 L 5801.0734 -2544.2259 L 5801.0156 -2544.1526 L 5800.958 -2544.0794 L 5798.8484 -2544.0794 L 5796.739 -2544.0794 L 5796.7131 -2544.0394 L 5796.6871 -2543.9996 L 5796.6928 -2542.9777 L 5796.6984 -2541.9556 L 5796.747 -2541.8517 L 5796.7953 -2541.7477 L 5796.8499 -2541.7302 L 5796.9047 -2541.7128 L 5799.9796 -2541.7325 L 5803.0545 -2541.7519 L 5804.3741 -2541.7431 L 5805.6937 -2541.7344 L 5806.2844 -2541.7344 L 5806.8751 -2541.7344 L 5807.0199 -2541.7606 L 5807.1646 -2541.7869 L 5807.199 -2541.8723 L 5807.233 -2541.9577 L 5807.2488 -2542.1651 L 5807.2644 -2542.3725 L 5807.269 -2543.0743 L 5807.2735 -2543.7763 L 5807.2215 -2543.9039 L 5807.1695 -2544.0315 L 5805.9289 -2544.0155 L 5804.6883 -2543.9996 L 5804.5625 -2544.0233 L 5804.4369 -2544.047 L 5803.7896 -2544.0628 L 5803.1422 -2544.0786 L 5803.0355 -2544.1127 L 5802.9287 -2544.1469 L 5802.8738 -2544.2008 L 5802.8188 -2544.2548 L 5802.8448 -2544.9727 L 5802.8708 -2545.6905 L 5802.8579 -2548.307 L 5802.8453 -2550.9233 L 5802.8052 -2551.0508 L 5802.7649 -2551.1783 L 5802.0299 -2551.17 L 5801.2949 -2551.1619 L 5801.2161 -2551.1453 M 5794.0688 -2551.0857 L 5794.0435 -2550.9931 L 5794.0435 -2549.417 L 5794.0435 -2547.841 L 5794.0067 -2547.7507 L 5793.9699 -2547.6605 L 5793.9249 -2547.6355 L 5793.8801 -2547.6105 L 5793.6287 -2547.6032 L 5793.3774 -2547.5957 L 5790.3863 -2547.5912 L 5787.3952 -2547.5866 L 5787.2728 -2547.7203 L 5787.1506 -2547.854 L 5787.1709 -2548.0804 L 5787.1912 -2548.3066 L 5787.1828 -2548.4342 L 5787.1745 -2548.562 L 5787.1772 -2548.6577 L 5787.1799 -2548.7534 L 5787.1803 -2549.7744 L 5787.1807 -2550.7953 L 5787.167 -2550.8591 L 5787.1535 -2550.9229 L 5787.1134 -2551.0425 L 5787.0732 -2551.1622 L 5786.8824 -2551.1654 L 5786.6914 -2551.1684 L 5786.0592 -2551.1797 L 5785.4271 -2551.1908 L 5785.4122 -2551.0888 L 5785.3974 -2550.9868 L 5785.3832 -2546.498 L 5785.369 -2542.0093 L 5785.408 -2541.9133 L 5785.4472 -2541.8171 L 5789.5002 -2541.8153 L 5793.5533 -2541.8136 L 5793.8549 -2541.8776 L 5794.1566 -2541.9415 L 5794.2363 -2541.9416 L 5794.316 -2541.9417 L 5794.3872 -2542.0144 L 5794.4581 -2542.0869 L 5794.521 -2542.1253 L 5794.584 -2542.1638 L 5794.6533 -2542.1957 L 5794.7229 -2542.2277 L 5794.7465 -2542.3065 L 5794.7702 -2542.3853 L 5794.8462 -2542.4354 L 5794.9223 -2542.4851 L 5794.9592 -2542.576 L 5794.9962 -2542.6665 L 5795.0713 -2542.7061 L 5795.1464 -2542.7456 L 5795.1625 -2542.8378 L 5795.1783 -2542.9301 L 5795.2371 -2542.9887 L 5795.2959 -2543.0473 L 5795.3326 -2543.159 L 5795.3693 -2543.2705 L 5795.4475 -2543.3835 L 5795.5257 -2543.4967 L 5795.5784 -2543.78 L 5795.6312 -2544.0635 L 5795.6857 -2544.1379 L 5795.7401 -2544.2123 L 5795.7401 -2544.7939 L 5795.7401 -2545.3753 L 5795.6715 -2545.4786 L 5795.6032 -2545.5819 L 5795.5759 -2545.7159 L 5795.5487 -2545.8501 L 5795.5241 -2545.9499 L 5795.4993 -2546.0498 L 5795.4467 -2546.1094 L 5795.3939 -2546.1691 L 5795.363 -2546.2611 L 5795.3322 -2546.3528 L 5795.3554 -2546.4844 L 5795.3786 -2546.6158 L 5795.4776 -2546.7365 L 5795.5766 -2546.8573 L 5795.5766 -2546.9016 L 5795.5766 -2546.9459 L 5795.6353 -2547.0361 L 5795.6937 -2547.1263 L 5795.7127 -2547.1902 L 5795.7316 -2547.2539 L 5795.7635 -2547.6368 L 5795.7957 -2548.0196 L 5795.7873 -2548.9768 L 5795.7789 -2549.9339 L 5795.7793 -2550.2848 L 5795.7795 -2550.6358 L 5795.7771 -2550.7953 L 5795.7747 -2550.9549 L 5795.7309 -2551.0505 L 5795.6872 -2551.1463 L 5795.6005 -2551.1655 L 5795.5138 -2551.1847 L 5794.8041 -2551.1814 L 5794.0942 -2551.1783 L 5794.0688 -2551.0857 M 5775.3051 -2551.003 L 5775.2044 -2550.9582 L 5775.1241 -2550.8715 L 5775.0441 -2550.7846 L 5774.904 -2550.7477 L 5774.7636 -2550.7108 L 5774.7277 -2550.6015 L 5774.6918 -2550.4923 L 5774.6654 -2550.4923 L 5774.6388 -2550.4923 L 5774.4944 -2550.3056 L 5774.3498 -2550.1191 L 5774.2559 -2549.9859 L 5774.1619 -2549.8528 L 5774.0234 -2549.4952 L 5773.8849 -2549.1379 L 5773.8847 -2549.0574 L 5773.8843 -2548.9768 L 5773.8155 -2548.8013 L 5773.7466 -2548.6257 L 5773.7393 -2546.4749 L 5773.7317 -2544.3242 L 5773.7562 -2544.1938 L 5773.7806 -2544.0635 L 5773.8741 -2543.7763 L 5773.9674 -2543.4891 L 5774.0235 -2543.4036 L 5774.0797 -2543.3181 L 5774.1343 -2543.1749 L 5774.1889 -2543.0318 L 5774.2525 -2542.9789 L 5774.3161 -2542.926 L 5774.3412 -2542.8351 L 5774.3659 -2542.744 L 5774.4382 -2542.712 L 5774.5105 -2542.6801 L 5774.5685 -2542.5953 L 5774.6263 -2542.5106 L 5774.7115 -2542.4652 L 5774.7963 -2542.42 L 5774.8908 -2542.312 L 5774.9849 -2542.2039 L 5775.1569 -2542.1542 L 5775.3291 -2542.1042 L 5775.3556 -2542.0582 L 5775.3822 -2542.0122 L 5775.4763 -2541.9623 L 5775.5705 -2541.9122 L 5775.9138 -2541.8617 L 5776.2572 -2541.8112 L 5779.0739 -2541.8161 L 5781.8904 -2541.8209 L 5782.0749 -2541.8655 L 5782.2593 -2541.9099 L 5782.4347 -2541.9099 L 5782.6102 -2541.9099 L 5782.665 -2541.9471 L 5782.7199 -2541.9843 L 5782.7836 -2542.0707 L 5782.8473 -2542.1572 L 5782.9581 -2542.1809 L 5783.0688 -2542.2047 L 5783.2713 -2542.4449 L 5783.474 -2542.6851 L 5783.5198 -2542.7521 L 5783.5657 -2542.8193 L 5783.633 -2542.9282 L 5783.7002 -2543.037 L 5783.7543 -2543.1035 L 5783.8086 -2543.1701 L 5783.8439 -2543.2056 L 5783.8791 -2543.2411 L 5783.9104 -2543.4183 L 5783.9416 -2543.5955 L 5783.9999 -2543.6699 L 5784.0582 -2543.7444 L 5784.1295 -2544.0475 L 5784.2009 -2544.3505 L 5784.2041 -2544.861 L 5784.2073 -2545.3715 L 5784.2165 -2546.7114 L 5784.2258 -2548.0516 L 5784.1959 -2548.2429 L 5784.1659 -2548.4342 L 5784.1418 -2548.7884 L 5784.1177 -2549.1425 L 5784.0897 -2549.2835 L 5784.0617 -2549.4245 L 5783.9938 -2549.4739 L 5783.9259 -2549.5233 L 5783.8812 -2549.7034 L 5783.8366 -2549.8835 L 5783.7618 -2549.9511 L 5783.6869 -2550.0188 L 5783.6499 -2550.1096 L 5783.6127 -2550.2005 L 5783.5619 -2550.221 L 5783.5111 -2550.2415 L 5783.4734 -2550.3343 L 5783.4356 -2550.427 L 5783.3096 -2550.4958 L 5783.1836 -2550.5646 L 5783.1346 -2550.6519 L 5783.0856 -2550.7392 L 5782.9581 -2550.7547 L 5782.8305 -2550.7703 L 5782.7468 -2550.8865 L 5782.6629 -2551.0026 L 5782.5406 -2551.0054 L 5782.4184 -2551.0083 L 5782.2926 -2551.0334 L 5782.1669 -2551.0585 L 5778.7862 -2551.053 L 5775.4054 -2551.0477 L 5775.3051 -2551.003 M 5782.319 -2548.7868 L 5782.3806 -2548.7085 L 5782.381 -2548.0451 L 5782.3815 -2547.3815 L 5782.3806 -2545.8195 L 5782.3797 -2544.2578 L 5782.3255 -2544.1845 L 5782.2714 -2544.1113 L 5779.0019 -2544.1115 L 5775.7323 -2544.1116 L 5775.6316 -2544.1889 L 5775.5313 -2544.2662 L 5775.527 -2546.3888 L 5775.5227 -2548.5117 L 5775.5059 -2548.5791 L 5775.4889 -2548.6463 L 5775.535 -2548.711 L 5775.5813 -2548.7759 L 5775.6494 -2548.8205 L 5775.7173 -2548.8651 L 5778.9872 -2548.8651 L 5782.2572 -2548.8651 L 5782.319 -2548.7868 M 5832.4253 -2546.4017 L 5832.5132 -2546.3749 L 5832.8201 -2546.3941 L 5833.1274 -2546.4132 L 5833.1998 -2546.359 L 5833.2723 -2546.3046 L 5833.3108 -2546.1966 L 5833.3493 -2546.0885 L 5833.329 -2546.0727 L 5833.3088 -2546.0567 L 5833.2545 -2545.8498 L 5833.2002 -2545.6427 L 5833.153 -2545.6007 L 5833.1058 -2545.5586 L 5833.0445 -2545.3909 L 5832.9832 -2545.2229 L 5832.9346 -2545.1537 L 5832.8859 -2545.0844 L 5832.8442 -2544.9407 L 5832.8024 -2544.7972 L 5832.7277 -2544.6864 L 5832.6529 -2544.5758 L 5832.6389 -2544.4944 L 5832.6248 -2544.4132 L 5832.5654 -2544.3187 L 5832.5062 -2544.2243 L 5832.384 -2544.3093 L 5832.2618 -2544.3943 L 5832.1051 -2544.7552 L 5831.9483 -2545.1162 L 5831.9329 -2545.218 L 5831.9175 -2545.3195 L 5831.8668 -2545.3774 L 5831.816 -2545.4354 L 5831.7569 -2545.5949 L 5831.6978 -2545.7544 L 5831.6467 -2545.8342 L 5831.5956 -2545.9138 L 5831.5746 -2546.0095 L 5831.5538 -2546.1054 L 5831.5754 -2546.2089 L 5831.5972 -2546.3123 L 5831.6529 -2546.3571 L 5831.7088 -2546.4018 L 5832.0229 -2546.415 L 5832.3371 -2546.4285 L 5832.4253 -2546.4017 M 5812.2252 -2546.3816 L 5812.2666 -2546.3236 L 5812.2666 -2546.1846 L 5812.2666 -2546.0455 L 5812.2206 -2545.9798 L 5812.1744 -2545.9138 L 5812.1321 -2545.7677 L 5812.0898 -2545.6216 L 5812.0426 -2545.5573 L 5811.9955 -2545.4931 L 5811.9551 -2545.3939 L 5811.9147 -2545.295 L 5811.9147 -2545.244 L 5811.9147 -2545.1932 L 5811.8542 -2545.1164 L 5811.7939 -2545.0398 L 5811.7523 -2544.8806 L 5811.7104 -2544.721 L 5811.6555 -2544.6337 L 5811.6004 -2544.5464 L 5811.525 -2544.3688 L 5811.4497 -2544.1911 L 5811.3937 -2544.1809 L 5811.3376 -2544.1708 L 5811.2637 -2544.3245 L 5811.19 -2544.4781 L 5811.1349 -2544.5891 L 5811.08 -2544.6999 L 5811.0311 -2544.8576 L 5810.9821 -2545.0152 L 5810.9207 -2545.108 L 5810.859 -2545.201 L 5810.859 -2545.2647 L 5810.859 -2545.3286 L 5810.7797 -2545.4291 L 5810.7007 -2545.5296 L 5810.6039 -2545.7966 L 5810.507 -2546.0638 L 5810.5073 -2546.1006 L 5810.5074 -2546.1373 L 5810.5332 -2546.2551 L 5810.5589 -2546.3729 L 5810.665 -2546.3906 L 5810.7709 -2546.4082 L 5811.4775 -2546.4239 L 5812.1839 -2546.4396 L 5812.2252 -2546.3816 M 5826.2611 -2545.4604 L 5826.3185 -2545.4467 L 5826.3605 -2545.3653 L 5826.4025 -2545.284 L 5826.4126 -2544.7677 L 5826.4227 -2544.2511 L 5826.354 -2544.1476 L 5826.2853 -2544.0439 L 5822.8304 -2544.0537 L 5819.3755 -2544.0635 L 5819.3274 -2544.1388 L 5819.2795 -2544.2141 L 5819.2795 -2544.7629 L 5819.2795 -2545.3117 L 5819.3499 -2545.3974 L 5819.4203 -2545.4832 L 5822.8124 -2545.4788 L 5826.2042 -2545.4746 L 5826.2611 -2545.4604 M 5770.8505 -2545.3948 L 5770.917 -2545.3065 L 5770.9202 -2544.7694 L 5770.9232 -2544.2321 L 5770.8529 -2544.1389 L 5770.7825 -2544.0457 L 5767.3523 -2544.0485 L 5763.9222 -2544.0514 L 5763.8767 -2544.0823 L 5763.8312 -2544.1132 L 5763.7948 -2544.2025 L 5763.7584 -2544.2918 L 5763.7735 -2544.8262 L 5763.7884 -2545.3607 L 5763.8524 -2545.4139 L 5763.9165 -2545.4672 L 5767.3502 -2545.475 L 5770.784 -2545.4829 L 5770.8505 -2545.3948 M 5793.464 -2545.3874 L 5793.9276 -2545.3715 L 5793.97 -2545.2758 L 5794.0123 -2545.18 L 5794.0275 -2544.7264 L 5794.0424 -2544.2728 L 5793.9848 -2544.188 L 5793.9273 -2544.103 L 5793.8032 -2544.0773 L 5793.6789 -2544.0515 L 5790.5495 -2544.0485 L 5787.4201 -2544.0456 L 5787.3511 -2544.1427 L 5787.282 -2544.2399 L 5787.282 -2544.6841 L 5787.282 -2545.1281 L 5787.3049 -2545.2043 L 5787.3277 -2545.2808 L 5787.487 -2545.334 L 5787.6465 -2545.3873 L 5790.3233 -2545.3953 L 5793.0003 -2545.4034 L 5793.464 -2545.3874\",\"stroke\":\"none\",\"layerid\":\"4\",\"id\":\"gge10906\"}}","VIA~5653.129~-2821.06~2.3622~LHPOUT~0.7874~rep1953~0","VIA~5708.671~-2784.444~2.3622~GND~0.7874~rep1954~0","VIA~5702.171~-2784.444~2.3622~GND~0.7874~rep1955~0","VIA~5696.171~-2784.444~2.3622~GND~0.7874~rep1956~0","VIA~5575.804~-2753.579~2.3622~BAT+~0.7874~rep1957~0","VIA~5480.304~-2568.341~2.3622~GND~0.7874~rep1958~0","VIA~5643.335~-2746.885~2.3622~GND~0.7874~rep1959~0","VIA~5637.39~-2746.885~2.3622~GND~0.7874~rep1960~0","VIA~5631.485~-2746.885~2.3622~GND~0.7874~rep1961~0","VIA~5625.619~-2746.885~2.3622~GND~0.7874~rep1962~0","VIA~5619.674~-2746.885~2.3622~GND~0.7874~rep1963~0","VIA~5613.768~-2746.885~2.3622~GND~0.7874~rep1964~0","VIA~5607.902~-2746.885~2.3622~GND~0.7874~rep1965~0","VIA~5601.957~-2746.885~2.3622~GND~0.7874~rep1966~0","VIA~5596.052~-2746.885~2.3622~GND~0.7874~rep1967~0","VIA~5643.335~-2759.955~2.3622~GND~0.7874~rep1968~0","VIA~5637.39~-2759.955~2.3622~GND~0.7874~rep1969~0","VIA~5631.485~-2759.955~2.3622~GND~0.7874~rep1970~0","VIA~5625.619~-2759.955~2.3622~GND~0.7874~rep1971~0","VIA~5619.674~-2759.955~2.3622~GND~0.7874~rep1972~0","VIA~5613.768~-2759.955~2.3622~GND~0.7874~rep1973~0","VIA~5607.902~-2759.955~2.3622~GND~0.7874~rep1974~0","VIA~5601.957~-2759.955~2.3622~GND~0.7874~rep1975~0","VIA~5596.052~-2759.955~2.3622~GND~0.7874~rep1976~0","VIA~5590.186~-2759.955~2.3622~GND~0.7874~rep1977~0","VIA~5584.241~-2759.955~2.3622~GND~0.7874~rep1978~0","VIA~5578.335~-2759.955~2.3622~GND~0.7874~rep1979~0","VIA~5472.868~-2711.503~2.3622~GND~0.7874~rep1980~0","VIA~5541.287~-2714.326~3.1496~VIN~0.98425~rep1981~0","VIA~5520.461~-2712.987~3.937~VIN~1.5748~rep1982~0","VIA~5495.972~-2748.696~2.3622~VIN~0.7874~rep1983~0","VIA~5486.372~-2737.96~2.3622~VIN~0.7874~rep1984~0","VIA~5488.531~-2736.727~2.3622~VIN~0.7874~rep1985~0","VIA~5488.61~-2739.05~2.3622~VIN~0.7874~rep1986~0","VIA~5488.61~-2739.05~2.3622~VIN~0.7874~rep1987~0","VIA~5497.587~-2733.538~2.3622~GND~0.7874~rep1988~0","VIA~5500.736~-2733.538~2.3622~GND~0.7874~rep1989~0","VIA~5500.736~-2736.963~2.3622~GND~0.7874~rep1990~0","VIA~5497.587~-2736.963~2.3622~GND~0.7874~rep1991~0","VIA~5486.248~-2743.066~2.3622~U6-9~0.7874~rep1992~0","VIA~5486.287~-2746.215~2.3622~U6-7~0.7874~rep1993~0","VIA~5937.39~-2582.357~2.3622~GND~0.7874~rep1994~0","VIA~5937.39~-2588.656~2.3622~GND~0.7874~rep1995~0","VIA~5937.39~-2594.247~2.3622~GND~0.7874~rep1996~0","VIA~5842.902~-2620.861~2.3622~GND~0.7874~rep1997~0","VIA~5848.807~-2620.861~2.3622~GND~0.7874~rep1998~0","VIA~5854.713~-2620.861~2.3622~GND~0.7874~rep1999~0","VIA~5860.618~-2620.861~2.3622~GND~0.7874~rep2000~0","VIA~5866.524~-2620.861~2.3622~GND~0.7874~rep2001~0","VIA~5806.288~-2636.058~2.3622~GND~0.7874~rep2002~0","VIA~5806.288~-2639.876~2.3622~GND~0.7874~rep2003~0","VIA~5823.756~-2597.674~2.3622~SDA~0.7874~rep2004~0","VIA~5758.372~-2766.178~2.7559~+3V3~0.98425~rep2005~0","VIA~5823.18~-2766.178~2.7559~+3V3~0.98425~rep2006~0","VIA~5782.863~-2762.199~2.3622~PP_CPLD_TMS~0.7874~rep2007~0","VIA~5756.288~-2762.199~2.3622~PP_CPLD_TMS~0.7874~rep2008~0","VIA~5754.201~-2754.522~2.3622~H1_CPLD_TDI~0.7874~rep2009~0","VIA~5718.928~-2706.133~2.3622~H1_CPLD_TDI~0.7874~rep2010~0","VIA~5805.844~-2757.241~2.3622~H1_CPLD_TCK~0.7874~rep2011~0","VIA~5762.429~-2757.16~2.3622~H1_CPLD_TCK~0.7874~rep2012~0","VIA~5722.635~-2703.308~2.3622~H1_CPLD_TCK~0.7874~rep2013~0","VIA~5793.244~-2753.971~2.3622~PP_CPLD_TDO~0.7874~rep2014~0","VIA~5763.65~-2753.971~2.3622~PP_CPLD_TDO~0.7874~rep2015~0","VIA~5740.618~-2796.57~2.3622~SDA~0.7874~rep2016~0","VIA~5573.059~-2805.112~2.3622~GND~0.7874~rep2017~0","VIA~5573.099~-2808.656~2.3622~GND~0.7874~rep2018~0","VIA~5580.698~-2805.743~2.3622~GND~0.7874~rep2019~0","VIA~5645.658~-2784.247~2.3622~GND~0.7874~rep2020~0","VIA~5645.658~-2787.869~2.3622~GND~0.7874~rep2021~0","VIA~5552.39~-2804.759~2.3622~GND~0.7874~rep2022~0","VIA~5549.201~-2804.759~2.3622~GND~0.7874~rep2023~0","VIA~5569.556~-2772.042~2.3622~GND~0.7874~rep2024~0","VIA~5572.115~-2775.467~2.3622~GND~0.7874~rep2025~0","VIA~5614.949~-2779.247~2.3622~GND~0.7874~rep2026~0","VIA~5612.587~-2781.648~2.3622~GND~0.7874~rep2027~0","VIA~5572.43~-2723.774~2.3622~GND~0.7874~rep2028~0","VIA~5572.43~-2727.79~2.3622~GND~0.7874~rep2029~0","VIA~5572.43~-2731.648~2.3622~GND~0.7874~rep2030~0","VIA~5561~-2732.943~2.3622~GND~0.7874~rep2031~0","VIA~5564.032~-2736.053~2.3622~GND~0.7874~rep2032~0","VIA~5558.205~-2729.793~2.3622~GND~0.7874~rep2033~0","VIA~5692.902~-2822.2~2.3622~GND~0.7874~rep2034~0","VIA~5686.996~-2822.2~2.3622~GND~0.7874~rep2035~0","VIA~5698.807~-2822.2~2.3622~GND~0.7874~rep2036~0","VIA~5657.469~-2822.2~2.3622~GND~0.7874~rep2037~0","VIA~5704.713~-2822.2~2.3622~GND~0.7874~rep2038~0","VIA~5681.091~-2822.2~2.3622~GND~0.7874~rep2039~0","VIA~5675.185~-2822.2~2.3622~GND~0.7874~rep2040~0","VIA~5710.618~-2822.2~2.3622~GND~0.7874~rep2041~0","VIA~5569.269~-2825.666~2.3622~GND~0.7874~rep2042~0","VIA~5575.175~-2825.666~2.3622~GND~0.7874~rep2043~0","VIA~5736.86~-2794.133~2.3622~SCL~0.7874~rep2044~0","VIA~5614.072~-2787.162~1.9685~GND~0.59055~rep2045~0","VIA~5671.946~-2815.705~2.3622~+3V3~0.7874~rep2046~0","VIA~5595.175~-2797.753~2.3622~SDA~0.7874~rep2047~0","VIA~5597.97~-2794.603~2.3622~SCL~0.7874~rep2048~0","VIA~5616.592~-2815.742~2.3622~+3V3~0.7874~rep2049~0","VIA~5640.293~-2808.107~2.3622~+3V3~0.7874~rep2050~0","VIA~5640.323~-2776.865~2.3622~+3V3~0.7874~rep2051~0","VIA~5671.981~-2789.126~2.3622~+3V3~0.7874~rep2052~0","VIA~5574.387~-2801.571~2.3622~RHPOUT_SPK~0.7874~rep2053~0","VIA~5519.482~-2757.409~2.3622~RHPOUT_SPK~0.7874~rep2054~0","VIA~5572.301~-2815.587~2.3622~NETK2_1~0.7874~rep2055~0","VIA~5521.002~-2789.249~2.3622~LHPOUT~0.7874~rep2056~0","VIA~5623.836~-2818.343~2.3622~RHPOUT~0.7874~rep2057~0","VIA~5520.805~-2768.619~2.3622~RHPOUT~0.7874~rep2058~0","VIA~5656.002~-2773.085~2.3622~I2S0_MCLK~0.7874~rep2059~0","VIA~5662.458~-2797.989~2.3622~I2S0_TX_SDA~0.7874~rep2060~0","VIA~5665.844~-2792.871~2.3622~I2S0_SCK~0.7874~rep2061~0","VIA~5668.994~-2697.91~2.3622~H1_CPLD_TDI~0.7874~rep2062~0","VIA~5668.994~-2802.91~2.3622~H1_CPLD_TDI~0.7874~rep2063~0","VIA~5659.072~-2807.949~2.3622~I2S0_WS~0.7874~rep2064~0","VIA~5644.427~-2807.949~2.3622~NETR20_1~0.7874~rep2065~0","VIA~5644.506~-2799.997~2.3622~NETR20_1~0.7874~rep2066~0","VIA~5582.221~-2635.581~2.3622~GND~0.7874~rep2067~0","VIA~5605.922~-2656.762~2.3622~GND~0.7874~rep2068~0","VIA~5602.3~-2652.352~2.3622~GND~0.7874~rep2069~0","VIA~5578.638~-2632.47~2.3622~GND~0.7874~rep2070~0","VIA~5614.583~-2634.36~2.3622~GND~0.7874~rep2071~0","VIA~5614.622~-2629.124~2.3622~GND~0.7874~rep2072~0","VIA~5608.756~-2634.518~2.3622~GND~0.7874~rep2073~0","VIA~5614.583~-2640.423~2.3622~GND~0.7874~rep2074~0","VIA~5609.426~-2660.305~2.3622~GND~0.7874~rep2075~0","VIA~5678.729~-2577.707~2.3622~GND~0.7874~rep2076~0","VIA~5672.823~-2577.667~2.3622~GND~0.7874~rep2077~0","VIA~5666.918~-2577.628~2.3622~GND~0.7874~rep2078~0","VIA~5661.012~-2577.667~2.3622~GND~0.7874~rep2079~0","VIA~5655.107~-2577.628~2.3622~GND~0.7874~rep2080~0","VIA~5937.39~-2599.759~2.3622~GND~0.7874~rep2081~0","VIA~5937.39~-2604.483~2.3622~GND~0.7874~rep2082~0","VIA~5937.311~-2609.05~2.3622~GND~0.7874~rep2083~0","VIA~5937.39~-2614.286~2.3622~GND~0.7874~rep2084~0","VIA~5936.721~-2565.349~2.3622~GND~0.7874~rep2085~0","VIA~5936.681~-2559.444~2.3622~GND~0.7874~rep2086~0","VIA~5913.768~-2537.829~2.3622~GND~0.7874~rep2087~0","VIA~5907.862~-2537.869~2.3622~GND~0.7874~rep2088~0","VIA~5901.957~-2537.908~2.3622~GND~0.7874~rep2089~0","VIA~5896.051~-2537.869~2.3622~GND~0.7874~rep2090~0","VIA~5890.146~-2537.869~2.3622~GND~0.7874~rep2091~0","VIA~5884.24~-2537.829~2.3622~GND~0.7874~rep2092~0","VIA~5878.335~-2537.79~2.3622~GND~0.7874~rep2093~0","VIA~5872.429~-2537.829~2.3622~GND~0.7874~rep2094~0","VIA~5866.524~-2537.829~2.3622~GND~0.7874~rep2095~0","VIA~5860.618~-2537.79~2.3622~GND~0.7874~rep2096~0","VIA~5854.713~-2537.79~2.3622~GND~0.7874~rep2097~0","VIA~5848.807~-2537.79~2.3622~GND~0.7874~rep2098~0","VIA~5842.902~-2537.79~2.3622~GND~0.7874~rep2099~0","VIA~5836.996~-2537.79~2.3622~GND~0.7874~rep2100~0","VIA~5831.091~-2537.79~2.3622~GND~0.7874~rep2101~0","VIA~5825.185~-2537.751~2.3622~GND~0.7874~rep2102~0","VIA~5486.21~-2564.444~2.3622~GND~0.7874~rep2103~0","VIA~5492.115~-2560.034~2.3622~GND~0.7874~rep2104~0","VIA~5496.839~-2555.506~2.3622~GND~0.7874~rep2105~0","VIA~5472.902~-2567.711~2.3622~GND~0.7874~rep2106~0","VIA~5472.823~-2573.617~2.3622~GND~0.7874~rep2107~0","VIA~5472.823~-2579.522~2.3622~GND~0.7874~rep2108~0","VIA~5472.823~-2585.428~2.3622~GND~0.7874~rep2109~0","VIA~5472.823~-2591.333~2.3622~GND~0.7874~rep2110~0","VIA~5472.823~-2597.239~2.3622~GND~0.7874~rep2111~0","VIA~5479.91~-2790.939~2.3622~GND~0.7874~rep2112~0","VIA~5474.004~-2790.939~2.3622~GND~0.7874~rep2113~0","VIA~5782.666~-2822.26~2.3622~GND~0.7874~rep2114~0","VIA~5771.592~-2822.162~2.3622~GND~0.7874~rep2115~0","VIA~5763.768~-2822.221~2.3622~GND~0.7874~rep2116~0","VIA~5751.957~-2822.26~2.3622~GND~0.7874~rep2117~0","VIA~5776.76~-2613.142~2.3622~GND~0.7874~rep2118~0","VIA~5776.76~-2618.22~2.3622~GND~0.7874~rep2119~0","VIA~5776.76~-2622.394~2.3622~GND~0.7874~rep2120~0","VIA~5803.925~-2708.063~2.3622~GND~0.7874~rep2121~0","VIA~5775.898~-2650.583~2.3622~GND~0.7874~rep2122~0","VIA~5768.693~-2650.386~2.3622~GND~0.7874~rep2123~0","VIA~5761.213~-2650.307~2.3622~GND~0.7874~rep2124~0","VIA~5788.457~-2689.087~2.3622~GND~0.7874~rep2125~0","VIA~5756.095~-2689.874~2.3622~GND~0.7874~rep2126~0","VIA~5775.032~-2687.709~2.3622~GND~0.7874~rep2127~0","VIA~5775.032~-2691.528~2.3622~GND~0.7874~rep2128~0","VIA~5775.819~-2666.528~2.3622~GND~0.7874~rep2129~0","VIA~5775.78~-2673.85~2.3622~GND~0.7874~rep2130~0","VIA~5768.772~-2673.772~2.3622~GND~0.7874~rep2131~0","VIA~5768.733~-2666.606~2.3622~GND~0.7874~rep2132~0","VIA~5761.292~-2666.567~2.3622~GND~0.7874~rep2133~0","VIA~5761.41~-2673.772~2.3622~GND~0.7874~rep2134~0","VIA~5872.429~-2620.861~2.3622~GND~0.7874~rep2135~0","VIA~5878.335~-2620.861~2.3622~GND~0.7874~rep2136~0","VIA~5884.24~-2620.861~2.3622~GND~0.7874~rep2137~0","VIA~5890.146~-2620.861~2.3622~GND~0.7874~rep2138~0","VIA~5896.051~-2620.861~2.3622~GND~0.7874~rep2139~0","VIA~5746.052~-2612.354~2.3622~GND~0.7874~rep2140~0","VIA~5746.052~-2615.819~2.3622~GND~0.7874~rep2141~0","VIA~5746.052~-2619.402~2.3622~GND~0.7874~rep2142~0","VIA~5746.052~-2622.748~2.3622~GND~0.7874~rep2143~0","VIA~5767.063~-2628.218~2.3622~GND~0.7874~rep2144~0","VIA~5767.063~-2631.683~2.3622~GND~0.7874~rep2145~0","VIA~5812~-2711.095~2.3622~+3V3~0.7874~rep2146~0","VIA~5796.288~-2728.302~2.3622~+3V3~0.7874~rep2147~0","VIA~5937.39~-2620.861~2.3622~GND~0.7874~rep2148~0","VIA~5931.485~-2620.861~2.3622~GND~0.7874~rep2149~0","VIA~5925.579~-2620.861~2.3622~GND~0.7874~rep2150~0","VIA~5919.674~-2620.861~2.3622~GND~0.7874~rep2151~0","VIA~5913.768~-2620.861~2.3622~GND~0.7874~rep2152~0","VIA~5907.863~-2620.861~2.3622~GND~0.7874~rep2153~0","VIA~5901.957~-2620.861~2.3622~GND~0.7874~rep2154~0","VIA~5489.359~-2790.939~2.3622~GND~0.7874~rep2155~0","VIA~5496.052~-2790.939~2.3622~GND~0.7874~rep2156~0","VIA~5502.744~-2790.939~2.3622~GND~0.7874~rep2157~0","VIA~5508.256~-2800.388~2.3622~GND~0.7874~rep2158~0","VIA~5508.256~-2795.664~2.3622~GND~0.7874~rep2159~0","VIA~5508.256~-2790.939~2.3622~GND~0.7874~rep2160~0","VIA~5474.004~-2796.845~2.3622~GND~0.7874~rep2161~0","VIA~5479.91~-2796.845~2.3622~GND~0.7874~rep2162~0","VIA~5488.572~-2798.42~2.3622~GND~0.7874~rep2163~0","VIA~5495.658~-2802.357~2.3622~GND~0.7874~rep2164~0","VIA~5499.595~-2808.656~2.3622~GND~0.7874~rep2165~0","VIA~5500.383~-2814.955~2.3622~GND~0.7874~rep2166~0","VIA~5472.823~-2662.199~2.3622~GND~0.7874~rep2167~0","VIA~5472.823~-2656.294~2.3622~GND~0.7874~rep2168~0","VIA~5472.823~-2650.388~2.3622~GND~0.7874~rep2169~0","VIA~5472.823~-2644.483~2.3622~GND~0.7874~rep2170~0","VIA~5472.823~-2638.577~2.3622~GND~0.7874~rep2171~0","VIA~5472.823~-2632.672~2.3622~GND~0.7874~rep2172~0","VIA~5472.823~-2626.766~2.3622~GND~0.7874~rep2173~0","VIA~5472.823~-2620.861~2.3622~GND~0.7874~rep2174~0","VIA~5472.823~-2614.955~2.3622~GND~0.7874~rep2175~0","VIA~5472.823~-2609.05~2.3622~GND~0.7874~rep2176~0","VIA~5472.823~-2603.144~2.3622~GND~0.7874~rep2177~0","VIA~5473.217~-2562.593~2.3622~GND~0.7874~rep2178~0","VIA~5473.217~-2557.475~2.3622~GND~0.7874~rep2179~0","VIA~5501.564~-2551.176~2.3622~GND~0.7874~rep2180~0","VIA~5505.107~-2547.239~2.3622~GND~0.7874~rep2181~0","VIA~5508.65~-2543.696~2.3622~GND~0.7874~rep2182~0","VIA~5512.194~-2540.152~2.3622~GND~0.7874~rep2183~0","VIA~5494.477~-2536.215~2.3622~GND~0.7874~rep2184~0","VIA~5500.383~-2536.215~2.3622~GND~0.7874~rep2185~0","VIA~5506.288~-2536.215~2.3622~GND~0.7874~rep2186~0","VIA~5512.194~-2536.215~2.3622~GND~0.7874~rep2187~0","VIA~5518.099~-2536.215~2.3622~GND~0.7874~rep2188~0","VIA~5524.005~-2536.215~2.3622~GND~0.7874~rep2189~0","VIA~5529.91~-2536.215~2.3622~GND~0.7874~rep2190~0","VIA~5535.816~-2536.215~2.3622~GND~0.7874~rep2191~0","VIA~5541.721~-2536.215~2.3622~GND~0.7874~rep2192~0","VIA~5547.627~-2536.215~2.3622~GND~0.7874~rep2193~0","VIA~5553.532~-2536.215~2.3622~GND~0.7874~rep2194~0","VIA~5559.438~-2536.215~2.3622~GND~0.7874~rep2195~0","VIA~5565.343~-2536.215~2.3622~GND~0.7874~rep2196~0","VIA~5571.249~-2536.215~2.3622~GND~0.7874~rep2197~0","VIA~5577.154~-2536.215~2.3622~GND~0.7874~rep2198~0","VIA~5583.06~-2536.215~2.3622~GND~0.7874~rep2199~0","VIA~5588.965~-2536.215~2.3622~GND~0.7874~rep2200~0","VIA~5594.871~-2536.215~2.3622~GND~0.7874~rep2201~0","VIA~5600.776~-2536.215~2.3622~GND~0.7874~rep2202~0","VIA~5606.682~-2536.215~2.3622~GND~0.7874~rep2203~0","VIA~5612.587~-2536.215~2.3622~GND~0.7874~rep2204~0","VIA~5618.493~-2536.215~2.3622~GND~0.7874~rep2205~0","VIA~5624.398~-2536.215~2.3622~GND~0.7874~rep2206~0","VIA~5630.304~-2536.215~2.3622~GND~0.7874~rep2207~0","VIA~5636.209~-2536.215~2.3622~GND~0.7874~rep2208~0","VIA~5642.115~-2536.215~2.3622~GND~0.7874~rep2209~0","VIA~5648.02~-2536.215~2.3622~GND~0.7874~rep2210~0","VIA~5653.926~-2536.215~2.3622~GND~0.7874~rep2211~0","VIA~5659.831~-2536.215~2.3622~GND~0.7874~rep2212~0","VIA~5665.737~-2536.215~2.3622~GND~0.7874~rep2213~0","VIA~5671.642~-2536.215~2.3622~GND~0.7874~rep2214~0","VIA~5677.548~-2536.215~2.3622~GND~0.7874~rep2215~0","VIA~5683.453~-2536.215~2.3622~GND~0.7874~rep2216~0","VIA~5689.359~-2536.215~2.3622~GND~0.7874~rep2217~0","VIA~5695.264~-2536.215~2.3622~GND~0.7874~rep2218~0","VIA~5701.17~-2536.215~2.3622~GND~0.7874~rep2219~0","VIA~5707.075~-2536.215~2.3622~GND~0.7874~rep2220~0","VIA~5712.981~-2536.215~2.3622~GND~0.7874~rep2221~0","VIA~5718.886~-2536.215~2.3622~GND~0.7874~rep2222~0","VIA~5724.792~-2536.215~2.3622~GND~0.7874~rep2223~0","VIA~5730.697~-2536.215~2.3622~GND~0.7874~rep2224~0","VIA~5736.603~-2536.215~2.3622~GND~0.7874~rep2225~0","VIA~5742.508~-2536.215~2.3622~GND~0.7874~rep2226~0","VIA~5748.414~-2536.215~2.3622~GND~0.7874~rep2227~0","VIA~5754.347~-2536.215~2.3622~GND~0.7874~rep2228~0","VIA~5760.252~-2536.215~2.3622~GND~0.7874~rep2229~0","VIA~5766.158~-2536.215~2.3622~GND~0.7874~rep2230~0","VIA~5772.063~-2536.215~2.3622~GND~0.7874~rep2231~0","VIA~5777.969~-2536.215~2.3622~GND~0.7874~rep2232~0","VIA~5784.032~-2536.21~2.3622~GND~0.7874~rep2233~0","VIA~5790.214~-2536.257~2.3622~GND~0.7874~rep2234~0","VIA~5795.658~-2537.79~2.3622~GND~0.7874~rep2235~0","VIA~5801.563~-2537.79~2.3622~GND~0.7874~rep2236~0","VIA~5807.469~-2537.79~2.3622~GND~0.7874~rep2237~0","VIA~5813.374~-2537.79~2.3622~GND~0.7874~rep2238~0","VIA~5819.28~-2537.79~2.3622~GND~0.7874~rep2239~0","VIA~5500.372~-2825.666~2.3622~GND~0.7874~rep2240~0","VIA~5506.277~-2825.666~2.3622~GND~0.7874~rep2241~0","VIA~5512.183~-2825.666~2.3622~GND~0.7874~rep2242~0","VIA~5518.088~-2825.666~2.3622~GND~0.7874~rep2243~0","VIA~5539.742~-2825.666~2.3622~GND~0.7874~rep2244~0","VIA~5545.647~-2825.666~2.3622~GND~0.7874~rep2245~0","VIA~5551.553~-2825.666~2.3622~GND~0.7874~rep2246~0","VIA~5563.364~-2825.666~2.3622~GND~0.7874~rep2247~0","VIA~5557.458~-2825.666~2.3622~GND~0.7874~rep2248~0","VIA~5581.08~-2825.666~2.3622~GND~0.7874~rep2249~0","VIA~5587.301~-2825.587~2.3622~GND~0.7874~rep2250~0","VIA~5593.049~-2825.548~2.3622~GND~0.7874~rep2251~0","VIA~5597.931~-2825.627~2.3622~GND~0.7874~rep2252~0","VIA~5604.702~-2825.666~2.3622~GND~0.7874~rep2253~0","VIA~5610.608~-2825.666~2.3622~GND~0.7874~rep2254~0","VIA~5616.513~-2825.666~2.3622~GND~0.7874~rep2255~0","VIA~5622.419~-2825.666~2.3622~GND~0.7874~rep2256~0","VIA~5628.324~-2825.666~2.3622~GND~0.7874~rep2257~0","VIA~5634.23~-2825.666~2.3622~GND~0.7874~rep2258~0","VIA~5640.135~-2825.666~2.3622~GND~0.7874~rep2259~0","VIA~5646.041~-2825.666~2.3622~GND~0.7874~rep2260~0","VIA~5663.374~-2822.2~2.3622~GND~0.7874~rep2261~0","VIA~5669.28~-2822.2~2.3622~GND~0.7874~rep2262~0","VIA~5716.524~-2822.2~2.3622~GND~0.7874~rep2263~0","VIA~5722.43~-2822.221~2.3622~GND~0.7874~rep2264~0","VIA~5728.335~-2822.221~2.3622~GND~0.7874~rep2265~0","VIA~5734.241~-2822.221~2.3622~GND~0.7874~rep2266~0","VIA~5740.146~-2822.221~2.3622~GND~0.7874~rep2267~0","VIA~5746.052~-2822.221~2.3622~GND~0.7874~rep2268~0","VIA~5792.576~-2822.359~2.3622~GND~0.7874~rep2269~0","VIA~5802.744~-2822.221~2.3622~GND~0.7874~rep2270~0","VIA~5808.65~-2822.221~2.3622~GND~0.7874~rep2271~0","VIA~5815.736~-2822.221~2.3622~GND~0.7874~rep2272~0","VIA~5821.642~-2822.221~2.3622~GND~0.7874~rep2273~0","VIA~5827.547~-2822.221~2.3622~GND~0.7874~rep2274~0","VIA~5833.453~-2822.221~2.3622~GND~0.7874~rep2275~0","VIA~5839.358~-2822.221~2.3622~GND~0.7874~rep2276~0","VIA~5845.264~-2822.221~2.3622~GND~0.7874~rep2277~0","VIA~5851.169~-2822.221~2.3622~GND~0.7874~rep2278~0","VIA~5857.075~-2822.221~2.3622~GND~0.7874~rep2279~0","VIA~5862.98~-2822.221~2.3622~GND~0.7874~rep2280~0","VIA~5868.886~-2822.221~2.3622~GND~0.7874~rep2281~0","VIA~5874.791~-2822.221~2.3622~GND~0.7874~rep2282~0","VIA~5880.697~-2822.221~2.3622~GND~0.7874~rep2283~0","VIA~5886.602~-2822.221~2.3622~GND~0.7874~rep2284~0","VIA~5892.508~-2822.221~2.3622~GND~0.7874~rep2285~0","VIA~5898.413~-2822.221~2.3622~GND~0.7874~rep2286~0","VIA~5904.319~-2822.221~2.3622~GND~0.7874~rep2287~0","VIA~5910.224~-2822.221~2.3622~GND~0.7874~rep2288~0","VIA~5591.788~-2608.811~2.3622~I2S0_SCK~0.7874~rep2289~0","VIA~5576.872~-2612.009~2.3622~I2S0_TX_SDA~0.7874~rep2290~0","VIA~5596.862~-2620.547~2.3622~I2S0_MCLK~0.7874~rep2291~0","VIA~5498.914~-2607.628~2.7559~VBAT~0.98425~rep2292~0","VIA~5808.205~-2567.628~3.5433~VBAT~1.37795~rep2293~0","VIA~5586.748~-2617.708~2.3622~I2S0_WS~0.7874~rep2294~0","VIA~5551.829~-2551.919~2.3622~NETM1_2~0.7874~rep2295~0","VIA~5821.12~-2601.257~2.3622~SCL~0.7874~rep2296~0","VIA~5788.822~-2567.708~2.3622~MCU_DIR~0.7874~rep2297~0","VIA~5620.849~-2555.326~2.3622~MCU_DIR~0.7874~rep2298~0","VIA~5784.983~-2592.688~2.3622~MCU_LCD_WR~0.7874~rep2299~0","VIA~5616.912~-2592.688~2.3622~MCU_LCD_WR~0.7874~rep2300~0","VIA~5753.448~-2562.964~2.3622~REF_EN~0.7874~rep2301~0","VIA~5753.448~-2550.483~2.3622~REF_EN~0.7874~rep2302~0","VIA~5733.496~-2595.189~2.3622~P2_8~0.7874~rep2303~0","VIA~5626.952~-2595.208~2.3622~P2_8~0.7874~rep2304~0","VIA~5731.213~-2598.063~2.3622~MCU_ADDR~0.7874~rep2305~0","VIA~5606.912~-2593.2~2.3622~MCU_ADDR~0.7874~rep2306~0","VIA~5727.748~-2564.087~2.3622~MCU_IO_STBX~0.7874~rep2307~0","VIA~5610.416~-2555.72~2.3622~MCU_IO_STBX~0.7874~rep2308~0","VIA~5724.342~-2566.153~2.3622~MCU_LCD_TE~0.7874~rep2309~0","VIA~5541.007~-2555.09~2.3622~MCU_LCD_TE~0.7874~rep2310~0","VIA~5722.003~-2589.775~2.3622~MCU_LCD_RD~0.7874~rep2311~0","VIA~5541.085~-2589.775~2.3622~MCU_LCD_RD~0.7874~rep2312~0","VIA~5718.323~-2587.195~2.3622~RESET#~0.7874~rep2313~0","VIA~5530.416~-2589.617~2.3622~RESET#~0.7874~rep2314~0","VIA~5476.356~-2761.729~2.3622~NETK2_3~0.7874~rep2315~0","VIA~5725.815~-2700.546~2.3622~PP_CPLD_TDO~0.7874~rep2316~0","VIA~5709.284~-2651.724~2.3622~PP_CPLD_TDO~0.7874~rep2317~0","VIA~5670.583~-2687.984~2.3622~H1_CPLD_TCK~0.7874~rep2318~0","VIA~5714.674~-2709.719~2.3622~PP_CPLD_TMS~0.7874~rep2319~0","VIA~5709.284~-2641.685~2.3622~PP_CPLD_TMS~0.7874~rep2320~0","VIA~5670.583~-2694.087~2.3622~H1_CPLD_TCK~0.7874~rep2321~0","VIA~5755.544~-2715.307~2.3622~TP_R~0.7874~rep2322~0","VIA~5786.804~-2715.346~2.3622~TP_R~0.7874~rep2323~0","VIA~5784.363~-2718.102~2.3622~TP_D~0.7874~rep2324~0","VIA~5752.788~-2718.142~2.3622~TP_D~0.7874~rep2325~0","VIA~5781.804~-2720.701~2.3622~TP_L~0.7874~rep2326~0","VIA~5749.835~-2720.701~2.3622~TP_L~0.7874~rep2327~0","VIA~5779.008~-2723.457~2.3622~TP_U~0.7874~rep2328~0","VIA~5747.552~-2723.457~2.3622~TP_U~0.7874~rep2329~0","VIA~5501.13~-2712.236~2.3622~SW_D~0.7874~rep2330~0","VIA~5790.465~-2713.535~2.3622~TP_D~0.7874~rep2331~0","VIA~5671.799~-2657.901~2.3622~SD_CLK~0.7874~rep2332~0","VIA~5671.622~-2617.921~2.3622~SD_CD~0.7874~rep2333~0","VIA~5671.675~-2627.916~2.3622~SD_DAT2~0.7874~rep2334~0","VIA~5671.685~-2647.906~2.3622~SD_CMD~0.7874~rep2335~0","VIA~5671.691~-2637.911~2.3622~SD_DAT0~0.7874~rep2336~0","VIA~5722.469~-2735.152~2.3622~SD_CD~0.7874~rep2337~0","VIA~5713.654~-2627.945~2.3622~SD_DAT1~0.7874~rep2338~0","VIA~5752.036~-2737.75~2.3622~SD_DAT1~0.7874~rep2339~0","VIA~5717.863~-2740.349~2.3622~SD_DAT0~0.7874~rep2340~0","VIA~5712.508~-2742.908~2.3622~SD_CLK~0.7874~rep2341~0","VIA~5869.864~-2770.376~2.3622~SD_CMD~0.7874~rep2342~0","VIA~5869.819~-2774.701~2.3622~SD_DAT3~0.7874~rep2343~0","VIA~5869.835~-2778.969~2.3622~SD_DAT2~0.7874~rep2344~0","VIA~5845.357~-2770.376~2.3622~SD_CMD~0.7874~rep2345~0","VIA~5712.882~-2617.921~2.3622~SD_DAT3~0.7874~rep2346~0","VIA~5845.15~-2774.638~2.3622~SD_DAT3~0.7874~rep2347~0","VIA~5845.15~-2778.969~2.3622~SD_DAT2~0.7874~rep2348~0","VIA~5733.492~-2751.451~2.3622~SD_DAT2~0.7874~rep2349~0","VIA~5719.595~-2745.861~2.3622~SD_CMD~0.7874~rep2350~0","VIA~5767.233~-2748.695~2.3622~SD_DAT3~0.7874~rep2351~0","VIA~5541.405~-2785.243~3.1496~VIN~0.98425~rep2352~0","VIA~5566.877~-2604.953~2.7559~+3V3~0.98425~rep2353~0","VIA~5812.109~-2647.443~2.3622~+3V3~0.7874~rep2354~0","VIA~5811.986~-2604.957~2.3622~+3V3~0.7874~rep2355~0","VIA~5771.105~-2629.203~2.3622~+3V3~0.7874~rep2356~0","VIA~5672.615~-2604.953~2.3622~+3V3~0.7874~rep2357~0","VIA~5841.887~-2766.178~2.3622~+3V3~0.7874~rep2358~0","VIA~5793.323~-2611.486~2.3622~GND~0.7874~rep2359~0","VIA~5594.386~-2722.675~15.748~~7.874~rep2360~0","VIA~5510.869~-2722.675~12.5984~~6.2992~rep2361~0","VIA~5594.386~-2639.159~15.748~GND~7.874~rep2362~0","VIA~5568.205~-2693.455~2.3622~GND~0.7874~rep2363~0","VIA~5641.878~-2656.294~2.3622~GND~0.7874~rep2364~0","VIA~5641.957~-2650.388~2.3622~GND~0.7874~rep2365~0","VIA~5641.957~-2644.483~2.3622~GND~0.7874~rep2366~0","VIA~5642.115~-2638.184~2.3622~GND~0.7874~rep2367~0","VIA~5642.115~-2631.806~2.3622~GND~0.7874~rep2368~0","VIA~5472.823~-2668.105~2.3622~GND~0.7874~rep2369~0","VIA~5472.823~-2674.01~2.3622~GND~0.7874~rep2370~0","VIA~5472.823~-2681.884~2.3622~GND~0.7874~rep2371~0","VIA~5472.823~-2687.79~2.3622~GND~0.7874~rep2372~0","VIA~5565.343~-2768.144~2.3622~GND~0.7874~rep2373~0","VIA~5561.8~-2764.247~2.3622~GND~0.7874~rep2374~0","VIA~5558.02~-2760.231~2.3622~GND~0.7874~rep2375~0","VIA~5581.879~-2777.593~2.3622~GND~0.7874~rep2376~0","VIA~5581.13~-2772.042~2.3622~GND~0.7874~rep2377~0","VIA~5577.154~-2767.672~2.3622~GND~0.7874~rep2378~0","VIA~5572.233~-2763.774~2.3622~GND~0.7874~rep2379~0","VIA~5567.705~-2759.837~2.3622~GND~0.7874~rep2380~0","VIA~5881.238~-2554.367~3.1496~VBAT~0.98425~rep2381~0","VIA~5841.238~-2558.934~3.1496~BAT+~0.98425~rep2382~0","VIA~5876.277~-2558.934~3.1496~BAT+~0.98425~rep2383~0","VIA~5836.002~-2554.445~3.1496~VBAT~0.98425~rep2384~0","VIA~5841.238~-2593.737~2.3622~+3V3~0.7874~rep2385~0","VIA~5841.238~-2604.957~2.3622~+3V3~0.7874~rep2386~0","VIA~5861.238~-2575.115~2.3622~SDA~0.7874~rep2387~0","VIA~5851.041~-2594.524~2.3622~SDA~0.7874~rep2388~0","VIA~5473.222~-2734.22~2.3622~U6-7~0.7874~rep2389~0","VIA~5472.907~-2714.22~2.3622~GND~0.7874~rep2390~0","VIA~5472.474~-2731.228~2.3622~U6-9~0.7874~rep2391~0","VIA~5500.033~-2756.267~2.3622~GND~0.7874~rep2392~0","VIA~5478.734~-2722.094~2.3622~GND~0.7874~rep2393~0"],"layers":["1~TopLayer~#FF0000~true~false~true~","2~BottomLayer~#0000FF~true~false~true~","3~TopSilkLayer~#FFCC00~true~false~true~","4~BottomSilkLayer~#66CC33~true~true~true~","5~TopPasteMaskLayer~#808080~true~false~true~","6~BottomPasteMaskLayer~#800000~true~false~true~","7~TopSolderMaskLayer~#800080~true~false~true~","8~BottomSolderMaskLayer~#AA00FF~true~false~true~","9~Ratlines~#6464FF~true~false~true~","10~BoardOutLine~#FF00FF~true~false~true~","11~Multi-Layer~#C0C0C0~true~false~true~","12~Document~#FFFFFF~true~false~true~","13~TopAssembly~#33CC99~true~false~true~","14~BottomAssembly~#5555FF~true~false~true~","15~Mechanical~#F022F0~false~false~false~","19~3DModel~#66CCFF~false~false~false~","21~Inner1~#999966~false~false~false~~Signal","22~Inner2~#008000~false~false~false~~Signal","23~Inner3~#00FF00~false~false~false~~Signal","24~Inner4~#BC8E00~false~false~false~~Signal","25~Inner5~#70DBFA~false~false~false~~Signal","26~Inner6~#00CC66~false~false~false~~Signal","27~Inner7~#9966FF~false~false~false~~Signal","28~Inner8~#800080~false~false~false~~Signal","29~Inner9~#008080~false~false~false~~Signal","30~Inner10~#15935F~false~false~false~~Signal","31~Inner11~#000080~false~false~false~~Signal","32~Inner12~#00B400~false~false~false~~Signal","33~Inner13~#2E4756~false~false~false~~Signal","34~Inner14~#99842F~false~false~false~~Signal","35~Inner15~#FFFFAA~false~false~false~~Signal","36~Inner16~#99842F~false~false~false~~Signal","37~Inner17~#2E4756~false~false~false~~Signal","38~Inner18~#3535FF~false~false~false~~Signal","39~Inner19~#8000BC~false~false~false~~Signal","40~Inner20~#43AE5F~false~false~false~~Signal","41~Inner21~#C3ECCE~false~false~false~~Signal","42~Inner22~#728978~false~false~false~~Signal","43~Inner23~#39503F~false~false~false~~Signal","44~Inner24~#0C715D~false~false~false~~Signal","45~Inner25~#5A8A80~false~false~false~~Signal","46~Inner26~#2B937E~false~false~false~~Signal","47~Inner27~#23999D~false~false~false~~Signal","48~Inner28~#45B4E3~false~false~false~~Signal","49~Inner29~#215DA1~false~false~false~~Signal","50~Inner30~#4564D7~false~false~false~~Signal","51~Inner31~#6969E9~false~false~false~~Signal","52~Inner32~#9069E9~false~false~false~~Signal","99~ComponentShapeLayer~#00CCCC~false~false~false~","100~LeadShapeLayer~#CC9999~false~false~false~","101~ComponentPolarityLayer~#66FFCC~false~false~false~","Hole~Hole~#222222~false~false~true~","DRCError~DRCError~#FFFFFF~false~false~true~"],"objects":["All~true~false","Component~true~true","Prefix~true~true","Name~true~false","Track~true~true","Pad~true~true","Via~true~true","Hole~true~true","Copper_Area~true~true","Circle~true~true","Arc~true~true","Solid_Region~true~true","Text~true~true","Image~true~true","Rect~true~true","Dimension~true~true","Protractor~true~true"],"BBox":{"x":5468.1,"y":-2831,"width":473,"height":298},"preference":{"hideFootprints":"","hideNets":""},"DRCRULE":{"Default":{"trackWidth":0.6,"clearance":0.6,"viaHoleDiameter":2.4,"viaHoleD":1.2},"isRealtime":true,"checkObjectToCopperarea":true,"showDRCRangeLine":true},"netColors":{}} \ No newline at end of file diff --git a/hardware/portapack_h4m/h4-pcb/README.txt b/hardware/portapack_h4m/h4-pcb/README.txt new file mode 100644 index 000000000..0900a8a04 --- /dev/null +++ b/hardware/portapack_h4m/h4-pcb/README.txt @@ -0,0 +1,5 @@ +This folder contains the PCB files for PortaPack H4. If you have any questions about the PCB files, please feel free to contact me. Thank you! + +My email addresses are: +support@opensourcesdrlab.com +opensourcesdrlab@gmail.com diff --git a/pull_request_template.md b/pull_request_template.md new file mode 100644 index 000000000..70ac08e14 --- /dev/null +++ b/pull_request_template.md @@ -0,0 +1,5 @@ +## Brief description what you did + +## Checklist +- [ ] Kept changes minimal and limited to necessary files +- [ ] Verified functionality remains intact and code compiles diff --git a/sdcard/ADSB/airlines.db b/sdcard/ADSB/airlines.db index cd6ae52a4..ba86addc3 100644 Binary files a/sdcard/ADSB/airlines.db and b/sdcard/ADSB/airlines.db differ diff --git a/sdcard/ADSB/icao24.db b/sdcard/ADSB/icao24.db index 9819924fd..23dcf3f5a 100644 Binary files a/sdcard/ADSB/icao24.db and b/sdcard/ADSB/icao24.db differ diff --git a/sdcard/FREQMAN/AUS_BNE_AIRBAND.TXT b/sdcard/FREQMAN/AUS_BNE_AIRBAND.TXT deleted file mode 100644 index 9e34f3b59..000000000 --- a/sdcard/FREQMAN/AUS_BNE_AIRBAND.TXT +++ /dev/null @@ -1,11 +0,0 @@ -f=124700000,m=AM,bw=DSB 6k,d=BNE Approach NW -f=123500000,m=AM,bw=DSB 6k,d=BNE Approach 2 -f=125600000,m=AM,bw=DSB 6k,d=BNE Approach 3 -f=120500000,m=AM,bw=DSB 6k,d=BNE RWY 19L/01R -f=118000000,m=AM,bw=DSB 6k,d=BNE RWY 19R/01L -f=113200000,m=AM,bw=DSB 6k,d=BNE ATIS 1 -f=125500000,m=AM,bw=DSB 6k,d=BNE ATIS 2 -f=121700000,m=AM,bw=DSB 6k,d=BNE GRND 1 -f=122250000,m=AM,bw=DSB 6k,d=BNE GRND 2 -f=124050000,m=AM,bw=DSB 6k,d=BNE GRND 3 -f=125700000,m=AM,bw=DSB 6k,d=OOL Approach E \ No newline at end of file diff --git a/sdcard/FREQMAN/BE_AIRBAND.TXT b/sdcard/FREQMAN/BE_AIRBAND.TXT deleted file mode 100644 index 63e1be8ed..000000000 --- a/sdcard/FREQMAN/BE_AIRBAND.TXT +++ /dev/null @@ -1,28 +0,0 @@ -f=132475000,m=AM,bw=DSB 6k,d=ATIS - Civil -f=130550000,m=AM,bw=DSB 6k,d=AbelagUnicom - Civil -f=118250000,m=AM,bw=DSB 6k,d=Approach - Civil -f=120100000,m=AM,bw=DSB 6k,d=Approach - Civil -f=122500000,m=AM,bw=DSB 6k,d=Approach Military Crossing -f=121950000,m=AM,bw=DSB 6k,d=Clearance Delivery - Civil -f=126625000,m=AM,bw=DSB 6k,d=Departure - Civil -f=127575000,m=AM,bw=DSB 6k,d=Final 25L - Civil -f=129725000,m=AM,bw=DSB 6k,d=Final 25R - Civil -f=118050000,m=AM,bw=DSB 6k,d=Ground - Civil -f=121700000,m=AM,bw=DSB 6k,d=Ground - Civil -f=121875000,m=AM,bw=DSB 6k,d=Ground - Civil -f=118600000,m=AM,bw=DSB 6k,d=Tower VHF - Civil -f=120775000,m=AM,bw=DSB 6k,d=Tower - Civil -f=127150000,m=AM,bw=DSB 6k,d=Tower Spare - Civil -f=240400000,m=AM,bw=DSB 6k,d=Air to Air - Military -f=241000000,m=AM,bw=DSB 6k,d=Air to Air - Military -f=289400000,m=AM,bw=DSB 6k,d=Military Approach -f=362300000,m=AM,bw=DSB 6k,d=Approach Military Crossing - Military -f=389300000,m=AM,bw=DSB 6k,d=Approach Military Crossing - Military -f=138250000,m=AM,bw=DSB 6k,d=Inflight Safety - Military -f=140575000,m=AM,bw=DSB 6k,d=Melsbroek Ops - Military -f=367950000,m=AM,bw=DSB 6k,d=Melsbroek Ops - Military -f=257800000,m=AM,bw=DSB 6k,d=Tower - Military -f=388500000,m=AM,bw=DSB 6k,d=Tower - Military -f=388525000,m=AM,bw=DSB 6k,d=Tower - Military -f=121725000,m=AM,bw=DSB 6k,d=Wing Ops - Military -f=336500000,m=AM,bw=DSB 6k,d=Wing Ops UHF - Military diff --git a/sdcard/FREQMAN/FPV_ANALOG.TXT b/sdcard/FREQMAN/FPV_ANALOG.TXT index 3cfe8c8f0..2ea7dadcf 100644 --- a/sdcard/FREQMAN/FPV_ANALOG.TXT +++ b/sdcard/FREQMAN/FPV_ANALOG.TXT @@ -1,5 +1,4 @@ -# Drone Analog FPV Channels -# https://oscarliang.com/fpv-channels/ +# 5.8GHz Analog FPV Channels f=5865000000,d=FPV Ch A-1 f=5845000000,d=FPV Ch A-2 f=5825000000,d=FPV Ch A-3 @@ -40,30 +39,6 @@ f=5806000000,d=FPV Ch R-5 f=5843000000,d=FPV Ch R-6 f=5880000000,d=FPV Ch R-7 f=5917000000,d=FPV Ch R-8 -f=5362000000,d=FPV Ch D-1 -f=5399000000,d=FPV Ch D-2 -f=5436000000,d=FPV Ch D-3 -f=5473000000,d=FPV Ch D-4 -f=5510000000,d=FPV Ch D-5 -f=5547000000,d=FPV Ch D-6 -f=5584000000,d=FPV Ch D-7 -f=5621000000,d=FPV Ch D-8 -f=5325000000,d=FPV Ch U-1 -f=5348000000,d=FPV Ch U-2 -f=5366000000,d=FPV Ch U-3 -f=5384000000,d=FPV Ch U-4 -f=5402000000,d=FPV Ch U-5 -f=5420000000,d=FPV Ch U-6 -f=5438000000,d=FPV Ch U-7 -f=5456000000,d=FPV Ch U-8 -f=5474000000,d=FPV Ch O-1 -f=5492000000,d=FPV Ch O-2 -f=5510000000,d=FPV Ch O-3 -f=5528000000,d=FPV Ch O-4 -f=5546000000,d=FPV Ch O-5 -f=5564000000,d=FPV Ch O-6 -f=5582000000,d=FPV Ch O-7 -f=5600000000,d=FPV Ch O-8 f=5333000000,d=FPV Ch L-1 f=5373000000,d=FPV Ch L-2 f=5413000000,d=FPV Ch L-3 @@ -72,11 +47,14 @@ f=5493000000,d=FPV Ch L-5 f=5533000000,d=FPV Ch L-6 f=5573000000,d=FPV Ch L-7 f=5613000000,d=FPV Ch L-8 -f=5653000000,d=FPV Ch H-1 -f=5693000000,d=FPV Ch H-2 -f=5733000000,d=FPV Ch H-3 -f=5773000000,d=FPV Ch H-4 -f=5813000000,d=FPV Ch H-5 -f=5853000000,d=FPV Ch H-6 -f=5893000000,d=FPV Ch H-7 -f=5933000000,d=FPV Ch H-8 + +# 1.2-1.3GHz Analog Channels +f=1080000000,d=FPV Ch 1 +f=1120000000,d=FPV Ch 2 +f=1160000000,d=FPV Ch 3 +f=1200000000,d=FPV Ch 4 +f=1240000000,d=FPV Ch 5 +f=1258000000,d=FPV Ch 6 +f=1280000000,d=FPV Ch 7 +f=1320000000,d=FPV Ch 8 +f=1360000000,d=FPV Ch 9 diff --git a/sdcard/FREQMAN/RADIOS_FM_FR_PARIS.TXT b/sdcard/FREQMAN/RADIOS_FM_FR_PARIS.TXT deleted file mode 100644 index a8cf24c41..000000000 --- a/sdcard/FREQMAN/RADIOS_FM_FR_PARIS.TXT +++ /dev/null @@ -1,56 +0,0 @@ -f=87800000,m=WFM,bw=200k,d=France Inter -f=87600000,m=WFM,bw=200k,d=France Inter -f=88200000,m=WFM,bw=200k,d=Generations -f=88600000,m=WFM,bw=200k,d=Radio Soleil -f=89000000,m=WFM,bw=200k,d=RFI -f=89400000,m=WFM,bw=200k,d=Radio Libertaire -f=89900000,m=WFM,bw=200k,d=TSF Jazz -f=90400000,m=WFM,bw=200k,d=Nostalgie -f=90900000,m=WFM,bw=200k,d=Chante France -f=91300000,m=WFM,bw=200k,d=Cherie FM -f=91700000,m=WFM,bw=200k,d=France Musique -f=92100000,m=WFM,bw=200k,d=Mouv' -f=92600000,m=WFM,bw=200k,d=Tropiques FM -f=93100000,m=WFM,bw=200k,d=Cause Commune -f=93100000,m=WFM,bw=200k,d=Aligre FM -f=93500000,m=WFM,bw=200k,d=France Culture -f=93900000,m=WFM,bw=200k,d=Vivre FM -f=93900000,m=WFM,bw=200k,d=Radio Campus -f=94300000,m=WFM,bw=200k,d=Radio Orient -f=94800000,m=WFM,bw=200k,d=Radio Shalom -f=94800000,m=WFM,bw=200k,d=Radio J -f=94800000,m=WFM,bw=200k,d=RCJ -f=95200000,m=WFM,bw=200k,d=Ici Et Maintenant -f=95200000,m=WFM,bw=200k,d=Neo -f=95600000,m=WFM,bw=200k,d=Radio Courtoisie -f=96000000,m=WFM,bw=200k,d=Skyrock -f=96400000,m=WFM,bw=200k,d=BFM Business -f=96900000,m=WFM,bw=200k,d=Voltage -f=97400000,m=WFM,bw=200k,d=Rire Et Chansons -f=97800000,m=WFM,bw=200k,d=Ado -f=98200000,m=WFM,bw=200k,d=Radio FG -f=98600000,m=WFM,bw=200k,d=Radio Alfa -f=99000000,m=WFM,bw=200k,d=Latina -f=99500000,m=WFM,bw=200k,d=AYP FM -f=99500000,m=WFM,bw=200k,d=France Maghreb 2 -f=99900000,m=WFM,bw=200k,d=Sud Radio + -f=100300000,m=WFM,bw=200k,d=NRJ -f=100700000,m=WFM,bw=200k,d=Frequence Protestante -f=100700000,m=WFM,bw=200k,d=Radio Notre-Dame -f=101100000,m=WFM,bw=200k,d=Radio Classique -f=101500000,m=WFM,bw=200k,d=Radio Nova -f=101900000,m=WFM,bw=200k,d=Fun Radio -f=102300000,m=WFM,bw=200k,d=Oui FM -f=102700000,m=WFM,bw=200k,d=M Radio -f=103100000,m=WFM,bw=200k,d=RMC -f=103500000,m=WFM,bw=200k,d=Europe 2 -f=103900000,m=WFM,bw=200k,d=RFM -f=104300000,m=WFM,bw=200k,d=RTL -f=104700000,m=WFM,bw=200k,d=Europe 1 -f=105100000,m=WFM,bw=200k,d=FIP -f=105500000,m=WFM,bw=200k,d=France Info -f=105900000,m=WFM,bw=200k,d=RTL2 -f=106300000,m=WFM,bw=200k,d=Frequence Paris Plurielle -f=106700000,m=WFM,bw=200k,d=Beur FM -f=107100000,m=WFM,bw=200k,d=France Bleu -f=107500000,m=WFM,bw=200k,d=Africa Radio diff --git a/sdcard/FREQMAN/RADIOS_FM_NO.TXT b/sdcard/FREQMAN/RADIOS_FM_NO.TXT deleted file mode 100644 index cbdbfbfe5..000000000 --- a/sdcard/FREQMAN/RADIOS_FM_NO.TXT +++ /dev/null @@ -1,4 +0,0 @@ -f=92500000,m=WFM,bw=200k,d=NRK Oslo -f=94800000,m=WFM,bw=200k,d=NRK Bergen -f=97200000,m=WFM,bw=200k,d=NRK Melhus -f=98600000,m=WFM,bw=200k,d=NRK Arendal \ No newline at end of file diff --git a/sdcard/FREQMAN/RADIOS_FM_PL.TXT b/sdcard/FREQMAN/RADIOS_FM_PL.TXT deleted file mode 100644 index 59e6d2923..000000000 --- a/sdcard/FREQMAN/RADIOS_FM_PL.TXT +++ /dev/null @@ -1,58 +0,0 @@ -f=88200000,m=WFM,bw=200k,d=RMF Polkowice -f=88200000,m=WFM,bw=200k,d=RMF Kielce -f=89200000,m=WFM,bw=200k,d=RMF Bielsko-Biala -f=89300000,m=WFM,bw=200k,d=RMF Lublin -f=89300000,m=WFM,bw=200k,d=RMF Koszalin -f=90600000,m=WFM,bw=200k,d=RMF Warsaw -f=91000000,m=WFM,bw=200k,d=RMF Warsaw -f=91300000,m=WFM,bw=200k,d=RMF Łobez -f=91500000,m=WFM,bw=200k,d=RMF Ostroleka -f=91700000,m=WFM,bw=200k,d=RMF Wagrowiec -f=91900000,m=WFM,bw=200k,d=RMF Siedlce -f=92600000,m=WFM,bw=200k,d=RMF Elbląg -f=92900000,m=WFM,bw=200k,d=RMF Wroclaw -f=93000000,m=WFM,bw=200k,d=RMF Katowice -f=93300000,m=WFM,bw=200k,d=RMF Bydgoszcz -f=93500000,m=WFM,bw=200k,d=RMF Lodz -f=93600000,m=WFM,bw=200k,d=RMF Ryki -f=93800000,m=WFM,bw=200k,d=RMF Luban -f=94300000,m=WFM,bw=200k,d=RMF Płock -f=94600000,m=WFM,bw=200k,d=RMF Poznan -f=94800000,m=WFM,bw=200k,d=RMF Zagan -f=95100000,m=WFM,bw=200k,d=RMF Suwałki -f=95300000,m=WFM,bw=200k,d=RMF Olsztyn -f=95400000,m=WFM,bw=200k,d=RMF Tarnow -f=96000000,m=WFM,bw=200k,d=RMF Krakow -f=96100000,m=WFM,bw=200k,d=RMF Legnica -f=96100000,m=WFM,bw=200k,d=RMF Gorzow Wielkopolski -f=96400000,m=WFM,bw=200k,d=RMF Bialogard -f=96600000,m=WFM,bw=200k,d=RMF Walcz -f=97100000,m=WFM,bw=200k,d=RMF Włoszczowa -f=98000000,m=WFM,bw=200k,d=RMF Kalisz -f=98400000,m=WFM,bw=200k,d=RMF Gdansk -f=98900000,m=WFM,bw=200k,d=RMF Konin -f=99300000,m=WFM,bw=200k,d=RMF Opole -f=99500000,m=WFM,bw=200k,d=RMF Kluczbork -f=100100000,m=WFM,bw=200k,d=RMF Rzeszow -f=100200000,m=WFM,bw=200k,d=RMF Bialystok -f=100800000,m=WFM,bw=200k,d=RMF Jelenia Gora -f=100900000,m=WFM,bw=200k,d=RMF Slupsk -f=101100000,m=WFM,bw=200k,d=RMF Solina -f=101200000,m=WFM,bw=200k,d=RMF Swinoujscie -f=101600000,m=WFM,bw=200k,d=RMF Klodzko -f=101800000,m=WFM,bw=200k,d=RMF Zakopane -f=101800000,m=WFM,bw=200k,d=RMF Leżajsk -f=102000000,m=WFM,bw=200k,d=RMF Gizycko -f=102900000,m=WFM,bw=200k,d=RMF Walbrzych -f=103200000,m=WFM,bw=200k,d=RMF Szczawnica -f=103400000,m=WFM,bw=200k,d=RMF Przemyśl -f=103400000,m=WFM,bw=200k,d=RMF Lebork -f=104700000,m=WFM,bw=200k,d=RMF Rabka -f=104900000,m=WFM,bw=200k,d=RMF Koszalin -f=105900000,m=WFM,bw=200k,d=RMF Krynica -f=105900000,m=WFM,bw=200k,d=RMF Czestochowa -f=106400000,m=WFM,bw=200k,d=RMF Zielona Gora -f=106500000,m=WFM,bw=200k,d=RMF Elk -f=106700000,m=WFM,bw=200k,d=RMF Szczecin -f=107400000,m=WFM,bw=200k,d=RMF Iława -f=107700000,m=WFM,bw=200k,d=RMF Zamosc diff --git a/sdcard/FREQMAN/RADIOS_FM_RO.txt b/sdcard/FREQMAN/RADIOS_FM_RO.txt deleted file mode 100644 index b24124239..000000000 --- a/sdcard/FREQMAN/RADIOS_FM_RO.txt +++ /dev/null @@ -1,28 +0,0 @@ -f=88000000,m=WFM,bw=200k,d=Radio Impuls -f=88500000,m=WFM,bw=200k,d=Radio Trinitas -f=89000000,m=WFM,bw=200k,d=Radio ZU -f=89500000,m=WFM,bw=200k,d=Dance FM -f=90800000,m=WFM,bw=200k,d=Magic FM -f=91700000,m=WFM,bw=200k,d=Național FM -f=92100000,m=WFM,bw=200k,d=One World Radio -f=93500000,m=WFM,bw=200k,d=RFI România -f=94200000,m=WFM,bw=200k,d=Radio Vocea Evangheliei -f=94800000,m=WFM,bw=200k,d=Radio Guerrilla -f=96100000,m=WFM,bw=200k,d=Kiss FM -f=96900000,m=WFM,bw=200k,d=Gold FM -f=97900000,m=WFM,bw=200k,d=Digi FM -f=98300000,m=WFM,bw=200k,d=București FM -f=99300000,m=WFM,bw=200k,d=Radio Itsy Bitsy -f=100200000,m=WFM,bw=200k,d=Virgin Radio -f=100600000,m=WFM,bw=200k,d=Rock FM -f=101300000,m=WFM,bw=200k,d=Radio România Cultural -f=101900000,m=WFM,bw=200k,d=Romantic FM -f=102800000,m=WFM,bw=200k,d=PRO FM -f=103400000,m=WFM,bw=200k,d=Radio Seven -f=103800000,m=WFM,bw=200k,d=Digi 24 FM -f=104800000,m=WFM,bw=200k,d=Radio România Muzical -f=105300000,m=WFM,bw=200k,d=Radio România Actualități -f=105800000,m=WFM,bw=200k,d=Sport Total FM -f=106200000,m=WFM,bw=200k,d=3 FM -f=106700000,m=WFM,bw=200k,d=Europa FM -f=107300000,m=WFM,bw=200k,d=Smart FM \ No newline at end of file diff --git a/sdcard/FREQMAN/RADIOS_FM_SK.txt b/sdcard/FREQMAN/RADIOS_FM_SK.txt deleted file mode 100644 index 0f3b06ea0..000000000 --- a/sdcard/FREQMAN/RADIOS_FM_SK.txt +++ /dev/null @@ -1,94 +0,0 @@ -f=91200000,m=WFM,bw=200k,d=Radio Slovensko Nitra -f=92200000,m=WFM,bw=200k,d=Radio Slovensko Poprad -f=96600000,m=WFM,bw=200k,d=Radio Slovensko Bratislava -f=96600000,m=WFM,bw=200k,d=Radio Slovensko Kosice -f=103500000,m=WFM,bw=200k,d=Radio Slovensko Zilina -f=99300000,m=WFM,bw=200k,d=Radio Regina Bratislava -f=100100000,m=WFM,bw=200k,d=Radio Regina Zilina -f=100300000,m=WFM,bw=200k,d=Radio Regina Kosice -f=96200000,m=WFM,bw=200k,d=Radio Devin Kosice -f=104400000,m=WFM,bw=200k,d=Radio Devin Bratislava -f=106700000,m=WFM,bw=200k,d=Radio Devin Presov -f=89300000,m=WFM,bw=200k,d=Radio _FM Bratislava -f=94500000,m=WFM,bw=200k,d=Radio _FM Zilina -f=101200000,m=WFM,bw=200k,d=Radio _FM Kosice -f=101500000,m=WFM,bw=200k,d=Radio _FM Presov -f=105400000,m=WFM,bw=200k,d=Radio _FM Banska Bystrica -f=98900000,m=WFM,bw=200k,d=Radio Patria Bratislava -f=102400000,m=WFM,bw=200k,d=Radio Patria Senec -f=98900000,m=WFM,bw=200k,d=Radio Slovakia International Bratislava -f=107600000,m=WFM,bw=200k,d=Radio Expres Bratislava -f=96500000,m=WFM,bw=200k,d=Radio Expres Zilina -f=93100000,m=WFM,bw=200k,d=Radio Expres Martin -f=93600000,m=WFM,bw=200k,d=Radio Expres Donovaly -f=95100000,m=WFM,bw=200k,d=Radio Expres Banska Stiavnica -f=95200000,m=WFM,bw=200k,d=Radio Expres Kosice -f=105200000,m=WFM,bw=200k,d=Radio Expres Presov -f=99500000,m=WFM,bw=200k,d=Radio Expres Vychodna -f=104800000,m=WFM,bw=200k,d=Europa 2 Bratislava -f=93500000,m=WFM,bw=200k,d=Europa 2 Martin -f=97200000,m=WFM,bw=200k,d=Europa 2 Presov -f=102000000,m=WFM,bw=200k,d=Europa 2 Kosice -f=106600000,m=WFM,bw=200k,d=Radio Melody Bratislava -f=88800000,m=WFM,bw=200k,d=Radio Melody Nitra -f=89800000,m=WFM,bw=200k,d=Radio Rock Presov -f=97600000,m=WFM,bw=200k,d=Radio Rock Bratislava -f=100300000,m=WFM,bw=200k,d=Radio Rock Trencin -f=94000000,m=WFM,bw=200k,d=Fun radio Nitra -f=94300000,m=WFM,bw=200k,d=Fun radio Bratislava -f=102900000,m=WFM,bw=200k,d=Fun radio Kosice -f=94800000,m=WFM,bw=200k,d=Radio Vlna Kosice -f=96100000,m=WFM,bw=200k,d=Radio Vlna Nitra -f=101800000,m=WFM,bw=200k,d=Radio Vlna Bratislava -f=104800000,m=WFM,bw=200k,d=Radio Vlna Poprad -f=104900000,m=WFM,bw=200k,d=Radio Vlna Martin -f=105100000,m=WFM,bw=200k,d=Radio Vlna Banska Stiavnica -f=105800000,m=WFM,bw=200k,d=Radio Vlna Presov -f=95600000,m=WFM,bw=200k,d=Best FM Bratislava -f=93800000,m=WFM,bw=200k,d=Best FM Kosice -f=88200000,m=WFM,bw=200k,d=Best FM Nitra -f=94000000,m=WFM,bw=200k,d=Best FM Presov -f=98900000,m=WFM,bw=200k,d=Best FM Trencin -f=93000000,m=WFM,bw=200k,d=Best FM Trnava -f=98000000,m=WFM,bw=200k,d=Best FM Zilina -f=89400000,m=WFM,bw=200k,d=Radio Lumen Martin -f=92900000,m=WFM,bw=200k,d=Radio Lumen Presov -f=93800000,m=WFM,bw=200k,d=Radio Lumen Bratislava -f=94400000,m=WFM,bw=200k,d=Radio Lumen Kosice -f=98100000,m=WFM,bw=200k,d=Radio Lumen Trnava -f=91700000,m=WFM,bw=200k,d=Radio 7 Bratislava -f=88600000,m=WFM,bw=200k,d=Radio 7 Kosice -f=103600000,m=WFM,bw=200k,d=Radio 7 Nitra -f=96400000,m=WFM,bw=200k,d=Radio 7 Poprad -f=107500000,m=WFM,bw=200k,d=Radio 7 Ruzomberok -f=101000000,m=WFM,bw=200k,d=Radio 7 Zilina -f=104100000,m=WFM,bw=200k,d=Dobre radio Presov -f=104200000,m=WFM,bw=200k,d=Dobre radio Domasa -f=104500000,m=WFM,bw=200k,d=Dobre radio Kosice -f=107000000,m=WFM,bw=200k,d=Dobre radio Bratislava -f=89700000,m=WFM,bw=200k,d=Radio Beta Zvolen -f=104300000,m=WFM,bw=200k,d=Radio Beta Trencin -f=96200000,m=WFM,bw=200k,d=Radio Frontinus Martin -f=104600000,m=WFM,bw=200k,d=Radio Frontinus Zilina -f=99600000,m=WFM,bw=200k,d=Radio Rebeca Martin -f=88600000,m=WFM,bw=200k,d=Radio Rebeca Zilina -f=96000000,m=WFM,bw=200k,d=Radio SiTy Bratislava -f=97700000,m=WFM,bw=200k,d=Sky Radio Kosice -f=91400000,m=WFM,bw=200k,d=Sky Radio Presov -f=106600000,m=WFM,bw=200k,d=Sky Radio Poprad -f=106200000,m=WFM,bw=200k,d=Trnavske radio Trnava -f=107900000,m=WFM,bw=200k,d=Trnavske radio Piestany -f=93300000,m=WFM,bw=200k,d=Radio VIVA Bratislava -f=101000000,m=WFM,bw=200k,d=Radio VIVA Trnava -f=93600000,m=WFM,bw=200k,d=Radio WOW Nitra -f=106700000,m=WFM,bw=200k,d=Radio WOW Trencin -f=89200000,m=WFM,bw=200k,d=Zahoracke radio Skalica -f=101500000,m=WFM,bw=200k,d=Zahoracke radio Senica -f=92400000,m=WFM,bw=200k,d=Radio Goldies Martin -f=92800000,m=WFM,bw=200k,d=Radio Goldies Trencin -f=104100000,m=WFM,bw=200k,d=Radio Kiss Presov -f=90100000,m=WFM,bw=200k,d=Radio Kosice Bratislava -f=90400000,m=WFM,bw=200k,d=Radio Kosice Presov -f=91700000,m=WFM,bw=200k,d=Radio Kosice Kosice -f=106400000,m=WFM,bw=200k,d=Radio Liptov Liptovsky Mikulas -f=106100000,m=WFM,bw=200k,d=Radio Modra diff --git a/sdcard/FREQMAN/RO_AIRBAND.TXT b/sdcard/FREQMAN/RO_AIRBAND.TXT deleted file mode 100644 index fe413f97a..000000000 --- a/sdcard/FREQMAN/RO_AIRBAND.TXT +++ /dev/null @@ -1,28 +0,0 @@ -f=129400000,m=AM,bw=DSB 6k,d=Bucharest Information (LRBB_FSS) -f=134380000,m=AM,bw=DSB 6k,d=Bucharest Radar [sector consolidat] (LRBB_CTR) -f=119415000,m=AM,bw=DSB 6k,d=Bucharest Approach (LROP_APP) -f=127155000,m=AM,bw=DSB 6k,d=Bucharest Director (LROP_D_APP) -f=122905000,m=AM,bw=DSB 6k,d=Constanta Approach (LRCK_APP) -f=126430000,m=AM,bw=DSB 6k,d=NAPOC Approach (LRCL_APP) -f=126430000,m=AM,bw=DSB 6k,d=NAPOC North Approach (LRCL_N_APP) -f=119680000,m=AM,bw=DSB 6k,d=NAPOC South Approach (LRCL_S_APP) -f=123530000,m=AM,bw=DSB 6k,d=Arad Approach (LRAR_APP) -f=118230000,m=AM,bw=DSB 6k,d=Arad (LRAR_TWR) -f=120980000,m=AM,bw=DSB 6k,d=Bacau (LRBC_TWR) -f=118855000,m=AM,bw=DSB 6k,d=Baia Mare (LRBM_TWR) -f=125205000,m=AM,bw=DSB 6k,d=Baneasa (LRBS_TWR) -f=118705000,m=AM,bw=DSB 6k,d=Cluj (LRCL_TWR) -f=120030000,m=AM,bw=DSB 6k,d=Constanta (LRCK_TWR) -f=129530000,m=AM,bw=DSB 6k,d=Craiova (LRCV_TWR) -f=119955000,m=AM,bw=DSB 6k,d=Iasi (LRIA_TWR) -f=118805000,m=AM,bw=DSB 6k,d=Otopeni (LROP_TWR) -f=118455000,m=AM,bw=DSB 6k,d=Oradea (LROD_TWR) -f=119655000,m=AM,bw=DSB 6k,d=Satu Mare (LRSM_TWR) -f=121305000,m=AM,bw=DSB 6k,d=Sibiu (LRSB_TWR) -f=129955000,m=AM,bw=DSB 6k,d=Suceava (LRSV_TWR) -f=120105000,m=AM,bw=DSB 6k,d=Timisoara (LRTR_TWR) -f=119180000,m=AM,bw=DSB 6k,d=Targu Mures (LRTM_TWR) -f=119755000,m=AM,bw=DSB 6k,d=Tulcea (LRTC_TWR) -f=129950000,m=AM,bw=DSB 6k,d=Baneasa (LRBS_GND) -f=121855000,m=AM,bw=DSB 6k,d=Otopeni (LROP_GND) -f=121600000,m=AM,bw=DSB 6k,d=Timisoara (LRTR_GND) diff --git a/sdcard/FREQMAN/USA-PAGER-LP_1.TXT b/sdcard/FREQMAN/USA-PAGER-LP_1.TXT deleted file mode 100644 index 805097aa6..000000000 --- a/sdcard/FREQMAN/USA-PAGER-LP_1.TXT +++ /dev/null @@ -1,62 +0,0 @@ -# https://www.fcc.gov/wireless/bureau-divisions/mobility-division/paging -# Lower Paging Bands - Paired -f=152030000,d=USA LPBP-FA1 -f=152060000,d=USA LPBP-FB1 -f=152090000,d=USA LPBP-FC1 -f=152120000,d=USA LPBP-FD1 -f=152150000,d=USA LPBP-FE1 -f=152180000,d=USA LPBP-FF1 -f=152210000,d=USA LPBP-FG1 -f=152510000,d=USA LPBP-FH1 -f=152540000,d=USA LPBP-FI1 -f=152570000,d=USA LPBP-FJ1 -f=152600000,d=USA LPBP-FK1 -f=152630000,d=USA LPBP-FL1 -f=152660000,d=USA LPBP-FM1 -f=152690000,d=USA LPBP-FN1 -f=152720000,d=USA LPBP-FO1 -f=152750000,d=USA LPBP-FP1 -f=152780000,d=USA LPBP-FQ1 -f=152810000,d=USA LPBP-FR1 -f=158490000,d=USA LPBP-FA2 -f=158520000,d=USA LPBP-FB2 -f=158550000,d=USA LPBP-FC2 -f=158580000,d=USA LPBP-FD2 -f=158610000,d=USA LPBP-FE2 -f=158640000,d=USA LPBP-FF2 -f=158670000,d=USA LPBP-FG2 -f=157770000,d=USA LPBP-FH2 -f=157800000,d=USA LPBP-FI2 -f=157830000,d=USA LPBP-FJ2 -f=157860000,d=USA LPBP-FK2 -f=157890000,d=USA LPBP-FL2 -f=157920000,d=USA LPBP-FM2 -f=157950000,d=USA LPBP-FN2 -f=157980000,d=USA LPBP-FO2 -f=158010000,d=USA LPBP-FP2 -f=158040000,d=USA LPBP-FQ2 -f=158070000,d=USA LPBP-FR2 -f=454025000,d=USA LPBP-GA1 -f=454050000,d=USA LPBP-GB1 -f=454075000,d=USA LPBP-GC1 -f=454100000,d=USA LPBP-GD1 -f=454125000,d=USA LPBP-GE1 -f=454150000,d=USA LPBP-GF1 -f=454175000,d=USA LPBP-GG1 -f=454200000,d=USA LPBP-GH1 -f=454225000,d=USA LPBP-GI1 -f=454250000,d=USA LPBP-GJ1 -f=454275000,d=USA LPBP-GK1 -f=454300000,d=USA LPBP-GL1 -f=454325000,d=USA LPBP-GM1 -f=152570000,d=USA LPBP-GN1 -f=152600000,d=USA LPBP-GO1 -f=152630000,d=USA LPBP-GP1 -f=152660000,d=USA LPBP-GQ1 -f=152690000,d=USA LPBP-GR1 -f=152720000,d=USA LPBP-GS1 -f=152750000,d=USA LPBP-GT1 -f=152780000,d=USA LPBP-GU1 -f=152810000,d=USA LPBP-GV1 -f=152720000,d=USA LPBP-GX1 -f=152750000,d=USA LPBP-GY1 diff --git a/sdcard/FREQMAN/USA-PAGER-LP_2.TXT b/sdcard/FREQMAN/USA-PAGER-LP_2.TXT deleted file mode 100644 index d12b4dcbb..000000000 --- a/sdcard/FREQMAN/USA-PAGER-LP_2.TXT +++ /dev/null @@ -1,28 +0,0 @@ -# https://www.fcc.gov/wireless/bureau-divisions/mobility-division/paging -# Lower Paging Bands - Paired -f=152810000,d=USA LPBP-GZ1 -f=459025000,d=USA LPBP-GA2 -f=459050000,d=USA LPBP-GB2 -f=459075000,d=USA LPBP-GC2 -f=459100000,d=USA LPBP-GD2 -f=459125000,d=USA LPBP-GE2 -f=459150000,d=USA LPBP-GF2 -f=459175000,d=USA LPBP-GG2 -f=459200000,d=USA LPBP-GH2 -f=459225000,d=USA LPBP-GI2 -f=459250000,d=USA LPBP-GJ2 -f=459275000,d=USA LPBP-GK2 -f=459300000,d=USA LPBP-GL2 -f=459325000,d=USA LPBP-GM2 -f=157830000,d=USA LPBP-GN2 -f=157860000,d=USA LPBP-GO2 -f=157890000,d=USA LPBP-GP2 -f=157920000,d=USA LPBP-GQ2 -f=157950000,d=USA LPBP-GR2 -f=157980000,d=USA LPBP-GS2 -f=158010000,d=USA LPBP-GT2 -f=158040000,d=USA LPBP-GU2 -f=158070000,d=USA LPBP-GV2 -f=157980000,d=USA LPBP-GX2 -f=158010000,d=USA LPBP-GY2 -f=158070000,d=USA LPBP-GZ2 diff --git a/sdcard/FREQMAN/USA-PAGER-LU.TXT b/sdcard/FREQMAN/USA-PAGER-LU.TXT deleted file mode 100644 index 5cec8de72..000000000 --- a/sdcard/FREQMAN/USA-PAGER-LU.TXT +++ /dev/null @@ -1,38 +0,0 @@ -# https://www.fcc.gov/wireless/bureau-divisions/mobility-division/paging -# Lower Paging Bands - Unpaired -f=35200000,d=USA LPBU-CA -f=35220000,d=USA LPBU-CB -f=35240000,d=USA LPBU-CC -f=35260000,d=USA LPBU-CD -f=35300000,d=USA LPBU-CE -f=35340000,d=USA LPBU-CF -f=35380000,d=USA LPBU-CG -f=35420000,d=USA LPBU-CH -f=35460000,d=USA LPBU-CI -f=35500000,d=USA LPBU-CJ -f=35540000,d=USA LPBU-CK -f=35560000,d=USA LPBU-CL -f=35580000,d=USA LPBU-CM -f=35600000,d=USA LPBU-CN -f=35620000,d=USA LPBU-CO -f=35660000,d=USA LPBU-CP -f=43200000,d=USA LPBU-DA -f=43220000,d=USA LPBU-DB -f=43240000,d=USA LPBU-DC -f=43260000,d=USA LPBU-DD -f=43300000,d=USA LPBU-DE -f=43340000,d=USA LPBU-DF -f=43380000,d=USA LPBU-DG -f=43420000,d=USA LPBU-DH -f=43460000,d=USA LPBU-DI -f=43500000,d=USA LPBU-DJ -f=43540000,d=USA LPBU-DK -f=43560000,d=USA LPBU-DL -f=43580000,d=USA LPBU-DM -f=43600000,d=USA LPBU-DN -f=43620000,d=USA LPBU-DO -f=43660000,d=USA LPBU-DP -f=152240000,d=USA LPBU-EA -f=152800000,d=USA LPBU-EB -f=158100000,d=USA LPBU-EC -f=158700000,d=USA LPBU-ED diff --git a/sdcard/FREQMAN/USA-PAGER-UPPER.TXT b/sdcard/FREQMAN/USA-PAGER-UPPER.TXT deleted file mode 100644 index 17dc1e7c9..000000000 --- a/sdcard/FREQMAN/USA-PAGER-UPPER.TXT +++ /dev/null @@ -1,52 +0,0 @@ -# https://www.fcc.gov/wireless/bureau-divisions/mobility-division/paging -# Upper Paging Bands - Private Carrier Paging -f=929012500,d=USA PCP-A -f=929112500,d=USA PCP-B -f=929237500,d=USA PCP-C -f=929312500,d=USA PCP-D -f=929387500,d=USA PCP-E -f=929437500,d=USA PCP-F -f=929462500,d=USA PCP-G -f=929637500,d=USA PCP-H -f=929687500,d=USA PCP-I -f=929787500,d=USA PCP-J -f=929912500,d=USA PCP-K -f=929962500,d=USA PCP-L -# Upper Paging Bands - Common Carrier Paging -f=931012500,d=USA CCP-AA -f=931037500,d=USA CCP-AB -f=931062500,d=USA CCP-AC -f=931087500,d=USA CCP-AD -f=931112500,d=USA CCP-AE -f=931137500,d=USA CCP-AF -f=931162500,d=USA CCP-AG -f=931187500,d=USA CCP-AH -f=931212500,d=USA CCP-AI -f=931237500,d=USA CCP-AJ -f=931262500,d=USA CCP-AK -f=931287500,d=USA CCP-AL -f=931312500,d=USA CCP-AM -f=929462500,d=USA CCP-AN -f=929637500,d=USA CCP-AO -f=929687500,d=USA CCP-AP -f=929787500,d=USA CCP-AQ -f=929912500,d=USA CCP-AR -f=929962500,d=USA CCP-AS -f=929462500,d=USA CCP-AT -f=929637500,d=USA CCP-AU -f=929687500,d=USA CCP-AV -f=929787500,d=USA CCP-AW -f=929912500,d=USA CCP-AX -f=929962500,d=USA CCP-AY -f=929962500,d=USA CCP-AZ -f=931662500,d=USA CCP-BA -f=931687500,d=USA CCP-BB -f=931712500,d=USA CCP-BC -f=931737500,d=USA CCP-BD -f=931762500,d=USA CCP-BE -f=931787500,d=USA CCP-BF -f=931812500,d=USA CCP-BG -f=931837500,d=USA CCP-BH -f=931862500,d=USA CCP-BI -f=931962500,d=USA CCP-BJ -f=931987500,d=USA CCP-BK diff --git a/sdcard/FREQMAN/WEFAX_1.TXT b/sdcard/FREQMAN/WEFAX_1.TXT new file mode 100644 index 000000000..eaa7def20 --- /dev/null +++ b/sdcard/FREQMAN/WEFAX_1.TXT @@ -0,0 +1,51 @@ +# Description: WEather FAX list, part 1 +# See https://weatherfax.com/stations + +# Australia +f=2628000,m=AMFM,bw=USB+FM,d=VMC Charleville +f=5100000,m=AMFM,bw=USB+FM,d=VMC Charleville +f=11030000,m=AMFM,bw=USB+FM,d=VMC Charleville +f=13920000,m=AMFM,bw=USB+FM,d=VMC Charleville +f=20469000,m=AMFM,bw=USB+FM,d=VMC Charleville +f=5755000,m=AMFM,bw=USB+FM,d=VMW Wiluna +f=7535000,m=AMFM,bw=USB+FM,d=VMW Wiluna +f=10555000,m=AMFM,bw=USB+FM,d=VMW Wiluna +f=15615000,m=AMFM,bw=USB+FM,d=VMW Wiluna +f=18060000,m=AMFM,bw=USB+FM,d=VMW Wiluna + +# Canada +f=4416000,m=AMFM,bw=USB+FM,d=VCO Sydney NS +f=6915100,m=AMFM,bw=USB+FM,d=VCO Sydney NS +f=4292000,m=AMFM,bw=USB+FM,d=VFA Inuvik +f=8456000,m=AMFM,bw=USB+FM,d=VFA Inuvik +f=3253000,m=AMFM,bw=USB+FM,d=VFF Iqaluit/VFR Resolute +f=7710000,m=AMFM,bw=USB+FM,d=VFF Iqaluit/VFR Resolute + +# Chile +f=4322000,m=AMFM,bw=USB+FM,d=CBM Punta Arenas +f=8696000,m=AMFM,bw=USB+FM,d=CBM Punta Arenas +f=4228000,m=AMFM,bw=USB+FM,d=CBV Vaparaiso +f=8677000,m=AMFM,bw=USB+FM,d=CBV Vaparaiso +f=17146400,m=AMFM,bw=USB+FM,d=CBV Vaparaiso + +# China +f=4170000,m=AMFM,bw=USB+FM,d=XSG Shanghai +f=8302000,m=AMFM,bw=USB+FM,d=XSG Shanghai +f=12382000,m=AMFM,bw=USB+FM,d=XSG Shanghai +f=16559000,m=AMFM,bw=USB+FM,d=XSG Shanghai +f=4199800,m=AMFM,bw=USB+FM,d=XSQ Guangzhou +f=8412500,m=AMFM,bw=USB+FM,d=XSQ Guangzhou +f=12629300,m=AMFM,bw=USB+FM,d=XSQ Guangzhou +f=16826300,m=AMFM,bw=USB+FM,d=XSQ Guangzhou + +# Germany - Deutscher Wetterdienst (DWD) - Offenbach +# Surface analysis: 04:30,10:50,16:36,22:00 UTC +f=3855000,m=AMFM,bw=USB+FM,d=DWD DDH3 Analysis +# Surface analysis, forecasts, warnings (continuous) +f=7880000,m=AMFM,bw=USB+FM,d=DWD DDK3 Forecasts +# Surface analysis & wave height (continuous) +f=13882500,m=AMFM,bw=USB+FM,d=DWD DDK6 Waves + +# Greece +f=4482900,m=AMFM,bw=USB+FM,d=SVJ4 Athens +f=8106900,m=AMFM,bw=USB+FM,d=SVJ4 Athens diff --git a/sdcard/FREQMAN/WEFAX_2.TXT b/sdcard/FREQMAN/WEFAX_2.TXT new file mode 100644 index 000000000..11ec2744f --- /dev/null +++ b/sdcard/FREQMAN/WEFAX_2.TXT @@ -0,0 +1,58 @@ +# Description: WEather FAX list, part 2 +# See https://weatherfax.com/stations + +# Japan +f=3622500,m=AMFM,bw=USB+FM,d=JMH Tokyo +f=7795000,m=AMFM,bw=USB+FM,d=JMH Tokyo +f=13988500,m=AMFM,bw=USB+FM,d=JMH Tokyo +f=16971000,m=AMFM,bw=USB+FM,d=JJC Tokyo +f=4274000,m=AMFM,bw=USB+FM,d=JFX Kagoshima +f=8658000,m=AMFM,bw=USB+FM,d=JFX Kagoshima +f=13074000,m=AMFM,bw=USB+FM,d=JFX Kagoshima +f=16907500,m=AMFM,bw=USB+FM,d=JFX Kagoshima +f=22559600,m=AMFM,bw=USB+FM,d=JFX Kagoshima + +# Korea +f=3585000,m=AMFM,bw=USB+FM,d=HLL2 Seoul +f=5857500,m=AMFM,bw=USB+FM,d=HLL2 Seoul +f=7433500,m=AMFM,bw=USB+FM,d=HLL2 Seoul +f=9165000,m=AMFM,bw=USB+FM,d=HLL2 Seoul +f=13570000,m=AMFM,bw=USB+FM,d=HLL2 Seoul + +# Russia +f=6328500,m=AMFM,bw=USB+FM,d=UDK2 Murmansk +f=8444000,m=AMFM,bw=USB+FM,d=UDK2 Murmansk +f=2640000,m=AMFM,bw=USB+FM,d=St Petersburg RU +f=4212000,m=AMFM,bw=USB+FM,d=St Petersburg RU +f=6456900,m=AMFM,bw=USB+FM,d=Vanino RU + +# Thailand +f=7396900,m=AMFM,bw=USB+FM,d=HSW64 Bangkok + +# United Kingdom - Royal Navy +# Surface/Wave charts every 6 hrs +f=2618500,m=AMFM,bw=USB+FM,d=GYA Northwood +f=4610000,m=AMFM,bw=USB+FM,d=GYA Northwood +f=8040000,m=AMFM,bw=USB+FM,d=GYA Northwood +f=11086500,m=AMFM,bw=USB+FM,d=GYA Northwood + +# United States - Coast Guard (USCG) +f=4346000,m=AMFM,bw=USB+FM,d=NMC Point Reyes +f=8682000,m=AMFM,bw=USB+FM,d=NMC Point Reyes +f=12786000,m=AMFM,bw=USB+FM,d=NMC Point Reyes +f=17151200,m=AMFM,bw=USB+FM,d=NMC Point Reyes +f=22527000,m=AMFM,bw=USB+FM,d=NMC Point Reyes +f=4235000,m=AMFM,bw=USB+FM,d=NMF Boston +f=6340500,m=AMFM,bw=USB+FM,d=NMF Boston Atlantic +f=9110000,m=AMFM,bw=USB+FM,d=NMF Boston WX Warn +f=12750000,m=AMFM,bw=USB+FM,d=NMF Boston Marine +f=4317900,m=AMFM,bw=USB+FM,d=NMG New Orleans +f=8503900,m=AMFM,bw=USB+FM,d=NMG New Orleans +f=12789900,m=AMFM,bw=USB+FM,d=NMG New Orleans +f=17146400,m=AMFM,bw=USB+FM,d=NMG New Orleans +f=4298000,m=AMFM,bw=USB+FM,d=NOJ Kodiak +f=8459000,m=AMFM,bw=USB+FM,d=NOJ Kodiak +f=12412500,m=AMFM,bw=USB+FM,d=NOJ Kodiak +f=9982500,m=AMFM,bw=USB+FM,d=KVM70 Honolulu +f=11090000,m=AMFM,bw=USB+FM,d=KVM70 Honolulu +f=16135000,m=AMFM,bw=USB+FM,d=KVM70 Honolulu \ No newline at end of file diff --git a/sdcard/HOPPER/BLE_adv.PHOP b/sdcard/HOPPER/BLE_adv.PHOP new file mode 100644 index 000000000..a7df963c3 --- /dev/null +++ b/sdcard/HOPPER/BLE_adv.PHOP @@ -0,0 +1,3 @@ +2402000000 +2426000000 +2480000000 \ No newline at end of file diff --git a/sdcard/HOPPER/fobs.PHOP b/sdcard/HOPPER/fobs.PHOP new file mode 100644 index 000000000..1126f6962 --- /dev/null +++ b/sdcard/HOPPER/fobs.PHOP @@ -0,0 +1,10 @@ +433920000 +315000000 +418000000 +303000000 +310000000 +330000000 +350000000 +370000000 +390000000 +430500000 \ No newline at end of file diff --git a/sdcard/HOPPER/fobs_common.PHOP b/sdcard/HOPPER/fobs_common.PHOP new file mode 100644 index 000000000..d1b7b0f5e --- /dev/null +++ b/sdcard/HOPPER/fobs_common.PHOP @@ -0,0 +1,2 @@ +315000000 +433920000 diff --git a/sdcard/LOOKINGGLASS/PRESETS.TXT b/sdcard/LOOKINGGLASS/PRESETS.TXT index a29bf6eb5..13177a846 100644 --- a/sdcard/LOOKINGGLASS/PRESETS.TXT +++ b/sdcard/LOOKINGGLASS/PRESETS.TXT @@ -14,7 +14,7 @@ 87,108,FM BROADCAST USA 76,108,FM BROADCAST BRAZIL 76,95,FM BROADCAST JAPAN -65,74,FM BROADCAST RUSSIA +65,74,FM OIRT EAST EU # CITIZENS BAND RADIO 26,28,CB RADIO # COMMON PUBLIC SERVICE BANDS diff --git a/sdcard/MACADDRESS/macaddress.db b/sdcard/MACADDRESS/macaddress.db new file mode 100644 index 000000000..e3cb6ecf4 Binary files /dev/null and b/sdcard/MACADDRESS/macaddress.db differ diff --git a/sdcard/SUBGHZ/flipper_tx_example.sub b/sdcard/SUBGHZ/flipper_tx_example.sub new file mode 100644 index 000000000..91fda6eaa --- /dev/null +++ b/sdcard/SUBGHZ/flipper_tx_example.sub @@ -0,0 +1,10 @@ +Filetype: Flipper SubGhz RAW File +Version: 1 +Frequency: 433920000 +Preset: FuriHalSubGhzPresetOok650Async +Protocol: RAW + +RAW_Data: 210 650 210 650 210 650 630 650 210 650 210 650 210 650 630 650 +RAW_Data: 210 650 210 650 210 650 630 650 210 650 210 650 210 650 210 1950 +RAW_Data: 210 650 210 650 210 650 630 650 210 650 210 650 210 650 630 650 +RAW_Data: 210 650 210 650 210 650 630 650 210 650 210 650 210 650 210 1950 diff --git a/sdcard/WATERFALLS/aurora.txt b/sdcard/WATERFALLS/aurora.txt new file mode 100644 index 000000000..f564ebf8e --- /dev/null +++ b/sdcard/WATERFALLS/aurora.txt @@ -0,0 +1,14 @@ +# 0% black +0,0,0,0 + +# 25% blue +64,0,0,255 + +# 50% magenta +128,255,0,255 + +# 75% green +192,0,255,0 + +# 100% white +255,255,255,255 diff --git a/sdcard/WATERFALLS/default.txt b/sdcard/WATERFALLS/default.txt new file mode 100644 index 000000000..a076dfbf6 --- /dev/null +++ b/sdcard/WATERFALLS/default.txt @@ -0,0 +1,12 @@ +#lines are index,r,g,b +#if index 0 is not set, it's starting at 0,0,0,0 +#all values are ranging from 0 to 255 + +#pure blue +86,0,0,255 + +#bright green +171,0,255,0 + +#pure red +255,255,0,0 diff --git a/sdcard/WATERFALLS/flame.txt b/sdcard/WATERFALLS/flame.txt new file mode 100644 index 000000000..83bdbcc3f --- /dev/null +++ b/sdcard/WATERFALLS/flame.txt @@ -0,0 +1,11 @@ +# 0% black +0,0,0,0 + +# 33% red +84,255,0,0 + +# 66% yellow +168,255,255,0 + +# 100% white +255,255,255,255 diff --git a/sdcard/WATERFALLS/matrix.txt b/sdcard/WATERFALLS/matrix.txt new file mode 100644 index 000000000..726ad89d1 --- /dev/null +++ b/sdcard/WATERFALLS/matrix.txt @@ -0,0 +1,8 @@ +# 0% black +0,0,0,0 + +# 50% green +128,0,255,0 + +# 100% white +255,255,255,255 diff --git a/sdcard/WATERFALLS/sunset.txt b/sdcard/WATERFALLS/sunset.txt new file mode 100644 index 000000000..aeae107d7 --- /dev/null +++ b/sdcard/WATERFALLS/sunset.txt @@ -0,0 +1,14 @@ +# 0% black +0,0,0,0 + +# 25% blue +64,0,0,255 + +# 50% red +128,255,0,0 + +# 75% yellow +192,255,255,0 + +# 100% white +255,255,255,255 diff --git a/sdcard/WAV/noise.wav b/sdcard/WAV/noise.wav deleted file mode 100644 index 458648dac..000000000 Binary files a/sdcard/WAV/noise.wav and /dev/null differ diff --git a/sdcard/WAV/tone square.wav b/sdcard/WAV/tone square.wav deleted file mode 100644 index e37614f91..000000000 Binary files a/sdcard/WAV/tone square.wav and /dev/null differ